diff --git a/Atffile b/Atffile deleted file mode 100644 index 43ec8b5227..0000000000 --- a/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: lib diff --git a/Makefile.in b/Makefile.in index f9d160e80e..b3aefb4876 100644 --- a/Makefile.in +++ b/Makefile.in @@ -14,7 +14,7 @@ top_builddir = @top_builddir@ VERSION=@BIND9_VERSION@ -SUBDIRS = make unit lib bin doc +SUBDIRS = make lib bin doc TARGETS = PREREQS = bind.keys.h diff --git a/configure b/configure index c96c739d1d..0aa1f0ee94 100755 --- a/configure +++ b/configure @@ -24851,7 +24851,7 @@ ac_config_commands="$ac_config_commands chmod" # elsewhere if there's a good reason for doing so. # -ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/delv/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/python/Makefile bin/python/isc/Makefile bin/python/isc/utils.py bin/python/isc/tests/Makefile bin/python/dnssec-checkds.py bin/python/dnssec-coverage.py bin/python/dnssec-keymgr.py bin/python/isc/__init__.py bin/python/isc/checkds.py bin/python/isc/coverage.py bin/python/isc/dnskey.py bin/python/isc/eventlist.py bin/python/isc/keydict.py bin/python/isc/keyevent.py bin/python/isc/keymgr.py bin/python/isc/keyseries.py bin/python/isc/keyzone.py bin/python/isc/policy.py bin/python/isc/rndc.py bin/python/isc/tests/dnskey_test.py bin/python/isc/tests/policy_test.py bin/rndc/Makefile bin/tests/Makefile bin/tests/headerdep_test.sh bin/tests/optional/Makefile bin/tests/pkcs11/Makefile bin/tests/pkcs11/benchmarks/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/dlz/prereq.sh bin/tests/system/dlzexternal/Makefile bin/tests/system/dlzexternal/ns1/dlzs.conf bin/tests/system/dyndb/Makefile bin/tests/system/dyndb/driver/Makefile bin/tests/system/inline/checkdsa.sh bin/tests/system/pipelined/Makefile bin/tests/system/rndc/Makefile bin/tests/system/rpz/Makefile bin/tests/system/rsabigexponent/Makefile bin/tests/system/tkey/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/scripts/check-secure-delegation.pl contrib/scripts/zone-edit.sh doc/Makefile doc/arm/Makefile doc/arm/noteversion.xml doc/arm/pkgversion.xml doc/arm/releaseinfo.xml doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/tex/Makefile doc/tex/armstyle.sty doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-manpage.xsl doc/xsl/isc-notes-html.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/dns/tests/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/irs/tests/Makefile lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/include/pk11/Makefile lib/isc/include/pkcs11/Makefile lib/isc/tests/Makefile lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isc/unix/include/pkcs11/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccc/tests/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/isccfg/tests/Makefile lib/ns/Makefile lib/ns/include/Makefile lib/ns/include/ns/Makefile lib/ns/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall unit/Makefile unit/unittest.sh" +ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/delv/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/python/Makefile bin/python/isc/Makefile bin/python/isc/utils.py bin/python/isc/tests/Makefile bin/python/dnssec-checkds.py bin/python/dnssec-coverage.py bin/python/dnssec-keymgr.py bin/python/isc/__init__.py bin/python/isc/checkds.py bin/python/isc/coverage.py bin/python/isc/dnskey.py bin/python/isc/eventlist.py bin/python/isc/keydict.py bin/python/isc/keyevent.py bin/python/isc/keymgr.py bin/python/isc/keyseries.py bin/python/isc/keyzone.py bin/python/isc/policy.py bin/python/isc/rndc.py bin/python/isc/tests/dnskey_test.py bin/python/isc/tests/policy_test.py bin/rndc/Makefile bin/tests/Makefile bin/tests/headerdep_test.sh bin/tests/optional/Makefile bin/tests/pkcs11/Makefile bin/tests/pkcs11/benchmarks/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/dlz/prereq.sh bin/tests/system/dlzexternal/Makefile bin/tests/system/dlzexternal/ns1/dlzs.conf bin/tests/system/dyndb/Makefile bin/tests/system/dyndb/driver/Makefile bin/tests/system/inline/checkdsa.sh bin/tests/system/pipelined/Makefile bin/tests/system/rndc/Makefile bin/tests/system/rpz/Makefile bin/tests/system/rsabigexponent/Makefile bin/tests/system/tkey/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/scripts/check-secure-delegation.pl contrib/scripts/zone-edit.sh doc/Makefile doc/arm/Makefile doc/arm/noteversion.xml doc/arm/pkgversion.xml doc/arm/releaseinfo.xml doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/tex/Makefile doc/tex/armstyle.sty doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-manpage.xsl doc/xsl/isc-notes-html.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/dns/tests/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/irs/tests/Makefile lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/include/pk11/Makefile lib/isc/include/pkcs11/Makefile lib/isc/tests/Makefile lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isc/unix/include/pkcs11/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccc/tests/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/isccfg/tests/Makefile lib/ns/Makefile lib/ns/include/Makefile lib/ns/include/ns/Makefile lib/ns/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall unit/unittest.sh" # @@ -25974,7 +25974,6 @@ do "lib/ns/tests/Makefile") CONFIG_FILES="$CONFIG_FILES lib/ns/tests/Makefile" ;; "lib/samples/Makefile") CONFIG_FILES="$CONFIG_FILES lib/samples/Makefile" ;; "lib/samples/Makefile-postinstall") CONFIG_FILES="$CONFIG_FILES lib/samples/Makefile-postinstall" ;; - "unit/Makefile") CONFIG_FILES="$CONFIG_FILES unit/Makefile" ;; "unit/unittest.sh") CONFIG_FILES="$CONFIG_FILES unit/unittest.sh" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; diff --git a/configure.ac b/configure.ac index a66a9daf96..80dc1e49f6 100644 --- a/configure.ac +++ b/configure.ac @@ -5436,7 +5436,6 @@ AC_CONFIG_FILES([ lib/ns/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall - unit/Makefile unit/unittest.sh ]) diff --git a/lib/Atffile b/lib/Atffile deleted file mode 100644 index c9ac9d3156..0000000000 --- a/lib/Atffile +++ /dev/null @@ -1,9 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: dns -tp: irs -tp: isc -tp: isccfg -tp: ns diff --git a/lib/dns/Atffile b/lib/dns/Atffile deleted file mode 100644 index 1edb838c66..0000000000 --- a/lib/dns/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: tests diff --git a/lib/dns/tests/Atffile b/lib/dns/tests/Atffile deleted file mode 100644 index f27777eb46..0000000000 --- a/lib/dns/tests/Atffile +++ /dev/null @@ -1,35 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: acl_test -tp: db_test -tp: dbdiff_test -tp: dbiterator_test -tp: dbversion_test -tp: dh_test -tp: dispatch_test -tp: dnstap_test -tp: dst_test -tp: dstrandom_test -tp: geoip_test -tp: gost_test -tp: keytable_test -tp: master_test -tp: name_test -tp: nsec3_test -tp: peer_test -tp: private_test -tp: rbt_serialize_test -tp: rbt_test -tp: rdata_test -tp: rdataset_test -tp: rdatasetstats_test -tp: resolver_test -tp: rsa_test -tp: sigs_test -tp: time_test -tp: tsig_test -tp: update_test -tp: zonemgr_test -tp: zt_test diff --git a/lib/irs/Atffile b/lib/irs/Atffile deleted file mode 100644 index 1edb838c66..0000000000 --- a/lib/irs/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: tests diff --git a/lib/irs/tests/Atffile b/lib/irs/tests/Atffile deleted file mode 100644 index 90f6d601e8..0000000000 --- a/lib/irs/tests/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: resconf_test diff --git a/lib/isc/Atffile b/lib/isc/Atffile deleted file mode 100644 index 1edb838c66..0000000000 --- a/lib/isc/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: tests diff --git a/lib/isc/tests/Atffile b/lib/isc/tests/Atffile deleted file mode 100644 index 59ee26a065..0000000000 --- a/lib/isc/tests/Atffile +++ /dev/null @@ -1,32 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: aes_test -tp: atomic_test -tp: buffer_test -tp: counter_test -tp: errno_test -tp: file_test -tp: hash_test -tp: heap_test -tp: ht_test -tp: inet_ntop_test -tp: lex_test -tp: mem_test -tp: netaddr_test -tp: parse_test -tp: pool_test -tp: print_test -tp: queue_test -tp: radix_test -tp: random_test -tp: regex_test -tp: safe_test -tp: sockaddr_test -tp: socket_test -tp: symtab_test -tp: task_test -tp: taskpool_test -tp: time_test -tp: timer_test diff --git a/lib/isccfg/Atffile b/lib/isccfg/Atffile deleted file mode 100644 index 1edb838c66..0000000000 --- a/lib/isccfg/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: tests diff --git a/lib/isccfg/tests/Atffile b/lib/isccfg/tests/Atffile deleted file mode 100644 index f399e128f9..0000000000 --- a/lib/isccfg/tests/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: parser_test diff --git a/lib/ns/Atffile b/lib/ns/Atffile deleted file mode 100644 index 1edb838c66..0000000000 --- a/lib/ns/Atffile +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: tests diff --git a/lib/ns/tests/Atffile b/lib/ns/tests/Atffile deleted file mode 100644 index 29abafff36..0000000000 --- a/lib/ns/tests/Atffile +++ /dev/null @@ -1,7 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = bind9 - -tp: listenlist_test -tp: notify_test -tp: query_test diff --git a/unit/Makefile.in b/unit/Makefile.in deleted file mode 100644 index 342380ece6..0000000000 --- a/unit/Makefile.in +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (C) Internet Systems Consortium, Inc. ("ISC") -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# See the COPYRIGHT file distributed with this work for additional -# information regarding copyright ownership. - -srcdir = @srcdir@ -VPATH = @srcdir@ -top_srcdir = @top_srcdir@ - -# Attempt to disable parallel processing. -.NOTPARALLEL: -.NO_PARALLEL: -SUBDIRS = @ATFBUILD@ -TARGETS = atf - -@BIND9_MAKE_RULES@ - -# -# install ATF libraries, if configured with --with-atf -# -atf: - @for i in ${ALL_SUBDIRS}; do \ - if [ "$$i" != "nulldir" -a -d $$i ]; then \ - (cd $$i; ${MAKE} ${MAKEDEFS} install) || exit 1; \ - fi; \ - done - -clean distclean:: - rm -rf ./atf - -distclean:: - rm unittest.sh diff --git a/unit/atf-src/.travis.yml b/unit/atf-src/.travis.yml deleted file mode 100644 index cb5bea5536..0000000000 --- a/unit/atf-src/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: cpp - -compiler: - - gcc - - clang - -before_install: - - ./admin/travis-install-deps.sh - -env: - - AS_ROOT=no - - AS_ROOT=yes - -script: - - ./admin/travis-build.sh - -notifications: - email: - - atf-log@googlegroups.com diff --git a/unit/atf-src/AUTHORS b/unit/atf-src/AUTHORS deleted file mode 100644 index a46576630f..0000000000 --- a/unit/atf-src/AUTHORS +++ /dev/null @@ -1,30 +0,0 @@ -Authors and contributors Automated Testing Framework -=========================================================================== - - -* Julio Merino - - Main developer. He started the work on this project when he took part in - the Google Summer of Code 2007 program as a student. - -* Martin Husemann - - Mentored this project during its development as part of the Google Summer - of Code 2007 program. - -* Lukasz Strzygowski - - Participant of the Google Summer of Code 2008 program. Mentored by The - NetBSD Foundation, he worked on the atfify NetBSD-SoC project and, as a - side-effect, he contributed to the ATF source code. He developed the - initial version of the atf-check utility and started the addition of the - ATF_REQUIRE family of macros in the C interface. - -* Paul Goyette - - Implemented timestamping of test programs and test cases so that - atf-report can provide timings for their execution. - - -=========================================================================== -vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2 diff --git a/unit/atf-src/Atffile b/unit/atf-src/Atffile deleted file mode 100644 index 4d7aed7756..0000000000 --- a/unit/atf-src/Atffile +++ /dev/null @@ -1,10 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: atf-c -tp: atf-c++ -tp: atf-sh -tp: test-programs - -tp-glob: tools* diff --git a/unit/atf-src/COPYING b/unit/atf-src/COPYING deleted file mode 100644 index 6552cc35f7..0000000000 --- a/unit/atf-src/COPYING +++ /dev/null @@ -1,100 +0,0 @@ -Redistribution terms Automated Testing Framework -=========================================================================== - - -License -******* - -Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012 The NetBSD Foundation, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - -Copyright 2011, 2012 Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of Google Inc. nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - -Relicensed code -*************** - -The following code snippets have been taken from other projects. Even -though they were not originally licensed under the terms above, the -original authors have agreed to relicense their work so that this project -can be distributed under a single license. This section is put here just to -clarify this fact. - -* configure.ac, Makefile.am: The original versions were derived from the - ones in the XML Catalog Manager project, version 2.2. - - Author: Julio Merino - -* atf-c/ui.c: The format_paragraph and format_text functions were - derived form the ones in the Monotone project, revision - 3a0982da308228d796df35f98d787c5cff2bb5b6. - - Author: Julio Merino - -* atf-c++/detail/io.hpp, atf-c++/detail/io.cpp, atf-c++/detail/io_test.cpp: - These files were derived from the file_handle, systembuf, pipe and pistream - classes and tests found in the Boost.Process library. - - Author: Julio Merino - -* admin/check-style.sh, admin/check-style-common.awk, - admin/check-style-cpp.awk, admin/check-style-shell.awk: These files, - except the first one, were first implemented in the Buildtool project. - They were later adapted to be part of Boost.Process and, during that - process, the shell script was created. - - Author: Julio Merino - - -=========================================================================== -vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2 diff --git a/unit/atf-src/INSTALL b/unit/atf-src/INSTALL deleted file mode 100644 index 29eb48f6cd..0000000000 --- a/unit/atf-src/INSTALL +++ /dev/null @@ -1,223 +0,0 @@ -Installation instructions Automated Testing Framework -=========================================================================== - - -Introduction -************ - -ATF uses the GNU Automake, GNU Autoconf and GNU Libtool utilities as its -build system. These are used only when compiling the application from the -source code package. If you want to install ATF from a binary package, you -do not need to read this document. - -For the impatient: - - $ ./configure - $ make - Gain root privileges - # make install - Drop root privileges - $ make installcheck - -Or alternatively, install as a regular user into your home directory: - - $ ./configure --prefix ~/local - $ make - $ make install - $ make installcheck - - -Dependencies -************ - -To build and use ATF successfully you need: - -* A standards-compliant C/C++ complier. For example, GNU GCC 2.95 will not - work. - -* A POSIX shell interpreter. - -* A make(1) utility. - -If you are building ATF from the code on the repository, you will also need -to have GNU autoconf, automake and libtool installed. - - -Regenerating the build system -***************************** - -If you are building ATF from code extracted from the repository, you must -first regenerate the files used by the build system. You will also need to -do this if you modify configure.ac, Makefile.am or any of the other build -system files. To do this, simply run: - - $ autoreconf -i -s - -For formal releases, no extra steps are needed. - - -General build procedure -*********************** - -To build and install the source package, you must follow these steps: - -1. Configure the sources to adapt to your operating system. This is done - using the 'configure' script located on the sources' top directory, - and it is usually invoked without arguments unless you want to change - the installation prefix. More details on this procedure are given on a - later section. - -2. Build the sources to generate the binaries and scripts. Simply run - 'make' on the sources' top directory after configuring them. No - problems should arise. - -3. Install the program by running 'make install'. You may need to become - root to issue this step. - -4. Issue any manual installation steps that may be required. These are - described later in their own section. - -5. Check that the installed programs work by running 'make installcheck'. - You do not need to be root to do this, even though some checks will not - be run otherwise. - - -Configuration flags -******************* - -The most common, standard flags given to 'configure' are: - -* --prefix=directory - Possible values: Any path - Default: /usr/local - - Specifies where the program (binaries and all associated files) will - be installed. - -* --sysconfdir=directory - Possible values: Any path - Default: /usr/local/etc - - Specifies where the installed programs will look for configuration files. - '/atf' will be appended to the given path unless ATF_CONFSUBDIR is - redefined as explained later on. - -* --help - Shows information about all available flags and exits immediately, - without running any configuration tasks. - -The following environment variables are specific to ATF's 'configure' -script: - -* ATF_BUILD_CC - Possible values: empty, a absolute or relative path to a C compiler. - Default: the value of CC as detected by the configure script. - - Specifies the C compiler that ATF will use at run time whenever the - build-time-specific checks are used. - -* ATF_BUILD_CFLAGS - Possible values: empty, a list of valid C compiler flags. - Default: the value of CFLAGS as detected by the configure script. - - Specifies the C compiler flags that ATF will use at run time whenever the - build-time-specific checks are used. - -* ATF_BUILD_CPP - Possible values: empty, a absolute or relative path to a C/C++ - preprocessor. - Default: the value of CPP as detected by the configure script. - - Specifies the C/C++ preprocessor that ATF will use at run time whenever - the build-time-specific checks are used. - -* ATF_BUILD_CPPFLAGS - Possible values: empty, a list of valid C/C++ preprocessor flags. - Default: the value of CPPFLAGS as detected by the configure script. - - Specifies the C/C++ preprocessor flags that ATF will use at run time - whenever the build-time-specific checks are used. - -* ATF_BUILD_CXX - Possible values: empty, a absolute or relative path to a C++ compiler. - Default: the value of CXX as detected by the configure script. - - Specifies the C++ compiler that ATF will use at run time whenever the - build-time-specific checks are used. - -* ATF_BUILD_CXXFLAGS - Possible values: empty, a list of valid C++ compiler flags. - Default: the value of CXXFLAGS as detected by the configure script. - - Specifies the C++ compiler flags that ATF will use at run time whenever - the build-time-specific checks are used. - -* ATF_CONFSUBDIR - Possible values: empty, a relative path. - Default: atf. - - Specifies the subdirectory of the configuration directory (given by the - --sysconfdir argument) under which ATF will search for its configuration - files. - -* ATF_SHELL - Possible values: empty, absolute path to a POSIX shell interpreter. - Default: empty. - - Specifies the POSIX shell interpreter that ATF will use at run time to - execute its scripts and the test programs written using the atf-sh - library. If empty, the configure script will try to find a suitable - interpreter for you. - -* ATF_WORKDIR - Possible values: empty, an absolute path. - Default: /tmp or /var/tmp, depending on availability. - - Specifies the directory that ATF will use to place its temporary files - and work directories for test cases. This is just a default and can be - overriden at run time. - -* GDB - Possible values: empty, absolute path to GNU GDB. - Default: empty. - - Specifies the path to the GNU GDB binary that atf-run will use to gather - a stack trace of a crashing test program. If empty, the configure script - will try to find a suitable binary for you. - -The following flags are specific to ATF's 'configure' script: - -* --enable-developer - Possible values: yes, no - Default: 'yes' in Git HEAD builds; 'no' in formal releases. - - Enables several features useful for development, such as the inclusion - of debugging symbols in all objects or the enforcement of compilation - warnings. - - The compiler will be executed with an exhaustive collection of warning - detection features regardless of the value of this flag. However, such - warnings are only fatal when --enable-developer is 'yes'. - -* --enable-tools - Possible values: yes, no - Default: no. - - Enables the build of the deprecated atf-config, atf-report, atf-run - and atf-version tools. atf-report and atf-run have been superseded by - Kyua, and atf-config and atf-version are unnecessary. - - -Post-installation steps -*********************** - -After installing ATF, you have to register the DTDs it provides into the -system-wide XML catalog. See the comments at the top of the files in -${datadir}/share/xml/atf to see the correct public identifiers. This -directory will typically be /usr/local/share/xml/atf or /usr/share/xml/atf. -Failure to do so will lead to further errors when processing the XML files -generated by atf-report. - - -=========================================================================== -vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2 diff --git a/unit/atf-src/Kyuafile b/unit/atf-src/Kyuafile deleted file mode 100644 index 77125974a4..0000000000 --- a/unit/atf-src/Kyuafile +++ /dev/null @@ -1,12 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -include("atf-c/Kyuafile") -include("atf-c++/Kyuafile") -include("atf-sh/Kyuafile") -include("test-programs/Kyuafile") - -if fs.exists("tools/Kyuafile") then - include("tools/Kyuafile") -end diff --git a/unit/atf-src/Makefile.am b/unit/atf-src/Makefile.am deleted file mode 100644 index abf9e78499..0000000000 --- a/unit/atf-src/Makefile.am +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_aclocal_DATA = -BUILT_SOURCES = -CLEANFILES = -DIST_HOOKS = -EXTRA_DIST = -bin_PROGRAMS = -dist_man_MANS = -include_HEADERS = -lib_LTLIBRARIES = -libexec_PROGRAMS = -man_MANS = -noinst_DATA = -noinst_LTLIBRARIES = -INSTALLCHECK_TARGETS = -PHONY_TARGETS = - -ACLOCAL_AMFLAGS = -I m4 -AM_DISTCHECK_CONFIGURE_FLAGS = --enable-tools - -include admin/Makefile.am.inc -include atf-c/Makefile.am.inc -include atf-c++/Makefile.am.inc -include atf-sh/Makefile.am.inc -include bootstrap/Makefile.am.inc -include doc/Makefile.am.inc -include test-programs/Makefile.am.inc - -if ENABLE_TOOLS -include tools/Makefile.am.inc -endif - -# -# Top-level distfile documents. -# - -doc_DATA = AUTHORS COPYING NEWS README -noinst_DATA += INSTALL README -EXTRA_DIST += $(doc_DATA) INSTALL README - -# -# Supporting logic to run our custom testsuite. -# - -TESTS_ENVIRONMENT = PATH=$(prefix)/bin:$${PATH} \ - PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig - -# Allow the caller to override the configuration file to passed to our -# test runs below. -KYUA_TEST_CONFIG_FILE = none - -testsdir = $(exec_prefix)/tests -pkgtestsdir = $(testsdir)/$(PACKAGE) - -if ENABLE_TOOLS -INSTALLCHECK_TARGETS += installcheck-atf -PHONY_TARGETS += installcheck-atf -installcheck-atf: - logfile=$$(pwd)/installcheck.log; \ - fifofile=$$(pwd)/installcheck.fifo; \ - cd $(pkgtestsdir); \ - rm -f $${fifofile}; \ - mkfifo $${fifofile}; \ - cat $${fifofile} | tee $${logfile} | $(TESTS_ENVIRONMENT) atf-report & \ - $(TESTS_ENVIRONMENT) atf-run >>$${fifofile}; \ - res=$${?}; \ - wait; \ - rm $${fifofile}; \ - echo; \ - echo "The verbatim output of atf-run has been saved to" \ - "installcheck.log; exit was $${res}"; \ - test $${res} -eq 0 -CLEANFILES += installcheck.fifo installcheck.log -endif - -PHONY_TARGETS += installcheck-kyua -if HAVE_KYUA -if !ENABLE_TOOLS -INSTALLCHECK_TARGETS += installcheck-kyua -endif -installcheck-kyua: - cd $(pkgtestsdir) && $(TESTS_ENVIRONMENT) \ - $(KYUA) --config='$(KYUA_TEST_CONFIG_FILE)' test -endif - -installcheck-local: $(INSTALLCHECK_TARGETS) - -pkgtests_DATA = Kyuafile -if ENABLE_TOOLS -pkgtests_DATA += Atffile -endif -EXTRA_DIST += $(pkgtests_DATA) - -BUILD_SH_TP = \ - test -d "$$(dirname "$${dst}")" || mkdir -p "$$(dirname "$${dst}")"; \ - echo "\#! $(bindir)/atf-sh" >"$${dst}"; \ - if [ -n "$${substs}" ]; then \ - cat $${src} | sed $${substs} >>"$${dst}"; \ - else \ - cat $${src} >>"$${dst}"; \ - fi; \ - chmod +x "$${dst}" - -# -# Custom targets. -# - -DIST_HOOKS += forbid-dist -if ENABLE_TOOLS -forbid-dist: - @true -else -forbid-dist: - @echo "Sorry; cannot make dist without the tools enabled." - @echo "Please reconfigure with --enable-tools." - @false -endif - -PHONY_TARGETS += clean-all -clean-all: - GIT="$(GIT)" $(SH) $(srcdir)/admin/clean-all.sh - -.PHONY: $(PHONY_TARGETS) - -# TODO(jmmv): Remove after atf 0.22. -install-data-hook: - cd $(DESTDIR)$(man3dir) && \ - for binding in c c++ sh; do \ - rm -f "atf-$${binding}-api.3"; \ - $(LN_S) "atf-$${binding}.3" "atf-$${binding}-api.3"; \ - done - -dist-hook: $(DIST_HOOKS) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/Makefile.in b/unit/atf-src/Makefile.in deleted file mode 100644 index a906dcd146..0000000000 --- a/unit/atf-src/Makefile.in +++ /dev/null @@ -1,5560 +0,0 @@ -# Makefile.in generated by automake 1.15.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2017 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - - - - - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -bin_PROGRAMS = atf-sh/atf-sh$(EXEEXT) $(am__EXEEXT_1) -libexec_PROGRAMS = atf-sh/atf-check$(EXEEXT) -tests_atf_c_PROGRAMS = atf-c/atf_c_test$(EXEEXT) \ - atf-c/build_test$(EXEEXT) atf-c/check_test$(EXEEXT) \ - atf-c/error_test$(EXEEXT) atf-c/macros_test$(EXEEXT) \ - atf-c/tc_test$(EXEEXT) atf-c/tp_test$(EXEEXT) \ - atf-c/utils_test$(EXEEXT) -tests_atf_c_detail_PROGRAMS = atf-c/detail/dynstr_test$(EXEEXT) \ - atf-c/detail/env_test$(EXEEXT) atf-c/detail/fs_test$(EXEEXT) \ - atf-c/detail/list_test$(EXEEXT) atf-c/detail/map_test$(EXEEXT) \ - atf-c/detail/process_helpers$(EXEEXT) \ - atf-c/detail/process_test$(EXEEXT) \ - atf-c/detail/sanity_test$(EXEEXT) \ - atf-c/detail/text_test$(EXEEXT) \ - atf-c/detail/user_test$(EXEEXT) \ - atf-c/detail/version_helper$(EXEEXT) -tests_atf_c___PROGRAMS = atf-c++/atf_c++_test$(EXEEXT) \ - atf-c++/build_test$(EXEEXT) atf-c++/check_test$(EXEEXT) \ - atf-c++/macros_test$(EXEEXT) atf-c++/tests_test$(EXEEXT) \ - atf-c++/utils_test$(EXEEXT) -tests_atf_c___detail_PROGRAMS = \ - atf-c++/detail/application_test$(EXEEXT) \ - atf-c++/detail/auto_array_test$(EXEEXT) \ - atf-c++/detail/env_test$(EXEEXT) \ - atf-c++/detail/exceptions_test$(EXEEXT) \ - atf-c++/detail/fs_test$(EXEEXT) \ - atf-c++/detail/process_test$(EXEEXT) \ - atf-c++/detail/text_test$(EXEEXT) \ - atf-c++/detail/version_helper$(EXEEXT) -check_PROGRAMS = bootstrap/h_app_empty$(EXEEXT) \ - bootstrap/h_app_opts_args$(EXEEXT) \ - bootstrap/h_tp_basic_c$(EXEEXT) \ - bootstrap/h_tp_basic_cpp$(EXEEXT) -tests_test_programs_PROGRAMS = test-programs/c_helpers$(EXEEXT) \ - test-programs/cpp_helpers$(EXEEXT) - -# XXX For some reason, the nodist line above does not work as expected. -# Work this problem around. -@ENABLE_TOOLS_TRUE@am__append_1 = kill-defs-hpp -@ENABLE_TOOLS_TRUE@am__append_2 = tools/atf-config tools/atf-report \ -@ENABLE_TOOLS_TRUE@ tools/atf-run tools/atf-version - -#man_MANS += tools/atf.7 -#CLEANFILES += tools/atf.7 -#EXTRA_DIST += tools/atf.7.in -@ENABLE_TOOLS_TRUE@am__append_3 = tools/atf-config.1 \ -@ENABLE_TOOLS_TRUE@ tools/atf-report.1 tools/atf-run.1 \ -@ENABLE_TOOLS_TRUE@ tools/atf-version.1 tools/atf-formats.5 -@ENABLE_TOOLS_TRUE@am__append_4 = tools/generate-revision.sh \ -@ENABLE_TOOLS_TRUE@ $(css_DATA) $(dtd_DATA) $(eg_DATA) \ -@ENABLE_TOOLS_TRUE@ $(hooks_DATA) $(xsl_DATA) \ -@ENABLE_TOOLS_TRUE@ $(tests_tools_DATA) \ -@ENABLE_TOOLS_TRUE@ tools/atf-config_test.sh \ -@ENABLE_TOOLS_TRUE@ tools/atf-report_test.sh \ -@ENABLE_TOOLS_TRUE@ tools/atf-run_test.sh -@ENABLE_TOOLS_TRUE@am__append_5 = tools/revision.h -@ENABLE_TOOLS_TRUE@am__append_6 = tools/revision.h \ -@ENABLE_TOOLS_TRUE@ tools/revision.h.stamp \ -@ENABLE_TOOLS_TRUE@ tools/atf-config_test tools/atf-report_test \ -@ENABLE_TOOLS_TRUE@ tools/atf-run_test installcheck.fifo \ -@ENABLE_TOOLS_TRUE@ installcheck.log -@ENABLE_TOOLS_TRUE@am__append_7 = tools/revision.h.stamp \ -@ENABLE_TOOLS_TRUE@ installcheck-atf -@ENABLE_TOOLS_TRUE@tests_tools_PROGRAMS = \ -@ENABLE_TOOLS_TRUE@ tools/application_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/atffile_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/auto_array_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/bad_metadata_helper$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/config_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/config_file_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/env_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/expand_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/expect_helpers$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/fail_helper$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/fs_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/io_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/misc_helpers$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/parser_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/process_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/pass_helper$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/process_helpers$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/reader_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/requirements_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/several_tcs_helper$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/signals_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/test_program_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/text_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/ui_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/user_test$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/zero_tcs_helper$(EXEEXT) -@ENABLE_TOOLS_TRUE@am__append_8 = installcheck-atf -@ENABLE_TOOLS_FALSE@@HAVE_KYUA_TRUE@am__append_9 = installcheck-kyua -@ENABLE_TOOLS_TRUE@am__append_10 = Atffile -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler-flags.m4 \ - $(top_srcdir)/m4/cxx-std-funcs.m4 \ - $(top_srcdir)/m4/developer-mode.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/module-application.m4 \ - $(top_srcdir)/m4/module-defs.m4 $(top_srcdir)/m4/module-env.m4 \ - $(top_srcdir)/m4/module-fs.m4 \ - $(top_srcdir)/m4/module-signals.m4 \ - $(top_srcdir)/m4/runtime-tool.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(atf_c_HEADERS) $(atf_c___HEADERS) \ - $(include_HEADERS) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = atf-c/defs.h tools/defs.hpp -CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -AM_V_AR = $(am__v_AR_@AM_V@) -am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -am__v_AR_0 = @echo " AR " $@; -am__v_AR_1 = -tools_libtools_a_AR = $(AR) $(ARFLAGS) -tools_libtools_a_LIBADD = -am__tools_libtools_a_SOURCES_DIST = tools/application.cpp \ - tools/application.hpp tools/atffile.cpp tools/atffile.hpp \ - tools/auto_array.hpp tools/config.cpp tools/config.hpp \ - tools/config_file.cpp tools/config_file.hpp tools/env.cpp \ - tools/env.hpp tools/exceptions.cpp tools/exceptions.hpp \ - tools/expand.cpp tools/expand.hpp tools/fs.cpp tools/fs.hpp \ - tools/io.cpp tools/io.hpp tools/parser.cpp tools/parser.hpp \ - tools/process.cpp tools/process.hpp tools/reader.cpp \ - tools/reader.hpp tools/requirements.cpp tools/requirements.hpp \ - tools/signals.cpp tools/signals.hpp tools/test-program.cpp \ - tools/test-program.hpp tools/test_helpers.hpp tools/text.cpp \ - tools/text.hpp tools/timers.cpp tools/timers.hpp tools/ui.cpp \ - tools/ui.hpp tools/user.cpp tools/user.hpp -am__dirstamp = $(am__leading_dot)dirstamp -@ENABLE_TOOLS_TRUE@am_tools_libtools_a_OBJECTS = tools/tools_libtools_a-application.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-atffile.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-config.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-config_file.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-env.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-exceptions.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-expand.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-fs.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-io.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-parser.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-process.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-reader.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-requirements.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-signals.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-test-program.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-text.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-timers.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-ui.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_libtools_a-user.$(OBJEXT) -nodist_tools_libtools_a_OBJECTS = -tools_libtools_a_OBJECTS = $(am_tools_libtools_a_OBJECTS) \ - $(nodist_tools_libtools_a_OBJECTS) -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(tests_atf_cdir)" \ - "$(DESTDIR)$(tests_atf_c__dir)" \ - "$(DESTDIR)$(tests_atf_c___detaildir)" \ - "$(DESTDIR)$(tests_atf_c_detaildir)" \ - "$(DESTDIR)$(tests_test_programsdir)" \ - "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(tests_atf_cdir)" \ - "$(DESTDIR)$(tests_atf_c__dir)" "$(DESTDIR)$(tests_atf_shdir)" \ - "$(DESTDIR)$(tests_test_programsdir)" \ - "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(man1dir)" \ - "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man4dir)" \ - "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" \ - "$(DESTDIR)$(atf_aclocaldir)" \ - "$(DESTDIR)$(atf_c__dirpkgconfigdir)" \ - "$(DESTDIR)$(atf_cpkgconfigdir)" "$(DESTDIR)$(atf_shdir)" \ - "$(DESTDIR)$(atf_shpkgconfigdir)" "$(DESTDIR)$(cssdir)" \ - "$(DESTDIR)$(docdir)" "$(DESTDIR)$(dtddir)" \ - "$(DESTDIR)$(egdir)" "$(DESTDIR)$(hooksdir)" \ - "$(DESTDIR)$(pkgtestsdir)" "$(DESTDIR)$(tests_atf_cdir)" \ - "$(DESTDIR)$(tests_atf_c__dir)" \ - "$(DESTDIR)$(tests_atf_c___detaildir)" \ - "$(DESTDIR)$(tests_atf_c_detaildir)" \ - "$(DESTDIR)$(tests_atf_shdir)" \ - "$(DESTDIR)$(tests_test_programsdir)" \ - "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(xsldir)" \ - "$(DESTDIR)$(atf_cdir)" "$(DESTDIR)$(atf_c__dir)" \ - "$(DESTDIR)$(includedir)" "$(DESTDIR)$(atf_cdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -atf_c___detail_libtest_helpers_la_LIBADD = -am_atf_c___detail_libtest_helpers_la_OBJECTS = atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo -atf_c___detail_libtest_helpers_la_OBJECTS = \ - $(am_atf_c___detail_libtest_helpers_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -atf_c_detail_libtest_helpers_la_LIBADD = -am_atf_c_detail_libtest_helpers_la_OBJECTS = \ - atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo -atf_c_detail_libtest_helpers_la_OBJECTS = \ - $(am_atf_c_detail_libtest_helpers_la_OBJECTS) -libatf_c___la_DEPENDENCIES = libatf-c.la -am_libatf_c___la_OBJECTS = atf-c++/build.lo atf-c++/check.lo \ - atf-c++/tests.lo atf-c++/utils.lo \ - atf-c++/detail/application.lo atf-c++/detail/env.lo \ - atf-c++/detail/exceptions.lo atf-c++/detail/fs.lo \ - atf-c++/detail/process.lo atf-c++/detail/text.lo -libatf_c___la_OBJECTS = $(am_libatf_c___la_OBJECTS) -libatf_c___la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) $(libatf_c___la_LDFLAGS) $(LDFLAGS) \ - -o $@ -libatf_c_la_LIBADD = -am_libatf_c_la_OBJECTS = atf-c/libatf_c_la-build.lo \ - atf-c/libatf_c_la-check.lo atf-c/libatf_c_la-error.lo \ - atf-c/libatf_c_la-tc.lo atf-c/libatf_c_la-tp.lo \ - atf-c/libatf_c_la-utils.lo atf-c/detail/libatf_c_la-dynstr.lo \ - atf-c/detail/libatf_c_la-env.lo atf-c/detail/libatf_c_la-fs.lo \ - atf-c/detail/libatf_c_la-list.lo \ - atf-c/detail/libatf_c_la-map.lo \ - atf-c/detail/libatf_c_la-process.lo \ - atf-c/detail/libatf_c_la-sanity.lo \ - atf-c/detail/libatf_c_la-text.lo \ - atf-c/detail/libatf_c_la-tp_main.lo \ - atf-c/detail/libatf_c_la-user.lo -nodist_libatf_c_la_OBJECTS = -libatf_c_la_OBJECTS = $(am_libatf_c_la_OBJECTS) \ - $(nodist_libatf_c_la_OBJECTS) -libatf_c_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libatf_c_la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_TOOLS_TRUE@am__EXEEXT_1 = tools/atf-config$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/atf-report$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/atf-run$(EXEEXT) \ -@ENABLE_TOOLS_TRUE@ tools/atf-version$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS) $(tests_atf_c_PROGRAMS) \ - $(tests_atf_c___PROGRAMS) $(tests_atf_c___detail_PROGRAMS) \ - $(tests_atf_c_detail_PROGRAMS) $(tests_test_programs_PROGRAMS) \ - $(tests_tools_PROGRAMS) -am_atf_c___atf_c___test_OBJECTS = atf-c++/atf_c++_test.$(OBJEXT) -atf_c___atf_c___test_OBJECTS = $(am_atf_c___atf_c___test_OBJECTS) -atf_c___atf_c___test_DEPENDENCIES = atf-c++/detail/libtest_helpers.la \ - $(ATF_CXX_LIBS) -am_atf_c___build_test_OBJECTS = atf-c++/build_test.$(OBJEXT) -atf_c___build_test_OBJECTS = $(am_atf_c___build_test_OBJECTS) -atf_c___build_test_DEPENDENCIES = atf-c++/detail/libtest_helpers.la \ - $(ATF_CXX_LIBS) -am_atf_c___check_test_OBJECTS = atf-c++/check_test.$(OBJEXT) -atf_c___check_test_OBJECTS = $(am_atf_c___check_test_OBJECTS) -atf_c___check_test_DEPENDENCIES = atf-c++/detail/libtest_helpers.la \ - $(ATF_CXX_LIBS) -am_atf_c___detail_application_test_OBJECTS = \ - atf-c++/detail/application_test.$(OBJEXT) -atf_c___detail_application_test_OBJECTS = \ - $(am_atf_c___detail_application_test_OBJECTS) -atf_c___detail_application_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_auto_array_test_OBJECTS = \ - atf-c++/detail/auto_array_test.$(OBJEXT) -atf_c___detail_auto_array_test_OBJECTS = \ - $(am_atf_c___detail_auto_array_test_OBJECTS) -atf_c___detail_auto_array_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_env_test_OBJECTS = \ - atf-c++/detail/env_test.$(OBJEXT) -atf_c___detail_env_test_OBJECTS = \ - $(am_atf_c___detail_env_test_OBJECTS) -atf_c___detail_env_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_exceptions_test_OBJECTS = \ - atf-c++/detail/exceptions_test.$(OBJEXT) -atf_c___detail_exceptions_test_OBJECTS = \ - $(am_atf_c___detail_exceptions_test_OBJECTS) -atf_c___detail_exceptions_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_fs_test_OBJECTS = atf-c++/detail/fs_test.$(OBJEXT) -atf_c___detail_fs_test_OBJECTS = $(am_atf_c___detail_fs_test_OBJECTS) -atf_c___detail_fs_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_process_test_OBJECTS = \ - atf-c++/detail/process_test.$(OBJEXT) -atf_c___detail_process_test_OBJECTS = \ - $(am_atf_c___detail_process_test_OBJECTS) -atf_c___detail_process_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_text_test_OBJECTS = \ - atf-c++/detail/text_test.$(OBJEXT) -atf_c___detail_text_test_OBJECTS = \ - $(am_atf_c___detail_text_test_OBJECTS) -atf_c___detail_text_test_DEPENDENCIES = \ - atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -am_atf_c___detail_version_helper_OBJECTS = \ - atf-c++/detail/version_helper.$(OBJEXT) -atf_c___detail_version_helper_OBJECTS = \ - $(am_atf_c___detail_version_helper_OBJECTS) -atf_c___detail_version_helper_LDADD = $(LDADD) -am_atf_c___macros_test_OBJECTS = atf-c++/macros_test.$(OBJEXT) -atf_c___macros_test_OBJECTS = $(am_atf_c___macros_test_OBJECTS) -atf_c___macros_test_DEPENDENCIES = atf-c++/detail/libtest_helpers.la \ - $(ATF_CXX_LIBS) -am_atf_c___tests_test_OBJECTS = atf-c++/tests_test.$(OBJEXT) -atf_c___tests_test_OBJECTS = $(am_atf_c___tests_test_OBJECTS) -atf_c___tests_test_DEPENDENCIES = atf-c++/detail/libtest_helpers.la \ - $(ATF_CXX_LIBS) -am_atf_c___utils_test_OBJECTS = atf-c++/utils_test.$(OBJEXT) -atf_c___utils_test_OBJECTS = $(am_atf_c___utils_test_OBJECTS) -atf_c___utils_test_DEPENDENCIES = atf-c++/detail/libtest_helpers.la \ - $(ATF_CXX_LIBS) -am_atf_c_atf_c_test_OBJECTS = atf-c/atf_c_test.$(OBJEXT) -atf_c_atf_c_test_OBJECTS = $(am_atf_c_atf_c_test_OBJECTS) -atf_c_atf_c_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_build_test_OBJECTS = atf-c/build_test.$(OBJEXT) -atf_c_build_test_OBJECTS = $(am_atf_c_build_test_OBJECTS) -atf_c_build_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_check_test_OBJECTS = atf-c/check_test.$(OBJEXT) -atf_c_check_test_OBJECTS = $(am_atf_c_check_test_OBJECTS) -atf_c_check_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_dynstr_test_OBJECTS = \ - atf-c/detail/dynstr_test.$(OBJEXT) -atf_c_detail_dynstr_test_OBJECTS = \ - $(am_atf_c_detail_dynstr_test_OBJECTS) -atf_c_detail_dynstr_test_DEPENDENCIES = \ - atf-c/detail/libtest_helpers.la libatf-c.la -am_atf_c_detail_env_test_OBJECTS = atf-c/detail/env_test.$(OBJEXT) -atf_c_detail_env_test_OBJECTS = $(am_atf_c_detail_env_test_OBJECTS) -atf_c_detail_env_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_fs_test_OBJECTS = atf-c/detail/fs_test.$(OBJEXT) -atf_c_detail_fs_test_OBJECTS = $(am_atf_c_detail_fs_test_OBJECTS) -atf_c_detail_fs_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_list_test_OBJECTS = atf-c/detail/list_test.$(OBJEXT) -atf_c_detail_list_test_OBJECTS = $(am_atf_c_detail_list_test_OBJECTS) -atf_c_detail_list_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_map_test_OBJECTS = atf-c/detail/map_test.$(OBJEXT) -atf_c_detail_map_test_OBJECTS = $(am_atf_c_detail_map_test_OBJECTS) -atf_c_detail_map_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_process_helpers_OBJECTS = \ - atf-c/detail/process_helpers.$(OBJEXT) -atf_c_detail_process_helpers_OBJECTS = \ - $(am_atf_c_detail_process_helpers_OBJECTS) -atf_c_detail_process_helpers_LDADD = $(LDADD) -am_atf_c_detail_process_test_OBJECTS = \ - atf-c/detail/process_test.$(OBJEXT) -atf_c_detail_process_test_OBJECTS = \ - $(am_atf_c_detail_process_test_OBJECTS) -atf_c_detail_process_test_DEPENDENCIES = \ - atf-c/detail/libtest_helpers.la libatf-c.la -am_atf_c_detail_sanity_test_OBJECTS = \ - atf-c/detail/sanity_test.$(OBJEXT) -atf_c_detail_sanity_test_OBJECTS = \ - $(am_atf_c_detail_sanity_test_OBJECTS) -atf_c_detail_sanity_test_DEPENDENCIES = \ - atf-c/detail/libtest_helpers.la libatf-c.la -am_atf_c_detail_text_test_OBJECTS = atf-c/detail/text_test.$(OBJEXT) -atf_c_detail_text_test_OBJECTS = $(am_atf_c_detail_text_test_OBJECTS) -atf_c_detail_text_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_user_test_OBJECTS = atf-c/detail/user_test.$(OBJEXT) -atf_c_detail_user_test_OBJECTS = $(am_atf_c_detail_user_test_OBJECTS) -atf_c_detail_user_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_detail_version_helper_OBJECTS = \ - atf-c/detail/version_helper.$(OBJEXT) -atf_c_detail_version_helper_OBJECTS = \ - $(am_atf_c_detail_version_helper_OBJECTS) -atf_c_detail_version_helper_LDADD = $(LDADD) -am_atf_c_error_test_OBJECTS = atf-c/error_test.$(OBJEXT) -atf_c_error_test_OBJECTS = $(am_atf_c_error_test_OBJECTS) -atf_c_error_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_macros_test_OBJECTS = atf-c/macros_test.$(OBJEXT) -atf_c_macros_test_OBJECTS = $(am_atf_c_macros_test_OBJECTS) -atf_c_macros_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_tc_test_OBJECTS = atf-c/tc_test.$(OBJEXT) -atf_c_tc_test_OBJECTS = $(am_atf_c_tc_test_OBJECTS) -atf_c_tc_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_tp_test_OBJECTS = atf-c/tp_test.$(OBJEXT) -atf_c_tp_test_OBJECTS = $(am_atf_c_tp_test_OBJECTS) -atf_c_tp_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_c_utils_test_OBJECTS = atf-c/utils_test.$(OBJEXT) -atf_c_utils_test_OBJECTS = $(am_atf_c_utils_test_OBJECTS) -atf_c_utils_test_DEPENDENCIES = atf-c/detail/libtest_helpers.la \ - libatf-c.la -am_atf_sh_atf_check_OBJECTS = \ - atf-sh/atf_sh_atf_check-atf-check.$(OBJEXT) -atf_sh_atf_check_OBJECTS = $(am_atf_sh_atf_check_OBJECTS) -atf_sh_atf_check_DEPENDENCIES = $(ATF_CXX_LIBS) -am_atf_sh_atf_sh_OBJECTS = atf-sh/atf_sh_atf_sh-atf-sh.$(OBJEXT) -atf_sh_atf_sh_OBJECTS = $(am_atf_sh_atf_sh_OBJECTS) -atf_sh_atf_sh_DEPENDENCIES = $(ATF_CXX_LIBS) -am_bootstrap_h_app_empty_OBJECTS = bootstrap/h_app_empty.$(OBJEXT) -bootstrap_h_app_empty_OBJECTS = $(am_bootstrap_h_app_empty_OBJECTS) -bootstrap_h_app_empty_DEPENDENCIES = tools/libtools.a $(ATF_CXX_LIBS) -am_bootstrap_h_app_opts_args_OBJECTS = \ - bootstrap/h_app_opts_args.$(OBJEXT) -bootstrap_h_app_opts_args_OBJECTS = \ - $(am_bootstrap_h_app_opts_args_OBJECTS) -bootstrap_h_app_opts_args_DEPENDENCIES = tools/libtools.a \ - $(ATF_CXX_LIBS) -am_bootstrap_h_tp_basic_c_OBJECTS = bootstrap/h_tp_basic_c.$(OBJEXT) -bootstrap_h_tp_basic_c_OBJECTS = $(am_bootstrap_h_tp_basic_c_OBJECTS) -bootstrap_h_tp_basic_c_DEPENDENCIES = libatf-c.la -am_bootstrap_h_tp_basic_cpp_OBJECTS = \ - bootstrap/h_tp_basic_cpp.$(OBJEXT) -bootstrap_h_tp_basic_cpp_OBJECTS = \ - $(am_bootstrap_h_tp_basic_cpp_OBJECTS) -bootstrap_h_tp_basic_cpp_DEPENDENCIES = $(ATF_CXX_LIBS) -am_test_programs_c_helpers_OBJECTS = \ - test-programs/c_helpers.$(OBJEXT) -test_programs_c_helpers_OBJECTS = \ - $(am_test_programs_c_helpers_OBJECTS) -test_programs_c_helpers_DEPENDENCIES = libatf-c.la -am_test_programs_cpp_helpers_OBJECTS = \ - test-programs/cpp_helpers.$(OBJEXT) -test_programs_cpp_helpers_OBJECTS = \ - $(am_test_programs_cpp_helpers_OBJECTS) -test_programs_cpp_helpers_DEPENDENCIES = $(ATF_CXX_LIBS) -am__tools_application_test_SOURCES_DIST = tools/application_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_application_test_OBJECTS = tools/tools_application_test-application_test.$(OBJEXT) -tools_application_test_OBJECTS = $(am_tools_application_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_application_test_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ $(TOOLS_LDADD) $(ATF_CXX_LIBS) -am__tools_atf_config_SOURCES_DIST = tools/atf-config.cpp -@ENABLE_TOOLS_TRUE@am_tools_atf_config_OBJECTS = tools/tools_atf_config-atf-config.$(OBJEXT) -tools_atf_config_OBJECTS = $(am_tools_atf_config_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_atf_config_DEPENDENCIES = $(TOOLS_LDADD) -am__tools_atf_report_SOURCES_DIST = tools/atf-report.cpp -@ENABLE_TOOLS_TRUE@am_tools_atf_report_OBJECTS = tools/tools_atf_report-atf-report.$(OBJEXT) -tools_atf_report_OBJECTS = $(am_tools_atf_report_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_atf_report_DEPENDENCIES = $(TOOLS_LDADD) -am__tools_atf_run_SOURCES_DIST = tools/atf-run.cpp -@ENABLE_TOOLS_TRUE@am_tools_atf_run_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_atf_run-atf-run.$(OBJEXT) -tools_atf_run_OBJECTS = $(am_tools_atf_run_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_atf_run_DEPENDENCIES = $(TOOLS_LDADD) -am__tools_atf_version_SOURCES_DIST = tools/atf-version.cpp -@ENABLE_TOOLS_TRUE@am_tools_atf_version_OBJECTS = tools/tools_atf_version-atf-version.$(OBJEXT) -nodist_tools_atf_version_OBJECTS = -tools_atf_version_OBJECTS = $(am_tools_atf_version_OBJECTS) \ - $(nodist_tools_atf_version_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_atf_version_DEPENDENCIES = $(TOOLS_LDADD) -am__tools_atffile_test_SOURCES_DIST = tools/atffile_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_atffile_test_OBJECTS = tools/tools_atffile_test-atffile_test.$(OBJEXT) -tools_atffile_test_OBJECTS = $(am_tools_atffile_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_atffile_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_auto_array_test_SOURCES_DIST = tools/auto_array_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_auto_array_test_OBJECTS = tools/tools_auto_array_test-auto_array_test.$(OBJEXT) -tools_auto_array_test_OBJECTS = $(am_tools_auto_array_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_auto_array_test_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ $(TOOLS_LDADD) $(ATF_CXX_LIBS) -am__tools_bad_metadata_helper_SOURCES_DIST = \ - tools/bad_metadata_helper.c -@ENABLE_TOOLS_TRUE@am_tools_bad_metadata_helper_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/bad_metadata_helper.$(OBJEXT) -tools_bad_metadata_helper_OBJECTS = \ - $(am_tools_bad_metadata_helper_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_bad_metadata_helper_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ libatf-c.la -am__tools_config_file_test_SOURCES_DIST = tools/config_file_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_config_file_test_OBJECTS = tools/tools_config_file_test-config_file_test.$(OBJEXT) -tools_config_file_test_OBJECTS = $(am_tools_config_file_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_config_file_test_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ $(TOOLS_LDADD) $(ATF_CXX_LIBS) -am__tools_config_test_SOURCES_DIST = tools/config_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_config_test_OBJECTS = tools/tools_config_test-config_test.$(OBJEXT) -tools_config_test_OBJECTS = $(am_tools_config_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_config_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_env_test_SOURCES_DIST = tools/env_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_env_test_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_env_test-env_test.$(OBJEXT) -tools_env_test_OBJECTS = $(am_tools_env_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_env_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_expand_test_SOURCES_DIST = tools/expand_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_expand_test_OBJECTS = tools/tools_expand_test-expand_test.$(OBJEXT) -tools_expand_test_OBJECTS = $(am_tools_expand_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_expand_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_expect_helpers_SOURCES_DIST = tools/expect_helpers.c -@ENABLE_TOOLS_TRUE@am_tools_expect_helpers_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/expect_helpers.$(OBJEXT) -tools_expect_helpers_OBJECTS = $(am_tools_expect_helpers_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_expect_helpers_DEPENDENCIES = libatf-c.la -am__tools_fail_helper_SOURCES_DIST = tools/fail_helper.cpp -@ENABLE_TOOLS_TRUE@am_tools_fail_helper_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/fail_helper.$(OBJEXT) -tools_fail_helper_OBJECTS = $(am_tools_fail_helper_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_fail_helper_DEPENDENCIES = $(ATF_CXX_LIBS) -am__tools_fs_test_SOURCES_DIST = tools/fs_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_fs_test_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_fs_test-fs_test.$(OBJEXT) -tools_fs_test_OBJECTS = $(am_tools_fs_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_fs_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_io_test_SOURCES_DIST = tools/io_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_io_test_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_io_test-io_test.$(OBJEXT) -tools_io_test_OBJECTS = $(am_tools_io_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_io_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_misc_helpers_SOURCES_DIST = tools/misc_helpers.cpp -@ENABLE_TOOLS_TRUE@am_tools_misc_helpers_OBJECTS = tools/tools_misc_helpers-misc_helpers.$(OBJEXT) -tools_misc_helpers_OBJECTS = $(am_tools_misc_helpers_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_misc_helpers_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_parser_test_SOURCES_DIST = tools/parser_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_parser_test_OBJECTS = tools/tools_parser_test-parser_test.$(OBJEXT) -tools_parser_test_OBJECTS = $(am_tools_parser_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_parser_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_pass_helper_SOURCES_DIST = tools/pass_helper.cpp -@ENABLE_TOOLS_TRUE@am_tools_pass_helper_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/pass_helper.$(OBJEXT) -tools_pass_helper_OBJECTS = $(am_tools_pass_helper_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_pass_helper_DEPENDENCIES = $(ATF_CXX_LIBS) -am__tools_process_helpers_SOURCES_DIST = tools/process_helpers.c -@ENABLE_TOOLS_TRUE@am_tools_process_helpers_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/process_helpers.$(OBJEXT) -tools_process_helpers_OBJECTS = $(am_tools_process_helpers_OBJECTS) -tools_process_helpers_LDADD = $(LDADD) -am__tools_process_test_SOURCES_DIST = tools/process_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_process_test_OBJECTS = tools/tools_process_test-process_test.$(OBJEXT) -tools_process_test_OBJECTS = $(am_tools_process_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_process_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_reader_test_SOURCES_DIST = tools/reader_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_reader_test_OBJECTS = tools/tools_reader_test-reader_test.$(OBJEXT) -tools_reader_test_OBJECTS = $(am_tools_reader_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_reader_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_requirements_test_SOURCES_DIST = \ - tools/requirements_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_requirements_test_OBJECTS = tools/tools_requirements_test-requirements_test.$(OBJEXT) -tools_requirements_test_OBJECTS = \ - $(am_tools_requirements_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_requirements_test_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ $(TOOLS_LDADD) $(ATF_CXX_LIBS) -am__tools_several_tcs_helper_SOURCES_DIST = \ - tools/several_tcs_helper.c -@ENABLE_TOOLS_TRUE@am_tools_several_tcs_helper_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/several_tcs_helper.$(OBJEXT) -tools_several_tcs_helper_OBJECTS = \ - $(am_tools_several_tcs_helper_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_several_tcs_helper_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ libatf-c.la -am__tools_signals_test_SOURCES_DIST = tools/signals_test.cpp \ - tools/signals.cpp -@ENABLE_TOOLS_TRUE@am_tools_signals_test_OBJECTS = tools/tools_signals_test-signals_test.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_signals_test-signals.$(OBJEXT) -tools_signals_test_OBJECTS = $(am_tools_signals_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_signals_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_test_program_test_SOURCES_DIST = \ - tools/test_program_test.cpp -@ENABLE_TOOLS_TRUE@am_tools_test_program_test_OBJECTS = tools/tools_test_program_test-test_program_test.$(OBJEXT) -tools_test_program_test_OBJECTS = \ - $(am_tools_test_program_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_test_program_test_DEPENDENCIES = \ -@ENABLE_TOOLS_TRUE@ $(TOOLS_LDADD) $(ATF_CXX_LIBS) -am__tools_text_test_SOURCES_DIST = tools/text_test.cpp tools/text.cpp -@ENABLE_TOOLS_TRUE@am_tools_text_test_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_text_test-text_test.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_text_test-text.$(OBJEXT) -tools_text_test_OBJECTS = $(am_tools_text_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_text_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_ui_test_SOURCES_DIST = tools/ui_test.cpp tools/ui.cpp -@ENABLE_TOOLS_TRUE@am_tools_ui_test_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_ui_test-ui_test.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_ui_test-ui.$(OBJEXT) -tools_ui_test_OBJECTS = $(am_tools_ui_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_ui_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_user_test_SOURCES_DIST = tools/user_test.cpp tools/user.cpp -@ENABLE_TOOLS_TRUE@am_tools_user_test_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/tools_user_test-user_test.$(OBJEXT) \ -@ENABLE_TOOLS_TRUE@ tools/tools_user_test-user.$(OBJEXT) -tools_user_test_OBJECTS = $(am_tools_user_test_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_user_test_DEPENDENCIES = $(TOOLS_LDADD) \ -@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS) -am__tools_zero_tcs_helper_SOURCES_DIST = tools/zero_tcs_helper.c -@ENABLE_TOOLS_TRUE@am_tools_zero_tcs_helper_OBJECTS = \ -@ENABLE_TOOLS_TRUE@ tools/zero_tcs_helper.$(OBJEXT) -tools_zero_tcs_helper_OBJECTS = $(am_tools_zero_tcs_helper_OBJECTS) -@ENABLE_TOOLS_TRUE@tools_zero_tcs_helper_DEPENDENCIES = libatf-c.la -SCRIPTS = $(tests_atf_c_SCRIPTS) $(tests_atf_c___SCRIPTS) \ - $(tests_atf_sh_SCRIPTS) $(tests_test_programs_SCRIPTS) \ - $(tests_tools_SCRIPTS) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/admin/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(tools_libtools_a_SOURCES) \ - $(nodist_tools_libtools_a_SOURCES) \ - $(atf_c___detail_libtest_helpers_la_SOURCES) \ - $(atf_c_detail_libtest_helpers_la_SOURCES) \ - $(libatf_c___la_SOURCES) $(libatf_c_la_SOURCES) \ - $(nodist_libatf_c_la_SOURCES) $(atf_c___atf_c___test_SOURCES) \ - $(atf_c___build_test_SOURCES) $(atf_c___check_test_SOURCES) \ - $(atf_c___detail_application_test_SOURCES) \ - $(atf_c___detail_auto_array_test_SOURCES) \ - $(atf_c___detail_env_test_SOURCES) \ - $(atf_c___detail_exceptions_test_SOURCES) \ - $(atf_c___detail_fs_test_SOURCES) \ - $(atf_c___detail_process_test_SOURCES) \ - $(atf_c___detail_text_test_SOURCES) \ - $(atf_c___detail_version_helper_SOURCES) \ - $(atf_c___macros_test_SOURCES) $(atf_c___tests_test_SOURCES) \ - $(atf_c___utils_test_SOURCES) $(atf_c_atf_c_test_SOURCES) \ - $(atf_c_build_test_SOURCES) $(atf_c_check_test_SOURCES) \ - $(atf_c_detail_dynstr_test_SOURCES) \ - $(atf_c_detail_env_test_SOURCES) \ - $(atf_c_detail_fs_test_SOURCES) \ - $(atf_c_detail_list_test_SOURCES) \ - $(atf_c_detail_map_test_SOURCES) \ - $(atf_c_detail_process_helpers_SOURCES) \ - $(atf_c_detail_process_test_SOURCES) \ - $(atf_c_detail_sanity_test_SOURCES) \ - $(atf_c_detail_text_test_SOURCES) \ - $(atf_c_detail_user_test_SOURCES) \ - $(atf_c_detail_version_helper_SOURCES) \ - $(atf_c_error_test_SOURCES) $(atf_c_macros_test_SOURCES) \ - $(atf_c_tc_test_SOURCES) $(atf_c_tp_test_SOURCES) \ - $(atf_c_utils_test_SOURCES) $(atf_sh_atf_check_SOURCES) \ - $(atf_sh_atf_sh_SOURCES) $(bootstrap_h_app_empty_SOURCES) \ - $(bootstrap_h_app_opts_args_SOURCES) \ - $(bootstrap_h_tp_basic_c_SOURCES) \ - $(bootstrap_h_tp_basic_cpp_SOURCES) \ - $(test_programs_c_helpers_SOURCES) \ - $(test_programs_cpp_helpers_SOURCES) \ - $(tools_application_test_SOURCES) $(tools_atf_config_SOURCES) \ - $(tools_atf_report_SOURCES) $(tools_atf_run_SOURCES) \ - $(tools_atf_version_SOURCES) \ - $(nodist_tools_atf_version_SOURCES) \ - $(tools_atffile_test_SOURCES) $(tools_auto_array_test_SOURCES) \ - $(tools_bad_metadata_helper_SOURCES) \ - $(tools_config_file_test_SOURCES) $(tools_config_test_SOURCES) \ - $(tools_env_test_SOURCES) $(tools_expand_test_SOURCES) \ - $(tools_expect_helpers_SOURCES) $(tools_fail_helper_SOURCES) \ - $(tools_fs_test_SOURCES) $(tools_io_test_SOURCES) \ - $(tools_misc_helpers_SOURCES) $(tools_parser_test_SOURCES) \ - $(tools_pass_helper_SOURCES) $(tools_process_helpers_SOURCES) \ - $(tools_process_test_SOURCES) $(tools_reader_test_SOURCES) \ - $(tools_requirements_test_SOURCES) \ - $(tools_several_tcs_helper_SOURCES) \ - $(tools_signals_test_SOURCES) \ - $(tools_test_program_test_SOURCES) $(tools_text_test_SOURCES) \ - $(tools_ui_test_SOURCES) $(tools_user_test_SOURCES) \ - $(tools_zero_tcs_helper_SOURCES) -DIST_SOURCES = $(am__tools_libtools_a_SOURCES_DIST) \ - $(atf_c___detail_libtest_helpers_la_SOURCES) \ - $(atf_c_detail_libtest_helpers_la_SOURCES) \ - $(libatf_c___la_SOURCES) $(libatf_c_la_SOURCES) \ - $(atf_c___atf_c___test_SOURCES) $(atf_c___build_test_SOURCES) \ - $(atf_c___check_test_SOURCES) \ - $(atf_c___detail_application_test_SOURCES) \ - $(atf_c___detail_auto_array_test_SOURCES) \ - $(atf_c___detail_env_test_SOURCES) \ - $(atf_c___detail_exceptions_test_SOURCES) \ - $(atf_c___detail_fs_test_SOURCES) \ - $(atf_c___detail_process_test_SOURCES) \ - $(atf_c___detail_text_test_SOURCES) \ - $(atf_c___detail_version_helper_SOURCES) \ - $(atf_c___macros_test_SOURCES) $(atf_c___tests_test_SOURCES) \ - $(atf_c___utils_test_SOURCES) $(atf_c_atf_c_test_SOURCES) \ - $(atf_c_build_test_SOURCES) $(atf_c_check_test_SOURCES) \ - $(atf_c_detail_dynstr_test_SOURCES) \ - $(atf_c_detail_env_test_SOURCES) \ - $(atf_c_detail_fs_test_SOURCES) \ - $(atf_c_detail_list_test_SOURCES) \ - $(atf_c_detail_map_test_SOURCES) \ - $(atf_c_detail_process_helpers_SOURCES) \ - $(atf_c_detail_process_test_SOURCES) \ - $(atf_c_detail_sanity_test_SOURCES) \ - $(atf_c_detail_text_test_SOURCES) \ - $(atf_c_detail_user_test_SOURCES) \ - $(atf_c_detail_version_helper_SOURCES) \ - $(atf_c_error_test_SOURCES) $(atf_c_macros_test_SOURCES) \ - $(atf_c_tc_test_SOURCES) $(atf_c_tp_test_SOURCES) \ - $(atf_c_utils_test_SOURCES) $(atf_sh_atf_check_SOURCES) \ - $(atf_sh_atf_sh_SOURCES) $(bootstrap_h_app_empty_SOURCES) \ - $(bootstrap_h_app_opts_args_SOURCES) \ - $(bootstrap_h_tp_basic_c_SOURCES) \ - $(bootstrap_h_tp_basic_cpp_SOURCES) \ - $(test_programs_c_helpers_SOURCES) \ - $(test_programs_cpp_helpers_SOURCES) \ - $(am__tools_application_test_SOURCES_DIST) \ - $(am__tools_atf_config_SOURCES_DIST) \ - $(am__tools_atf_report_SOURCES_DIST) \ - $(am__tools_atf_run_SOURCES_DIST) \ - $(am__tools_atf_version_SOURCES_DIST) \ - $(am__tools_atffile_test_SOURCES_DIST) \ - $(am__tools_auto_array_test_SOURCES_DIST) \ - $(am__tools_bad_metadata_helper_SOURCES_DIST) \ - $(am__tools_config_file_test_SOURCES_DIST) \ - $(am__tools_config_test_SOURCES_DIST) \ - $(am__tools_env_test_SOURCES_DIST) \ - $(am__tools_expand_test_SOURCES_DIST) \ - $(am__tools_expect_helpers_SOURCES_DIST) \ - $(am__tools_fail_helper_SOURCES_DIST) \ - $(am__tools_fs_test_SOURCES_DIST) \ - $(am__tools_io_test_SOURCES_DIST) \ - $(am__tools_misc_helpers_SOURCES_DIST) \ - $(am__tools_parser_test_SOURCES_DIST) \ - $(am__tools_pass_helper_SOURCES_DIST) \ - $(am__tools_process_helpers_SOURCES_DIST) \ - $(am__tools_process_test_SOURCES_DIST) \ - $(am__tools_reader_test_SOURCES_DIST) \ - $(am__tools_requirements_test_SOURCES_DIST) \ - $(am__tools_several_tcs_helper_SOURCES_DIST) \ - $(am__tools_signals_test_SOURCES_DIST) \ - $(am__tools_test_program_test_SOURCES_DIST) \ - $(am__tools_text_test_SOURCES_DIST) \ - $(am__tools_ui_test_SOURCES_DIST) \ - $(am__tools_user_test_SOURCES_DIST) \ - $(am__tools_zero_tcs_helper_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -man1dir = $(mandir)/man1 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man7dir = $(mandir)/man7 -NROFF = nroff -MANS = $(dist_man_MANS) $(man_MANS) -DATA = $(atf_aclocal_DATA) $(atf_c__dirpkgconfig_DATA) \ - $(atf_cpkgconfig_DATA) $(atf_sh_DATA) $(atf_shpkgconfig_DATA) \ - $(css_DATA) $(doc_DATA) $(dtd_DATA) $(eg_DATA) $(hooks_DATA) \ - $(noinst_DATA) $(pkgtests_DATA) $(tests_atf_c_DATA) \ - $(tests_atf_c___DATA) $(tests_atf_c___detail_DATA) \ - $(tests_atf_c_detail_DATA) $(tests_atf_sh_DATA) \ - $(tests_test_programs_DATA) $(tests_tools_DATA) $(xsl_DATA) -HEADERS = $(atf_c_HEADERS) $(atf_c___HEADERS) $(include_HEADERS) \ - $(nodist_atf_c_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -AM_RECURSIVE_TARGETS = cscope -am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ - $(srcdir)/admin/Makefile.am.inc \ - $(srcdir)/atf-c++/Makefile.am.inc \ - $(srcdir)/atf-c++/detail/Makefile.am.inc \ - $(srcdir)/atf-c/Makefile.am.inc \ - $(srcdir)/atf-c/detail/Makefile.am.inc \ - $(srcdir)/atf-sh/Makefile.am.inc \ - $(srcdir)/bootstrap/Makefile.am.inc $(srcdir)/config.h.in \ - $(srcdir)/doc/Makefile.am.inc \ - $(srcdir)/test-programs/Makefile.am.inc \ - $(srcdir)/tools/Makefile.am.inc $(top_srcdir)/admin/ar-lib \ - $(top_srcdir)/admin/compile $(top_srcdir)/admin/config.guess \ - $(top_srcdir)/admin/config.sub $(top_srcdir)/admin/depcomp \ - $(top_srcdir)/admin/install-sh $(top_srcdir)/admin/ltmain.sh \ - $(top_srcdir)/admin/missing $(top_srcdir)/atf-c/defs.h.in \ - $(top_srcdir)/tools/defs.hpp.in AUTHORS COPYING INSTALL NEWS \ - README admin/ar-lib admin/compile admin/config.guess \ - admin/config.sub admin/depcomp admin/install-sh \ - admin/ltmain.sh admin/missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -DIST_TARGETS = dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -ATF_BUILD_CC = @ATF_BUILD_CC@ -ATF_BUILD_CFLAGS = @ATF_BUILD_CFLAGS@ -ATF_BUILD_CPP = @ATF_BUILD_CPP@ -ATF_BUILD_CPPFLAGS = @ATF_BUILD_CPPFLAGS@ -ATF_BUILD_CXX = @ATF_BUILD_CXX@ -ATF_BUILD_CXXFLAGS = @ATF_BUILD_CXXFLAGS@ -ATF_CONFSUBDIR = @ATF_CONFSUBDIR@ -ATF_SHELL = @ATF_SHELL@ -ATF_WORKDIR = @ATF_WORKDIR@ -ATTRIBUTE_FORMAT_PRINTF = @ATTRIBUTE_FORMAT_PRINTF@ -ATTRIBUTE_NORETURN = @ATTRIBUTE_NORETURN@ -ATTRIBUTE_UNUSED = @ATTRIBUTE_UNUSED@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_TOOLS = @ENABLE_TOOLS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GDB = @GDB@ -GIT = @GIT@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -KYUA = @KYUA@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -atf_aclocaldir = @atf_aclocaldir@ -atf_arch = @atf_arch@ -atf_confdir = @atf_confdir@ -atf_cssdir = @atf_cssdir@ -atf_dtddir = @atf_dtddir@ -atf_egdir = @atf_egdir@ -atf_machine = @atf_machine@ -atf_pkgconfigdir = @atf_pkgconfigdir@ -atf_xsldir = @atf_xsldir@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_srcdir = @target_srcdir@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -atf_aclocal_DATA = atf-c/atf-common.m4 atf-c/atf-c.m4 \ - atf-c++/atf-c++.m4 atf-sh/atf-sh.m4 -BUILT_SOURCES = $(am__append_5) -CLEANFILES = atf-c/atf-c.pc atf-c/pkg_config_test atf-c++/atf-c++.pc \ - atf-c++/pkg_config_test atf-sh/atf-sh.pc atf-sh/misc_helpers \ - atf-sh/atf_check_test atf-sh/atf-check_test atf-sh/config_test \ - atf-sh/integration_test atf-sh/normalize_test atf-sh/tc_test \ - atf-sh/tp_test bootstrap/h_tp_basic_sh \ - bootstrap/h_tp_atf_check_sh bootstrap/h_tp_fail \ - bootstrap/h_tp_pass doc/atf.7 test-programs/sh_helpers \ - test-programs/config_test test-programs/expect_test \ - test-programs/meta_data_test test-programs/result_test \ - test-programs/srcdir_test $(am__append_6) - -# XXX For some reason, the nodist line above does not work as expected. -# Work this problem around. - -# -# Custom targets. -# -DIST_HOOKS = kill-defs-h $(am__append_1) forbid-dist -EXTRA_DIST = admin/check-style-common.awk admin/check-style-c.awk \ - admin/check-style-cpp.awk admin/check-style-man.awk \ - admin/check-style-shell.awk admin/check-style.sh \ - atf-c/atf-common.m4 atf-c/atf-c.m4 atf-c/atf-c.pc.in \ - $(tests_atf_c_DATA) atf-c/pkg_config_test.sh \ - $(tests_atf_c_detail_DATA) atf-c++/atf-c++.m4 \ - atf-c++/atf-c++.pc.in $(tests_atf_c___DATA) \ - atf-c++/pkg_config_test.sh $(tests_atf_c___detail_DATA) \ - $(atf_sh_DATA) atf-sh/atf-sh.m4 atf-sh/atf-sh.pc.in \ - $(tests_atf_sh_DATA) atf-sh/misc_helpers.sh \ - atf-sh/atf_check_test.sh atf-sh/atf-check_test.sh \ - atf-sh/config_test.sh atf-sh/integration_test.sh \ - atf-sh/normalize_test.sh atf-sh/tc_test.sh atf-sh/tp_test.sh \ - bootstrap/h_tp_basic_sh.sh bootstrap/h_tp_atf_check_sh.sh \ - bootstrap/h_tp_fail.sh bootstrap/h_tp_pass.sh \ - bootstrap/testsuite bootstrap/package.m4 \ - bootstrap/testsuite.at $(testsuite_incs) doc/atf.7.in \ - $(tests_test_programs_DATA) test-programs/common.sh \ - test-programs/sh_helpers.sh test-programs/config_test.sh \ - test-programs/expect_test.sh test-programs/meta_data_test.sh \ - test-programs/result_test.sh test-programs/srcdir_test.sh \ - $(am__append_4) $(doc_DATA) INSTALL README $(pkgtests_DATA) -dist_man_MANS = atf-c/atf-c.3 atf-c++/atf-c++.3 atf-sh/atf-check.1 \ - atf-sh/atf-sh.1 atf-sh/atf-sh.3 doc/atf-test-case.4 \ - doc/atf-test-program.1 $(am__append_3) -include_HEADERS = atf-c.h atf-c++.hpp -lib_LTLIBRARIES = libatf-c.la libatf-c++.la -man_MANS = doc/atf.7 -noinst_DATA = INSTALL README -noinst_LTLIBRARIES = atf-c/detail/libtest_helpers.la \ - atf-c++/detail/libtest_helpers.la -INSTALLCHECK_TARGETS = installcheck-bootstrap $(am__append_8) \ - $(am__append_9) -PHONY_TARGETS = check-style installcheck-bootstrap $(am__append_7) \ - installcheck-kyua clean-all -ACLOCAL_AMFLAGS = -I m4 -AM_DISTCHECK_CONFIGURE_FLAGS = --enable-tools -libatf_c_la_SOURCES = atf-c/build.c atf-c/build.h atf-c/check.c \ - atf-c/check.h atf-c/error.c atf-c/error.h atf-c/error_fwd.h \ - atf-c/macros.h atf-c/tc.c atf-c/tc.h atf-c/tp.c atf-c/tp.h \ - atf-c/utils.c atf-c/utils.h atf-c/detail/dynstr.c \ - atf-c/detail/dynstr.h atf-c/detail/env.c atf-c/detail/env.h \ - atf-c/detail/fs.c atf-c/detail/fs.h atf-c/detail/list.c \ - atf-c/detail/list.h atf-c/detail/map.c atf-c/detail/map.h \ - atf-c/detail/process.c atf-c/detail/process.h \ - atf-c/detail/sanity.c atf-c/detail/sanity.h \ - atf-c/detail/text.c atf-c/detail/text.h atf-c/detail/tp_main.c \ - atf-c/detail/user.c atf-c/detail/user.h -nodist_libatf_c_la_SOURCES = atf-c/defs.h -#libatf_c_la_CPPFLAGS = "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \ -# "-DATF_BUILD_CFLAGS=\"$(ATF_BUILD_CFLAGS)\"" \ -# "-DATF_BUILD_CPP=\"$(ATF_BUILD_CPP)\"" \ -# "-DATF_BUILD_CPPFLAGS=\"$(ATF_BUILD_CPPFLAGS)\"" \ -# "-DATF_BUILD_CXX=\"$(ATF_BUILD_CXX)\"" \ -# "-DATF_BUILD_CXXFLAGS=\"$(ATF_BUILD_CXXFLAGS)\"" \ -# "-DATF_INCLUDEDIR=\"$(includedir)\"" \ -# "-DATF_LIBEXECDIR=\"$(libexecdir)\"" \ -# "-DATF_PKGDATADIR=\"$(pkgdatadir)\"" \ -# "-DATF_SHELL=\"$(ATF_SHELL)\"" \ -# "-DATF_WORKDIR=\"$(ATF_WORKDIR)\"" -libatf_c_la_CPPFLAGS = "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \ - "-DATF_BUILD_CFLAGS=\"$(ATF_BUILD_CFLAGS)\"" \ - "-DATF_BUILD_CPP=\"$(ATF_BUILD_CPP)\"" \ - "-DATF_BUILD_CPPFLAGS=\"$(ATF_BUILD_CPPFLAGS)\"" \ - "-DATF_BUILD_CXX=\"$(ATF_BUILD_CXX)\"" \ - "-DATF_BUILD_CXXFLAGS=\"$(ATF_BUILD_CXXFLAGS)\"" - -libatf_c_la_LDFLAGS = -version-info 1:0:0 -atf_c_HEADERS = atf-c/build.h \ - atf-c/check.h \ - atf-c/error.h \ - atf-c/error_fwd.h \ - atf-c/macros.h \ - atf-c/tc.h \ - atf-c/tp.h \ - atf-c/utils.h - -nodist_atf_c_HEADERS = atf-c/defs.h -atf_cdir = $(includedir)/atf-c -atf_cpkgconfigdir = $(atf_pkgconfigdir) -atf_cpkgconfig_DATA = atf-c/atf-c.pc -tests_atf_c_DATA = atf-c/Atffile \ - atf-c/Kyuafile \ - atf-c/macros_h_test.c \ - atf-c/unused_test.c - -tests_atf_cdir = $(pkgtestsdir)/atf-c -atf_c_atf_c_test_SOURCES = atf-c/atf_c_test.c -atf_c_atf_c_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_build_test_SOURCES = atf-c/build_test.c atf-c/h_build.h -atf_c_build_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_check_test_SOURCES = atf-c/check_test.c -atf_c_check_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_error_test_SOURCES = atf-c/error_test.c -atf_c_error_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_macros_test_SOURCES = atf-c/macros_test.c -atf_c_macros_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -tests_atf_c_SCRIPTS = atf-c/pkg_config_test -atf_c_tc_test_SOURCES = atf-c/tc_test.c -atf_c_tc_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_tp_test_SOURCES = atf-c/tp_test.c -atf_c_tp_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_utils_test_SOURCES = atf-c/utils_test.c atf-c/h_build.h -atf_c_utils_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -tests_atf_c_detail_DATA = atf-c/detail/Atffile \ - atf-c/detail/Kyuafile - -tests_atf_c_detaildir = $(pkgtestsdir)/atf-c/detail -atf_c_detail_libtest_helpers_la_SOURCES = atf-c/detail/test_helpers.c \ - atf-c/detail/test_helpers.h - -atf_c_detail_libtest_helpers_la_CPPFLAGS = -I$(srcdir)/atf-c \ - -DATF_INCLUDEDIR=\"$(includedir)\" - -atf_c_detail_dynstr_test_SOURCES = atf-c/detail/dynstr_test.c -atf_c_detail_dynstr_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_env_test_SOURCES = atf-c/detail/env_test.c -atf_c_detail_env_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_fs_test_SOURCES = atf-c/detail/fs_test.c -atf_c_detail_fs_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_list_test_SOURCES = atf-c/detail/list_test.c -atf_c_detail_list_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_map_test_SOURCES = atf-c/detail/map_test.c -atf_c_detail_map_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_process_helpers_SOURCES = atf-c/detail/process_helpers.c -atf_c_detail_process_test_SOURCES = atf-c/detail/process_test.c -atf_c_detail_process_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_sanity_test_SOURCES = atf-c/detail/sanity_test.c -atf_c_detail_sanity_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_text_test_SOURCES = atf-c/detail/text_test.c -atf_c_detail_text_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_user_test_SOURCES = atf-c/detail/user_test.c -atf_c_detail_user_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la -atf_c_detail_version_helper_SOURCES = atf-c/detail/version_helper.c -ATF_CXX_LIBS = libatf-c++.la libatf-c.la -libatf_c___la_LIBADD = libatf-c.la -libatf_c___la_SOURCES = atf-c++/build.cpp atf-c++/build.hpp \ - atf-c++/check.cpp atf-c++/check.hpp atf-c++/macros.hpp \ - atf-c++/tests.cpp atf-c++/tests.hpp atf-c++/utils.cpp \ - atf-c++/utils.hpp atf-c++/detail/application.cpp \ - atf-c++/detail/application.hpp atf-c++/detail/auto_array.hpp \ - atf-c++/detail/env.cpp atf-c++/detail/env.hpp \ - atf-c++/detail/exceptions.cpp atf-c++/detail/exceptions.hpp \ - atf-c++/detail/fs.cpp atf-c++/detail/fs.hpp \ - atf-c++/detail/process.cpp atf-c++/detail/process.hpp \ - atf-c++/detail/sanity.hpp atf-c++/detail/text.cpp \ - atf-c++/detail/text.hpp -libatf_c___la_LDFLAGS = -version-info 2:0:0 -atf_c___HEADERS = atf-c++/build.hpp \ - atf-c++/check.hpp \ - atf-c++/macros.hpp \ - atf-c++/tests.hpp \ - atf-c++/utils.hpp - -atf_c__dir = $(includedir)/atf-c++ -atf_c__dirpkgconfigdir = $(atf_pkgconfigdir) -atf_c__dirpkgconfig_DATA = atf-c++/atf-c++.pc -tests_atf_c___DATA = atf-c++/Atffile \ - atf-c++/Kyuafile \ - atf-c++/macros_hpp_test.cpp \ - atf-c++/unused_test.cpp - -tests_atf_c__dir = $(pkgtestsdir)/atf-c++ -atf_c___atf_c___test_SOURCES = atf-c++/atf_c++_test.cpp -atf_c___atf_c___test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___build_test_SOURCES = atf-c++/build_test.cpp atf-c/h_build.h -atf_c___build_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___check_test_SOURCES = atf-c++/check_test.cpp -atf_c___check_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___macros_test_SOURCES = atf-c++/macros_test.cpp -atf_c___macros_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___SCRIPTS = atf-c++/pkg_config_test -atf_c___tests_test_SOURCES = atf-c++/tests_test.cpp -atf_c___tests_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___utils_test_SOURCES = atf-c++/utils_test.cpp -atf_c___utils_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___detail_DATA = atf-c++/detail/Atffile \ - atf-c++/detail/Kyuafile - -tests_atf_c___detaildir = $(pkgtestsdir)/atf-c++/detail -atf_c___detail_libtest_helpers_la_SOURCES = atf-c++/detail/test_helpers.cpp \ - atf-c++/detail/test_helpers.hpp - -atf_c___detail_libtest_helpers_la_CPPFLAGS = -DATF_INCLUDEDIR=\"$(includedir)\" -atf_c___detail_application_test_SOURCES = atf-c++/detail/application_test.cpp -atf_c___detail_application_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_auto_array_test_SOURCES = atf-c++/detail/auto_array_test.cpp -atf_c___detail_auto_array_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_env_test_SOURCES = atf-c++/detail/env_test.cpp -atf_c___detail_env_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_exceptions_test_SOURCES = atf-c++/detail/exceptions_test.cpp -atf_c___detail_exceptions_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_fs_test_SOURCES = atf-c++/detail/fs_test.cpp -atf_c___detail_fs_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_process_test_SOURCES = atf-c++/detail/process_test.cpp -atf_c___detail_process_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_text_test_SOURCES = atf-c++/detail/text_test.cpp -atf_c___detail_text_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -atf_c___detail_version_helper_SOURCES = atf-c++/detail/version_helper.cpp -atf_sh_atf_check_SOURCES = atf-sh/atf-check.cpp -atf_sh_atf_check_LDADD = $(ATF_CXX_LIBS) -atf_sh_atf_check_CPPFLAGS = -DATF_SHELL=\"$(ATF_SHELL)\" -atf_sh_atf_sh_SOURCES = atf-sh/atf-sh.cpp -atf_sh_atf_sh_CPPFLAGS = -DATF_LIBEXECDIR=\"$(libexecdir)\" \ - -DATF_PKGDATADIR=\"$(pkgdatadir)\" \ - -DATF_SHELL=\"$(ATF_SHELL)\" - -atf_sh_atf_sh_LDADD = $(ATF_CXX_LIBS) -atf_sh_DATA = atf-sh/libatf-sh.subr -atf_shdir = $(pkgdatadir) -atf_shpkgconfigdir = $(atf_pkgconfigdir) -atf_shpkgconfig_DATA = atf-sh/atf-sh.pc -tests_atf_sh_DATA = atf-sh/Atffile \ - atf-sh/Kyuafile - -tests_atf_shdir = $(pkgtestsdir)/atf-sh -tests_atf_sh_SCRIPTS = atf-sh/misc_helpers atf-sh/atf_check_test \ - atf-sh/atf-check_test atf-sh/config_test \ - atf-sh/integration_test atf-sh/normalize_test atf-sh/tc_test \ - atf-sh/tp_test -bootstrap_h_app_empty_SOURCES = bootstrap/h_app_empty.cpp -bootstrap_h_app_empty_LDADD = tools/libtools.a $(ATF_CXX_LIBS) -bootstrap_h_app_opts_args_SOURCES = bootstrap/h_app_opts_args.cpp -bootstrap_h_app_opts_args_LDADD = tools/libtools.a $(ATF_CXX_LIBS) -bootstrap_h_tp_basic_c_SOURCES = bootstrap/h_tp_basic_c.c -bootstrap_h_tp_basic_c_LDADD = libatf-c.la -bootstrap_h_tp_basic_cpp_SOURCES = bootstrap/h_tp_basic_cpp.cpp -bootstrap_h_tp_basic_cpp_LDADD = $(ATF_CXX_LIBS) -check_SCRIPTS = bootstrap/h_tp_basic_sh bootstrap/h_tp_atf_check_sh \ - bootstrap/h_tp_fail bootstrap/h_tp_pass -DISTCLEANFILES = \ - bootstrap/atconfig \ - testsuite.lineno \ - testsuite.log - -testsuite_incs = $(srcdir)/bootstrap/t_application_help.at \ - $(srcdir)/bootstrap/t_application_opts_args.at \ - $(srcdir)/bootstrap/t_atf_config.at \ - $(srcdir)/bootstrap/t_atf_run.at \ - $(srcdir)/bootstrap/t_subr_atf_check.at \ - $(srcdir)/bootstrap/t_test_program_compare.at \ - $(srcdir)/bootstrap/t_test_program_filter.at \ - $(srcdir)/bootstrap/t_test_program_list.at \ - $(srcdir)/bootstrap/t_test_program_run.at - -tests_test_programs_DATA = test-programs/Atffile \ - test-programs/Kyuafile - -tests_test_programsdir = $(pkgtestsdir)/test-programs -test_programs_c_helpers_SOURCES = test-programs/c_helpers.c -test_programs_c_helpers_LDADD = libatf-c.la -test_programs_cpp_helpers_SOURCES = test-programs/cpp_helpers.cpp -test_programs_cpp_helpers_LDADD = $(ATF_CXX_LIBS) -common_sh = $(srcdir)/test-programs/common.sh -tests_test_programs_SCRIPTS = test-programs/sh_helpers \ - test-programs/config_test test-programs/expect_test \ - test-programs/meta_data_test test-programs/result_test \ - test-programs/srcdir_test -@ENABLE_TOOLS_TRUE@TOOLS_CPPFLAGS = -I$(top_srcdir)/tools -I$(top_builddir)/tools -@ENABLE_TOOLS_TRUE@TOOLS_LDADD = tools/libtools.a -@ENABLE_TOOLS_TRUE@noinst_LIBRARIES = tools/libtools.a -@ENABLE_TOOLS_TRUE@tools_libtools_a_SOURCES = tools/application.cpp \ -@ENABLE_TOOLS_TRUE@ tools/application.hpp \ -@ENABLE_TOOLS_TRUE@ tools/atffile.cpp \ -@ENABLE_TOOLS_TRUE@ tools/atffile.hpp \ -@ENABLE_TOOLS_TRUE@ tools/auto_array.hpp \ -@ENABLE_TOOLS_TRUE@ tools/config.cpp \ -@ENABLE_TOOLS_TRUE@ tools/config.hpp \ -@ENABLE_TOOLS_TRUE@ tools/config_file.cpp \ -@ENABLE_TOOLS_TRUE@ tools/config_file.hpp \ -@ENABLE_TOOLS_TRUE@ tools/env.cpp \ -@ENABLE_TOOLS_TRUE@ tools/env.hpp \ -@ENABLE_TOOLS_TRUE@ tools/exceptions.cpp \ -@ENABLE_TOOLS_TRUE@ tools/exceptions.hpp \ -@ENABLE_TOOLS_TRUE@ tools/expand.cpp \ -@ENABLE_TOOLS_TRUE@ tools/expand.hpp \ -@ENABLE_TOOLS_TRUE@ tools/fs.cpp \ -@ENABLE_TOOLS_TRUE@ tools/fs.hpp \ -@ENABLE_TOOLS_TRUE@ tools/io.cpp \ -@ENABLE_TOOLS_TRUE@ tools/io.hpp \ -@ENABLE_TOOLS_TRUE@ tools/parser.cpp \ -@ENABLE_TOOLS_TRUE@ tools/parser.hpp \ -@ENABLE_TOOLS_TRUE@ tools/process.cpp \ -@ENABLE_TOOLS_TRUE@ tools/process.hpp \ -@ENABLE_TOOLS_TRUE@ tools/reader.cpp \ -@ENABLE_TOOLS_TRUE@ tools/reader.hpp \ -@ENABLE_TOOLS_TRUE@ tools/requirements.cpp \ -@ENABLE_TOOLS_TRUE@ tools/requirements.hpp \ -@ENABLE_TOOLS_TRUE@ tools/signals.cpp \ -@ENABLE_TOOLS_TRUE@ tools/signals.hpp \ -@ENABLE_TOOLS_TRUE@ tools/test-program.cpp \ -@ENABLE_TOOLS_TRUE@ tools/test-program.hpp \ -@ENABLE_TOOLS_TRUE@ tools/test_helpers.hpp \ -@ENABLE_TOOLS_TRUE@ tools/text.cpp \ -@ENABLE_TOOLS_TRUE@ tools/text.hpp \ -@ENABLE_TOOLS_TRUE@ tools/timers.cpp \ -@ENABLE_TOOLS_TRUE@ tools/timers.hpp \ -@ENABLE_TOOLS_TRUE@ tools/ui.cpp \ -@ENABLE_TOOLS_TRUE@ tools/ui.hpp \ -@ENABLE_TOOLS_TRUE@ tools/user.cpp \ -@ENABLE_TOOLS_TRUE@ tools/user.hpp - -@ENABLE_TOOLS_TRUE@nodist_tools_libtools_a_SOURCES = tools/defs.hpp -@ENABLE_TOOLS_TRUE@tools_libtools_a_CPPFLAGS = "-DATF_ARCH=\"$(atf_arch)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_BUILD_CFLAGS=\"$(ATF_BUILD_CFLAGS)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_BUILD_CPP=\"$(ATF_BUILD_CPP)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_BUILD_CPPFLAGS=\"$(ATF_BUILD_CPPFLAGS)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_BUILD_CXX=\"$(ATF_BUILD_CXX)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_BUILD_CXXFLAGS=\"$(ATF_BUILD_CXXFLAGS)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_CONFDIR=\"$(atf_confdir)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_INCLUDEDIR=\"$(includedir)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_LIBDIR=\"$(libdir)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_LIBEXECDIR=\"$(libexecdir)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_MACHINE=\"$(atf_machine)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_PKGDATADIR=\"$(pkgdatadir)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_SHELL=\"$(ATF_SHELL)\"" \ -@ENABLE_TOOLS_TRUE@ "-DATF_WORKDIR=\"$(ATF_WORKDIR)\"" \ -@ENABLE_TOOLS_TRUE@ $(TOOLS_CPPFLAGS) - -@ENABLE_TOOLS_TRUE@tools_atf_config_SOURCES = tools/atf-config.cpp -@ENABLE_TOOLS_TRUE@tools_atf_config_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_atf_config_LDADD = $(TOOLS_LDADD) -@ENABLE_TOOLS_TRUE@tools_atf_report_SOURCES = tools/atf-report.cpp -@ENABLE_TOOLS_TRUE@tools_atf_report_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_atf_report_LDADD = $(TOOLS_LDADD) -@ENABLE_TOOLS_TRUE@tools_atf_run_CPPFLAGS = $(TOOLS_CPPFLAGS) "-DGDB=\"$(GDB)\"" -@ENABLE_TOOLS_TRUE@tools_atf_run_SOURCES = tools/atf-run.cpp -@ENABLE_TOOLS_TRUE@tools_atf_run_LDADD = $(TOOLS_LDADD) -@ENABLE_TOOLS_TRUE@tools_atf_version_SOURCES = tools/atf-version.cpp -@ENABLE_TOOLS_TRUE@nodist_tools_atf_version_SOURCES = tools/revision.h -@ENABLE_TOOLS_TRUE@tools_atf_version_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_atf_version_LDADD = $(TOOLS_LDADD) -@ENABLE_TOOLS_TRUE@cssdir = $(atf_cssdir) -@ENABLE_TOOLS_TRUE@css_DATA = tools/tests-results.css -@ENABLE_TOOLS_TRUE@dtddir = $(atf_dtddir) -@ENABLE_TOOLS_TRUE@dtd_DATA = tools/tests-results.dtd -@ENABLE_TOOLS_TRUE@egdir = $(atf_egdir) -@ENABLE_TOOLS_TRUE@eg_DATA = tools/sample/atf-run.hooks \ -@ENABLE_TOOLS_TRUE@ tools/sample/common.conf -@ENABLE_TOOLS_TRUE@hooksdir = $(pkgdatadir) -@ENABLE_TOOLS_TRUE@hooks_DATA = tools/share/atf-run.hooks -@ENABLE_TOOLS_TRUE@xsldir = $(atf_xsldir) -@ENABLE_TOOLS_TRUE@xsl_DATA = tools/tests-results.xsl -@ENABLE_TOOLS_TRUE@tests_tools_DATA = tools/Atffile tools/Kyuafile -@ENABLE_TOOLS_TRUE@tests_toolsdir = $(pkgtestsdir)/tools -@ENABLE_TOOLS_TRUE@tests_tools_SCRIPTS = tools/atf-config_test \ -@ENABLE_TOOLS_TRUE@ tools/atf-report_test tools/atf-run_test -@ENABLE_TOOLS_TRUE@tools_application_test_SOURCES = tools/application_test.cpp -@ENABLE_TOOLS_TRUE@tools_application_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_application_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_atffile_test_SOURCES = tools/atffile_test.cpp -@ENABLE_TOOLS_TRUE@tools_atffile_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_atffile_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_auto_array_test_SOURCES = tools/auto_array_test.cpp -@ENABLE_TOOLS_TRUE@tools_auto_array_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_auto_array_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_bad_metadata_helper_SOURCES = tools/bad_metadata_helper.c -@ENABLE_TOOLS_TRUE@tools_bad_metadata_helper_LDADD = libatf-c.la -@ENABLE_TOOLS_TRUE@tools_config_test_SOURCES = tools/config_test.cpp -@ENABLE_TOOLS_TRUE@tools_config_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_config_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_config_file_test_SOURCES = tools/config_file_test.cpp -@ENABLE_TOOLS_TRUE@tools_config_file_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_config_file_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_env_test_SOURCES = tools/env_test.cpp -@ENABLE_TOOLS_TRUE@tools_env_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_env_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_expand_test_SOURCES = tools/expand_test.cpp -@ENABLE_TOOLS_TRUE@tools_expand_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_expand_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_expect_helpers_SOURCES = tools/expect_helpers.c -@ENABLE_TOOLS_TRUE@tools_expect_helpers_LDADD = libatf-c.la -@ENABLE_TOOLS_TRUE@tools_fail_helper_SOURCES = tools/fail_helper.cpp -@ENABLE_TOOLS_TRUE@tools_fail_helper_LDADD = $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_fs_test_SOURCES = tools/fs_test.cpp -@ENABLE_TOOLS_TRUE@tools_fs_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_fs_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_io_test_SOURCES = tools/io_test.cpp -@ENABLE_TOOLS_TRUE@tools_io_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_io_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_misc_helpers_SOURCES = tools/misc_helpers.cpp -@ENABLE_TOOLS_TRUE@tools_misc_helpers_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_misc_helpers_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_parser_test_SOURCES = tools/parser_test.cpp -@ENABLE_TOOLS_TRUE@tools_parser_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_parser_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_process_test_SOURCES = tools/process_test.cpp -@ENABLE_TOOLS_TRUE@tools_process_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_process_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_pass_helper_SOURCES = tools/pass_helper.cpp -@ENABLE_TOOLS_TRUE@tools_pass_helper_LDADD = $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_process_helpers_SOURCES = tools/process_helpers.c -@ENABLE_TOOLS_TRUE@tools_reader_test_SOURCES = tools/reader_test.cpp -@ENABLE_TOOLS_TRUE@tools_reader_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_reader_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_requirements_test_SOURCES = tools/requirements_test.cpp -@ENABLE_TOOLS_TRUE@tools_requirements_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_requirements_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_several_tcs_helper_SOURCES = tools/several_tcs_helper.c -@ENABLE_TOOLS_TRUE@tools_several_tcs_helper_LDADD = libatf-c.la -@ENABLE_TOOLS_TRUE@tools_signals_test_SOURCES = tools/signals_test.cpp tools/signals.cpp -@ENABLE_TOOLS_TRUE@tools_signals_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_signals_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_test_program_test_SOURCES = tools/test_program_test.cpp -@ENABLE_TOOLS_TRUE@tools_test_program_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_test_program_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_text_test_SOURCES = tools/text_test.cpp tools/text.cpp -@ENABLE_TOOLS_TRUE@tools_text_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_text_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_ui_test_SOURCES = tools/ui_test.cpp tools/ui.cpp -@ENABLE_TOOLS_TRUE@tools_ui_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_ui_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_user_test_SOURCES = tools/user_test.cpp tools/user.cpp -@ENABLE_TOOLS_TRUE@tools_user_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -@ENABLE_TOOLS_TRUE@tools_user_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) -@ENABLE_TOOLS_TRUE@tools_zero_tcs_helper_SOURCES = tools/zero_tcs_helper.c -@ENABLE_TOOLS_TRUE@tools_zero_tcs_helper_LDADD = libatf-c.la - -# -# Top-level distfile documents. -# -doc_DATA = AUTHORS COPYING NEWS README - -# -# Supporting logic to run our custom testsuite. -# -TESTS_ENVIRONMENT = PATH=$(prefix)/bin:$${PATH} \ - PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig - - -# Allow the caller to override the configuration file to passed to our -# test runs below. -KYUA_TEST_CONFIG_FILE = none -testsdir = $(exec_prefix)/tests -pkgtestsdir = $(testsdir)/$(PACKAGE) -pkgtests_DATA = Kyuafile $(am__append_10) -BUILD_SH_TP = \ - test -d "$$(dirname "$${dst}")" || mkdir -p "$$(dirname "$${dst}")"; \ - echo "\#! $(bindir)/atf-sh" >"$${dst}"; \ - if [ -n "$${substs}" ]; then \ - cat $${src} | sed $${substs} >>"$${dst}"; \ - else \ - cat $${src} >>"$${dst}"; \ - fi; \ - chmod +x "$${dst}" - -all: $(BUILT_SOURCES) config.h - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/admin/Makefile.am.inc $(srcdir)/atf-c/Makefile.am.inc $(srcdir)/atf-c/detail/Makefile.am.inc $(srcdir)/atf-c++/Makefile.am.inc $(srcdir)/atf-c++/detail/Makefile.am.inc $(srcdir)/atf-sh/Makefile.am.inc $(srcdir)/bootstrap/Makefile.am.inc $(srcdir)/doc/Makefile.am.inc $(srcdir)/test-programs/Makefile.am.inc $(srcdir)/tools/Makefile.am.inc $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; -$(srcdir)/admin/Makefile.am.inc $(srcdir)/atf-c/Makefile.am.inc $(srcdir)/atf-c/detail/Makefile.am.inc $(srcdir)/atf-c++/Makefile.am.inc $(srcdir)/atf-c++/detail/Makefile.am.inc $(srcdir)/atf-sh/Makefile.am.inc $(srcdir)/bootstrap/Makefile.am.inc $(srcdir)/doc/Makefile.am.inc $(srcdir)/test-programs/Makefile.am.inc $(srcdir)/tools/Makefile.am.inc $(am__empty): - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -atf-c/defs.h: $(top_builddir)/config.status $(top_srcdir)/atf-c/defs.h.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -tools/defs.hpp: $(top_builddir)/config.status $(top_srcdir)/tools/defs.hpp.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -tools/$(am__dirstamp): - @$(MKDIR_P) tools - @: > tools/$(am__dirstamp) -tools/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) tools/$(DEPDIR) - @: > tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-application.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-atffile.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-config.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-config_file.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-env.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-exceptions.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-expand.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-fs.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-io.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-parser.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-process.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-reader.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-requirements.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-signals.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-test-program.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-text.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-timers.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-ui.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_libtools_a-user.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/libtools.a: $(tools_libtools_a_OBJECTS) $(tools_libtools_a_DEPENDENCIES) $(EXTRA_tools_libtools_a_DEPENDENCIES) tools/$(am__dirstamp) - $(AM_V_at)-rm -f tools/libtools.a - $(AM_V_AR)$(tools_libtools_a_AR) tools/libtools.a $(tools_libtools_a_OBJECTS) $(tools_libtools_a_LIBADD) - $(AM_V_at)$(RANLIB) tools/libtools.a - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } -atf-c++/detail/$(am__dirstamp): - @$(MKDIR_P) atf-c++/detail - @: > atf-c++/detail/$(am__dirstamp) -atf-c++/detail/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) atf-c++/detail/$(DEPDIR) - @: > atf-c++/detail/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo: \ - atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/libtest_helpers.la: $(atf_c___detail_libtest_helpers_la_OBJECTS) $(atf_c___detail_libtest_helpers_la_DEPENDENCIES) $(EXTRA_atf_c___detail_libtest_helpers_la_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_libtest_helpers_la_OBJECTS) $(atf_c___detail_libtest_helpers_la_LIBADD) $(LIBS) -atf-c/detail/$(am__dirstamp): - @$(MKDIR_P) atf-c/detail - @: > atf-c/detail/$(am__dirstamp) -atf-c/detail/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) atf-c/detail/$(DEPDIR) - @: > atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo: \ - atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/libtest_helpers.la: $(atf_c_detail_libtest_helpers_la_OBJECTS) $(atf_c_detail_libtest_helpers_la_DEPENDENCIES) $(EXTRA_atf_c_detail_libtest_helpers_la_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_libtest_helpers_la_OBJECTS) $(atf_c_detail_libtest_helpers_la_LIBADD) $(LIBS) -atf-c++/$(am__dirstamp): - @$(MKDIR_P) atf-c++ - @: > atf-c++/$(am__dirstamp) -atf-c++/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) atf-c++/$(DEPDIR) - @: > atf-c++/$(DEPDIR)/$(am__dirstamp) -atf-c++/build.lo: atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) -atf-c++/check.lo: atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) -atf-c++/tests.lo: atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) -atf-c++/utils.lo: atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/application.lo: atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/env.lo: atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/exceptions.lo: atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/fs.lo: atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/process.lo: atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) -atf-c++/detail/text.lo: atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -libatf-c++.la: $(libatf_c___la_OBJECTS) $(libatf_c___la_DEPENDENCIES) $(EXTRA_libatf_c___la_DEPENDENCIES) - $(AM_V_CXXLD)$(libatf_c___la_LINK) -rpath $(libdir) $(libatf_c___la_OBJECTS) $(libatf_c___la_LIBADD) $(LIBS) -atf-c/$(am__dirstamp): - @$(MKDIR_P) atf-c - @: > atf-c/$(am__dirstamp) -atf-c/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) atf-c/$(DEPDIR) - @: > atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/libatf_c_la-build.lo: atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/libatf_c_la-check.lo: atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/libatf_c_la-error.lo: atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/libatf_c_la-tc.lo: atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/libatf_c_la-tp.lo: atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/libatf_c_la-utils.lo: atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-dynstr.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-env.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-fs.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-list.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-map.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-process.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-sanity.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-text.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-tp_main.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) -atf-c/detail/libatf_c_la-user.lo: atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -libatf-c.la: $(libatf_c_la_OBJECTS) $(libatf_c_la_DEPENDENCIES) $(EXTRA_libatf_c_la_DEPENDENCIES) - $(AM_V_CCLD)$(libatf_c_la_LINK) -rpath $(libdir) $(libatf_c_la_OBJECTS) $(libatf_c_la_LIBADD) $(LIBS) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-libexecPROGRAMS: $(libexec_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-libexecPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(libexecdir)" && rm -f $$files - -clean-libexecPROGRAMS: - @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-tests_atf_cPROGRAMS: $(tests_atf_c_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c_PROGRAMS)'; test -n "$(tests_atf_cdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_cdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_cdir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tests_atf_cdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_atf_cdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_cPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c_PROGRAMS)'; test -n "$(tests_atf_cdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tests_atf_cdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tests_atf_cdir)" && rm -f $$files - -clean-tests_atf_cPROGRAMS: - @list='$(tests_atf_c_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-tests_atf_c__PROGRAMS: $(tests_atf_c___PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c___PROGRAMS)'; test -n "$(tests_atf_c__dir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c__dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c__dir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tests_atf_c__dir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_atf_c__dir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_c__PROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c___PROGRAMS)'; test -n "$(tests_atf_c__dir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tests_atf_c__dir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tests_atf_c__dir)" && rm -f $$files - -clean-tests_atf_c__PROGRAMS: - @list='$(tests_atf_c___PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-tests_atf_c___detailPROGRAMS: $(tests_atf_c___detail_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c___detail_PROGRAMS)'; test -n "$(tests_atf_c___detaildir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c___detaildir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c___detaildir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tests_atf_c___detaildir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_atf_c___detaildir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_c___detailPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c___detail_PROGRAMS)'; test -n "$(tests_atf_c___detaildir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tests_atf_c___detaildir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tests_atf_c___detaildir)" && rm -f $$files - -clean-tests_atf_c___detailPROGRAMS: - @list='$(tests_atf_c___detail_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-tests_atf_c_detailPROGRAMS: $(tests_atf_c_detail_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c_detail_PROGRAMS)'; test -n "$(tests_atf_c_detaildir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c_detaildir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c_detaildir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tests_atf_c_detaildir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_atf_c_detaildir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_c_detailPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c_detail_PROGRAMS)'; test -n "$(tests_atf_c_detaildir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tests_atf_c_detaildir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tests_atf_c_detaildir)" && rm -f $$files - -clean-tests_atf_c_detailPROGRAMS: - @list='$(tests_atf_c_detail_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-tests_test_programsPROGRAMS: $(tests_test_programs_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(tests_test_programs_PROGRAMS)'; test -n "$(tests_test_programsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_test_programsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_test_programsdir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tests_test_programsdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_test_programsdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_test_programsPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(tests_test_programs_PROGRAMS)'; test -n "$(tests_test_programsdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tests_test_programsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tests_test_programsdir)" && rm -f $$files - -clean-tests_test_programsPROGRAMS: - @list='$(tests_test_programs_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -install-tests_toolsPROGRAMS: $(tests_tools_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(tests_tools_PROGRAMS)'; test -n "$(tests_toolsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_toolsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_toolsdir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(tests_toolsdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_toolsdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_toolsPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(tests_tools_PROGRAMS)'; test -n "$(tests_toolsdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tests_toolsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tests_toolsdir)" && rm -f $$files - -clean-tests_toolsPROGRAMS: - @list='$(tests_tools_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -atf-c++/atf_c++_test.$(OBJEXT): atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) - -atf-c++/atf_c++_test$(EXEEXT): $(atf_c___atf_c___test_OBJECTS) $(atf_c___atf_c___test_DEPENDENCIES) $(EXTRA_atf_c___atf_c___test_DEPENDENCIES) atf-c++/$(am__dirstamp) - @rm -f atf-c++/atf_c++_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___atf_c___test_OBJECTS) $(atf_c___atf_c___test_LDADD) $(LIBS) -atf-c++/build_test.$(OBJEXT): atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) - -atf-c++/build_test$(EXEEXT): $(atf_c___build_test_OBJECTS) $(atf_c___build_test_DEPENDENCIES) $(EXTRA_atf_c___build_test_DEPENDENCIES) atf-c++/$(am__dirstamp) - @rm -f atf-c++/build_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___build_test_OBJECTS) $(atf_c___build_test_LDADD) $(LIBS) -atf-c++/check_test.$(OBJEXT): atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) - -atf-c++/check_test$(EXEEXT): $(atf_c___check_test_OBJECTS) $(atf_c___check_test_DEPENDENCIES) $(EXTRA_atf_c___check_test_DEPENDENCIES) atf-c++/$(am__dirstamp) - @rm -f atf-c++/check_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___check_test_OBJECTS) $(atf_c___check_test_LDADD) $(LIBS) -atf-c++/detail/application_test.$(OBJEXT): \ - atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/application_test$(EXEEXT): $(atf_c___detail_application_test_OBJECTS) $(atf_c___detail_application_test_DEPENDENCIES) $(EXTRA_atf_c___detail_application_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/application_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_application_test_OBJECTS) $(atf_c___detail_application_test_LDADD) $(LIBS) -atf-c++/detail/auto_array_test.$(OBJEXT): \ - atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/auto_array_test$(EXEEXT): $(atf_c___detail_auto_array_test_OBJECTS) $(atf_c___detail_auto_array_test_DEPENDENCIES) $(EXTRA_atf_c___detail_auto_array_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/auto_array_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_auto_array_test_OBJECTS) $(atf_c___detail_auto_array_test_LDADD) $(LIBS) -atf-c++/detail/env_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/env_test$(EXEEXT): $(atf_c___detail_env_test_OBJECTS) $(atf_c___detail_env_test_DEPENDENCIES) $(EXTRA_atf_c___detail_env_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/env_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_env_test_OBJECTS) $(atf_c___detail_env_test_LDADD) $(LIBS) -atf-c++/detail/exceptions_test.$(OBJEXT): \ - atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/exceptions_test$(EXEEXT): $(atf_c___detail_exceptions_test_OBJECTS) $(atf_c___detail_exceptions_test_DEPENDENCIES) $(EXTRA_atf_c___detail_exceptions_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/exceptions_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_exceptions_test_OBJECTS) $(atf_c___detail_exceptions_test_LDADD) $(LIBS) -atf-c++/detail/fs_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/fs_test$(EXEEXT): $(atf_c___detail_fs_test_OBJECTS) $(atf_c___detail_fs_test_DEPENDENCIES) $(EXTRA_atf_c___detail_fs_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/fs_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_fs_test_OBJECTS) $(atf_c___detail_fs_test_LDADD) $(LIBS) -atf-c++/detail/process_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/process_test$(EXEEXT): $(atf_c___detail_process_test_OBJECTS) $(atf_c___detail_process_test_DEPENDENCIES) $(EXTRA_atf_c___detail_process_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/process_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_process_test_OBJECTS) $(atf_c___detail_process_test_LDADD) $(LIBS) -atf-c++/detail/text_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/text_test$(EXEEXT): $(atf_c___detail_text_test_OBJECTS) $(atf_c___detail_text_test_DEPENDENCIES) $(EXTRA_atf_c___detail_text_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/text_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_text_test_OBJECTS) $(atf_c___detail_text_test_LDADD) $(LIBS) -atf-c++/detail/version_helper.$(OBJEXT): \ - atf-c++/detail/$(am__dirstamp) \ - atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c++/detail/version_helper$(EXEEXT): $(atf_c___detail_version_helper_OBJECTS) $(atf_c___detail_version_helper_DEPENDENCIES) $(EXTRA_atf_c___detail_version_helper_DEPENDENCIES) atf-c++/detail/$(am__dirstamp) - @rm -f atf-c++/detail/version_helper$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_version_helper_OBJECTS) $(atf_c___detail_version_helper_LDADD) $(LIBS) -atf-c++/macros_test.$(OBJEXT): atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) - -atf-c++/macros_test$(EXEEXT): $(atf_c___macros_test_OBJECTS) $(atf_c___macros_test_DEPENDENCIES) $(EXTRA_atf_c___macros_test_DEPENDENCIES) atf-c++/$(am__dirstamp) - @rm -f atf-c++/macros_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___macros_test_OBJECTS) $(atf_c___macros_test_LDADD) $(LIBS) -atf-c++/tests_test.$(OBJEXT): atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) - -atf-c++/tests_test$(EXEEXT): $(atf_c___tests_test_OBJECTS) $(atf_c___tests_test_DEPENDENCIES) $(EXTRA_atf_c___tests_test_DEPENDENCIES) atf-c++/$(am__dirstamp) - @rm -f atf-c++/tests_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___tests_test_OBJECTS) $(atf_c___tests_test_LDADD) $(LIBS) -atf-c++/utils_test.$(OBJEXT): atf-c++/$(am__dirstamp) \ - atf-c++/$(DEPDIR)/$(am__dirstamp) - -atf-c++/utils_test$(EXEEXT): $(atf_c___utils_test_OBJECTS) $(atf_c___utils_test_DEPENDENCIES) $(EXTRA_atf_c___utils_test_DEPENDENCIES) atf-c++/$(am__dirstamp) - @rm -f atf-c++/utils_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_c___utils_test_OBJECTS) $(atf_c___utils_test_LDADD) $(LIBS) -atf-c/atf_c_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/atf_c_test$(EXEEXT): $(atf_c_atf_c_test_OBJECTS) $(atf_c_atf_c_test_DEPENDENCIES) $(EXTRA_atf_c_atf_c_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/atf_c_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_atf_c_test_OBJECTS) $(atf_c_atf_c_test_LDADD) $(LIBS) -atf-c/build_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/build_test$(EXEEXT): $(atf_c_build_test_OBJECTS) $(atf_c_build_test_DEPENDENCIES) $(EXTRA_atf_c_build_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/build_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_build_test_OBJECTS) $(atf_c_build_test_LDADD) $(LIBS) -atf-c/check_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/check_test$(EXEEXT): $(atf_c_check_test_OBJECTS) $(atf_c_check_test_DEPENDENCIES) $(EXTRA_atf_c_check_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/check_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_check_test_OBJECTS) $(atf_c_check_test_LDADD) $(LIBS) -atf-c/detail/dynstr_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/dynstr_test$(EXEEXT): $(atf_c_detail_dynstr_test_OBJECTS) $(atf_c_detail_dynstr_test_DEPENDENCIES) $(EXTRA_atf_c_detail_dynstr_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/dynstr_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_dynstr_test_OBJECTS) $(atf_c_detail_dynstr_test_LDADD) $(LIBS) -atf-c/detail/env_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/env_test$(EXEEXT): $(atf_c_detail_env_test_OBJECTS) $(atf_c_detail_env_test_DEPENDENCIES) $(EXTRA_atf_c_detail_env_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/env_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_env_test_OBJECTS) $(atf_c_detail_env_test_LDADD) $(LIBS) -atf-c/detail/fs_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/fs_test$(EXEEXT): $(atf_c_detail_fs_test_OBJECTS) $(atf_c_detail_fs_test_DEPENDENCIES) $(EXTRA_atf_c_detail_fs_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/fs_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_fs_test_OBJECTS) $(atf_c_detail_fs_test_LDADD) $(LIBS) -atf-c/detail/list_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/list_test$(EXEEXT): $(atf_c_detail_list_test_OBJECTS) $(atf_c_detail_list_test_DEPENDENCIES) $(EXTRA_atf_c_detail_list_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/list_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_list_test_OBJECTS) $(atf_c_detail_list_test_LDADD) $(LIBS) -atf-c/detail/map_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/map_test$(EXEEXT): $(atf_c_detail_map_test_OBJECTS) $(atf_c_detail_map_test_DEPENDENCIES) $(EXTRA_atf_c_detail_map_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/map_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_map_test_OBJECTS) $(atf_c_detail_map_test_LDADD) $(LIBS) -atf-c/detail/process_helpers.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/process_helpers$(EXEEXT): $(atf_c_detail_process_helpers_OBJECTS) $(atf_c_detail_process_helpers_DEPENDENCIES) $(EXTRA_atf_c_detail_process_helpers_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/process_helpers$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_process_helpers_OBJECTS) $(atf_c_detail_process_helpers_LDADD) $(LIBS) -atf-c/detail/process_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/process_test$(EXEEXT): $(atf_c_detail_process_test_OBJECTS) $(atf_c_detail_process_test_DEPENDENCIES) $(EXTRA_atf_c_detail_process_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/process_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_process_test_OBJECTS) $(atf_c_detail_process_test_LDADD) $(LIBS) -atf-c/detail/sanity_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/sanity_test$(EXEEXT): $(atf_c_detail_sanity_test_OBJECTS) $(atf_c_detail_sanity_test_DEPENDENCIES) $(EXTRA_atf_c_detail_sanity_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/sanity_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_sanity_test_OBJECTS) $(atf_c_detail_sanity_test_LDADD) $(LIBS) -atf-c/detail/text_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/text_test$(EXEEXT): $(atf_c_detail_text_test_OBJECTS) $(atf_c_detail_text_test_DEPENDENCIES) $(EXTRA_atf_c_detail_text_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/text_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_text_test_OBJECTS) $(atf_c_detail_text_test_LDADD) $(LIBS) -atf-c/detail/user_test.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/user_test$(EXEEXT): $(atf_c_detail_user_test_OBJECTS) $(atf_c_detail_user_test_DEPENDENCIES) $(EXTRA_atf_c_detail_user_test_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/user_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_user_test_OBJECTS) $(atf_c_detail_user_test_LDADD) $(LIBS) -atf-c/detail/version_helper.$(OBJEXT): atf-c/detail/$(am__dirstamp) \ - atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -atf-c/detail/version_helper$(EXEEXT): $(atf_c_detail_version_helper_OBJECTS) $(atf_c_detail_version_helper_DEPENDENCIES) $(EXTRA_atf_c_detail_version_helper_DEPENDENCIES) atf-c/detail/$(am__dirstamp) - @rm -f atf-c/detail/version_helper$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_detail_version_helper_OBJECTS) $(atf_c_detail_version_helper_LDADD) $(LIBS) -atf-c/error_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/error_test$(EXEEXT): $(atf_c_error_test_OBJECTS) $(atf_c_error_test_DEPENDENCIES) $(EXTRA_atf_c_error_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/error_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_error_test_OBJECTS) $(atf_c_error_test_LDADD) $(LIBS) -atf-c/macros_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/macros_test$(EXEEXT): $(atf_c_macros_test_OBJECTS) $(atf_c_macros_test_DEPENDENCIES) $(EXTRA_atf_c_macros_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/macros_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_macros_test_OBJECTS) $(atf_c_macros_test_LDADD) $(LIBS) -atf-c/tc_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/tc_test$(EXEEXT): $(atf_c_tc_test_OBJECTS) $(atf_c_tc_test_DEPENDENCIES) $(EXTRA_atf_c_tc_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/tc_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_tc_test_OBJECTS) $(atf_c_tc_test_LDADD) $(LIBS) -atf-c/tp_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/tp_test$(EXEEXT): $(atf_c_tp_test_OBJECTS) $(atf_c_tp_test_DEPENDENCIES) $(EXTRA_atf_c_tp_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/tp_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_tp_test_OBJECTS) $(atf_c_tp_test_LDADD) $(LIBS) -atf-c/utils_test.$(OBJEXT): atf-c/$(am__dirstamp) \ - atf-c/$(DEPDIR)/$(am__dirstamp) - -atf-c/utils_test$(EXEEXT): $(atf_c_utils_test_OBJECTS) $(atf_c_utils_test_DEPENDENCIES) $(EXTRA_atf_c_utils_test_DEPENDENCIES) atf-c/$(am__dirstamp) - @rm -f atf-c/utils_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(atf_c_utils_test_OBJECTS) $(atf_c_utils_test_LDADD) $(LIBS) -atf-sh/$(am__dirstamp): - @$(MKDIR_P) atf-sh - @: > atf-sh/$(am__dirstamp) -atf-sh/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) atf-sh/$(DEPDIR) - @: > atf-sh/$(DEPDIR)/$(am__dirstamp) -atf-sh/atf_sh_atf_check-atf-check.$(OBJEXT): atf-sh/$(am__dirstamp) \ - atf-sh/$(DEPDIR)/$(am__dirstamp) - -atf-sh/atf-check$(EXEEXT): $(atf_sh_atf_check_OBJECTS) $(atf_sh_atf_check_DEPENDENCIES) $(EXTRA_atf_sh_atf_check_DEPENDENCIES) atf-sh/$(am__dirstamp) - @rm -f atf-sh/atf-check$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_sh_atf_check_OBJECTS) $(atf_sh_atf_check_LDADD) $(LIBS) -atf-sh/atf_sh_atf_sh-atf-sh.$(OBJEXT): atf-sh/$(am__dirstamp) \ - atf-sh/$(DEPDIR)/$(am__dirstamp) - -atf-sh/atf-sh$(EXEEXT): $(atf_sh_atf_sh_OBJECTS) $(atf_sh_atf_sh_DEPENDENCIES) $(EXTRA_atf_sh_atf_sh_DEPENDENCIES) atf-sh/$(am__dirstamp) - @rm -f atf-sh/atf-sh$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(atf_sh_atf_sh_OBJECTS) $(atf_sh_atf_sh_LDADD) $(LIBS) -bootstrap/$(am__dirstamp): - @$(MKDIR_P) bootstrap - @: > bootstrap/$(am__dirstamp) -bootstrap/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) bootstrap/$(DEPDIR) - @: > bootstrap/$(DEPDIR)/$(am__dirstamp) -bootstrap/h_app_empty.$(OBJEXT): bootstrap/$(am__dirstamp) \ - bootstrap/$(DEPDIR)/$(am__dirstamp) - -bootstrap/h_app_empty$(EXEEXT): $(bootstrap_h_app_empty_OBJECTS) $(bootstrap_h_app_empty_DEPENDENCIES) $(EXTRA_bootstrap_h_app_empty_DEPENDENCIES) bootstrap/$(am__dirstamp) - @rm -f bootstrap/h_app_empty$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(bootstrap_h_app_empty_OBJECTS) $(bootstrap_h_app_empty_LDADD) $(LIBS) -bootstrap/h_app_opts_args.$(OBJEXT): bootstrap/$(am__dirstamp) \ - bootstrap/$(DEPDIR)/$(am__dirstamp) - -bootstrap/h_app_opts_args$(EXEEXT): $(bootstrap_h_app_opts_args_OBJECTS) $(bootstrap_h_app_opts_args_DEPENDENCIES) $(EXTRA_bootstrap_h_app_opts_args_DEPENDENCIES) bootstrap/$(am__dirstamp) - @rm -f bootstrap/h_app_opts_args$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(bootstrap_h_app_opts_args_OBJECTS) $(bootstrap_h_app_opts_args_LDADD) $(LIBS) -bootstrap/h_tp_basic_c.$(OBJEXT): bootstrap/$(am__dirstamp) \ - bootstrap/$(DEPDIR)/$(am__dirstamp) - -bootstrap/h_tp_basic_c$(EXEEXT): $(bootstrap_h_tp_basic_c_OBJECTS) $(bootstrap_h_tp_basic_c_DEPENDENCIES) $(EXTRA_bootstrap_h_tp_basic_c_DEPENDENCIES) bootstrap/$(am__dirstamp) - @rm -f bootstrap/h_tp_basic_c$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bootstrap_h_tp_basic_c_OBJECTS) $(bootstrap_h_tp_basic_c_LDADD) $(LIBS) -bootstrap/h_tp_basic_cpp.$(OBJEXT): bootstrap/$(am__dirstamp) \ - bootstrap/$(DEPDIR)/$(am__dirstamp) - -bootstrap/h_tp_basic_cpp$(EXEEXT): $(bootstrap_h_tp_basic_cpp_OBJECTS) $(bootstrap_h_tp_basic_cpp_DEPENDENCIES) $(EXTRA_bootstrap_h_tp_basic_cpp_DEPENDENCIES) bootstrap/$(am__dirstamp) - @rm -f bootstrap/h_tp_basic_cpp$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(bootstrap_h_tp_basic_cpp_OBJECTS) $(bootstrap_h_tp_basic_cpp_LDADD) $(LIBS) -test-programs/$(am__dirstamp): - @$(MKDIR_P) test-programs - @: > test-programs/$(am__dirstamp) -test-programs/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) test-programs/$(DEPDIR) - @: > test-programs/$(DEPDIR)/$(am__dirstamp) -test-programs/c_helpers.$(OBJEXT): test-programs/$(am__dirstamp) \ - test-programs/$(DEPDIR)/$(am__dirstamp) - -test-programs/c_helpers$(EXEEXT): $(test_programs_c_helpers_OBJECTS) $(test_programs_c_helpers_DEPENDENCIES) $(EXTRA_test_programs_c_helpers_DEPENDENCIES) test-programs/$(am__dirstamp) - @rm -f test-programs/c_helpers$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_programs_c_helpers_OBJECTS) $(test_programs_c_helpers_LDADD) $(LIBS) -test-programs/cpp_helpers.$(OBJEXT): test-programs/$(am__dirstamp) \ - test-programs/$(DEPDIR)/$(am__dirstamp) - -test-programs/cpp_helpers$(EXEEXT): $(test_programs_cpp_helpers_OBJECTS) $(test_programs_cpp_helpers_DEPENDENCIES) $(EXTRA_test_programs_cpp_helpers_DEPENDENCIES) test-programs/$(am__dirstamp) - @rm -f test-programs/cpp_helpers$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(test_programs_cpp_helpers_OBJECTS) $(test_programs_cpp_helpers_LDADD) $(LIBS) -tools/tools_application_test-application_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/application_test$(EXEEXT): $(tools_application_test_OBJECTS) $(tools_application_test_DEPENDENCIES) $(EXTRA_tools_application_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/application_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_application_test_OBJECTS) $(tools_application_test_LDADD) $(LIBS) -tools/tools_atf_config-atf-config.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/atf-config$(EXEEXT): $(tools_atf_config_OBJECTS) $(tools_atf_config_DEPENDENCIES) $(EXTRA_tools_atf_config_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/atf-config$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_atf_config_OBJECTS) $(tools_atf_config_LDADD) $(LIBS) -tools/tools_atf_report-atf-report.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/atf-report$(EXEEXT): $(tools_atf_report_OBJECTS) $(tools_atf_report_DEPENDENCIES) $(EXTRA_tools_atf_report_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/atf-report$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_atf_report_OBJECTS) $(tools_atf_report_LDADD) $(LIBS) -tools/tools_atf_run-atf-run.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/atf-run$(EXEEXT): $(tools_atf_run_OBJECTS) $(tools_atf_run_DEPENDENCIES) $(EXTRA_tools_atf_run_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/atf-run$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_atf_run_OBJECTS) $(tools_atf_run_LDADD) $(LIBS) -tools/tools_atf_version-atf-version.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/atf-version$(EXEEXT): $(tools_atf_version_OBJECTS) $(tools_atf_version_DEPENDENCIES) $(EXTRA_tools_atf_version_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/atf-version$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_atf_version_OBJECTS) $(tools_atf_version_LDADD) $(LIBS) -tools/tools_atffile_test-atffile_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/atffile_test$(EXEEXT): $(tools_atffile_test_OBJECTS) $(tools_atffile_test_DEPENDENCIES) $(EXTRA_tools_atffile_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/atffile_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_atffile_test_OBJECTS) $(tools_atffile_test_LDADD) $(LIBS) -tools/tools_auto_array_test-auto_array_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/auto_array_test$(EXEEXT): $(tools_auto_array_test_OBJECTS) $(tools_auto_array_test_DEPENDENCIES) $(EXTRA_tools_auto_array_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/auto_array_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_auto_array_test_OBJECTS) $(tools_auto_array_test_LDADD) $(LIBS) -tools/bad_metadata_helper.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/bad_metadata_helper$(EXEEXT): $(tools_bad_metadata_helper_OBJECTS) $(tools_bad_metadata_helper_DEPENDENCIES) $(EXTRA_tools_bad_metadata_helper_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/bad_metadata_helper$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tools_bad_metadata_helper_OBJECTS) $(tools_bad_metadata_helper_LDADD) $(LIBS) -tools/tools_config_file_test-config_file_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/config_file_test$(EXEEXT): $(tools_config_file_test_OBJECTS) $(tools_config_file_test_DEPENDENCIES) $(EXTRA_tools_config_file_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/config_file_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_config_file_test_OBJECTS) $(tools_config_file_test_LDADD) $(LIBS) -tools/tools_config_test-config_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/config_test$(EXEEXT): $(tools_config_test_OBJECTS) $(tools_config_test_DEPENDENCIES) $(EXTRA_tools_config_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/config_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_config_test_OBJECTS) $(tools_config_test_LDADD) $(LIBS) -tools/tools_env_test-env_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/env_test$(EXEEXT): $(tools_env_test_OBJECTS) $(tools_env_test_DEPENDENCIES) $(EXTRA_tools_env_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/env_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_env_test_OBJECTS) $(tools_env_test_LDADD) $(LIBS) -tools/tools_expand_test-expand_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/expand_test$(EXEEXT): $(tools_expand_test_OBJECTS) $(tools_expand_test_DEPENDENCIES) $(EXTRA_tools_expand_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/expand_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_expand_test_OBJECTS) $(tools_expand_test_LDADD) $(LIBS) -tools/expect_helpers.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/expect_helpers$(EXEEXT): $(tools_expect_helpers_OBJECTS) $(tools_expect_helpers_DEPENDENCIES) $(EXTRA_tools_expect_helpers_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/expect_helpers$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tools_expect_helpers_OBJECTS) $(tools_expect_helpers_LDADD) $(LIBS) -tools/fail_helper.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/fail_helper$(EXEEXT): $(tools_fail_helper_OBJECTS) $(tools_fail_helper_DEPENDENCIES) $(EXTRA_tools_fail_helper_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/fail_helper$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_fail_helper_OBJECTS) $(tools_fail_helper_LDADD) $(LIBS) -tools/tools_fs_test-fs_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/fs_test$(EXEEXT): $(tools_fs_test_OBJECTS) $(tools_fs_test_DEPENDENCIES) $(EXTRA_tools_fs_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/fs_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_fs_test_OBJECTS) $(tools_fs_test_LDADD) $(LIBS) -tools/tools_io_test-io_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/io_test$(EXEEXT): $(tools_io_test_OBJECTS) $(tools_io_test_DEPENDENCIES) $(EXTRA_tools_io_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/io_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_io_test_OBJECTS) $(tools_io_test_LDADD) $(LIBS) -tools/tools_misc_helpers-misc_helpers.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/misc_helpers$(EXEEXT): $(tools_misc_helpers_OBJECTS) $(tools_misc_helpers_DEPENDENCIES) $(EXTRA_tools_misc_helpers_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/misc_helpers$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_misc_helpers_OBJECTS) $(tools_misc_helpers_LDADD) $(LIBS) -tools/tools_parser_test-parser_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/parser_test$(EXEEXT): $(tools_parser_test_OBJECTS) $(tools_parser_test_DEPENDENCIES) $(EXTRA_tools_parser_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/parser_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_parser_test_OBJECTS) $(tools_parser_test_LDADD) $(LIBS) -tools/pass_helper.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/pass_helper$(EXEEXT): $(tools_pass_helper_OBJECTS) $(tools_pass_helper_DEPENDENCIES) $(EXTRA_tools_pass_helper_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/pass_helper$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_pass_helper_OBJECTS) $(tools_pass_helper_LDADD) $(LIBS) -tools/process_helpers.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/process_helpers$(EXEEXT): $(tools_process_helpers_OBJECTS) $(tools_process_helpers_DEPENDENCIES) $(EXTRA_tools_process_helpers_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/process_helpers$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tools_process_helpers_OBJECTS) $(tools_process_helpers_LDADD) $(LIBS) -tools/tools_process_test-process_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/process_test$(EXEEXT): $(tools_process_test_OBJECTS) $(tools_process_test_DEPENDENCIES) $(EXTRA_tools_process_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/process_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_process_test_OBJECTS) $(tools_process_test_LDADD) $(LIBS) -tools/tools_reader_test-reader_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/reader_test$(EXEEXT): $(tools_reader_test_OBJECTS) $(tools_reader_test_DEPENDENCIES) $(EXTRA_tools_reader_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/reader_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_reader_test_OBJECTS) $(tools_reader_test_LDADD) $(LIBS) -tools/tools_requirements_test-requirements_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/requirements_test$(EXEEXT): $(tools_requirements_test_OBJECTS) $(tools_requirements_test_DEPENDENCIES) $(EXTRA_tools_requirements_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/requirements_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_requirements_test_OBJECTS) $(tools_requirements_test_LDADD) $(LIBS) -tools/several_tcs_helper.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/several_tcs_helper$(EXEEXT): $(tools_several_tcs_helper_OBJECTS) $(tools_several_tcs_helper_DEPENDENCIES) $(EXTRA_tools_several_tcs_helper_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/several_tcs_helper$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tools_several_tcs_helper_OBJECTS) $(tools_several_tcs_helper_LDADD) $(LIBS) -tools/tools_signals_test-signals_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_signals_test-signals.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/signals_test$(EXEEXT): $(tools_signals_test_OBJECTS) $(tools_signals_test_DEPENDENCIES) $(EXTRA_tools_signals_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/signals_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_signals_test_OBJECTS) $(tools_signals_test_LDADD) $(LIBS) -tools/tools_test_program_test-test_program_test.$(OBJEXT): \ - tools/$(am__dirstamp) tools/$(DEPDIR)/$(am__dirstamp) - -tools/test_program_test$(EXEEXT): $(tools_test_program_test_OBJECTS) $(tools_test_program_test_DEPENDENCIES) $(EXTRA_tools_test_program_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/test_program_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_test_program_test_OBJECTS) $(tools_test_program_test_LDADD) $(LIBS) -tools/tools_text_test-text_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_text_test-text.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/text_test$(EXEEXT): $(tools_text_test_OBJECTS) $(tools_text_test_DEPENDENCIES) $(EXTRA_tools_text_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/text_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_text_test_OBJECTS) $(tools_text_test_LDADD) $(LIBS) -tools/tools_ui_test-ui_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_ui_test-ui.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/ui_test$(EXEEXT): $(tools_ui_test_OBJECTS) $(tools_ui_test_DEPENDENCIES) $(EXTRA_tools_ui_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/ui_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_ui_test_OBJECTS) $(tools_ui_test_LDADD) $(LIBS) -tools/tools_user_test-user_test.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) -tools/tools_user_test-user.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/user_test$(EXEEXT): $(tools_user_test_OBJECTS) $(tools_user_test_DEPENDENCIES) $(EXTRA_tools_user_test_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/user_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(tools_user_test_OBJECTS) $(tools_user_test_LDADD) $(LIBS) -tools/zero_tcs_helper.$(OBJEXT): tools/$(am__dirstamp) \ - tools/$(DEPDIR)/$(am__dirstamp) - -tools/zero_tcs_helper$(EXEEXT): $(tools_zero_tcs_helper_OBJECTS) $(tools_zero_tcs_helper_DEPENDENCIES) $(EXTRA_tools_zero_tcs_helper_DEPENDENCIES) tools/$(am__dirstamp) - @rm -f tools/zero_tcs_helper$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tools_zero_tcs_helper_OBJECTS) $(tools_zero_tcs_helper_LDADD) $(LIBS) -install-tests_atf_cSCRIPTS: $(tests_atf_c_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c_SCRIPTS)'; test -n "$(tests_atf_cdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_cdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_cdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_atf_cdir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_cdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_cSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c_SCRIPTS)'; test -n "$(tests_atf_cdir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(tests_atf_cdir)'; $(am__uninstall_files_from_dir) -install-tests_atf_c__SCRIPTS: $(tests_atf_c___SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c___SCRIPTS)'; test -n "$(tests_atf_c__dir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c__dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c__dir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_atf_c__dir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_c__dir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_c__SCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c___SCRIPTS)'; test -n "$(tests_atf_c__dir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(tests_atf_c__dir)'; $(am__uninstall_files_from_dir) -install-tests_atf_shSCRIPTS: $(tests_atf_sh_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(tests_atf_sh_SCRIPTS)'; test -n "$(tests_atf_shdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_shdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_shdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_atf_shdir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_shdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_atf_shSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_sh_SCRIPTS)'; test -n "$(tests_atf_shdir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(tests_atf_shdir)'; $(am__uninstall_files_from_dir) -install-tests_test_programsSCRIPTS: $(tests_test_programs_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(tests_test_programs_SCRIPTS)'; test -n "$(tests_test_programsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_test_programsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_test_programsdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_test_programsdir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_test_programsdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_test_programsSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(tests_test_programs_SCRIPTS)'; test -n "$(tests_test_programsdir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(tests_test_programsdir)'; $(am__uninstall_files_from_dir) -install-tests_toolsSCRIPTS: $(tests_tools_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(tests_tools_SCRIPTS)'; test -n "$(tests_toolsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_toolsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_toolsdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_toolsdir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_toolsdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-tests_toolsSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(tests_tools_SCRIPTS)'; test -n "$(tests_toolsdir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(tests_toolsdir)'; $(am__uninstall_files_from_dir) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -rm -f atf-c++/*.$(OBJEXT) - -rm -f atf-c++/*.lo - -rm -f atf-c++/detail/*.$(OBJEXT) - -rm -f atf-c++/detail/*.lo - -rm -f atf-c/*.$(OBJEXT) - -rm -f atf-c/*.lo - -rm -f atf-c/detail/*.$(OBJEXT) - -rm -f atf-c/detail/*.lo - -rm -f atf-sh/*.$(OBJEXT) - -rm -f bootstrap/*.$(OBJEXT) - -rm -f test-programs/*.$(OBJEXT) - -rm -f tools/*.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/atf_c++_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/build.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/build_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/check.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/check_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/macros_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/tests.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/tests_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/utils.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/$(DEPDIR)/utils_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/application.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/application_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/atf_c___detail_libtest_helpers_la-test_helpers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/auto_array_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/env.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/env_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/exceptions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/exceptions_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/fs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/fs_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/process.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/process_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/text.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/text_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/version_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/atf_c_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/build_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/check_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/error_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/libatf_c_la-build.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/libatf_c_la-check.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/libatf_c_la-error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/libatf_c_la-tc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/libatf_c_la-tp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/libatf_c_la-utils.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/macros_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/tc_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/tp_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/$(DEPDIR)/utils_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/atf_c_detail_libtest_helpers_la-test_helpers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/dynstr_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/env_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/fs_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-dynstr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-env.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-fs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-list.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-map.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-process.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-sanity.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-text.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-tp_main.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/libatf_c_la-user.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/list_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/map_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/process_helpers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/process_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/sanity_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/text_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/user_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-c/detail/$(DEPDIR)/version_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@bootstrap/$(DEPDIR)/h_app_empty.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@bootstrap/$(DEPDIR)/h_app_opts_args.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@bootstrap/$(DEPDIR)/h_tp_basic_c.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@bootstrap/$(DEPDIR)/h_tp_basic_cpp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test-programs/$(DEPDIR)/c_helpers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@test-programs/$(DEPDIR)/cpp_helpers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/bad_metadata_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/expect_helpers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/fail_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/pass_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/process_helpers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/several_tcs_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_application_test-application_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_atf_config-atf-config.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_atf_report-atf-report.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_atf_run-atf-run.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_atf_version-atf-version.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_atffile_test-atffile_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_config_file_test-config_file_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_config_test-config_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_env_test-env_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_expand_test-expand_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_fs_test-fs_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_io_test-io_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-application.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-atffile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-config.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-config_file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-env.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-exceptions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-expand.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-fs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-parser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-process.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-requirements.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-signals.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-test-program.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-text.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-timers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-ui.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_libtools_a-user.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_parser_test-parser_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_process_test-process_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_reader_test-reader_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_requirements_test-requirements_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_signals_test-signals.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_signals_test-signals_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_test_program_test-test_program_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_text_test-text.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_text_test-text_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_ui_test-ui.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_ui_test-ui_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_user_test-user.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/tools_user_test-user_test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/zero_tcs_helper.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo: atf-c/detail/test_helpers.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_c_detail_libtest_helpers_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/atf_c_detail_libtest_helpers_la-test_helpers.Tpo -c -o atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo `test -f 'atf-c/detail/test_helpers.c' || echo '$(srcdir)/'`atf-c/detail/test_helpers.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/atf_c_detail_libtest_helpers_la-test_helpers.Tpo atf-c/detail/$(DEPDIR)/atf_c_detail_libtest_helpers_la-test_helpers.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/test_helpers.c' object='atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_c_detail_libtest_helpers_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/atf_c_detail_libtest_helpers_la-test_helpers.lo `test -f 'atf-c/detail/test_helpers.c' || echo '$(srcdir)/'`atf-c/detail/test_helpers.c - -atf-c/libatf_c_la-build.lo: atf-c/build.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/libatf_c_la-build.lo -MD -MP -MF atf-c/$(DEPDIR)/libatf_c_la-build.Tpo -c -o atf-c/libatf_c_la-build.lo `test -f 'atf-c/build.c' || echo '$(srcdir)/'`atf-c/build.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/$(DEPDIR)/libatf_c_la-build.Tpo atf-c/$(DEPDIR)/libatf_c_la-build.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/build.c' object='atf-c/libatf_c_la-build.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/libatf_c_la-build.lo `test -f 'atf-c/build.c' || echo '$(srcdir)/'`atf-c/build.c - -atf-c/libatf_c_la-check.lo: atf-c/check.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/libatf_c_la-check.lo -MD -MP -MF atf-c/$(DEPDIR)/libatf_c_la-check.Tpo -c -o atf-c/libatf_c_la-check.lo `test -f 'atf-c/check.c' || echo '$(srcdir)/'`atf-c/check.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/$(DEPDIR)/libatf_c_la-check.Tpo atf-c/$(DEPDIR)/libatf_c_la-check.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/check.c' object='atf-c/libatf_c_la-check.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/libatf_c_la-check.lo `test -f 'atf-c/check.c' || echo '$(srcdir)/'`atf-c/check.c - -atf-c/libatf_c_la-error.lo: atf-c/error.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/libatf_c_la-error.lo -MD -MP -MF atf-c/$(DEPDIR)/libatf_c_la-error.Tpo -c -o atf-c/libatf_c_la-error.lo `test -f 'atf-c/error.c' || echo '$(srcdir)/'`atf-c/error.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/$(DEPDIR)/libatf_c_la-error.Tpo atf-c/$(DEPDIR)/libatf_c_la-error.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/error.c' object='atf-c/libatf_c_la-error.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/libatf_c_la-error.lo `test -f 'atf-c/error.c' || echo '$(srcdir)/'`atf-c/error.c - -atf-c/libatf_c_la-tc.lo: atf-c/tc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/libatf_c_la-tc.lo -MD -MP -MF atf-c/$(DEPDIR)/libatf_c_la-tc.Tpo -c -o atf-c/libatf_c_la-tc.lo `test -f 'atf-c/tc.c' || echo '$(srcdir)/'`atf-c/tc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/$(DEPDIR)/libatf_c_la-tc.Tpo atf-c/$(DEPDIR)/libatf_c_la-tc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/tc.c' object='atf-c/libatf_c_la-tc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/libatf_c_la-tc.lo `test -f 'atf-c/tc.c' || echo '$(srcdir)/'`atf-c/tc.c - -atf-c/libatf_c_la-tp.lo: atf-c/tp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/libatf_c_la-tp.lo -MD -MP -MF atf-c/$(DEPDIR)/libatf_c_la-tp.Tpo -c -o atf-c/libatf_c_la-tp.lo `test -f 'atf-c/tp.c' || echo '$(srcdir)/'`atf-c/tp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/$(DEPDIR)/libatf_c_la-tp.Tpo atf-c/$(DEPDIR)/libatf_c_la-tp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/tp.c' object='atf-c/libatf_c_la-tp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/libatf_c_la-tp.lo `test -f 'atf-c/tp.c' || echo '$(srcdir)/'`atf-c/tp.c - -atf-c/libatf_c_la-utils.lo: atf-c/utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/libatf_c_la-utils.lo -MD -MP -MF atf-c/$(DEPDIR)/libatf_c_la-utils.Tpo -c -o atf-c/libatf_c_la-utils.lo `test -f 'atf-c/utils.c' || echo '$(srcdir)/'`atf-c/utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/$(DEPDIR)/libatf_c_la-utils.Tpo atf-c/$(DEPDIR)/libatf_c_la-utils.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/utils.c' object='atf-c/libatf_c_la-utils.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/libatf_c_la-utils.lo `test -f 'atf-c/utils.c' || echo '$(srcdir)/'`atf-c/utils.c - -atf-c/detail/libatf_c_la-dynstr.lo: atf-c/detail/dynstr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-dynstr.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-dynstr.Tpo -c -o atf-c/detail/libatf_c_la-dynstr.lo `test -f 'atf-c/detail/dynstr.c' || echo '$(srcdir)/'`atf-c/detail/dynstr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-dynstr.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-dynstr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/dynstr.c' object='atf-c/detail/libatf_c_la-dynstr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-dynstr.lo `test -f 'atf-c/detail/dynstr.c' || echo '$(srcdir)/'`atf-c/detail/dynstr.c - -atf-c/detail/libatf_c_la-env.lo: atf-c/detail/env.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-env.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-env.Tpo -c -o atf-c/detail/libatf_c_la-env.lo `test -f 'atf-c/detail/env.c' || echo '$(srcdir)/'`atf-c/detail/env.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-env.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-env.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/env.c' object='atf-c/detail/libatf_c_la-env.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-env.lo `test -f 'atf-c/detail/env.c' || echo '$(srcdir)/'`atf-c/detail/env.c - -atf-c/detail/libatf_c_la-fs.lo: atf-c/detail/fs.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-fs.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-fs.Tpo -c -o atf-c/detail/libatf_c_la-fs.lo `test -f 'atf-c/detail/fs.c' || echo '$(srcdir)/'`atf-c/detail/fs.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-fs.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-fs.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/fs.c' object='atf-c/detail/libatf_c_la-fs.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-fs.lo `test -f 'atf-c/detail/fs.c' || echo '$(srcdir)/'`atf-c/detail/fs.c - -atf-c/detail/libatf_c_la-list.lo: atf-c/detail/list.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-list.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-list.Tpo -c -o atf-c/detail/libatf_c_la-list.lo `test -f 'atf-c/detail/list.c' || echo '$(srcdir)/'`atf-c/detail/list.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-list.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-list.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/list.c' object='atf-c/detail/libatf_c_la-list.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-list.lo `test -f 'atf-c/detail/list.c' || echo '$(srcdir)/'`atf-c/detail/list.c - -atf-c/detail/libatf_c_la-map.lo: atf-c/detail/map.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-map.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-map.Tpo -c -o atf-c/detail/libatf_c_la-map.lo `test -f 'atf-c/detail/map.c' || echo '$(srcdir)/'`atf-c/detail/map.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-map.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-map.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/map.c' object='atf-c/detail/libatf_c_la-map.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-map.lo `test -f 'atf-c/detail/map.c' || echo '$(srcdir)/'`atf-c/detail/map.c - -atf-c/detail/libatf_c_la-process.lo: atf-c/detail/process.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-process.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-process.Tpo -c -o atf-c/detail/libatf_c_la-process.lo `test -f 'atf-c/detail/process.c' || echo '$(srcdir)/'`atf-c/detail/process.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-process.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-process.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/process.c' object='atf-c/detail/libatf_c_la-process.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-process.lo `test -f 'atf-c/detail/process.c' || echo '$(srcdir)/'`atf-c/detail/process.c - -atf-c/detail/libatf_c_la-sanity.lo: atf-c/detail/sanity.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-sanity.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-sanity.Tpo -c -o atf-c/detail/libatf_c_la-sanity.lo `test -f 'atf-c/detail/sanity.c' || echo '$(srcdir)/'`atf-c/detail/sanity.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-sanity.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-sanity.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/sanity.c' object='atf-c/detail/libatf_c_la-sanity.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-sanity.lo `test -f 'atf-c/detail/sanity.c' || echo '$(srcdir)/'`atf-c/detail/sanity.c - -atf-c/detail/libatf_c_la-text.lo: atf-c/detail/text.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-text.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-text.Tpo -c -o atf-c/detail/libatf_c_la-text.lo `test -f 'atf-c/detail/text.c' || echo '$(srcdir)/'`atf-c/detail/text.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-text.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-text.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/text.c' object='atf-c/detail/libatf_c_la-text.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-text.lo `test -f 'atf-c/detail/text.c' || echo '$(srcdir)/'`atf-c/detail/text.c - -atf-c/detail/libatf_c_la-tp_main.lo: atf-c/detail/tp_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-tp_main.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-tp_main.Tpo -c -o atf-c/detail/libatf_c_la-tp_main.lo `test -f 'atf-c/detail/tp_main.c' || echo '$(srcdir)/'`atf-c/detail/tp_main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-tp_main.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-tp_main.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/tp_main.c' object='atf-c/detail/libatf_c_la-tp_main.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-tp_main.lo `test -f 'atf-c/detail/tp_main.c' || echo '$(srcdir)/'`atf-c/detail/tp_main.c - -atf-c/detail/libatf_c_la-user.lo: atf-c/detail/user.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT atf-c/detail/libatf_c_la-user.lo -MD -MP -MF atf-c/detail/$(DEPDIR)/libatf_c_la-user.Tpo -c -o atf-c/detail/libatf_c_la-user.lo `test -f 'atf-c/detail/user.c' || echo '$(srcdir)/'`atf-c/detail/user.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atf-c/detail/$(DEPDIR)/libatf_c_la-user.Tpo atf-c/detail/$(DEPDIR)/libatf_c_la-user.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atf-c/detail/user.c' object='atf-c/detail/libatf_c_la-user.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libatf_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o atf-c/detail/libatf_c_la-user.lo `test -f 'atf-c/detail/user.c' || echo '$(srcdir)/'`atf-c/detail/user.c - -.cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -tools/tools_libtools_a-application.o: tools/application.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-application.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-application.Tpo -c -o tools/tools_libtools_a-application.o `test -f 'tools/application.cpp' || echo '$(srcdir)/'`tools/application.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-application.Tpo tools/$(DEPDIR)/tools_libtools_a-application.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/application.cpp' object='tools/tools_libtools_a-application.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-application.o `test -f 'tools/application.cpp' || echo '$(srcdir)/'`tools/application.cpp - -tools/tools_libtools_a-application.obj: tools/application.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-application.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-application.Tpo -c -o tools/tools_libtools_a-application.obj `if test -f 'tools/application.cpp'; then $(CYGPATH_W) 'tools/application.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/application.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-application.Tpo tools/$(DEPDIR)/tools_libtools_a-application.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/application.cpp' object='tools/tools_libtools_a-application.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-application.obj `if test -f 'tools/application.cpp'; then $(CYGPATH_W) 'tools/application.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/application.cpp'; fi` - -tools/tools_libtools_a-atffile.o: tools/atffile.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-atffile.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-atffile.Tpo -c -o tools/tools_libtools_a-atffile.o `test -f 'tools/atffile.cpp' || echo '$(srcdir)/'`tools/atffile.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-atffile.Tpo tools/$(DEPDIR)/tools_libtools_a-atffile.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atffile.cpp' object='tools/tools_libtools_a-atffile.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-atffile.o `test -f 'tools/atffile.cpp' || echo '$(srcdir)/'`tools/atffile.cpp - -tools/tools_libtools_a-atffile.obj: tools/atffile.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-atffile.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-atffile.Tpo -c -o tools/tools_libtools_a-atffile.obj `if test -f 'tools/atffile.cpp'; then $(CYGPATH_W) 'tools/atffile.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atffile.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-atffile.Tpo tools/$(DEPDIR)/tools_libtools_a-atffile.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atffile.cpp' object='tools/tools_libtools_a-atffile.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-atffile.obj `if test -f 'tools/atffile.cpp'; then $(CYGPATH_W) 'tools/atffile.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atffile.cpp'; fi` - -tools/tools_libtools_a-config.o: tools/config.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-config.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-config.Tpo -c -o tools/tools_libtools_a-config.o `test -f 'tools/config.cpp' || echo '$(srcdir)/'`tools/config.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-config.Tpo tools/$(DEPDIR)/tools_libtools_a-config.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config.cpp' object='tools/tools_libtools_a-config.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-config.o `test -f 'tools/config.cpp' || echo '$(srcdir)/'`tools/config.cpp - -tools/tools_libtools_a-config.obj: tools/config.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-config.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-config.Tpo -c -o tools/tools_libtools_a-config.obj `if test -f 'tools/config.cpp'; then $(CYGPATH_W) 'tools/config.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-config.Tpo tools/$(DEPDIR)/tools_libtools_a-config.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config.cpp' object='tools/tools_libtools_a-config.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-config.obj `if test -f 'tools/config.cpp'; then $(CYGPATH_W) 'tools/config.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config.cpp'; fi` - -tools/tools_libtools_a-config_file.o: tools/config_file.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-config_file.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-config_file.Tpo -c -o tools/tools_libtools_a-config_file.o `test -f 'tools/config_file.cpp' || echo '$(srcdir)/'`tools/config_file.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-config_file.Tpo tools/$(DEPDIR)/tools_libtools_a-config_file.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config_file.cpp' object='tools/tools_libtools_a-config_file.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-config_file.o `test -f 'tools/config_file.cpp' || echo '$(srcdir)/'`tools/config_file.cpp - -tools/tools_libtools_a-config_file.obj: tools/config_file.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-config_file.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-config_file.Tpo -c -o tools/tools_libtools_a-config_file.obj `if test -f 'tools/config_file.cpp'; then $(CYGPATH_W) 'tools/config_file.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config_file.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-config_file.Tpo tools/$(DEPDIR)/tools_libtools_a-config_file.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config_file.cpp' object='tools/tools_libtools_a-config_file.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-config_file.obj `if test -f 'tools/config_file.cpp'; then $(CYGPATH_W) 'tools/config_file.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config_file.cpp'; fi` - -tools/tools_libtools_a-env.o: tools/env.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-env.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-env.Tpo -c -o tools/tools_libtools_a-env.o `test -f 'tools/env.cpp' || echo '$(srcdir)/'`tools/env.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-env.Tpo tools/$(DEPDIR)/tools_libtools_a-env.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/env.cpp' object='tools/tools_libtools_a-env.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-env.o `test -f 'tools/env.cpp' || echo '$(srcdir)/'`tools/env.cpp - -tools/tools_libtools_a-env.obj: tools/env.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-env.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-env.Tpo -c -o tools/tools_libtools_a-env.obj `if test -f 'tools/env.cpp'; then $(CYGPATH_W) 'tools/env.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/env.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-env.Tpo tools/$(DEPDIR)/tools_libtools_a-env.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/env.cpp' object='tools/tools_libtools_a-env.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-env.obj `if test -f 'tools/env.cpp'; then $(CYGPATH_W) 'tools/env.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/env.cpp'; fi` - -tools/tools_libtools_a-exceptions.o: tools/exceptions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-exceptions.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-exceptions.Tpo -c -o tools/tools_libtools_a-exceptions.o `test -f 'tools/exceptions.cpp' || echo '$(srcdir)/'`tools/exceptions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-exceptions.Tpo tools/$(DEPDIR)/tools_libtools_a-exceptions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/exceptions.cpp' object='tools/tools_libtools_a-exceptions.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-exceptions.o `test -f 'tools/exceptions.cpp' || echo '$(srcdir)/'`tools/exceptions.cpp - -tools/tools_libtools_a-exceptions.obj: tools/exceptions.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-exceptions.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-exceptions.Tpo -c -o tools/tools_libtools_a-exceptions.obj `if test -f 'tools/exceptions.cpp'; then $(CYGPATH_W) 'tools/exceptions.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/exceptions.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-exceptions.Tpo tools/$(DEPDIR)/tools_libtools_a-exceptions.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/exceptions.cpp' object='tools/tools_libtools_a-exceptions.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-exceptions.obj `if test -f 'tools/exceptions.cpp'; then $(CYGPATH_W) 'tools/exceptions.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/exceptions.cpp'; fi` - -tools/tools_libtools_a-expand.o: tools/expand.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-expand.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-expand.Tpo -c -o tools/tools_libtools_a-expand.o `test -f 'tools/expand.cpp' || echo '$(srcdir)/'`tools/expand.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-expand.Tpo tools/$(DEPDIR)/tools_libtools_a-expand.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/expand.cpp' object='tools/tools_libtools_a-expand.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-expand.o `test -f 'tools/expand.cpp' || echo '$(srcdir)/'`tools/expand.cpp - -tools/tools_libtools_a-expand.obj: tools/expand.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-expand.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-expand.Tpo -c -o tools/tools_libtools_a-expand.obj `if test -f 'tools/expand.cpp'; then $(CYGPATH_W) 'tools/expand.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/expand.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-expand.Tpo tools/$(DEPDIR)/tools_libtools_a-expand.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/expand.cpp' object='tools/tools_libtools_a-expand.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-expand.obj `if test -f 'tools/expand.cpp'; then $(CYGPATH_W) 'tools/expand.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/expand.cpp'; fi` - -tools/tools_libtools_a-fs.o: tools/fs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-fs.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-fs.Tpo -c -o tools/tools_libtools_a-fs.o `test -f 'tools/fs.cpp' || echo '$(srcdir)/'`tools/fs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-fs.Tpo tools/$(DEPDIR)/tools_libtools_a-fs.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/fs.cpp' object='tools/tools_libtools_a-fs.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-fs.o `test -f 'tools/fs.cpp' || echo '$(srcdir)/'`tools/fs.cpp - -tools/tools_libtools_a-fs.obj: tools/fs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-fs.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-fs.Tpo -c -o tools/tools_libtools_a-fs.obj `if test -f 'tools/fs.cpp'; then $(CYGPATH_W) 'tools/fs.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/fs.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-fs.Tpo tools/$(DEPDIR)/tools_libtools_a-fs.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/fs.cpp' object='tools/tools_libtools_a-fs.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-fs.obj `if test -f 'tools/fs.cpp'; then $(CYGPATH_W) 'tools/fs.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/fs.cpp'; fi` - -tools/tools_libtools_a-io.o: tools/io.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-io.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-io.Tpo -c -o tools/tools_libtools_a-io.o `test -f 'tools/io.cpp' || echo '$(srcdir)/'`tools/io.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-io.Tpo tools/$(DEPDIR)/tools_libtools_a-io.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/io.cpp' object='tools/tools_libtools_a-io.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-io.o `test -f 'tools/io.cpp' || echo '$(srcdir)/'`tools/io.cpp - -tools/tools_libtools_a-io.obj: tools/io.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-io.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-io.Tpo -c -o tools/tools_libtools_a-io.obj `if test -f 'tools/io.cpp'; then $(CYGPATH_W) 'tools/io.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/io.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-io.Tpo tools/$(DEPDIR)/tools_libtools_a-io.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/io.cpp' object='tools/tools_libtools_a-io.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-io.obj `if test -f 'tools/io.cpp'; then $(CYGPATH_W) 'tools/io.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/io.cpp'; fi` - -tools/tools_libtools_a-parser.o: tools/parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-parser.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-parser.Tpo -c -o tools/tools_libtools_a-parser.o `test -f 'tools/parser.cpp' || echo '$(srcdir)/'`tools/parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-parser.Tpo tools/$(DEPDIR)/tools_libtools_a-parser.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/parser.cpp' object='tools/tools_libtools_a-parser.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-parser.o `test -f 'tools/parser.cpp' || echo '$(srcdir)/'`tools/parser.cpp - -tools/tools_libtools_a-parser.obj: tools/parser.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-parser.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-parser.Tpo -c -o tools/tools_libtools_a-parser.obj `if test -f 'tools/parser.cpp'; then $(CYGPATH_W) 'tools/parser.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/parser.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-parser.Tpo tools/$(DEPDIR)/tools_libtools_a-parser.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/parser.cpp' object='tools/tools_libtools_a-parser.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-parser.obj `if test -f 'tools/parser.cpp'; then $(CYGPATH_W) 'tools/parser.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/parser.cpp'; fi` - -tools/tools_libtools_a-process.o: tools/process.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-process.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-process.Tpo -c -o tools/tools_libtools_a-process.o `test -f 'tools/process.cpp' || echo '$(srcdir)/'`tools/process.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-process.Tpo tools/$(DEPDIR)/tools_libtools_a-process.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/process.cpp' object='tools/tools_libtools_a-process.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-process.o `test -f 'tools/process.cpp' || echo '$(srcdir)/'`tools/process.cpp - -tools/tools_libtools_a-process.obj: tools/process.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-process.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-process.Tpo -c -o tools/tools_libtools_a-process.obj `if test -f 'tools/process.cpp'; then $(CYGPATH_W) 'tools/process.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/process.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-process.Tpo tools/$(DEPDIR)/tools_libtools_a-process.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/process.cpp' object='tools/tools_libtools_a-process.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-process.obj `if test -f 'tools/process.cpp'; then $(CYGPATH_W) 'tools/process.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/process.cpp'; fi` - -tools/tools_libtools_a-reader.o: tools/reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-reader.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-reader.Tpo -c -o tools/tools_libtools_a-reader.o `test -f 'tools/reader.cpp' || echo '$(srcdir)/'`tools/reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-reader.Tpo tools/$(DEPDIR)/tools_libtools_a-reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/reader.cpp' object='tools/tools_libtools_a-reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-reader.o `test -f 'tools/reader.cpp' || echo '$(srcdir)/'`tools/reader.cpp - -tools/tools_libtools_a-reader.obj: tools/reader.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-reader.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-reader.Tpo -c -o tools/tools_libtools_a-reader.obj `if test -f 'tools/reader.cpp'; then $(CYGPATH_W) 'tools/reader.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/reader.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-reader.Tpo tools/$(DEPDIR)/tools_libtools_a-reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/reader.cpp' object='tools/tools_libtools_a-reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-reader.obj `if test -f 'tools/reader.cpp'; then $(CYGPATH_W) 'tools/reader.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/reader.cpp'; fi` - -tools/tools_libtools_a-requirements.o: tools/requirements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-requirements.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-requirements.Tpo -c -o tools/tools_libtools_a-requirements.o `test -f 'tools/requirements.cpp' || echo '$(srcdir)/'`tools/requirements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-requirements.Tpo tools/$(DEPDIR)/tools_libtools_a-requirements.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/requirements.cpp' object='tools/tools_libtools_a-requirements.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-requirements.o `test -f 'tools/requirements.cpp' || echo '$(srcdir)/'`tools/requirements.cpp - -tools/tools_libtools_a-requirements.obj: tools/requirements.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-requirements.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-requirements.Tpo -c -o tools/tools_libtools_a-requirements.obj `if test -f 'tools/requirements.cpp'; then $(CYGPATH_W) 'tools/requirements.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/requirements.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-requirements.Tpo tools/$(DEPDIR)/tools_libtools_a-requirements.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/requirements.cpp' object='tools/tools_libtools_a-requirements.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-requirements.obj `if test -f 'tools/requirements.cpp'; then $(CYGPATH_W) 'tools/requirements.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/requirements.cpp'; fi` - -tools/tools_libtools_a-signals.o: tools/signals.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-signals.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-signals.Tpo -c -o tools/tools_libtools_a-signals.o `test -f 'tools/signals.cpp' || echo '$(srcdir)/'`tools/signals.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-signals.Tpo tools/$(DEPDIR)/tools_libtools_a-signals.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/signals.cpp' object='tools/tools_libtools_a-signals.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-signals.o `test -f 'tools/signals.cpp' || echo '$(srcdir)/'`tools/signals.cpp - -tools/tools_libtools_a-signals.obj: tools/signals.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-signals.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-signals.Tpo -c -o tools/tools_libtools_a-signals.obj `if test -f 'tools/signals.cpp'; then $(CYGPATH_W) 'tools/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/signals.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-signals.Tpo tools/$(DEPDIR)/tools_libtools_a-signals.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/signals.cpp' object='tools/tools_libtools_a-signals.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-signals.obj `if test -f 'tools/signals.cpp'; then $(CYGPATH_W) 'tools/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/signals.cpp'; fi` - -tools/tools_libtools_a-test-program.o: tools/test-program.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-test-program.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-test-program.Tpo -c -o tools/tools_libtools_a-test-program.o `test -f 'tools/test-program.cpp' || echo '$(srcdir)/'`tools/test-program.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-test-program.Tpo tools/$(DEPDIR)/tools_libtools_a-test-program.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/test-program.cpp' object='tools/tools_libtools_a-test-program.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-test-program.o `test -f 'tools/test-program.cpp' || echo '$(srcdir)/'`tools/test-program.cpp - -tools/tools_libtools_a-test-program.obj: tools/test-program.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-test-program.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-test-program.Tpo -c -o tools/tools_libtools_a-test-program.obj `if test -f 'tools/test-program.cpp'; then $(CYGPATH_W) 'tools/test-program.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/test-program.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-test-program.Tpo tools/$(DEPDIR)/tools_libtools_a-test-program.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/test-program.cpp' object='tools/tools_libtools_a-test-program.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-test-program.obj `if test -f 'tools/test-program.cpp'; then $(CYGPATH_W) 'tools/test-program.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/test-program.cpp'; fi` - -tools/tools_libtools_a-text.o: tools/text.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-text.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-text.Tpo -c -o tools/tools_libtools_a-text.o `test -f 'tools/text.cpp' || echo '$(srcdir)/'`tools/text.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-text.Tpo tools/$(DEPDIR)/tools_libtools_a-text.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/text.cpp' object='tools/tools_libtools_a-text.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-text.o `test -f 'tools/text.cpp' || echo '$(srcdir)/'`tools/text.cpp - -tools/tools_libtools_a-text.obj: tools/text.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-text.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-text.Tpo -c -o tools/tools_libtools_a-text.obj `if test -f 'tools/text.cpp'; then $(CYGPATH_W) 'tools/text.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/text.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-text.Tpo tools/$(DEPDIR)/tools_libtools_a-text.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/text.cpp' object='tools/tools_libtools_a-text.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-text.obj `if test -f 'tools/text.cpp'; then $(CYGPATH_W) 'tools/text.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/text.cpp'; fi` - -tools/tools_libtools_a-timers.o: tools/timers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-timers.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-timers.Tpo -c -o tools/tools_libtools_a-timers.o `test -f 'tools/timers.cpp' || echo '$(srcdir)/'`tools/timers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-timers.Tpo tools/$(DEPDIR)/tools_libtools_a-timers.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/timers.cpp' object='tools/tools_libtools_a-timers.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-timers.o `test -f 'tools/timers.cpp' || echo '$(srcdir)/'`tools/timers.cpp - -tools/tools_libtools_a-timers.obj: tools/timers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-timers.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-timers.Tpo -c -o tools/tools_libtools_a-timers.obj `if test -f 'tools/timers.cpp'; then $(CYGPATH_W) 'tools/timers.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/timers.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-timers.Tpo tools/$(DEPDIR)/tools_libtools_a-timers.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/timers.cpp' object='tools/tools_libtools_a-timers.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-timers.obj `if test -f 'tools/timers.cpp'; then $(CYGPATH_W) 'tools/timers.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/timers.cpp'; fi` - -tools/tools_libtools_a-ui.o: tools/ui.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-ui.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-ui.Tpo -c -o tools/tools_libtools_a-ui.o `test -f 'tools/ui.cpp' || echo '$(srcdir)/'`tools/ui.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-ui.Tpo tools/$(DEPDIR)/tools_libtools_a-ui.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/ui.cpp' object='tools/tools_libtools_a-ui.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-ui.o `test -f 'tools/ui.cpp' || echo '$(srcdir)/'`tools/ui.cpp - -tools/tools_libtools_a-ui.obj: tools/ui.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-ui.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-ui.Tpo -c -o tools/tools_libtools_a-ui.obj `if test -f 'tools/ui.cpp'; then $(CYGPATH_W) 'tools/ui.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/ui.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-ui.Tpo tools/$(DEPDIR)/tools_libtools_a-ui.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/ui.cpp' object='tools/tools_libtools_a-ui.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-ui.obj `if test -f 'tools/ui.cpp'; then $(CYGPATH_W) 'tools/ui.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/ui.cpp'; fi` - -tools/tools_libtools_a-user.o: tools/user.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-user.o -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-user.Tpo -c -o tools/tools_libtools_a-user.o `test -f 'tools/user.cpp' || echo '$(srcdir)/'`tools/user.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-user.Tpo tools/$(DEPDIR)/tools_libtools_a-user.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/user.cpp' object='tools/tools_libtools_a-user.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-user.o `test -f 'tools/user.cpp' || echo '$(srcdir)/'`tools/user.cpp - -tools/tools_libtools_a-user.obj: tools/user.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_libtools_a-user.obj -MD -MP -MF tools/$(DEPDIR)/tools_libtools_a-user.Tpo -c -o tools/tools_libtools_a-user.obj `if test -f 'tools/user.cpp'; then $(CYGPATH_W) 'tools/user.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/user.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_libtools_a-user.Tpo tools/$(DEPDIR)/tools_libtools_a-user.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/user.cpp' object='tools/tools_libtools_a-user.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_libtools_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_libtools_a-user.obj `if test -f 'tools/user.cpp'; then $(CYGPATH_W) 'tools/user.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/user.cpp'; fi` - -atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo: atf-c++/detail/test_helpers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_c___detail_libtest_helpers_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo -MD -MP -MF atf-c++/detail/$(DEPDIR)/atf_c___detail_libtest_helpers_la-test_helpers.Tpo -c -o atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo `test -f 'atf-c++/detail/test_helpers.cpp' || echo '$(srcdir)/'`atf-c++/detail/test_helpers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-c++/detail/$(DEPDIR)/atf_c___detail_libtest_helpers_la-test_helpers.Tpo atf-c++/detail/$(DEPDIR)/atf_c___detail_libtest_helpers_la-test_helpers.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-c++/detail/test_helpers.cpp' object='atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_c___detail_libtest_helpers_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-c++/detail/atf_c___detail_libtest_helpers_la-test_helpers.lo `test -f 'atf-c++/detail/test_helpers.cpp' || echo '$(srcdir)/'`atf-c++/detail/test_helpers.cpp - -atf-sh/atf_sh_atf_check-atf-check.o: atf-sh/atf-check.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_check_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-sh/atf_sh_atf_check-atf-check.o -MD -MP -MF atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Tpo -c -o atf-sh/atf_sh_atf_check-atf-check.o `test -f 'atf-sh/atf-check.cpp' || echo '$(srcdir)/'`atf-sh/atf-check.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Tpo atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-sh/atf-check.cpp' object='atf-sh/atf_sh_atf_check-atf-check.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_check_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-sh/atf_sh_atf_check-atf-check.o `test -f 'atf-sh/atf-check.cpp' || echo '$(srcdir)/'`atf-sh/atf-check.cpp - -atf-sh/atf_sh_atf_check-atf-check.obj: atf-sh/atf-check.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_check_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-sh/atf_sh_atf_check-atf-check.obj -MD -MP -MF atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Tpo -c -o atf-sh/atf_sh_atf_check-atf-check.obj `if test -f 'atf-sh/atf-check.cpp'; then $(CYGPATH_W) 'atf-sh/atf-check.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-sh/atf-check.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Tpo atf-sh/$(DEPDIR)/atf_sh_atf_check-atf-check.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-sh/atf-check.cpp' object='atf-sh/atf_sh_atf_check-atf-check.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_check_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-sh/atf_sh_atf_check-atf-check.obj `if test -f 'atf-sh/atf-check.cpp'; then $(CYGPATH_W) 'atf-sh/atf-check.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-sh/atf-check.cpp'; fi` - -atf-sh/atf_sh_atf_sh-atf-sh.o: atf-sh/atf-sh.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_sh_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-sh/atf_sh_atf_sh-atf-sh.o -MD -MP -MF atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Tpo -c -o atf-sh/atf_sh_atf_sh-atf-sh.o `test -f 'atf-sh/atf-sh.cpp' || echo '$(srcdir)/'`atf-sh/atf-sh.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Tpo atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-sh/atf-sh.cpp' object='atf-sh/atf_sh_atf_sh-atf-sh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_sh_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-sh/atf_sh_atf_sh-atf-sh.o `test -f 'atf-sh/atf-sh.cpp' || echo '$(srcdir)/'`atf-sh/atf-sh.cpp - -atf-sh/atf_sh_atf_sh-atf-sh.obj: atf-sh/atf-sh.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_sh_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-sh/atf_sh_atf_sh-atf-sh.obj -MD -MP -MF atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Tpo -c -o atf-sh/atf_sh_atf_sh-atf-sh.obj `if test -f 'atf-sh/atf-sh.cpp'; then $(CYGPATH_W) 'atf-sh/atf-sh.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-sh/atf-sh.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Tpo atf-sh/$(DEPDIR)/atf_sh_atf_sh-atf-sh.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-sh/atf-sh.cpp' object='atf-sh/atf_sh_atf_sh-atf-sh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_sh_atf_sh_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-sh/atf_sh_atf_sh-atf-sh.obj `if test -f 'atf-sh/atf-sh.cpp'; then $(CYGPATH_W) 'atf-sh/atf-sh.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-sh/atf-sh.cpp'; fi` - -tools/tools_application_test-application_test.o: tools/application_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_application_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_application_test-application_test.o -MD -MP -MF tools/$(DEPDIR)/tools_application_test-application_test.Tpo -c -o tools/tools_application_test-application_test.o `test -f 'tools/application_test.cpp' || echo '$(srcdir)/'`tools/application_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_application_test-application_test.Tpo tools/$(DEPDIR)/tools_application_test-application_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/application_test.cpp' object='tools/tools_application_test-application_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_application_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_application_test-application_test.o `test -f 'tools/application_test.cpp' || echo '$(srcdir)/'`tools/application_test.cpp - -tools/tools_application_test-application_test.obj: tools/application_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_application_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_application_test-application_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_application_test-application_test.Tpo -c -o tools/tools_application_test-application_test.obj `if test -f 'tools/application_test.cpp'; then $(CYGPATH_W) 'tools/application_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/application_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_application_test-application_test.Tpo tools/$(DEPDIR)/tools_application_test-application_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/application_test.cpp' object='tools/tools_application_test-application_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_application_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_application_test-application_test.obj `if test -f 'tools/application_test.cpp'; then $(CYGPATH_W) 'tools/application_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/application_test.cpp'; fi` - -tools/tools_atf_config-atf-config.o: tools/atf-config.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_config_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_config-atf-config.o -MD -MP -MF tools/$(DEPDIR)/tools_atf_config-atf-config.Tpo -c -o tools/tools_atf_config-atf-config.o `test -f 'tools/atf-config.cpp' || echo '$(srcdir)/'`tools/atf-config.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_config-atf-config.Tpo tools/$(DEPDIR)/tools_atf_config-atf-config.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-config.cpp' object='tools/tools_atf_config-atf-config.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_config_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_config-atf-config.o `test -f 'tools/atf-config.cpp' || echo '$(srcdir)/'`tools/atf-config.cpp - -tools/tools_atf_config-atf-config.obj: tools/atf-config.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_config_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_config-atf-config.obj -MD -MP -MF tools/$(DEPDIR)/tools_atf_config-atf-config.Tpo -c -o tools/tools_atf_config-atf-config.obj `if test -f 'tools/atf-config.cpp'; then $(CYGPATH_W) 'tools/atf-config.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-config.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_config-atf-config.Tpo tools/$(DEPDIR)/tools_atf_config-atf-config.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-config.cpp' object='tools/tools_atf_config-atf-config.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_config_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_config-atf-config.obj `if test -f 'tools/atf-config.cpp'; then $(CYGPATH_W) 'tools/atf-config.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-config.cpp'; fi` - -tools/tools_atf_report-atf-report.o: tools/atf-report.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_report_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_report-atf-report.o -MD -MP -MF tools/$(DEPDIR)/tools_atf_report-atf-report.Tpo -c -o tools/tools_atf_report-atf-report.o `test -f 'tools/atf-report.cpp' || echo '$(srcdir)/'`tools/atf-report.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_report-atf-report.Tpo tools/$(DEPDIR)/tools_atf_report-atf-report.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-report.cpp' object='tools/tools_atf_report-atf-report.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_report_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_report-atf-report.o `test -f 'tools/atf-report.cpp' || echo '$(srcdir)/'`tools/atf-report.cpp - -tools/tools_atf_report-atf-report.obj: tools/atf-report.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_report_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_report-atf-report.obj -MD -MP -MF tools/$(DEPDIR)/tools_atf_report-atf-report.Tpo -c -o tools/tools_atf_report-atf-report.obj `if test -f 'tools/atf-report.cpp'; then $(CYGPATH_W) 'tools/atf-report.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-report.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_report-atf-report.Tpo tools/$(DEPDIR)/tools_atf_report-atf-report.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-report.cpp' object='tools/tools_atf_report-atf-report.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_report_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_report-atf-report.obj `if test -f 'tools/atf-report.cpp'; then $(CYGPATH_W) 'tools/atf-report.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-report.cpp'; fi` - -tools/tools_atf_run-atf-run.o: tools/atf-run.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_run-atf-run.o -MD -MP -MF tools/$(DEPDIR)/tools_atf_run-atf-run.Tpo -c -o tools/tools_atf_run-atf-run.o `test -f 'tools/atf-run.cpp' || echo '$(srcdir)/'`tools/atf-run.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_run-atf-run.Tpo tools/$(DEPDIR)/tools_atf_run-atf-run.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-run.cpp' object='tools/tools_atf_run-atf-run.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_run-atf-run.o `test -f 'tools/atf-run.cpp' || echo '$(srcdir)/'`tools/atf-run.cpp - -tools/tools_atf_run-atf-run.obj: tools/atf-run.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_run-atf-run.obj -MD -MP -MF tools/$(DEPDIR)/tools_atf_run-atf-run.Tpo -c -o tools/tools_atf_run-atf-run.obj `if test -f 'tools/atf-run.cpp'; then $(CYGPATH_W) 'tools/atf-run.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-run.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_run-atf-run.Tpo tools/$(DEPDIR)/tools_atf_run-atf-run.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-run.cpp' object='tools/tools_atf_run-atf-run.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_run-atf-run.obj `if test -f 'tools/atf-run.cpp'; then $(CYGPATH_W) 'tools/atf-run.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-run.cpp'; fi` - -tools/tools_atf_version-atf-version.o: tools/atf-version.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_version-atf-version.o -MD -MP -MF tools/$(DEPDIR)/tools_atf_version-atf-version.Tpo -c -o tools/tools_atf_version-atf-version.o `test -f 'tools/atf-version.cpp' || echo '$(srcdir)/'`tools/atf-version.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_version-atf-version.Tpo tools/$(DEPDIR)/tools_atf_version-atf-version.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-version.cpp' object='tools/tools_atf_version-atf-version.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_version-atf-version.o `test -f 'tools/atf-version.cpp' || echo '$(srcdir)/'`tools/atf-version.cpp - -tools/tools_atf_version-atf-version.obj: tools/atf-version.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atf_version-atf-version.obj -MD -MP -MF tools/$(DEPDIR)/tools_atf_version-atf-version.Tpo -c -o tools/tools_atf_version-atf-version.obj `if test -f 'tools/atf-version.cpp'; then $(CYGPATH_W) 'tools/atf-version.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-version.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atf_version-atf-version.Tpo tools/$(DEPDIR)/tools_atf_version-atf-version.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atf-version.cpp' object='tools/tools_atf_version-atf-version.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atf_version-atf-version.obj `if test -f 'tools/atf-version.cpp'; then $(CYGPATH_W) 'tools/atf-version.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atf-version.cpp'; fi` - -tools/tools_atffile_test-atffile_test.o: tools/atffile_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atffile_test-atffile_test.o -MD -MP -MF tools/$(DEPDIR)/tools_atffile_test-atffile_test.Tpo -c -o tools/tools_atffile_test-atffile_test.o `test -f 'tools/atffile_test.cpp' || echo '$(srcdir)/'`tools/atffile_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atffile_test-atffile_test.Tpo tools/$(DEPDIR)/tools_atffile_test-atffile_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atffile_test.cpp' object='tools/tools_atffile_test-atffile_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atffile_test-atffile_test.o `test -f 'tools/atffile_test.cpp' || echo '$(srcdir)/'`tools/atffile_test.cpp - -tools/tools_atffile_test-atffile_test.obj: tools/atffile_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_atffile_test-atffile_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_atffile_test-atffile_test.Tpo -c -o tools/tools_atffile_test-atffile_test.obj `if test -f 'tools/atffile_test.cpp'; then $(CYGPATH_W) 'tools/atffile_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atffile_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_atffile_test-atffile_test.Tpo tools/$(DEPDIR)/tools_atffile_test-atffile_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/atffile_test.cpp' object='tools/tools_atffile_test-atffile_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_atffile_test-atffile_test.obj `if test -f 'tools/atffile_test.cpp'; then $(CYGPATH_W) 'tools/atffile_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/atffile_test.cpp'; fi` - -tools/tools_auto_array_test-auto_array_test.o: tools/auto_array_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_auto_array_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_auto_array_test-auto_array_test.o -MD -MP -MF tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Tpo -c -o tools/tools_auto_array_test-auto_array_test.o `test -f 'tools/auto_array_test.cpp' || echo '$(srcdir)/'`tools/auto_array_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Tpo tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/auto_array_test.cpp' object='tools/tools_auto_array_test-auto_array_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_auto_array_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_auto_array_test-auto_array_test.o `test -f 'tools/auto_array_test.cpp' || echo '$(srcdir)/'`tools/auto_array_test.cpp - -tools/tools_auto_array_test-auto_array_test.obj: tools/auto_array_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_auto_array_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_auto_array_test-auto_array_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Tpo -c -o tools/tools_auto_array_test-auto_array_test.obj `if test -f 'tools/auto_array_test.cpp'; then $(CYGPATH_W) 'tools/auto_array_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/auto_array_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Tpo tools/$(DEPDIR)/tools_auto_array_test-auto_array_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/auto_array_test.cpp' object='tools/tools_auto_array_test-auto_array_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_auto_array_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_auto_array_test-auto_array_test.obj `if test -f 'tools/auto_array_test.cpp'; then $(CYGPATH_W) 'tools/auto_array_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/auto_array_test.cpp'; fi` - -tools/tools_config_file_test-config_file_test.o: tools/config_file_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_file_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_config_file_test-config_file_test.o -MD -MP -MF tools/$(DEPDIR)/tools_config_file_test-config_file_test.Tpo -c -o tools/tools_config_file_test-config_file_test.o `test -f 'tools/config_file_test.cpp' || echo '$(srcdir)/'`tools/config_file_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_config_file_test-config_file_test.Tpo tools/$(DEPDIR)/tools_config_file_test-config_file_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config_file_test.cpp' object='tools/tools_config_file_test-config_file_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_file_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_config_file_test-config_file_test.o `test -f 'tools/config_file_test.cpp' || echo '$(srcdir)/'`tools/config_file_test.cpp - -tools/tools_config_file_test-config_file_test.obj: tools/config_file_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_file_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_config_file_test-config_file_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_config_file_test-config_file_test.Tpo -c -o tools/tools_config_file_test-config_file_test.obj `if test -f 'tools/config_file_test.cpp'; then $(CYGPATH_W) 'tools/config_file_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config_file_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_config_file_test-config_file_test.Tpo tools/$(DEPDIR)/tools_config_file_test-config_file_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config_file_test.cpp' object='tools/tools_config_file_test-config_file_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_file_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_config_file_test-config_file_test.obj `if test -f 'tools/config_file_test.cpp'; then $(CYGPATH_W) 'tools/config_file_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config_file_test.cpp'; fi` - -tools/tools_config_test-config_test.o: tools/config_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_config_test-config_test.o -MD -MP -MF tools/$(DEPDIR)/tools_config_test-config_test.Tpo -c -o tools/tools_config_test-config_test.o `test -f 'tools/config_test.cpp' || echo '$(srcdir)/'`tools/config_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_config_test-config_test.Tpo tools/$(DEPDIR)/tools_config_test-config_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config_test.cpp' object='tools/tools_config_test-config_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_config_test-config_test.o `test -f 'tools/config_test.cpp' || echo '$(srcdir)/'`tools/config_test.cpp - -tools/tools_config_test-config_test.obj: tools/config_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_config_test-config_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_config_test-config_test.Tpo -c -o tools/tools_config_test-config_test.obj `if test -f 'tools/config_test.cpp'; then $(CYGPATH_W) 'tools/config_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_config_test-config_test.Tpo tools/$(DEPDIR)/tools_config_test-config_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/config_test.cpp' object='tools/tools_config_test-config_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_config_test-config_test.obj `if test -f 'tools/config_test.cpp'; then $(CYGPATH_W) 'tools/config_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/config_test.cpp'; fi` - -tools/tools_env_test-env_test.o: tools/env_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_env_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_env_test-env_test.o -MD -MP -MF tools/$(DEPDIR)/tools_env_test-env_test.Tpo -c -o tools/tools_env_test-env_test.o `test -f 'tools/env_test.cpp' || echo '$(srcdir)/'`tools/env_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_env_test-env_test.Tpo tools/$(DEPDIR)/tools_env_test-env_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/env_test.cpp' object='tools/tools_env_test-env_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_env_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_env_test-env_test.o `test -f 'tools/env_test.cpp' || echo '$(srcdir)/'`tools/env_test.cpp - -tools/tools_env_test-env_test.obj: tools/env_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_env_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_env_test-env_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_env_test-env_test.Tpo -c -o tools/tools_env_test-env_test.obj `if test -f 'tools/env_test.cpp'; then $(CYGPATH_W) 'tools/env_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/env_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_env_test-env_test.Tpo tools/$(DEPDIR)/tools_env_test-env_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/env_test.cpp' object='tools/tools_env_test-env_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_env_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_env_test-env_test.obj `if test -f 'tools/env_test.cpp'; then $(CYGPATH_W) 'tools/env_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/env_test.cpp'; fi` - -tools/tools_expand_test-expand_test.o: tools/expand_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_expand_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_expand_test-expand_test.o -MD -MP -MF tools/$(DEPDIR)/tools_expand_test-expand_test.Tpo -c -o tools/tools_expand_test-expand_test.o `test -f 'tools/expand_test.cpp' || echo '$(srcdir)/'`tools/expand_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_expand_test-expand_test.Tpo tools/$(DEPDIR)/tools_expand_test-expand_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/expand_test.cpp' object='tools/tools_expand_test-expand_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_expand_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_expand_test-expand_test.o `test -f 'tools/expand_test.cpp' || echo '$(srcdir)/'`tools/expand_test.cpp - -tools/tools_expand_test-expand_test.obj: tools/expand_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_expand_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_expand_test-expand_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_expand_test-expand_test.Tpo -c -o tools/tools_expand_test-expand_test.obj `if test -f 'tools/expand_test.cpp'; then $(CYGPATH_W) 'tools/expand_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/expand_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_expand_test-expand_test.Tpo tools/$(DEPDIR)/tools_expand_test-expand_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/expand_test.cpp' object='tools/tools_expand_test-expand_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_expand_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_expand_test-expand_test.obj `if test -f 'tools/expand_test.cpp'; then $(CYGPATH_W) 'tools/expand_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/expand_test.cpp'; fi` - -tools/tools_fs_test-fs_test.o: tools/fs_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_fs_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_fs_test-fs_test.o -MD -MP -MF tools/$(DEPDIR)/tools_fs_test-fs_test.Tpo -c -o tools/tools_fs_test-fs_test.o `test -f 'tools/fs_test.cpp' || echo '$(srcdir)/'`tools/fs_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_fs_test-fs_test.Tpo tools/$(DEPDIR)/tools_fs_test-fs_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/fs_test.cpp' object='tools/tools_fs_test-fs_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_fs_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_fs_test-fs_test.o `test -f 'tools/fs_test.cpp' || echo '$(srcdir)/'`tools/fs_test.cpp - -tools/tools_fs_test-fs_test.obj: tools/fs_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_fs_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_fs_test-fs_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_fs_test-fs_test.Tpo -c -o tools/tools_fs_test-fs_test.obj `if test -f 'tools/fs_test.cpp'; then $(CYGPATH_W) 'tools/fs_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/fs_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_fs_test-fs_test.Tpo tools/$(DEPDIR)/tools_fs_test-fs_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/fs_test.cpp' object='tools/tools_fs_test-fs_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_fs_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_fs_test-fs_test.obj `if test -f 'tools/fs_test.cpp'; then $(CYGPATH_W) 'tools/fs_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/fs_test.cpp'; fi` - -tools/tools_io_test-io_test.o: tools/io_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_io_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_io_test-io_test.o -MD -MP -MF tools/$(DEPDIR)/tools_io_test-io_test.Tpo -c -o tools/tools_io_test-io_test.o `test -f 'tools/io_test.cpp' || echo '$(srcdir)/'`tools/io_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_io_test-io_test.Tpo tools/$(DEPDIR)/tools_io_test-io_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/io_test.cpp' object='tools/tools_io_test-io_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_io_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_io_test-io_test.o `test -f 'tools/io_test.cpp' || echo '$(srcdir)/'`tools/io_test.cpp - -tools/tools_io_test-io_test.obj: tools/io_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_io_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_io_test-io_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_io_test-io_test.Tpo -c -o tools/tools_io_test-io_test.obj `if test -f 'tools/io_test.cpp'; then $(CYGPATH_W) 'tools/io_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/io_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_io_test-io_test.Tpo tools/$(DEPDIR)/tools_io_test-io_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/io_test.cpp' object='tools/tools_io_test-io_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_io_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_io_test-io_test.obj `if test -f 'tools/io_test.cpp'; then $(CYGPATH_W) 'tools/io_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/io_test.cpp'; fi` - -tools/tools_misc_helpers-misc_helpers.o: tools/misc_helpers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_misc_helpers_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_misc_helpers-misc_helpers.o -MD -MP -MF tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Tpo -c -o tools/tools_misc_helpers-misc_helpers.o `test -f 'tools/misc_helpers.cpp' || echo '$(srcdir)/'`tools/misc_helpers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Tpo tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/misc_helpers.cpp' object='tools/tools_misc_helpers-misc_helpers.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_misc_helpers_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_misc_helpers-misc_helpers.o `test -f 'tools/misc_helpers.cpp' || echo '$(srcdir)/'`tools/misc_helpers.cpp - -tools/tools_misc_helpers-misc_helpers.obj: tools/misc_helpers.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_misc_helpers_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_misc_helpers-misc_helpers.obj -MD -MP -MF tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Tpo -c -o tools/tools_misc_helpers-misc_helpers.obj `if test -f 'tools/misc_helpers.cpp'; then $(CYGPATH_W) 'tools/misc_helpers.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/misc_helpers.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Tpo tools/$(DEPDIR)/tools_misc_helpers-misc_helpers.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/misc_helpers.cpp' object='tools/tools_misc_helpers-misc_helpers.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_misc_helpers_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_misc_helpers-misc_helpers.obj `if test -f 'tools/misc_helpers.cpp'; then $(CYGPATH_W) 'tools/misc_helpers.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/misc_helpers.cpp'; fi` - -tools/tools_parser_test-parser_test.o: tools/parser_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_parser_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_parser_test-parser_test.o -MD -MP -MF tools/$(DEPDIR)/tools_parser_test-parser_test.Tpo -c -o tools/tools_parser_test-parser_test.o `test -f 'tools/parser_test.cpp' || echo '$(srcdir)/'`tools/parser_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_parser_test-parser_test.Tpo tools/$(DEPDIR)/tools_parser_test-parser_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/parser_test.cpp' object='tools/tools_parser_test-parser_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_parser_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_parser_test-parser_test.o `test -f 'tools/parser_test.cpp' || echo '$(srcdir)/'`tools/parser_test.cpp - -tools/tools_parser_test-parser_test.obj: tools/parser_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_parser_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_parser_test-parser_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_parser_test-parser_test.Tpo -c -o tools/tools_parser_test-parser_test.obj `if test -f 'tools/parser_test.cpp'; then $(CYGPATH_W) 'tools/parser_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/parser_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_parser_test-parser_test.Tpo tools/$(DEPDIR)/tools_parser_test-parser_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/parser_test.cpp' object='tools/tools_parser_test-parser_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_parser_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_parser_test-parser_test.obj `if test -f 'tools/parser_test.cpp'; then $(CYGPATH_W) 'tools/parser_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/parser_test.cpp'; fi` - -tools/tools_process_test-process_test.o: tools/process_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_process_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_process_test-process_test.o -MD -MP -MF tools/$(DEPDIR)/tools_process_test-process_test.Tpo -c -o tools/tools_process_test-process_test.o `test -f 'tools/process_test.cpp' || echo '$(srcdir)/'`tools/process_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_process_test-process_test.Tpo tools/$(DEPDIR)/tools_process_test-process_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/process_test.cpp' object='tools/tools_process_test-process_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_process_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_process_test-process_test.o `test -f 'tools/process_test.cpp' || echo '$(srcdir)/'`tools/process_test.cpp - -tools/tools_process_test-process_test.obj: tools/process_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_process_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_process_test-process_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_process_test-process_test.Tpo -c -o tools/tools_process_test-process_test.obj `if test -f 'tools/process_test.cpp'; then $(CYGPATH_W) 'tools/process_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/process_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_process_test-process_test.Tpo tools/$(DEPDIR)/tools_process_test-process_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/process_test.cpp' object='tools/tools_process_test-process_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_process_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_process_test-process_test.obj `if test -f 'tools/process_test.cpp'; then $(CYGPATH_W) 'tools/process_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/process_test.cpp'; fi` - -tools/tools_reader_test-reader_test.o: tools/reader_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_reader_test-reader_test.o -MD -MP -MF tools/$(DEPDIR)/tools_reader_test-reader_test.Tpo -c -o tools/tools_reader_test-reader_test.o `test -f 'tools/reader_test.cpp' || echo '$(srcdir)/'`tools/reader_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_reader_test-reader_test.Tpo tools/$(DEPDIR)/tools_reader_test-reader_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/reader_test.cpp' object='tools/tools_reader_test-reader_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_reader_test-reader_test.o `test -f 'tools/reader_test.cpp' || echo '$(srcdir)/'`tools/reader_test.cpp - -tools/tools_reader_test-reader_test.obj: tools/reader_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_reader_test-reader_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_reader_test-reader_test.Tpo -c -o tools/tools_reader_test-reader_test.obj `if test -f 'tools/reader_test.cpp'; then $(CYGPATH_W) 'tools/reader_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/reader_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_reader_test-reader_test.Tpo tools/$(DEPDIR)/tools_reader_test-reader_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/reader_test.cpp' object='tools/tools_reader_test-reader_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_reader_test-reader_test.obj `if test -f 'tools/reader_test.cpp'; then $(CYGPATH_W) 'tools/reader_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/reader_test.cpp'; fi` - -tools/tools_requirements_test-requirements_test.o: tools/requirements_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_requirements_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_requirements_test-requirements_test.o -MD -MP -MF tools/$(DEPDIR)/tools_requirements_test-requirements_test.Tpo -c -o tools/tools_requirements_test-requirements_test.o `test -f 'tools/requirements_test.cpp' || echo '$(srcdir)/'`tools/requirements_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_requirements_test-requirements_test.Tpo tools/$(DEPDIR)/tools_requirements_test-requirements_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/requirements_test.cpp' object='tools/tools_requirements_test-requirements_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_requirements_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_requirements_test-requirements_test.o `test -f 'tools/requirements_test.cpp' || echo '$(srcdir)/'`tools/requirements_test.cpp - -tools/tools_requirements_test-requirements_test.obj: tools/requirements_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_requirements_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_requirements_test-requirements_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_requirements_test-requirements_test.Tpo -c -o tools/tools_requirements_test-requirements_test.obj `if test -f 'tools/requirements_test.cpp'; then $(CYGPATH_W) 'tools/requirements_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/requirements_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_requirements_test-requirements_test.Tpo tools/$(DEPDIR)/tools_requirements_test-requirements_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/requirements_test.cpp' object='tools/tools_requirements_test-requirements_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_requirements_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_requirements_test-requirements_test.obj `if test -f 'tools/requirements_test.cpp'; then $(CYGPATH_W) 'tools/requirements_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/requirements_test.cpp'; fi` - -tools/tools_signals_test-signals_test.o: tools/signals_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_signals_test-signals_test.o -MD -MP -MF tools/$(DEPDIR)/tools_signals_test-signals_test.Tpo -c -o tools/tools_signals_test-signals_test.o `test -f 'tools/signals_test.cpp' || echo '$(srcdir)/'`tools/signals_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_signals_test-signals_test.Tpo tools/$(DEPDIR)/tools_signals_test-signals_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/signals_test.cpp' object='tools/tools_signals_test-signals_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_signals_test-signals_test.o `test -f 'tools/signals_test.cpp' || echo '$(srcdir)/'`tools/signals_test.cpp - -tools/tools_signals_test-signals_test.obj: tools/signals_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_signals_test-signals_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_signals_test-signals_test.Tpo -c -o tools/tools_signals_test-signals_test.obj `if test -f 'tools/signals_test.cpp'; then $(CYGPATH_W) 'tools/signals_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/signals_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_signals_test-signals_test.Tpo tools/$(DEPDIR)/tools_signals_test-signals_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/signals_test.cpp' object='tools/tools_signals_test-signals_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_signals_test-signals_test.obj `if test -f 'tools/signals_test.cpp'; then $(CYGPATH_W) 'tools/signals_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/signals_test.cpp'; fi` - -tools/tools_signals_test-signals.o: tools/signals.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_signals_test-signals.o -MD -MP -MF tools/$(DEPDIR)/tools_signals_test-signals.Tpo -c -o tools/tools_signals_test-signals.o `test -f 'tools/signals.cpp' || echo '$(srcdir)/'`tools/signals.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_signals_test-signals.Tpo tools/$(DEPDIR)/tools_signals_test-signals.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/signals.cpp' object='tools/tools_signals_test-signals.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_signals_test-signals.o `test -f 'tools/signals.cpp' || echo '$(srcdir)/'`tools/signals.cpp - -tools/tools_signals_test-signals.obj: tools/signals.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_signals_test-signals.obj -MD -MP -MF tools/$(DEPDIR)/tools_signals_test-signals.Tpo -c -o tools/tools_signals_test-signals.obj `if test -f 'tools/signals.cpp'; then $(CYGPATH_W) 'tools/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/signals.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_signals_test-signals.Tpo tools/$(DEPDIR)/tools_signals_test-signals.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/signals.cpp' object='tools/tools_signals_test-signals.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_signals_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_signals_test-signals.obj `if test -f 'tools/signals.cpp'; then $(CYGPATH_W) 'tools/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/signals.cpp'; fi` - -tools/tools_test_program_test-test_program_test.o: tools/test_program_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_test_program_test-test_program_test.o -MD -MP -MF tools/$(DEPDIR)/tools_test_program_test-test_program_test.Tpo -c -o tools/tools_test_program_test-test_program_test.o `test -f 'tools/test_program_test.cpp' || echo '$(srcdir)/'`tools/test_program_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_test_program_test-test_program_test.Tpo tools/$(DEPDIR)/tools_test_program_test-test_program_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/test_program_test.cpp' object='tools/tools_test_program_test-test_program_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_test_program_test-test_program_test.o `test -f 'tools/test_program_test.cpp' || echo '$(srcdir)/'`tools/test_program_test.cpp - -tools/tools_test_program_test-test_program_test.obj: tools/test_program_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_test_program_test-test_program_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_test_program_test-test_program_test.Tpo -c -o tools/tools_test_program_test-test_program_test.obj `if test -f 'tools/test_program_test.cpp'; then $(CYGPATH_W) 'tools/test_program_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/test_program_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_test_program_test-test_program_test.Tpo tools/$(DEPDIR)/tools_test_program_test-test_program_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/test_program_test.cpp' object='tools/tools_test_program_test-test_program_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_test_program_test-test_program_test.obj `if test -f 'tools/test_program_test.cpp'; then $(CYGPATH_W) 'tools/test_program_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/test_program_test.cpp'; fi` - -tools/tools_text_test-text_test.o: tools/text_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_text_test-text_test.o -MD -MP -MF tools/$(DEPDIR)/tools_text_test-text_test.Tpo -c -o tools/tools_text_test-text_test.o `test -f 'tools/text_test.cpp' || echo '$(srcdir)/'`tools/text_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_text_test-text_test.Tpo tools/$(DEPDIR)/tools_text_test-text_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/text_test.cpp' object='tools/tools_text_test-text_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_text_test-text_test.o `test -f 'tools/text_test.cpp' || echo '$(srcdir)/'`tools/text_test.cpp - -tools/tools_text_test-text_test.obj: tools/text_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_text_test-text_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_text_test-text_test.Tpo -c -o tools/tools_text_test-text_test.obj `if test -f 'tools/text_test.cpp'; then $(CYGPATH_W) 'tools/text_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/text_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_text_test-text_test.Tpo tools/$(DEPDIR)/tools_text_test-text_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/text_test.cpp' object='tools/tools_text_test-text_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_text_test-text_test.obj `if test -f 'tools/text_test.cpp'; then $(CYGPATH_W) 'tools/text_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/text_test.cpp'; fi` - -tools/tools_text_test-text.o: tools/text.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_text_test-text.o -MD -MP -MF tools/$(DEPDIR)/tools_text_test-text.Tpo -c -o tools/tools_text_test-text.o `test -f 'tools/text.cpp' || echo '$(srcdir)/'`tools/text.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_text_test-text.Tpo tools/$(DEPDIR)/tools_text_test-text.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/text.cpp' object='tools/tools_text_test-text.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_text_test-text.o `test -f 'tools/text.cpp' || echo '$(srcdir)/'`tools/text.cpp - -tools/tools_text_test-text.obj: tools/text.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_text_test-text.obj -MD -MP -MF tools/$(DEPDIR)/tools_text_test-text.Tpo -c -o tools/tools_text_test-text.obj `if test -f 'tools/text.cpp'; then $(CYGPATH_W) 'tools/text.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/text.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_text_test-text.Tpo tools/$(DEPDIR)/tools_text_test-text.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/text.cpp' object='tools/tools_text_test-text.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_text_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_text_test-text.obj `if test -f 'tools/text.cpp'; then $(CYGPATH_W) 'tools/text.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/text.cpp'; fi` - -tools/tools_ui_test-ui_test.o: tools/ui_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_ui_test-ui_test.o -MD -MP -MF tools/$(DEPDIR)/tools_ui_test-ui_test.Tpo -c -o tools/tools_ui_test-ui_test.o `test -f 'tools/ui_test.cpp' || echo '$(srcdir)/'`tools/ui_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_ui_test-ui_test.Tpo tools/$(DEPDIR)/tools_ui_test-ui_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/ui_test.cpp' object='tools/tools_ui_test-ui_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_ui_test-ui_test.o `test -f 'tools/ui_test.cpp' || echo '$(srcdir)/'`tools/ui_test.cpp - -tools/tools_ui_test-ui_test.obj: tools/ui_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_ui_test-ui_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_ui_test-ui_test.Tpo -c -o tools/tools_ui_test-ui_test.obj `if test -f 'tools/ui_test.cpp'; then $(CYGPATH_W) 'tools/ui_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/ui_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_ui_test-ui_test.Tpo tools/$(DEPDIR)/tools_ui_test-ui_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/ui_test.cpp' object='tools/tools_ui_test-ui_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_ui_test-ui_test.obj `if test -f 'tools/ui_test.cpp'; then $(CYGPATH_W) 'tools/ui_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/ui_test.cpp'; fi` - -tools/tools_ui_test-ui.o: tools/ui.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_ui_test-ui.o -MD -MP -MF tools/$(DEPDIR)/tools_ui_test-ui.Tpo -c -o tools/tools_ui_test-ui.o `test -f 'tools/ui.cpp' || echo '$(srcdir)/'`tools/ui.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_ui_test-ui.Tpo tools/$(DEPDIR)/tools_ui_test-ui.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/ui.cpp' object='tools/tools_ui_test-ui.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_ui_test-ui.o `test -f 'tools/ui.cpp' || echo '$(srcdir)/'`tools/ui.cpp - -tools/tools_ui_test-ui.obj: tools/ui.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_ui_test-ui.obj -MD -MP -MF tools/$(DEPDIR)/tools_ui_test-ui.Tpo -c -o tools/tools_ui_test-ui.obj `if test -f 'tools/ui.cpp'; then $(CYGPATH_W) 'tools/ui.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/ui.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_ui_test-ui.Tpo tools/$(DEPDIR)/tools_ui_test-ui.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/ui.cpp' object='tools/tools_ui_test-ui.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_ui_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_ui_test-ui.obj `if test -f 'tools/ui.cpp'; then $(CYGPATH_W) 'tools/ui.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/ui.cpp'; fi` - -tools/tools_user_test-user_test.o: tools/user_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_user_test-user_test.o -MD -MP -MF tools/$(DEPDIR)/tools_user_test-user_test.Tpo -c -o tools/tools_user_test-user_test.o `test -f 'tools/user_test.cpp' || echo '$(srcdir)/'`tools/user_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_user_test-user_test.Tpo tools/$(DEPDIR)/tools_user_test-user_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/user_test.cpp' object='tools/tools_user_test-user_test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_user_test-user_test.o `test -f 'tools/user_test.cpp' || echo '$(srcdir)/'`tools/user_test.cpp - -tools/tools_user_test-user_test.obj: tools/user_test.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_user_test-user_test.obj -MD -MP -MF tools/$(DEPDIR)/tools_user_test-user_test.Tpo -c -o tools/tools_user_test-user_test.obj `if test -f 'tools/user_test.cpp'; then $(CYGPATH_W) 'tools/user_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/user_test.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_user_test-user_test.Tpo tools/$(DEPDIR)/tools_user_test-user_test.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/user_test.cpp' object='tools/tools_user_test-user_test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_user_test-user_test.obj `if test -f 'tools/user_test.cpp'; then $(CYGPATH_W) 'tools/user_test.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/user_test.cpp'; fi` - -tools/tools_user_test-user.o: tools/user.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_user_test-user.o -MD -MP -MF tools/$(DEPDIR)/tools_user_test-user.Tpo -c -o tools/tools_user_test-user.o `test -f 'tools/user.cpp' || echo '$(srcdir)/'`tools/user.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_user_test-user.Tpo tools/$(DEPDIR)/tools_user_test-user.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/user.cpp' object='tools/tools_user_test-user.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_user_test-user.o `test -f 'tools/user.cpp' || echo '$(srcdir)/'`tools/user.cpp - -tools/tools_user_test-user.obj: tools/user.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tools/tools_user_test-user.obj -MD -MP -MF tools/$(DEPDIR)/tools_user_test-user.Tpo -c -o tools/tools_user_test-user.obj `if test -f 'tools/user.cpp'; then $(CYGPATH_W) 'tools/user.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/user.cpp'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tools/$(DEPDIR)/tools_user_test-user.Tpo tools/$(DEPDIR)/tools_user_test-user.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tools/user.cpp' object='tools/tools_user_test-user.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tools_user_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tools/tools_user_test-user.obj `if test -f 'tools/user.cpp'; then $(CYGPATH_W) 'tools/user.cpp'; else $(CYGPATH_W) '$(srcdir)/tools/user.cpp'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -rm -rf atf-c/.libs atf-c/_libs - -rm -rf atf-c++/.libs atf-c++/_libs - -rm -rf atf-c++/detail/.libs atf-c++/detail/_libs - -rm -rf atf-c/detail/.libs atf-c/detail/_libs - -rm -rf atf-sh/.libs atf-sh/_libs - -rm -rf bootstrap/.libs bootstrap/_libs - -rm -rf test-programs/.libs test-programs/_libs - -rm -rf tools/.libs tools/_libs - -distclean-libtool: - -rm -f libtool config.lt -install-man1: $(dist_man_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS) $(man_MANS)'; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) -install-man3: $(dist_man_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS) $(man_MANS)'; \ - test -n "$(man3dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.3[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ - done; } - -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man3dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.3[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) -install-man4: $(dist_man_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS) $(man_MANS)'; \ - test -n "$(man4dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man4dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man4dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.4[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man4dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man4dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man4dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man4dir)" || exit $$?; }; \ - done; } - -uninstall-man4: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man4dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.4[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man4dir)'; $(am__uninstall_files_from_dir) -install-man5: $(dist_man_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS) $(man_MANS)'; \ - test -n "$(man5dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.5[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ - done; } - -uninstall-man5: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man5dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.5[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) -install-man7: $(dist_man_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS) $(man_MANS)'; \ - test -n "$(man7dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.7[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \ - done; } - -uninstall-man7: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man7dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.7[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man7dir)'; $(am__uninstall_files_from_dir) -install-atf_aclocalDATA: $(atf_aclocal_DATA) - @$(NORMAL_INSTALL) - @list='$(atf_aclocal_DATA)'; test -n "$(atf_aclocaldir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_aclocaldir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_aclocaldir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(atf_aclocaldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(atf_aclocaldir)" || exit $$?; \ - done - -uninstall-atf_aclocalDATA: - @$(NORMAL_UNINSTALL) - @list='$(atf_aclocal_DATA)'; test -n "$(atf_aclocaldir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_aclocaldir)'; $(am__uninstall_files_from_dir) -install-atf_c__dirpkgconfigDATA: $(atf_c__dirpkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(atf_c__dirpkgconfig_DATA)'; test -n "$(atf_c__dirpkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_c__dirpkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_c__dirpkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(atf_c__dirpkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(atf_c__dirpkgconfigdir)" || exit $$?; \ - done - -uninstall-atf_c__dirpkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(atf_c__dirpkgconfig_DATA)'; test -n "$(atf_c__dirpkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_c__dirpkgconfigdir)'; $(am__uninstall_files_from_dir) -install-atf_cpkgconfigDATA: $(atf_cpkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(atf_cpkgconfig_DATA)'; test -n "$(atf_cpkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_cpkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_cpkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(atf_cpkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(atf_cpkgconfigdir)" || exit $$?; \ - done - -uninstall-atf_cpkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(atf_cpkgconfig_DATA)'; test -n "$(atf_cpkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_cpkgconfigdir)'; $(am__uninstall_files_from_dir) -install-atf_shDATA: $(atf_sh_DATA) - @$(NORMAL_INSTALL) - @list='$(atf_sh_DATA)'; test -n "$(atf_shdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_shdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_shdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(atf_shdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(atf_shdir)" || exit $$?; \ - done - -uninstall-atf_shDATA: - @$(NORMAL_UNINSTALL) - @list='$(atf_sh_DATA)'; test -n "$(atf_shdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_shdir)'; $(am__uninstall_files_from_dir) -install-atf_shpkgconfigDATA: $(atf_shpkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(atf_shpkgconfig_DATA)'; test -n "$(atf_shpkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_shpkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_shpkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(atf_shpkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(atf_shpkgconfigdir)" || exit $$?; \ - done - -uninstall-atf_shpkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(atf_shpkgconfig_DATA)'; test -n "$(atf_shpkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_shpkgconfigdir)'; $(am__uninstall_files_from_dir) -install-cssDATA: $(css_DATA) - @$(NORMAL_INSTALL) - @list='$(css_DATA)'; test -n "$(cssdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(cssdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(cssdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cssdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(cssdir)" || exit $$?; \ - done - -uninstall-cssDATA: - @$(NORMAL_UNINSTALL) - @list='$(css_DATA)'; test -n "$(cssdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(cssdir)'; $(am__uninstall_files_from_dir) -install-docDATA: $(doc_DATA) - @$(NORMAL_INSTALL) - @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ - done - -uninstall-docDATA: - @$(NORMAL_UNINSTALL) - @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) -install-dtdDATA: $(dtd_DATA) - @$(NORMAL_INSTALL) - @list='$(dtd_DATA)'; test -n "$(dtddir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(dtddir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(dtddir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dtddir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(dtddir)" || exit $$?; \ - done - -uninstall-dtdDATA: - @$(NORMAL_UNINSTALL) - @list='$(dtd_DATA)'; test -n "$(dtddir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(dtddir)'; $(am__uninstall_files_from_dir) -install-egDATA: $(eg_DATA) - @$(NORMAL_INSTALL) - @list='$(eg_DATA)'; test -n "$(egdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(egdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(egdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(egdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(egdir)" || exit $$?; \ - done - -uninstall-egDATA: - @$(NORMAL_UNINSTALL) - @list='$(eg_DATA)'; test -n "$(egdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(egdir)'; $(am__uninstall_files_from_dir) -install-hooksDATA: $(hooks_DATA) - @$(NORMAL_INSTALL) - @list='$(hooks_DATA)'; test -n "$(hooksdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(hooksdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(hooksdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hooksdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(hooksdir)" || exit $$?; \ - done - -uninstall-hooksDATA: - @$(NORMAL_UNINSTALL) - @list='$(hooks_DATA)'; test -n "$(hooksdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(hooksdir)'; $(am__uninstall_files_from_dir) -install-pkgtestsDATA: $(pkgtests_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgtests_DATA)'; test -n "$(pkgtestsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgtestsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgtestsdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgtestsdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgtestsdir)" || exit $$?; \ - done - -uninstall-pkgtestsDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgtests_DATA)'; test -n "$(pkgtestsdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgtestsdir)'; $(am__uninstall_files_from_dir) -install-tests_atf_cDATA: $(tests_atf_c_DATA) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c_DATA)'; test -n "$(tests_atf_cdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_cdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_cdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_atf_cdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_cdir)" || exit $$?; \ - done - -uninstall-tests_atf_cDATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c_DATA)'; test -n "$(tests_atf_cdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_atf_cdir)'; $(am__uninstall_files_from_dir) -install-tests_atf_c__DATA: $(tests_atf_c___DATA) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c___DATA)'; test -n "$(tests_atf_c__dir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c__dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c__dir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_atf_c__dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_c__dir)" || exit $$?; \ - done - -uninstall-tests_atf_c__DATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c___DATA)'; test -n "$(tests_atf_c__dir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_atf_c__dir)'; $(am__uninstall_files_from_dir) -install-tests_atf_c___detailDATA: $(tests_atf_c___detail_DATA) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c___detail_DATA)'; test -n "$(tests_atf_c___detaildir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c___detaildir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c___detaildir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_atf_c___detaildir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_c___detaildir)" || exit $$?; \ - done - -uninstall-tests_atf_c___detailDATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c___detail_DATA)'; test -n "$(tests_atf_c___detaildir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_atf_c___detaildir)'; $(am__uninstall_files_from_dir) -install-tests_atf_c_detailDATA: $(tests_atf_c_detail_DATA) - @$(NORMAL_INSTALL) - @list='$(tests_atf_c_detail_DATA)'; test -n "$(tests_atf_c_detaildir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_c_detaildir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_c_detaildir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_atf_c_detaildir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_c_detaildir)" || exit $$?; \ - done - -uninstall-tests_atf_c_detailDATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_c_detail_DATA)'; test -n "$(tests_atf_c_detaildir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_atf_c_detaildir)'; $(am__uninstall_files_from_dir) -install-tests_atf_shDATA: $(tests_atf_sh_DATA) - @$(NORMAL_INSTALL) - @list='$(tests_atf_sh_DATA)'; test -n "$(tests_atf_shdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_shdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_atf_shdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_atf_shdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_shdir)" || exit $$?; \ - done - -uninstall-tests_atf_shDATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_atf_sh_DATA)'; test -n "$(tests_atf_shdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_atf_shdir)'; $(am__uninstall_files_from_dir) -install-tests_test_programsDATA: $(tests_test_programs_DATA) - @$(NORMAL_INSTALL) - @list='$(tests_test_programs_DATA)'; test -n "$(tests_test_programsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_test_programsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_test_programsdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_test_programsdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_test_programsdir)" || exit $$?; \ - done - -uninstall-tests_test_programsDATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_test_programs_DATA)'; test -n "$(tests_test_programsdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_test_programsdir)'; $(am__uninstall_files_from_dir) -install-tests_toolsDATA: $(tests_tools_DATA) - @$(NORMAL_INSTALL) - @list='$(tests_tools_DATA)'; test -n "$(tests_toolsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(tests_toolsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(tests_toolsdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tests_toolsdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_toolsdir)" || exit $$?; \ - done - -uninstall-tests_toolsDATA: - @$(NORMAL_UNINSTALL) - @list='$(tests_tools_DATA)'; test -n "$(tests_toolsdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(tests_toolsdir)'; $(am__uninstall_files_from_dir) -install-xslDATA: $(xsl_DATA) - @$(NORMAL_INSTALL) - @list='$(xsl_DATA)'; test -n "$(xsldir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(xsldir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(xsldir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xsldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(xsldir)" || exit $$?; \ - done - -uninstall-xslDATA: - @$(NORMAL_UNINSTALL) - @list='$(xsl_DATA)'; test -n "$(xsldir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(xsldir)'; $(am__uninstall_files_from_dir) -install-atf_cHEADERS: $(atf_c_HEADERS) - @$(NORMAL_INSTALL) - @list='$(atf_c_HEADERS)'; test -n "$(atf_cdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_cdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_cdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(atf_cdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(atf_cdir)" || exit $$?; \ - done - -uninstall-atf_cHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(atf_c_HEADERS)'; test -n "$(atf_cdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_cdir)'; $(am__uninstall_files_from_dir) -install-atf_c__HEADERS: $(atf_c___HEADERS) - @$(NORMAL_INSTALL) - @list='$(atf_c___HEADERS)'; test -n "$(atf_c__dir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_c__dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_c__dir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(atf_c__dir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(atf_c__dir)" || exit $$?; \ - done - -uninstall-atf_c__HEADERS: - @$(NORMAL_UNINSTALL) - @list='$(atf_c___HEADERS)'; test -n "$(atf_c__dir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_c__dir)'; $(am__uninstall_files_from_dir) -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) -install-nodist_atf_cHEADERS: $(nodist_atf_c_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nodist_atf_c_HEADERS)'; test -n "$(atf_cdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(atf_cdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(atf_cdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(atf_cdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(atf_cdir)" || exit $$?; \ - done - -uninstall-nodist_atf_cHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_atf_c_HEADERS)'; test -n "$(atf_cdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(atf_cdir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(DISTFILES) - @case `sed 15q $(srcdir)/NEWS` in \ - *"$(VERSION)"*) : ;; \ - *) \ - echo "NEWS not updated; not releasing" 1>&2; \ - exit 1;; \ - esac - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) \ - $(MANS) $(DATA) $(HEADERS) config.h -install-binPROGRAMS: install-libLTLIBRARIES - -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(tests_atf_cdir)" "$(DESTDIR)$(tests_atf_c__dir)" "$(DESTDIR)$(tests_atf_c___detaildir)" "$(DESTDIR)$(tests_atf_c_detaildir)" "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(tests_atf_cdir)" "$(DESTDIR)$(tests_atf_c__dir)" "$(DESTDIR)$(tests_atf_shdir)" "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man4dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(atf_aclocaldir)" "$(DESTDIR)$(atf_c__dirpkgconfigdir)" "$(DESTDIR)$(atf_cpkgconfigdir)" "$(DESTDIR)$(atf_shdir)" "$(DESTDIR)$(atf_shpkgconfigdir)" "$(DESTDIR)$(cssdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(dtddir)" "$(DESTDIR)$(egdir)" "$(DESTDIR)$(hooksdir)" "$(DESTDIR)$(pkgtestsdir)" "$(DESTDIR)$(tests_atf_cdir)" "$(DESTDIR)$(tests_atf_c__dir)" "$(DESTDIR)$(tests_atf_c___detaildir)" "$(DESTDIR)$(tests_atf_c_detaildir)" "$(DESTDIR)$(tests_atf_shdir)" "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(xsldir)" "$(DESTDIR)$(atf_cdir)" "$(DESTDIR)$(atf_c__dir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(atf_cdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f atf-c++/$(DEPDIR)/$(am__dirstamp) - -rm -f atf-c++/$(am__dirstamp) - -rm -f atf-c++/detail/$(DEPDIR)/$(am__dirstamp) - -rm -f atf-c++/detail/$(am__dirstamp) - -rm -f atf-c/$(DEPDIR)/$(am__dirstamp) - -rm -f atf-c/$(am__dirstamp) - -rm -f atf-c/detail/$(DEPDIR)/$(am__dirstamp) - -rm -f atf-c/detail/$(am__dirstamp) - -rm -f atf-sh/$(DEPDIR)/$(am__dirstamp) - -rm -f atf-sh/$(am__dirstamp) - -rm -f bootstrap/$(DEPDIR)/$(am__dirstamp) - -rm -f bootstrap/$(am__dirstamp) - -rm -f test-programs/$(DEPDIR)/$(am__dirstamp) - -rm -f test-programs/$(am__dirstamp) - -rm -f tools/$(DEPDIR)/$(am__dirstamp) - -rm -f tools/$(am__dirstamp) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libLTLIBRARIES clean-libexecPROGRAMS clean-libtool \ - clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ - clean-tests_atf_cPROGRAMS clean-tests_atf_c__PROGRAMS \ - clean-tests_atf_c___detailPROGRAMS \ - clean-tests_atf_c_detailPROGRAMS \ - clean-tests_test_programsPROGRAMS clean-tests_toolsPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf atf-c++/$(DEPDIR) atf-c++/detail/$(DEPDIR) atf-c/$(DEPDIR) atf-c/detail/$(DEPDIR) atf-sh/$(DEPDIR) bootstrap/$(DEPDIR) test-programs/$(DEPDIR) tools/$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-local distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-atf_aclocalDATA install-atf_cHEADERS \ - install-atf_c__HEADERS install-atf_c__dirpkgconfigDATA \ - install-atf_cpkgconfigDATA install-atf_shDATA \ - install-atf_shpkgconfigDATA install-cssDATA install-docDATA \ - install-dtdDATA install-egDATA install-hooksDATA \ - install-includeHEADERS install-man install-nodist_atf_cHEADERS \ - install-pkgtestsDATA install-tests_atf_cDATA \ - install-tests_atf_cPROGRAMS install-tests_atf_cSCRIPTS \ - install-tests_atf_c__DATA install-tests_atf_c__PROGRAMS \ - install-tests_atf_c__SCRIPTS install-tests_atf_c___detailDATA \ - install-tests_atf_c___detailPROGRAMS \ - install-tests_atf_c_detailDATA \ - install-tests_atf_c_detailPROGRAMS install-tests_atf_shDATA \ - install-tests_atf_shSCRIPTS install-tests_test_programsDATA \ - install-tests_test_programsPROGRAMS \ - install-tests_test_programsSCRIPTS install-tests_toolsDATA \ - install-tests_toolsPROGRAMS install-tests_toolsSCRIPTS \ - install-xslDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS install-libLTLIBRARIES \ - install-libexecPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 install-man3 install-man4 install-man5 \ - install-man7 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: installcheck-local - -maintainer-clean: maintainer-clean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf atf-c++/$(DEPDIR) atf-c++/detail/$(DEPDIR) atf-c/$(DEPDIR) atf-c/detail/$(DEPDIR) atf-sh/$(DEPDIR) bootstrap/$(DEPDIR) test-programs/$(DEPDIR) tools/$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-atf_aclocalDATA uninstall-atf_cHEADERS \ - uninstall-atf_c__HEADERS uninstall-atf_c__dirpkgconfigDATA \ - uninstall-atf_cpkgconfigDATA uninstall-atf_shDATA \ - uninstall-atf_shpkgconfigDATA uninstall-binPROGRAMS \ - uninstall-cssDATA uninstall-docDATA uninstall-dtdDATA \ - uninstall-egDATA uninstall-hooksDATA uninstall-includeHEADERS \ - uninstall-libLTLIBRARIES uninstall-libexecPROGRAMS \ - uninstall-man uninstall-nodist_atf_cHEADERS \ - uninstall-pkgtestsDATA uninstall-tests_atf_cDATA \ - uninstall-tests_atf_cPROGRAMS uninstall-tests_atf_cSCRIPTS \ - uninstall-tests_atf_c__DATA uninstall-tests_atf_c__PROGRAMS \ - uninstall-tests_atf_c__SCRIPTS \ - uninstall-tests_atf_c___detailDATA \ - uninstall-tests_atf_c___detailPROGRAMS \ - uninstall-tests_atf_c_detailDATA \ - uninstall-tests_atf_c_detailPROGRAMS \ - uninstall-tests_atf_shDATA uninstall-tests_atf_shSCRIPTS \ - uninstall-tests_test_programsDATA \ - uninstall-tests_test_programsPROGRAMS \ - uninstall-tests_test_programsSCRIPTS uninstall-tests_toolsDATA \ - uninstall-tests_toolsPROGRAMS uninstall-tests_toolsSCRIPTS \ - uninstall-xslDATA - -uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 \ - uninstall-man5 uninstall-man7 - -.MAKE: all check check-am install install-am install-data-am \ - install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ - clean-binPROGRAMS clean-checkPROGRAMS clean-cscope \ - clean-generic clean-libLTLIBRARIES clean-libexecPROGRAMS \ - clean-libtool clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ - clean-tests_atf_cPROGRAMS clean-tests_atf_c__PROGRAMS \ - clean-tests_atf_c___detailPROGRAMS \ - clean-tests_atf_c_detailPROGRAMS \ - clean-tests_test_programsPROGRAMS clean-tests_toolsPROGRAMS \ - cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ - dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-compile \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-local distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-atf_aclocalDATA \ - install-atf_cHEADERS install-atf_c__HEADERS \ - install-atf_c__dirpkgconfigDATA install-atf_cpkgconfigDATA \ - install-atf_shDATA install-atf_shpkgconfigDATA \ - install-binPROGRAMS install-cssDATA install-data \ - install-data-am install-data-hook install-docDATA \ - install-dtdDATA install-dvi install-dvi-am install-egDATA \ - install-exec install-exec-am install-hooksDATA install-html \ - install-html-am install-includeHEADERS install-info \ - install-info-am install-libLTLIBRARIES install-libexecPROGRAMS \ - install-man install-man1 install-man3 install-man4 \ - install-man5 install-man7 install-nodist_atf_cHEADERS \ - install-pdf install-pdf-am install-pkgtestsDATA install-ps \ - install-ps-am install-strip install-tests_atf_cDATA \ - install-tests_atf_cPROGRAMS install-tests_atf_cSCRIPTS \ - install-tests_atf_c__DATA install-tests_atf_c__PROGRAMS \ - install-tests_atf_c__SCRIPTS install-tests_atf_c___detailDATA \ - install-tests_atf_c___detailPROGRAMS \ - install-tests_atf_c_detailDATA \ - install-tests_atf_c_detailPROGRAMS install-tests_atf_shDATA \ - install-tests_atf_shSCRIPTS install-tests_test_programsDATA \ - install-tests_test_programsPROGRAMS \ - install-tests_test_programsSCRIPTS install-tests_toolsDATA \ - install-tests_toolsPROGRAMS install-tests_toolsSCRIPTS \ - install-xslDATA installcheck installcheck-am \ - installcheck-local installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-atf_aclocalDATA \ - uninstall-atf_cHEADERS uninstall-atf_c__HEADERS \ - uninstall-atf_c__dirpkgconfigDATA uninstall-atf_cpkgconfigDATA \ - uninstall-atf_shDATA uninstall-atf_shpkgconfigDATA \ - uninstall-binPROGRAMS uninstall-cssDATA uninstall-docDATA \ - uninstall-dtdDATA uninstall-egDATA uninstall-hooksDATA \ - uninstall-includeHEADERS uninstall-libLTLIBRARIES \ - uninstall-libexecPROGRAMS uninstall-man uninstall-man1 \ - uninstall-man3 uninstall-man4 uninstall-man5 uninstall-man7 \ - uninstall-nodist_atf_cHEADERS uninstall-pkgtestsDATA \ - uninstall-tests_atf_cDATA uninstall-tests_atf_cPROGRAMS \ - uninstall-tests_atf_cSCRIPTS uninstall-tests_atf_c__DATA \ - uninstall-tests_atf_c__PROGRAMS uninstall-tests_atf_c__SCRIPTS \ - uninstall-tests_atf_c___detailDATA \ - uninstall-tests_atf_c___detailPROGRAMS \ - uninstall-tests_atf_c_detailDATA \ - uninstall-tests_atf_c_detailPROGRAMS \ - uninstall-tests_atf_shDATA uninstall-tests_atf_shSCRIPTS \ - uninstall-tests_test_programsDATA \ - uninstall-tests_test_programsPROGRAMS \ - uninstall-tests_test_programsSCRIPTS uninstall-tests_toolsDATA \ - uninstall-tests_toolsPROGRAMS uninstall-tests_toolsSCRIPTS \ - uninstall-xslDATA - -.PRECIOUS: Makefile - - -dist-hook: check-style -check-style: - $(srcdir)/admin/check-style.sh - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -kill-defs-h: - rm -f $(distdir)/atf-c/defs.h -atf-c/atf-c.pc: $(srcdir)/atf-c/atf-c.pc.in Makefile - $(AM_V_GEN)test -d atf-c || mkdir -p atf-c; \ - sed -e 's#__ATF_VERSION__#$(PACKAGE_VERSION)#g' \ - -e 's#__CC__#$(CC)#g' \ - -e 's#__INCLUDEDIR__#$(includedir)#g' \ - -e 's#__LIBDIR__#$(libdir)#g' \ - <$(srcdir)/atf-c/atf-c.pc.in >atf-c/atf-c.pc.tmp; \ - mv atf-c/atf-c.pc.tmp atf-c/atf-c.pc -atf-c/pkg_config_test: $(srcdir)/atf-c/pkg_config_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-c/pkg_config_test.sh"; \ - dst="atf-c/pkg_config_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -atf-c++/atf-c++.pc: $(srcdir)/atf-c++/atf-c++.pc.in Makefile - $(AM_V_GEN)test -d atf-c++ || mkdir -p atf-c++; \ - sed -e 's#__ATF_VERSION__#$(PACKAGE_VERSION)#g' \ - -e 's#__CXX__#$(CXX)#g' \ - -e 's#__INCLUDEDIR__#$(includedir)#g' \ - -e 's#__LIBDIR__#$(libdir)#g' \ - <$(srcdir)/atf-c++/atf-c++.pc.in >atf-c++/atf-c++.pc.tmp; \ - mv atf-c++/atf-c++.pc.tmp atf-c++/atf-c++.pc -atf-c++/pkg_config_test: $(srcdir)/atf-c++/pkg_config_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-c++/pkg_config_test.sh"; \ - dst="atf-c++/pkg_config_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -atf-sh/atf-sh.pc: $(srcdir)/atf-sh/atf-sh.pc.in Makefile - $(AM_V_GEN)test -d atf-sh || mkdir -p atf-sh; \ - sed -e 's#__ATF_VERSION__#$(PACKAGE_VERSION)#g' \ - -e 's#__EXEC_PREFIX__#$(exec_prefix)#g' \ - <$(srcdir)/atf-sh/atf-sh.pc.in >atf-sh/atf-sh.pc.tmp; \ - mv atf-sh/atf-sh.pc.tmp atf-sh/atf-sh.pc -atf-sh/misc_helpers: $(srcdir)/atf-sh/misc_helpers.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/misc_helpers.sh"; \ - dst="atf-sh/misc_helpers"; $(BUILD_SH_TP) -atf-sh/atf_check_test: $(srcdir)/atf-sh/atf_check_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/atf_check_test.sh"; \ - dst="atf-sh/atf_check_test"; $(BUILD_SH_TP) -atf-sh/atf-check_test: $(srcdir)/atf-sh/atf-check_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/atf-check_test.sh"; \ - dst="atf-sh/atf-check_test"; $(BUILD_SH_TP) -atf-sh/config_test: $(srcdir)/atf-sh/config_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/config_test.sh"; \ - dst="atf-sh/config_test"; $(BUILD_SH_TP) -atf-sh/integration_test: $(srcdir)/atf-sh/integration_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/integration_test.sh"; \ - dst="atf-sh/integration_test"; \ - substs="s,__ATF_SH__,$(exec_prefix)/bin/atf-sh,g"; $(BUILD_SH_TP) -atf-sh/normalize_test: $(srcdir)/atf-sh/normalize_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/normalize_test.sh"; \ - dst="atf-sh/normalize_test"; $(BUILD_SH_TP) -atf-sh/tc_test: $(srcdir)/atf-sh/tc_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/tc_test.sh"; \ - dst="atf-sh/tc_test"; $(BUILD_SH_TP) -atf-sh/tp_test: $(srcdir)/atf-sh/tp_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/tp_test.sh"; \ - dst="atf-sh/tp_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -bootstrap/h_tp_basic_sh: $(srcdir)/bootstrap/h_tp_basic_sh.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_basic_sh.sh; dst=$@; $(BUILD_SH_TP) -bootstrap/h_tp_atf_check_sh: \ - $(srcdir)/bootstrap/h_tp_atf_check_sh.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_atf_check_sh.sh; dst=$@; $(BUILD_SH_TP) -bootstrap/h_tp_fail: $(srcdir)/bootstrap/h_tp_fail.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_fail.sh; dst=$@; $(BUILD_SH_TP) -bootstrap/h_tp_pass: $(srcdir)/bootstrap/h_tp_pass.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_pass.sh; dst=$@; $(BUILD_SH_TP) - -distclean-local: - -rm -rf testsuite.dir - -@target_srcdir@bootstrap/package.m4: $(top_srcdir)/configure.ac - { \ - echo '# Signature of the current package.'; \ - echo 'm4_define(AT_PACKAGE_NAME, @PACKAGE_NAME@)'; \ - echo 'm4_define(AT_PACKAGE_TARNAME, @PACKAGE_TARNAME@)'; \ - echo 'm4_define(AT_PACKAGE_VERSION, @PACKAGE_VERSION@)'; \ - echo 'm4_define(AT_PACKAGE_STRING, @PACKAGE_STRING@)'; \ - echo 'm4_define(AT_PACKAGE_BUGREPORT, @PACKAGE_BUGREPORT@)'; \ - echo 'm4_define(ENABLE_TOOLS, @ENABLE_TOOLS@)'; \ - } >$(srcdir)/bootstrap/package.m4 - -@target_srcdir@bootstrap/testsuite: $(srcdir)/bootstrap/testsuite.at \ - $(testsuite_incs) \ - @target_srcdir@bootstrap/package.m4 - autom4te --language=Autotest -I $(srcdir) \ - -I $(srcdir)/bootstrap \ - $(srcdir)/bootstrap/testsuite.at -o $@.tmp - mv $@.tmp $@ -installcheck-bootstrap: @target_srcdir@bootstrap/testsuite check - $(TESTS_ENVIRONMENT) $(srcdir)/bootstrap/testsuite - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 - -doc/atf.7: $(srcdir)/doc/atf.7.in - $(AM_V_GEN)test -d doc || mkdir -p doc; \ - sed -e 's#__DOCDIR__#$(docdir)#g' \ - -e 's#__TESTSDIR__#$(testsdir)#g' \ - <$(srcdir)/doc/atf.7.in >doc/atf.7.tmp; \ - mv doc/atf.7.tmp doc/atf.7 - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -test-programs/sh_helpers: $(srcdir)/test-programs/sh_helpers.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/sh_helpers.sh $(common_sh)"; \ - dst="test-programs/sh_helpers"; $(BUILD_SH_TP) -test-programs/config_test: $(srcdir)/test-programs/config_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/config_test.sh $(common_sh)"; \ - dst="test-programs/config_test"; $(BUILD_SH_TP) -test-programs/expect_test: $(srcdir)/test-programs/expect_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/expect_test.sh $(common_sh)"; \ - dst="test-programs/expect_test"; $(BUILD_SH_TP) -test-programs/meta_data_test: $(srcdir)/test-programs/meta_data_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/meta_data_test.sh $(common_sh)"; \ - dst="test-programs/meta_data_test"; $(BUILD_SH_TP) -test-programs/result_test: $(srcdir)/test-programs/result_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/result_test.sh $(common_sh)"; \ - dst="test-programs/result_test"; $(BUILD_SH_TP) -test-programs/srcdir_test: $(srcdir)/test-programs/srcdir_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/srcdir_test.sh $(common_sh)"; \ - dst="test-programs/srcdir_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -@ENABLE_TOOLS_TRUE@kill-defs-hpp: -@ENABLE_TOOLS_TRUE@ rm -f $(distdir)/tools/defs.hpp -@ENABLE_TOOLS_TRUE@tools/revision.h: tools/revision.h.stamp -@ENABLE_TOOLS_TRUE@ @test -d tools || mkdir -p tools -@ENABLE_TOOLS_TRUE@ @cmp -s tools/revision.h tools/revision.h.stamp || \ -@ENABLE_TOOLS_TRUE@ cp -p tools/revision.h.stamp tools/revision.h -@ENABLE_TOOLS_TRUE@tools/revision.h.stamp: -@ENABLE_TOOLS_TRUE@ @test -d tools || mkdir -p tools -@ENABLE_TOOLS_TRUE@ @$(top_srcdir)/tools/generate-revision.sh \ -@ENABLE_TOOLS_TRUE@ -g "$(GIT)" -r $(top_srcdir) -o tools/revision.h.stamp \ -@ENABLE_TOOLS_TRUE@ -v $(PACKAGE_VERSION) - -@ENABLE_TOOLS_TRUE@tools/atf.7: $(srcdir)/tools/atf.7.in -@ENABLE_TOOLS_TRUE@ test -d tools || mkdir -p tools -@ENABLE_TOOLS_TRUE@ sed -e 's#__DOCDIR__#$(docdir)#g' \ -@ENABLE_TOOLS_TRUE@ -e 's#__TESTSDIR__#$(testsdir)#g' \ -@ENABLE_TOOLS_TRUE@ <$(srcdir)/tools/atf.7.in >tools/atf.7.tmp -@ENABLE_TOOLS_TRUE@ mv tools/atf.7.tmp tools/atf.7 -@ENABLE_TOOLS_TRUE@tools/atf-config_test: $(srcdir)/tools/atf-config_test.sh -@ENABLE_TOOLS_TRUE@ @test -d tools || mkdir -p tools -@ENABLE_TOOLS_TRUE@ @src="$(srcdir)/tools/atf-config_test.sh"; \ -@ENABLE_TOOLS_TRUE@ dst="tools/atf-config_test"; $(BUILD_SH_TP) -@ENABLE_TOOLS_TRUE@tools/atf-report_test: $(srcdir)/tools/atf-report_test.sh -@ENABLE_TOOLS_TRUE@ @test -d tools || mkdir -p tools -@ENABLE_TOOLS_TRUE@ @src="$(srcdir)/tools/atf-report_test.sh"; \ -@ENABLE_TOOLS_TRUE@ dst="tools/atf-report_test"; $(BUILD_SH_TP) -@ENABLE_TOOLS_TRUE@tools/atf-run_test: $(srcdir)/tools/atf-run_test.sh -@ENABLE_TOOLS_TRUE@ @test -d tools || mkdir -p tools -@ENABLE_TOOLS_TRUE@ @src="$(srcdir)/tools/atf-run_test.sh"; \ -@ENABLE_TOOLS_TRUE@ dst="tools/atf-run_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 -@ENABLE_TOOLS_TRUE@installcheck-atf: -@ENABLE_TOOLS_TRUE@ logfile=$$(pwd)/installcheck.log; \ -@ENABLE_TOOLS_TRUE@ fifofile=$$(pwd)/installcheck.fifo; \ -@ENABLE_TOOLS_TRUE@ cd $(pkgtestsdir); \ -@ENABLE_TOOLS_TRUE@ rm -f $${fifofile}; \ -@ENABLE_TOOLS_TRUE@ mkfifo $${fifofile}; \ -@ENABLE_TOOLS_TRUE@ cat $${fifofile} | tee $${logfile} | $(TESTS_ENVIRONMENT) atf-report & \ -@ENABLE_TOOLS_TRUE@ $(TESTS_ENVIRONMENT) atf-run >>$${fifofile}; \ -@ENABLE_TOOLS_TRUE@ res=$${?}; \ -@ENABLE_TOOLS_TRUE@ wait; \ -@ENABLE_TOOLS_TRUE@ rm $${fifofile}; \ -@ENABLE_TOOLS_TRUE@ echo; \ -@ENABLE_TOOLS_TRUE@ echo "The verbatim output of atf-run has been saved to" \ -@ENABLE_TOOLS_TRUE@ "installcheck.log; exit was $${res}"; \ -@ENABLE_TOOLS_TRUE@ test $${res} -eq 0 -@HAVE_KYUA_TRUE@installcheck-kyua: -@HAVE_KYUA_TRUE@ cd $(pkgtestsdir) && $(TESTS_ENVIRONMENT) \ -@HAVE_KYUA_TRUE@ $(KYUA) --config='$(KYUA_TEST_CONFIG_FILE)' test - -installcheck-local: $(INSTALLCHECK_TARGETS) -@ENABLE_TOOLS_TRUE@forbid-dist: -@ENABLE_TOOLS_TRUE@ @true -@ENABLE_TOOLS_FALSE@forbid-dist: -@ENABLE_TOOLS_FALSE@ @echo "Sorry; cannot make dist without the tools enabled." -@ENABLE_TOOLS_FALSE@ @echo "Please reconfigure with --enable-tools." -@ENABLE_TOOLS_FALSE@ @false -clean-all: - GIT="$(GIT)" $(SH) $(srcdir)/admin/clean-all.sh - -.PHONY: $(PHONY_TARGETS) - -# TODO(jmmv): Remove after atf 0.22. -install-data-hook: - cd $(DESTDIR)$(man3dir) && \ - for binding in c c++ sh; do \ - rm -f "atf-$${binding}-api.3"; \ - $(LN_S) "atf-$${binding}.3" "atf-$${binding}-api.3"; \ - done - -dist-hook: $(DIST_HOOKS) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/unit/atf-src/NEWS b/unit/atf-src/NEWS deleted file mode 100644 index 916f4e8b5e..0000000000 --- a/unit/atf-src/NEWS +++ /dev/null @@ -1,710 +0,0 @@ -Major changes between releases Automated Testing Framework -=========================================================================== - -Changes in version 0.21 -*********************** - -Released on October 23rd, 2014. - -* Restored the atf(7) manual page to serve as a reference to all the other - manual pages shipped by ATF. - -* Added the -s flag to atf-sh to support specifying the shell interpreter - to be used. - -* Removed ATF_WORKDIR. The only remaining consumers have been converted to - use the standard TMPDIR environment variable. As a benefit, and because - Kyua forces the TMPDIR to live within the test case's work directory, - any stale files left behind by ATF will be automatically cleaned up. - -* Documented the environment variables recognized by each component in the - relevant manual pages. This information was lost with the atf-config(1) - removal. - -* Added a new "require.diskspace" metadata property to test cases so that - they can specify the minimum amount of disk space required for the test - to run. - -* Renamed the atf-{c,c++,sh}-api(3) manual pages to atf-{c,c++,sh}(3) for - discoverability purposes. Symbolic links are provided for the time - being to still make the old names visible. - -* Issue #5: Recommend the (expected, actual) idiom for calls to the test - macros in the manual pages. - -* Issue #7: Stopped catching unhandled exceptions in atf-c++ tests. This - propagates the crash to the caller, which in turn allows it to obtain - proper debugging information. In particular, Kyua should now be able to - extract a stacktrace pinpointing the problem. - -* Issue #8: Fixed atf-c/macros_test:use test failures spotted by the clang - that ships with FreeBSD 11.0-CURRENT. - -* Issue #12: Improved documentation of atf-sh(3) and atf-check(1) by better - explaining how they relate to each other. - -* Issue #14: Stopped setting 'set -e' in atf-sh. This setting was - initially added as a way to enable a "strict" mode in the library and to - make test cases fail fast when they run unprotected commands. However, - doing so in the library is surprising as the responsibility of enabling - 'set -e' should be on the user's code. Also, 'set -e' introduces - inconsistent behavior on subshells and users do not expect that. - -* Issue #15: Fixed atf_utils_{fork,wait} to support nested calls. - -* Issue #16: Fixed test failures (by removing a long-standing hack) on - systems that lack \e support in printf(1). - -* Issue #19: Removed stale references to atf-config and atf-run. - - -Changes in version 0.19 -*********************** - -Experimental version released on February 7th, 2014. - -This is the last release to bundle the code for the deprecated tools. -The next release will drop their code and will stop worrying about -backwards compatibility between the ATF libraries and what the old tools -may or may not support. - -If you still require the old tools for some reason, grab a copy of the -'tools' directory now. The code in this directory is standalone and -does not depend on any internal details of atf-c++ any longer. - -* Various fixes and improvements to support running as part of the FreeBSD - test suite. - -* Project hosting moved from Google Code (as a subproject of Kyua) to - GitHub (as a first-class project). The main reason for the change is - the suppression of binary downloads in Google Code on Jan 15th, 2014. - See https://github.com/jmmv/atf/ - -* Removed builtin help from atf-sh(1) and atf-check(1) for simplicity - reasons. In other words, their -h option is gone. - -* Moved the code of the deprecated tools into a 'tools' directory and - completely decoupled their code from the internals of atf-c++. The - reason for this is to painlessly allow a third-party to maintain a - copy of these tools after we delete them because upcoming changes to - atf-c++ would break the stale tools. - - -Changes in version 0.18 -*********************** - -Experimental version released on November 16th, 2013. - -* Issue 45: Added require.memory support in atf-run for FreeBSD. - -* Fixed an issue with the handling of cin with libc++. - -* Issue 64: Fixed various mandoc formatting warnings. - -* NetBSD PR bin/48284: Made atf-check flush its progress message to - stdout so that an interrupted test case always shows the last message - being executed. - -* NetBSD PR bin/48285: Fixed atf_check examples in atf-sh-api(3). - - -Changes in version 0.17 -*********************** - -Experimental version released on February 14th, 2013. - -* Added the atf_utils_cat_file, atf_utils_compare_file, - atf_utils_copy_file, atf_utils_create_file, atf_utils_file_exists, - atf_utils_fork, atf_utils_grep_file, atf_utils_grep_string, - atf_utils_readline, atf_utils_redirect and atf_utils_wait utility - functions to atf-c-api. Documented the already-public - atf_utils_free_charpp function. - -* Added the cat_file, compare_file, copy_file, create_file, file_exists, - fork, grep_collection, grep_file, grep_string, redirect and wait - functions to the atf::utils namespace of atf-c++-api. These are - wrappers around the same functions added to the atf-c-api library. - -* Added the ATF_CHECK_MATCH, ATF_CHECK_MATCH_MSG, ATF_REQUIRE_MATCH and - ATF_REQUIRE_MATCH_MSG macros to atf-c to simplify the validation of a - string against a regular expression. - -* Miscellaneous fixes for manpage typos and compilation problems with - clang. - -* Added caching of the results of those configure tests that rely on - executing a test program. This should help crossbuild systems by - providing a mechanism to pre-specify what the results should be. - -* PR bin/45690: Make atf-report convert any non-printable characters to - a plain-text representation (matching their corresponding hexadecimal - entities) in XML output files. This is to prevent the output of test - cases from breaking xsltproc later. - - -Changes in version 0.16 -*********************** - -Experimental version released on July 10th, 2012. - -* Added a --enable-tools flag to configure to request the build of the - deprecated ATF tools, whose build is now disabled by default. In order - to continue running tests, you should migrate to Kyua instead of enabling - the build of the deprecated tools. The kyua-atf-compat package provides - transitional compatibility versions of atf-run and atf-report built on - top of Kyua. - -* Tweaked the ATF_TEST_CASE macro of atf-c++ so that the compiler can - detect defined but unused test cases. - -* PR bin/45859: Fixed some XSLT bugs that resulted in the tc-time and - tp-time XML tags leaking into the generated HTML file. Also improved - the CSS file slightly to correct alignment and color issues with the - timestamps column. - -* Optimized atf-c++/macros.hpp so that GNU G++ consumes less memory during - compilation with GNU G++. - -* Flipped the default to building shared libraries for atf-c and atf-c++, - and started versioning them. As a side-effect, this removes the - --enable-unstable-shared flag from configure that appears to not work any - more (under NetBSD). Additionally, some distributions require the use of - shared libraries for proper dependency tracking (e.g. Fedora), so it is - better if we do the right versioning upstream. - -* Project hosting moved from an adhoc solution (custom web site and - Monotone repository) to Google Code (standard wiki and Git). ATF now - lives in a subcomponent of the Kyua project. - - -Changes in version 0.15 -*********************** - -Experimental version released on January 16th, 2012. - -* Respect stdin in atf-check. The previous release silenced stdin for any - processes spawned by atf, not only test programs, which caused breakage - in tests that pipe data through atf-check. - -* Performance improvements to atf-sh. - -* Enabled detection of unused parameters and variables in the code and - fixed all warnings. - -* Changed the behavior of "developer mode". Compiler warnings are now - enabled unconditionally regardless of whether we are in developer mode or - not; developer mode is now only used to perform strict warning checks and - to enable assertions. Additionally, developer mode is now only - automatically enabled when building from the repository, not for formal - releases. - -* Added new Autoconf M4 macros (ATF_ARG_WITH, ATF_CHECK_C and - ATF_CHECK_CXX) to provide a consistent way of defining a --with-arg flag - in configure scripts and detecting the presence of any of the ATF - bindings. Note that ATF_CHECK_SH was already introduced in 0.14, but it - has now been modified to also honor --with-atf if instantiated. - -* Added timing support to atf-run / atf-report. - -* Added support for a 'require.memory' property, to specify the minimum - amount of physical memory needed by the test case to yield valid results. - -* PR bin/45690: Force an ISO-8859-1 encoding in the XML files generated by - atf-report so that invalid data in the output of test cases does not - mangle our report. - - -Changes in version 0.14 -*********************** - -Experimental version released on June 14th, 2011. - -* Added a pkg-config file for atf-sh and an aclocal file to ease the - detection of atf-sh from autoconf scripts. - -* Made the default test case body defined by atf_sh fail. This is to - ensure that test cases are properly defined in test programs and helps - in catching typos in the names of the body functions. - -* PR bin/44882: Made atf-run connect the stdin of test cases to /dev/zero. - This provides more consistent results with "normal" execution (in - particular, when tests are executed detached from a terminal). - -* Made atf-run hardcode TZ=UTC for test cases. It used to undefine TZ, but - that does not take into account that libc determines the current timezone - from a configuration file. - -* All test programs will now print a warning when they are not run through - atf-run(1) stating that this is unsupported and may deliver incorrect - results. - -* Added support for the 'require.files' test-case property. This allows - test cases to specify installed files that must be present for the test - case to run. - - -Changes in version 0.13 -*********************** - -Experimental version released on March 31st, 2011. - -This is the first release after the creation of the Kyua project, a more -modular and reliable replacement for ATF. From now on, ATF will change to -accomodate the transition to this new codebase, but ATF will still continue -to see development in the short/medium term. Check out the project page at -http://code.google.com/p/kyua/ for more details. - -The changes in this release are: - -* Added support to run the tests with the Kyua runtime engine (kyua-cli), a - new package that aims to replace atf-run and atf-report. The ATF tests - can be run with the new system by issuing a 'make installcheck-kyua' from - the top-level directory of the project (assuming the 'kyua' binary is - available during the configuration stage of ATF). - -* atf-run and atf-report are now in maintenance mode (but *not* deprecated - yet!). Kyua already implements a new, much more reliable runtime engine - that provides similar features to these tools. That said, it is not - complete yet so all development efforts should go towards it. - -* If GDB is installed, atf-run dumps the stack trace of crashing test - programs in an attempt to aid debugging. Contributed by Antti Kantee. - -* Reverted default timeout change in previous release and reset its value - to 5 minutes. This was causing several issues, specially when running - the existing NetBSD test suite in qemu. - -* Fixed the 'match' output checker in atf-check to properly validate the - last line of a file even if it does not have a newline. - -* Added the ATF_REQUIRE_IN and ATF_REQUIRE_NOT_IN macros to atf-c++ to - check for the presence (or lack thereof) of an element in a collection. - -* PR bin/44176: Fixed a race condition in atf-run that would crash atf-run - when the cleanup of a test case triggered asynchronous modifications to - its work directory (e.g. killing a daemon process that cleans up a pid - file in the work directory). - -* PR bin/44301: Fixed the sample XSLT file to report bogus test programs - instead of just listing them as having 0 test cases. - - -Changes in version 0.12 -*********************** - -Experimental version released on November 7th, 2010. - -* Added the ATF_REQUIRE_THROW_RE to atf-c++, which is the same as - ATF_REQUIRE_THROW but allows checking for the validity of the exception's - error message by means of a regular expression. - -* Added the ATF_REQUIRE_MATCH to atf-c++, which allows checking for a - regular expression match in a string. - -* Changed the default timeout for test cases from 5 minutes to 30 seconds. - 30 seconds is long enough for virtually all tests to complete, and 5 - minutes is a way too long pause in a test suite where a single test case - stalls. - -* Deprecated the use.fs property. While this seemed like a good idea in - the first place to impose more control on what test cases can do, it - turns out to be bad. First, use.fs=false prevents bogus test cases - from dumping core so after-the-fact debugging is harder. Second, - supporting use.fs adds a lot of unnecessary complexity. atf-run will - now ignore any value provided to use.fs and will allow test cases to - freely access the file system if they wish to. - -* Added the atf_tc_get_config_var_as_{bool,long}{,_wd} functions to the atf-c - library. The 'text' module became private in 0.11 but was being used - externally to simplify the parsing of configuration variables. - -* Made atf-run recognize the 'unprivileged-user' configuration variable - and automatically drop root privileges when a test case sets - require.user=unprivileged. Note that this is, by no means, done for - security purposes; this is just for user convenience; tests should, in - general, not be blindly run as root in the first place. - - -Changes in version 0.11 -*********************** - -Experimental version released on October 20th, 2010. - -* The ATF_CHECK* macros in atf-c++ were renamed to ATF_REQUIRE* to match - their counterparts in atf-c. - -* Clearly separated the modules in atf-c that are supposed to be public - from those that are implementation details. The header files for the - internal modules are not installed any more. - -* Made the atf-check tool private. It is only required by atf-sh and being - public has the danger of causing confusion. Also, making it private - simplifies the public API of atf. - -* Changed atf-sh to enable per-command error checking (set -e) by default. - This catches many cases in which a test case is broken but it is not - reported as such because execution continues. - -* Fixed the XSTL and CSS stylesheets to support expected failures. - - -Changes in version 0.10 -*********************** - -Experimental version released on July 2nd, 2010. - -Miscellaneous features - -* Added expected failures support to test cases and atf-run. These - include, for example, expected clean exits, expected reception of fatal - signals, expected timeouts and expected errors in condition checks. - These statuses can be used to denote test cases that are known to fail - due to a bug in the code they are testing. atf-report reports these - tests separately but they do not count towards the failed test cases - amount. - -* Added the ATF_CHECK_ERRNO and ATF_REQUIRE_ERRNO to the C library to - allow easy checking of call failures that update errno. - -* Added the has.cleanup meta-data property to test caes that specifies - whether the test case has a cleanup routine or not; its value is - automatically set. This property is read by atf-run to know if it has to - run the cleanup routine; skipping this run for every test case - significantly speeds up the run time of test suites. - -* Reversed the order of the ATF_CHECK_THROW macro in the C++ binding to - take the expected exception as the first argument and the statement to - execute as the second argument. - -Changes in atf-check - -* Changed atf-check to support negating the status and output checks by - prefixing them with not- and added support to specify multiple checkers - for stdout and stderr, not only one. - -* Added the match output checker to atf-check to look for regular - expressions in the stdout and stderr of commands. - -* Modified the exit checks in atf-check to support checking for the - reception of signals. - -Code simplifications and cleanups - -* Removed usage messages from test programs to simplify the - implementation of every binding by a significant amount. They just now - refer the user to the appropriate manual page and do not attempt to wrap - lines on terminal boundaries. Test programs are not supposed to be run - by users directly so this minor interface regression is not important. - -* Removed the atf-format internal utility, which is unused after the - change documented above. - -* Removed the atf-cleanup internal utility. It has been unused since the - test case isolation was moved to atf-run in 0.8 - -* Splitted the Makefile.am into smaller files for easier maintenance and - dropped the use of M4. Only affects users building from the repository - sources. - -* Intermixed tests with the source files in the source tree to provide - them more visibility and easier access. The tests directory is gone from - the source tree and tests are now suffixed by _test, not prefixed by t_. - -* Simplifications to the atf-c library: removed the io, tcr and ui - modules as they had become unnecessary after all simplifications - introduced since the 0.8 release. - -* Removed the application/X-atf-tcr format introduced in 0.8 release. - Tests now print a much simplified format that is easy to parse and nicer - to read by end users. As a side effect, the default for test cases is - now to print their results to stdout unless otherwise stated by providing - the -r flag. - -* Removed XML distribution documents and replaced them with plain-text - documents. They provided little value and introduced a lot of complexity - to the build system. - -* Simplified the output of atf-version by not attempting to print a - revision number when building form a distfile. Makes the build system - easier to maintain. - - -Changes in version 0.9 -********************** - -Experimental version released on June 3rd, 2010. - -* Added atf-sh, an interpreter to process test programs written using - the shell API. This is not really a shell interpreter by itself though: - it is just a wrapper around the system shell that eases the loading of - the necessary ATF libraries. - -* Removed atf-compile in favour of atf-sh. - -* Added the use.fs metadata property to test case, which is used to - specify which test cases require file system access. This is to - highlight dependencies on external resources more clearly and to speed up - the execution of test suites by skipping the creation of many unnecessary - work directories. - -* Fixed test programs to get a sane default value for their source - directory. This means that it should not be necessary any more to pass - -s when running test programs that do not live in the current directory. - -* Defining test case headers became optional. This is trivial to achieve - in shell-based tests but a bit ugly in C and C++. In C, use the new - ATF_TC_WITHOUT_HEAD macro to define the test case, and in C++ use - ATF_TEST_CASE_WITHOUT_HEAD. - - -Changes in version 0.8 -********************** - -Experimental version released on May 7th, 2010. - -* Test programs no longer run several test cases in a row. The execution - of a test program now requires a test case name, and that single test - case is executed. To execute several test cases, use the atf-run utility - as usual. - -* Test programs no longer fork a subprocess to isolate the execution of - test cases. They run the test case code in-process, and a crash of the - test case will result in a crash of the test program. This is to ease - debugging of faulty test cases. - -* Test programs no longer isolate their test cases. This means that they - will not create temporary directories nor sanitize the environment any - more. Yes: running a test case that depends on system state by hand will - most likely yield different results depending on where (machine, - directory, user environment, etc.) it is run. Isolation has been moved - to atf-run. - -* Test programs no longer print a cryptic format (application/X-atf-tcs) - on a special file channel. They can now print whatever they want on the - screen. Because test programs can now only run one test case every time, - providing controlled output is not necessary any more. - -* Test programs no longer write their status into a special file - descriptor. Instead, they create a file with the results, which is later - parsed by atf-run. This changes the semantics of the -r flag. - -* atf-run has been adjusted to perform the test case isolation. As a - result, there is now a single canonical place that implements the - isolation of test caes. In previous releases, the three language - bindings (C, C++ and shell) had to be kept in sync with each other (read: - not a nice thing to do at all). As a side effect of this change, writing - bindings for other languages will be much, much easier from now on. - -* atf-run forks test programs on a test case basis, instead of on a test - program basis as it did before. This is to provide the test case - isolation that was before implemented by the test programs themselves. - -* Removed the atf-exec tool. This was used to implement test case - isolation in atf-sh, but it is now unnecessary. - -* It is now optional to define the descr meta-data property. It has been - proven to be mostly useless, because test cases often carry a descriptive - name of their own. - - -Changes in version 0.7 -********************** - -Experimental version released on December 22nd, 2009. - -* Added build-time checks to atf-c and atf-c++. A binding for atf-sh - will come later. - -* Migrated all build-time checks for header files to proper ATF tests. - This demonstrates the use of the new feature described above. - -* Added an internal API for child process management. - -* Converted all plain-text distribution documents to a Docbook canonical - version, and include pre-generated plain text and HTML copies in the - distribution file. - -* Simplified the contents of the Makefile.am by regenerating it from a - canonical Makefile.am.m4 source. As a side-effect, some dependency - specifications were fixed. - -* Migrated all checks from the check target to installcheck, as these - require ATF to be installed. - -* Fixed sign comparison mismatches triggered by the now-enabled - -Wsign-compare. - -* Fixed many memory and object leaks. - - -Changes in version 0.6 -********************** - -Experimental version released on January 18th, 2009. - -* Make atf-exec be able to kill its child process after a certain period - of time; this is controlled through the new -t option. - -* Change atf-sh to use atf-exec's -t option to control the test case's - timeouts, instead of doing it internally. Same behavior as before, but - noticeably faster. - -* atf-exec's -g option and atf-killpg are gone due to the previous - change. - -* Added the atf-check(1) tool, a program that executes a given command - and checks its exit code against a known value and allows the management - of stdout and stderr in multiple ways. This replaces the previous - atf_check function in the atf-sh library and exposes this functionality - to both atf-c and atf-c++. - -* Added the ATF_REQUIRE family of macros to the C interface. These help - in checking for fatal test conditions. The old ATF_CHECK macros now - perform non-fatal checks only. I.e. by using ATF_CHECK, the test case - can now continue its execution and the failures will not be reported - until the end of the whole run. - -* Extended the amount of ATF_CHECK_* C macros with new ones to provide - more features to the developer. These also have their corresponding - counterparts in the ATF_REQUIRE_* family. The new macros (listing the - suffixes only) are: _EQ (replaces _EQUAL), _EQ_MSG, _STREQ and - _STREQ_MSG. - - -Changes in version 0.5 -********************** - -Experimental version released on May 1st, 2008. - -* Clauses 3 and 4 of the BSD license used by the project were dropped. - All the code is now under a 2-clause BSD license compatible with the GNU - General Public License (GPL). - -* Added a C-only binding so that binary test programs do not need to be - tied to C++ at all. This binding is now known as the atf-c library. - -* Renamed the C++ binding to atf-c++ for consistency with the new atf-c. - -* Renamed the POSIX shell binding to atf-sh for consistency with the new - atf-c and atf-c++. - -* Added a -w flag to test programs through which it is possible to - specify the work directory to be used. This was possible in prior - releases by defining the workdir configuration variable (-v workdir=...), - but was a conceptually incorrect mechanism. - -* Test programs now preserve the execution order of test cases when they - are given in the command line. Even those mentioned more than once are - executed multiple times to comply with the user's requests. - - -Changes in version 0.4 -********************** - -Experimental version released on February 4th, 2008. - -* Added two new manual pages, atf-c++-api and atf-sh-api, describing the - C++ and POSIX shell interfaces used to write test programs. - -* Added a pkg-config file, useful to get the flags to build against the - C++ library or to easily detect the presence of ATF. - -* Added a way for test cases to require a specific architecture and/or - machine type through the new 'require.arch' and 'require.machine' - meta-data properties, respectively. - -* Added the 'timeout' property to test cases, useful to set an - upper-bound limit for the test's run time and thus prevent global test - program stalls due to the test case's misbehavior. - -* Added the atf-exec(1) internal utility, used to execute a command - after changing the process group it belongs to. - -* Added the atf-killpg(1) internal utility, used to kill process groups. - -* Multiple portability fixes. Of special interest, full support for - SunOS (Solaris Express Developer Edition 2007/09) using the Sun Studio 12 - C++ compiler. - -* Fixed a serious bug that prevented atf-run(1) from working at all - under Fedora 8 x86_64. Due to the nature of the bug, other platforms - were likely affected too. - - -Changes in version 0.3 -********************** - -Experimental version released on November 11th, 2007. - -* Added XML output support to atf-report. This is accompanied by a DTD - for the format's structure and sample XSLT/CSS files to post-process this - output and convert it to a plain HTML report. - -* Changed atf-run to add system information to the report it generates. - This is currently used by atf-report's XML output only, and is later - printed in the HTML reports in a nice and useful summary table. The user - and system administrator are allowed to tune this feature by means of - hooks. - -* Removed the test cases' 'isolated' property. This was intended to - avoid touching the file system at all when running the related test case, - but this has not been true for a long while: some control files are - unconditionally required for several purposes, and we cannot easily get - rid of them. This way we remove several critical and delicate pieces of - code. - -* Improved atf-report's CSV output format to include information about - test programs too. - -* Fixed the tests that used atf-compile to not require this tool as a - helper. Avoids systems without build-time utilities to skip many tests - that could otherwise be run. (E.g. NetBSD without the comp.tgz set - installed.) - -* Many general cleanups: Fixed many pieces of code marked as ugly and/or - incomplete. - - -Changes in version 0.2 -********************** - -Experimental version released on September 20th, 2007. - -* Test cases now get a known umask on entry. - -* atf-run now detects many unexpected failures caused by test programs and - reports them as bogus tests. atf-report is able to handle these new - errors and nicely reports them to the user. - -* All the data formats read and written by the tools have been - documented and cleaned up. These include those grammars that define how - the different components communicate with each other as well as the - format of files written by the developers and users: the Atffiles and the - configuration files. - -* Added the atf-version tool, a utility that displays information about - the currently installed version of ATF. - -* Test cases can now define an optional cleanup routine to undo their - actions regardless of their exit status. - -* atf-report now summarizes the list of failed (bogus) test programs - when using the ticker output format. - -* Test programs now capture some termination signals and clean up any - temporary files before exiting the program. - -* Multiple bug fixes and improvements all around. - - -Changes in version 0.1 -********************** - -Experimental version released on August 20th, 2007. - -* First public version. This was released coinciding with the end of the - Google Summer of Code 2007 program. - - -=========================================================================== -vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2 diff --git a/unit/atf-src/README b/unit/atf-src/README deleted file mode 100644 index 00caa122a3..0000000000 --- a/unit/atf-src/README +++ /dev/null @@ -1,40 +0,0 @@ -Introductory information Automated Testing Framework -=========================================================================== - - -Introduction -************ - -The Automated Testing Framework (ATF) is a collection of libraries and -utilities designed to ease unattended application testing in the hands of -developers and end users of a specific piece of software. - -As regards developers, ATF provides the necessary means to easily create -test suites composed of multiple test programs, which in turn are a -collection of test cases. It also attempts to simplify the debugging of -problems when these test cases detect an error by providing as much -information as possible about the failure. - -As regards users, it simplifies the process of running the test suites and, -in special, encourages end users to run them often: they do not need to -have source trees around nor any other development tools installed to be -able to certify that a given piece of software works on their machine as -advertised. - - -Other documents -*************** - -* AUTHORS: List of authors and contributors for this project. - -* COPYING: License information. - -* INSTALL: Compilation and installation instructions. These is not the - standard document shipped with many packages, so be sure to read it for - things that are specific to ATF's build. - -* NEWS: List of major changes between formal, published releases. - - -=========================================================================== -vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2 diff --git a/unit/atf-src/README.md b/unit/atf-src/README.md deleted file mode 100644 index fa96639cf4..0000000000 --- a/unit/atf-src/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Welcome to the ATF project! - -ATF, or Automated Testing Framework, is a **collection of libraries** to -write test programs in **C, C++ and POSIX shell**. - -The ATF libraries offer a simple API. The API is orthogonal through the -various bindings, allowing developers to quickly learn how to write test -programs in different languages. - -ATF-based test programs offer a **consistent end-user command-line -interface** to allow both humans and automation to run the tests. - -ATF-based test programs **rely on an execution engine** to be run and -this execution engine is *not* shipped with ATF. -**[Kyua](https://github.com/jmmv/kyua/) is the engine of choice.** - -## Download - -Formal releases for source files are available for download from GitHub: - -* [atf 0.20](../../releases/tag/atf-0.20), released on February 7th, 2014. - -## Installation - -You are encouraged to install binary packages for your operating system -wherever available: - -* Fedora 20 and above: install the `atf` package with `yum install atf`. - -* FreeBSD 10.0 and above: install the `atf` package with `pkg install atf`. - -* NetBSD with pkgsrc: install the `pkgsrc/devel/atf` package. - -Should you want to build and install ATF from the source tree provided -here, follow the instructions in the [INSTALL file](INSTALL). - -## Support - -Please use the -[atf-discuss mailing list](https://groups.google.com/forum/#!forum/atf-discuss) -for any support inquiries related to `atf-c`, `atf-c++` or `atf-sh`. - -If you have any questions on Kyua proper, please use the -[kyua-discuss mailing list](https://groups.google.com/forum/#!forum/kyua-discuss) -instead. diff --git a/unit/atf-src/aclocal.m4 b/unit/atf-src/aclocal.m4 deleted file mode 100644 index e9db496338..0000000000 --- a/unit/atf-src/aclocal.m4 +++ /dev/null @@ -1,1226 +0,0 @@ -# generated automatically by aclocal 1.15.1 -*- Autoconf -*- - -# Copyright (C) 1996-2017 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 2002-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.15' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# Copyright (C) 2011-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AR([ACT-IF-FAIL]) -# ------------------------- -# Try to determine the archiver interface, and trigger the ar-lib wrapper -# if it is needed. If the detection of archiver interface fails, run -# ACT-IF-FAIL (default is to abort configure with a proper error message). -AC_DEFUN([AM_PROG_AR], -[AC_BEFORE([$0], [LT_INIT])dnl -AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([ar-lib])dnl -AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) -: ${AR=ar} - -AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], - [AC_LANG_PUSH([C]) - am_cv_ar_interface=ar - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], - [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - ]) - AC_LANG_POP([C])]) - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - m4_default([$1], - [AC_MSG_ERROR([could not determine $AR interface])]) - ;; -esac -AC_SUBST([AR])dnl -]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. -]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/compiler-flags.m4]) -m4_include([m4/cxx-std-funcs.m4]) -m4_include([m4/developer-mode.m4]) -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) -m4_include([m4/module-application.m4]) -m4_include([m4/module-defs.m4]) -m4_include([m4/module-env.m4]) -m4_include([m4/module-fs.m4]) -m4_include([m4/module-signals.m4]) -m4_include([m4/runtime-tool.m4]) diff --git a/unit/atf-src/admin/Makefile.am.inc b/unit/atf-src/admin/Makefile.am.inc deleted file mode 100644 index 12b02b8994..0000000000 --- a/unit/atf-src/admin/Makefile.am.inc +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dist-hook: check-style -PHONY_TARGETS += check-style -check-style: - $(srcdir)/admin/check-style.sh - -EXTRA_DIST += admin/check-style-common.awk \ - admin/check-style-c.awk \ - admin/check-style-cpp.awk \ - admin/check-style-man.awk \ - admin/check-style-shell.awk \ - admin/check-style.sh - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/admin/ar-lib b/unit/atf-src/admin/ar-lib deleted file mode 100755 index 05094d34c6..0000000000 --- a/unit/atf-src/admin/ar-lib +++ /dev/null @@ -1,270 +0,0 @@ -#! /bin/sh -# Wrapper for Microsoft lib.exe - -me=ar-lib -scriptversion=2012-03-01.08; # UTC - -# Copyright (C) 2010-2017 Free Software Foundation, Inc. -# Written by Peter Rosin . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - - -# func_error message -func_error () -{ - echo "$me: $1" 1>&2 - exit 1 -} - -file_conv= - -# func_file_conv build_file -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv in - mingw) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_at_file at_file operation archive -# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE -# for each of them. -# When interpreting the content of the @FILE, do NOT use func_file_conv, -# since the user would need to supply preconverted file names to -# binutils ar, at least for MinGW. -func_at_file () -{ - operation=$2 - archive=$3 - at_file_contents=`cat "$1"` - eval set x "$at_file_contents" - shift - - for member - do - $AR -NOLOGO $operation:"$member" "$archive" || exit $? - done -} - -case $1 in - '') - func_error "no command. Try '$0 --help' for more information." - ;; - -h | --h*) - cat < "/dev/stderr" - error = 1 -} - -BEGIN { - skip = 0 - error = 0 -} - -/NO_CHECK_STYLE_BEGIN/ { - skip = 1 - next -} - -/NO_CHECK_STYLE_END/ { - skip = 0 - next -} - -/NO_CHECK_STYLE/ { - next -} - -{ - if (skip) - next -} - -/#ifdef/ { - warn("Undesired usage of #ifdef; use #if defined()") -} - -/#ifndef/ { - warn("Undesired usage of #ifndef; use #if !defined()") -} - -/assert[ \t]*\(/ { - warn("Use the macros in sanity.h instead of assert"); -} - -/getprogname/ { - warn("getprogname(3) is not portable"); -} - -/include.*assert.h/ { - warn("Do not include assert.h"); -} - -/setprogname/ { - warn("setprogname(3) is not portable"); -} - -/\/\// { - warn("Do not use C99-style comments"); -} - -END { - if (skip) - warn("Missing NO_CHECK_STYLE_END"); - if (error) - exit 1 -} - -# vim: syntax=awk:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/admin/check-style-common.awk b/unit/atf-src/admin/check-style-common.awk deleted file mode 100644 index 196d70ceae..0000000000 --- a/unit/atf-src/admin/check-style-common.awk +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function warn(msg) { - print FILENAME "[" FNR "]: " msg > "/dev/stderr" - error = 1 -} - -BEGIN { - skip = 0 - error = 0 -} - -/NO_CHECK_STYLE_BEGIN/ { - skip = 1 - next -} - -/NO_CHECK_STYLE_END/ { - skip = 0 - next -} - -/NO_CHECK_STYLE/ { - next -} - -{ - if (skip) - next - - if (length > 80) - warn("Line too long to fit on screen") -} - -/^ *\t+/ { - if (! match(FILENAME, "Makefile")) - warn("Tab character used for indentation"); -} - -/[ \t]+$/ { - warn("Trailing spaces or tabs"); -} - -/#![^ ]/ { # NO_CHECK_STYLE - warn("Invalid shellbang: missing space after !"); -} - -END { - if (skip) - warn("Missing NO_CHECK_STYLE_END"); - if (error) - exit 1 -} - -# vim: syntax=awk:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/admin/check-style-cpp.awk b/unit/atf-src/admin/check-style-cpp.awk deleted file mode 100644 index 889b5b9eea..0000000000 --- a/unit/atf-src/admin/check-style-cpp.awk +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function warn(msg) { - print FILENAME "[" FNR "]: " msg > "/dev/stderr" - error = 1 -} - -BEGIN { - skip = 0 - error = 0 -} - -/NO_CHECK_STYLE_BEGIN/ { - skip = 1 - next -} - -/NO_CHECK_STYLE_END/ { - skip = 0 - next -} - -/NO_CHECK_STYLE/ { - next -} - -{ - if (skip) - next -} - -/#ifdef/ { - warn("Undesired usage of #ifdef; use #if defined()") -} - -/#ifndef/ { - warn("Undesired usage of #ifndef; use #if !defined()") -} - -/assert[ \t]*\(/ { - warn("Use the macros in sanity.hpp instead of assert"); -} - -/include.*assert/ { - warn("Do not include assert.h nor cassert"); -} - -/std::endl/ { - warn("Use \\n instead of std::endl"); -} - -/\/\*/ { - warn("Do not use C-style comments"); -} - -END { - if (skip) - warn("Missing NO_CHECK_STYLE_END"); - if (error) - exit 1 -} - -# vim: syntax=awk:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/admin/check-style-man.awk b/unit/atf-src/admin/check-style-man.awk deleted file mode 100644 index 067ef6f87e..0000000000 --- a/unit/atf-src/admin/check-style-man.awk +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function warn(msg) { - print FILENAME "[" FNR "]: " msg > "/dev/stderr" - error = 1 -} - -BEGIN { - skip = 0 - error = 0 -} - -/NO_CHECK_STYLE_BEGIN|^\.Bd/ { - skip = 1 - next -} - -/NO_CHECK_STYLE_END|^\.Ed/ { - skip = 0 - next -} - -/NO_CHECK_STYLE/ { - next -} - -/^\.\\"/ { - next -} - -{ - if (skip) - next -} - -/\.\.|e\.g\.|i\.e\./ { - next -} - -/\.[ ]+[a-zA-Z]+/ { - warn("Sentence does not start on new line") -} - -END { - if (skip) - warn("Missing NO_CHECK_STYLE_END"); - if (error) - exit 1 -} - -# vim: syntax=awk:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/admin/check-style-shell.awk b/unit/atf-src/admin/check-style-shell.awk deleted file mode 100644 index caddedb690..0000000000 --- a/unit/atf-src/admin/check-style-shell.awk +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function warn(msg) { - print FILENAME "[" FNR "]: " msg > "/dev/stderr" - error = 1 -} - -BEGIN { - skip = 0 - error = 0 - emacs_modeline = 0 - vim_modeline = 0 -} - -/NO_CHECK_STYLE_BEGIN/ { - skip = 1 - next -} - -/NO_CHECK_STYLE_END/ { - skip = 0 - next -} - -/NO_CHECK_STYLE/ { - next -} - -{ - if (skip) - next -} - -/vim: syntax=sh/ { - vim_modeline = 1 -} - -/^[ \t]*#/ { - next -} - -/[$ \t]+_[a-zA-Z0-9]+=/ { - warn("Variable should not start with an underline") -} - -/[^\\]\$[^0-9!'"$?@#*{}(|\/,]+/ { - warn("Missing braces around variable name") -} - -/=(""|'')/ { - warn("Assignment to the empty string does not need quotes"); -} - -/basename[ \t]+/ { - warn("Use parameter expansion instead of basename"); -} - -/if[ \t]+(test|![ \t]+test)/ { - warn("Use [ instead of test"); -} - -/[ \t]+(test|\[).*==/ { - warn("test(1)'s == operator is not portable"); -} - -/if.*;[ \t]*fi$/ { - warn("Avoid using a single-line if conditional"); -} - -END { - if (skip) - warn("Missing NO_CHECK_STYLE_END"); - if (! vim_modeline) - warn("Missing mode lines"); - if (error) - exit 1 -} - -# vim: syntax=awk:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/admin/check-style.sh b/unit/atf-src/admin/check-style.sh deleted file mode 100755 index f3de13c2e6..0000000000 --- a/unit/atf-src/admin/check-style.sh +++ /dev/null @@ -1,186 +0,0 @@ -#! /bin/sh -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# -# A utility to sanity check the coding style of all source files in the -# project tree. -# - -Prog_Name=${0##*/} - -# -# err message -# -err() { - echo "${Prog_Name}: ${@}" 1>&2 - exit 1 -} - -# -# warn message -# -warn() { - echo "${Prog_Name}: ${@}" 1>&2 -} - -# -# guess_topdir -# -# Locates the project's top directory and prints its path. The caller -# must verify if the result is correct or not. -# -guess_topdir() { - olddir=$(pwd) - topdir=$(pwd) - while [ ${topdir} != / ]; do - if [ -f ./atf-c.h ]; then - break - else - cd .. - topdir=$(pwd) - fi - done - cd ${olddir} - echo ${topdir} -} - -# -# find_sources -# -# Locates all source files within the project, relative to the current -# directory, and prints their paths. -# -find_sources() { - find . \( -name "AUTHORS" -o \ - -name "COPYING" -o \ - -name "ChangeLog" -o \ - -name "NEWS" -o \ - -name "README" -o \ - -name "TODO" -o \ - -name "*.[0-9]" -o \ - -name "*.ac" -o \ - -name "*.at" -o \ - -name "*.awk" -o \ - -name "*.c" -o \ - -name "*.cpp" -o \ - -name "*.h" -o \ - -name "*.h.in" -o \ - -name "*.hpp" -o \ - -name "*.m4" -o \ - -name "*.sh" \ - \) -a \( \ - \! -path "*/atf-[0-9]*" -a \ - \! -path "*autom4te*" -a \ - -type f -a \ - \! -name "aclocal.m4" \ - \! -name "config.h" \ - \! -name "defs.h" \ - \! -name "defs.hpp" \ - \! -name "libtool.m4" \ - \! -name "ltoptions.m4" \ - \! -name "ltsugar.m4" \ - \! -name "lt~obsolete.m4" \ - \! -name "*.so.*" \ - \) | grep -v tools/ -} - -# -# guess_formats file -# -# Guesses the formats applicable to the given file and prints the resulting -# list. -# -guess_formats() { - case ${1} in - */ltmain.sh) - ;; - *.[0-9]) - echo common man - ;; - *.c|*.h) - echo common c - ;; - *.cpp|*.hpp) - echo common cpp - ;; - *.sh) - echo common shell - ;; - *) - echo common - ;; - esac -} - -# -# check_file file -# -# Checks the validity of the given file. -# -check_file() { - err=0 - for format in $(guess_formats ${1}); do - awk -f ${topdir}/admin/check-style-${format}.awk ${1} || err=1 - done - - return ${err} -} - -# -# main [file list] -# -# Entry point. -# -main() { - topdir=$(guess_topdir) - if [ ! -f ${topdir}/atf-c.h ]; then - err "Could not locate the project's top directory" - fi - - if [ ${#} -gt 0 ]; then - sources=${@} - else - cd ${topdir} - sources=$(find_sources) - fi - - ok=0 - for file in ${sources}; do - file=$(echo ${file} | sed -e "s,\\./,,") - - if [ ! -f ${file} ]; then - err "Could not open ${file}" - else - check_file ${file} || ok=1 - fi - done - - return ${ok} -} - -main "${@}" - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/admin/compile b/unit/atf-src/admin/compile deleted file mode 100755 index 2ab71e4ea1..0000000000 --- a/unit/atf-src/admin/compile +++ /dev/null @@ -1,348 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2016-01-11.22; # UTC - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ - icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/unit/atf-src/admin/config.guess b/unit/atf-src/admin/config.guess deleted file mode 100755 index 2193702b12..0000000000 --- a/unit/atf-src/admin/config.guess +++ /dev/null @@ -1,1473 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2017 Free Software Foundation, Inc. - -timestamp='2017-05-27' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess -# -# Please send patches to . - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2017 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ - echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-unknown - ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently (or will in the future) and ABI. - case "${UNAME_MACHINE_ARCH}" in - earm*) - os=netbsdelf - ;; - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in - earm*) - expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}${abi}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE=alpha ;; - "EV4.5 (21064)") - UNAME_MACHINE=alpha ;; - "LCA4 (21066/21068)") - UNAME_MACHINE=alpha ;; - "EV5 (21164)") - UNAME_MACHINE=alphaev5 ;; - "EV5.6 (21164A)") - UNAME_MACHINE=alphaev56 ;; - "EV5.6 (21164PC)") - UNAME_MACHINE=alphapca56 ;; - "EV5.7 (21164PC)") - UNAME_MACHINE=alphapca57 ;; - "EV6 (21264)") - UNAME_MACHINE=alphaev6 ;; - "EV6.7 (21264A)") - UNAME_MACHINE=alphaev67 ;; - "EV6.8CB (21264C)") - UNAME_MACHINE=alphaev68 ;; - "EV6.8AL (21264B)") - UNAME_MACHINE=alphaev68 ;; - "EV6.8CX (21264D)") - UNAME_MACHINE=alphaev68 ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE=alphaev69 ;; - "EV7 (21364)") - UNAME_MACHINE=alphaev7 ;; - "EV7.9 (21364A)") - UNAME_MACHINE=alphaev79 ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH=i386 - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH=x86_64 - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 - 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH=hppa2.0n ;; - 64) HP_ARCH=hppa2.0w ;; - '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = hppa2.0w ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH=hppa2.0w - else - HP_ARCH=hppa64 - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - UNAME_PROCESSOR=x86_64 ;; - i386) - UNAME_PROCESSOR=i586 ;; - esac - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - k1om:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - mips64el:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configure will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 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) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = x86; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = 386; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; - amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; -esac - -cat >&2 </dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/unit/atf-src/admin/config.sub b/unit/atf-src/admin/config.sub deleted file mode 100755 index 40ea5dfe11..0000000000 --- a/unit/atf-src/admin/config.sub +++ /dev/null @@ -1,1836 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2017 Free Software Foundation, Inc. - -timestamp='2017-04-02' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2017 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia16 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pru \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | wasm32 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | ba-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pru-* \ - | pyramid-* \ - | riscv32-* | riscv64-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | wasm32-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - asmjs) - basic_machine=asmjs-unknown - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - e500v[12]) - basic_machine=powerpc-unknown - os=$os"spe" - ;; - e500v[12]-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - os=$os"spe" - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - nsx-tandem) - basic_machine=nsx-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - wasm32) - basic_machine=wasm32-unknown - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* | -sortix* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -ios) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - pru-*) - os=-elf - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/unit/atf-src/admin/depcomp b/unit/atf-src/admin/depcomp deleted file mode 100755 index b39f98f9ae..0000000000 --- a/unit/atf-src/admin/depcomp +++ /dev/null @@ -1,791 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2016-01-11.22; # UTC - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# Get the directory component of the given path, and save it in the -# global variables '$dir'. Note that this directory component will -# be either empty or ending with a '/' character. This is deliberate. -set_dir_from () -{ - case $1 in - */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; - *) dir=;; - esac -} - -# Get the suffix-stripped basename of the given path, and save it the -# global variable '$base'. -set_base_from () -{ - base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -} - -# If no dependency file was actually created by the compiler invocation, -# we still have to create a dummy depfile, to avoid errors with the -# Makefile "include basename.Plo" scheme. -make_dummy_depfile () -{ - echo "#dummy" > "$depfile" -} - -# Factor out some common post-processing of the generated depfile. -# Requires the auxiliary global variable '$tmpdepfile' to be set. -aix_post_process_depfile () -{ - # If the compiler actually managed to produce a dependency file, - # post-process it. - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependency.h'. - # Do two passes, one to just change these to - # $object: dependency.h - # and one to simply output - # dependency.h: - # which is needed to avoid the deleted-header problem. - { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" - sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" - } > "$depfile" - rm -f "$tmpdepfile" - else - make_dummy_depfile - fi -} - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' -# Character ranges might be problematic outside the C locale. -# These definitions help. -upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 -alpha=${upper}${lower} - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Avoid interferences from the environment. -gccflag= dashmflag= - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -## (see the conditional assignment to $gccflag above). -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). Also, it might not be -## supported by the other compilers which use the 'gcc' depmode. -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The second -e expression handles DOS-style file names with drive - # letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. -## Some versions of gcc put a space before the ':'. On the theory -## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ - | tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - aix_post_process_depfile - ;; - -tcc) - # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 - # FIXME: That version still under development at the moment of writing. - # Make that this statement remains true also for stable, released - # versions. - # It will wrap lines (doesn't matter whether long or short) with a - # trailing '\', as in: - # - # foo.o : \ - # foo.c \ - # foo.h \ - # - # It will put a trailing '\' even on the last line, and will use leading - # spaces rather than leading tabs (at least since its commit 0394caf7 - # "Emit spaces for -MD"). - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. - # We have to change lines of the first kind to '$object: \'. - sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" - # And for each line of the second kind, we have to emit a 'dep.h:' - # dummy dependency, to avoid the deleted-header problem. - sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - set_dir_from "$object" - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - set_base_from "$source" - tmpdepfile=$base.d - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir=$base.d-lock - trap " - echo '$0: caught signal, cleaning up...' >&2 - rmdir '$lockdir' - exit 1 - " 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0; do - # mkdir is a portable test-and-set. - if mkdir "$lockdir" 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rmdir "$lockdir" - break - else - # If the lock is being held by a different process, wait - # until the winning process is done or we timeout. - while test -d "$lockdir" && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - set_dir_from "$object" - set_base_from "$object" - - if test "$libtool" = yes; then - # Libtool generates 2 separate objects for the 2 libraries. These - # two compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir$base.o.d # libtool 1.5 - tmpdepfile2=$dir.libs/$base.o.d # Likewise. - tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - # Same post-processing that is required for AIX mode. - aix_post_process_depfile - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - echo >> "$depfile" # make sure the fragment doesn't end with a backslash - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this sed invocation - # correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process the last invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed '1,2d' "$tmpdepfile" \ - | tr ' ' "$nl" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E \ - | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - | sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/unit/atf-src/admin/install-sh b/unit/atf-src/admin/install-sh deleted file mode 100755 index 0360b79e7d..0000000000 --- a/unit/atf-src/admin/install-sh +++ /dev/null @@ -1,501 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2016-01-11.22; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -tab=' ' -nl=' -' -IFS=" $tab$nl" - -# Set DOITPROG to "echo" to test this script. - -doit=${DOITPROG-} -doit_exec=${doit:-exec} - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -is_target_a_directory=possibly - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) is_target_a_directory=never;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call 'install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for 'test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - dstdir=`dirname "$dst"` - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - oIFS=$IFS - IFS=/ - set -f - set fnord $dstdir - shift - set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - set +f && - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/unit/atf-src/admin/ltmain.sh b/unit/atf-src/admin/ltmain.sh deleted file mode 100644 index b6f3fcbb28..0000000000 --- a/unit/atf-src/admin/ltmain.sh +++ /dev/null @@ -1,11149 +0,0 @@ -#! /bin/sh -## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -## by inline-source v2014-01-03.01 - -# libtool (GNU libtool) 2.4.6 -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.6 -package_revision=2.4.6 - - -## ------ ## -## Usage. ## -## ------ ## - -# Run './libtool --help' for help with using this script from the -# command line. - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# After configure completes, it has a better idea of some of the -# shell tools we need than the defaults used by the functions shared -# with bootstrap, so set those here where they can still be over- -# ridden by the user, but otherwise take precedence. - -: ${AUTOCONF="autoconf"} -: ${AUTOMAKE="automake"} - - -## -------------------------- ## -## Source external libraries. ## -## -------------------------- ## - -# Much of our low-level functionality needs to be sourced from external -# libraries, which are installed to $pkgauxdir. - -# Set a version string for this script. -scriptversion=2015-01-20.17; # UTC - -# General shell script boiler plate, and helper functions. -# Written by Gary V. Vaughan, 2004 - -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# Evaluate this file near the top of your script to gain access to -# the functions and variables defined here: -# -# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh -# -# If you need to override any of the default environment variable -# settings, do that before evaluating this file. - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## - -# Some shells need a little help to be as Bourne compatible as possible. -# Before doing anything else, make sure all that help has been provided! - -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac -fi - -# NLS nuisances: We save the old values in case they are required later. -_G_user_locale= -_G_safe_locale= -for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test set = \"\${$_G_var+set}\"; then - save_$_G_var=\$$_G_var - $_G_var=C - export $_G_var - _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" - _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" - fi" -done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Make sure IFS has a sensible default -sp=' ' -nl=' -' -IFS="$sp $nl" - -# There are apparently some retarded systems that use ';' as a PATH separator! -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - - -## ------------------------- ## -## Locate command utilities. ## -## ------------------------- ## - - -# func_executable_p FILE -# ---------------------- -# Check that FILE is an executable regular file. -func_executable_p () -{ - test -f "$1" && test -x "$1" -} - - -# func_path_progs PROGS_LIST CHECK_FUNC [PATH] -# -------------------------------------------- -# Search for either a program that responds to --version with output -# containing "GNU", or else returned by CHECK_FUNC otherwise, by -# trying all the directories in PATH with each of the elements of -# PROGS_LIST. -# -# CHECK_FUNC should accept the path to a candidate program, and -# set $func_check_prog_result if it truncates its output less than -# $_G_path_prog_max characters. -func_path_progs () -{ - _G_progs_list=$1 - _G_check_func=$2 - _G_PATH=${3-"$PATH"} - - _G_path_prog_max=0 - _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} - for _G_dir in $_G_PATH; do - IFS=$_G_save_IFS - test -z "$_G_dir" && _G_dir=. - for _G_prog_name in $_G_progs_list; do - for _exeext in '' .EXE; do - _G_path_prog=$_G_dir/$_G_prog_name$_exeext - func_executable_p "$_G_path_prog" || continue - case `"$_G_path_prog" --version 2>&1` in - *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; - *) $_G_check_func $_G_path_prog - func_path_progs_result=$func_check_prog_result - ;; - esac - $_G_path_prog_found && break 3 - done - done - done - IFS=$_G_save_IFS - test -z "$func_path_progs_result" && { - echo "no acceptable sed could be found in \$PATH" >&2 - exit 1 - } -} - - -# We want to be able to use the functions in this file before configure -# has figured out where the best binaries are kept, which means we have -# to search for them ourselves - except when the results are already set -# where we skip the searches. - -# Unless the user overrides by setting SED, search the path for either GNU -# sed, or the sed that truncates its output the least. -test -z "$SED" && { - _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for _G_i in 1 2 3 4 5 6 7; do - _G_sed_script=$_G_sed_script$nl$_G_sed_script - done - echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed - _G_sed_script= - - func_check_prog_sed () - { - _G_path_prog=$1 - - _G_count=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo '' >> conftest.nl - "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin - rm -f conftest.sed - SED=$func_path_progs_result -} - - -# Unless the user overrides by setting GREP, search the path for either GNU -# grep, or the grep that truncates its output the least. -test -z "$GREP" && { - func_check_prog_grep () - { - _G_path_prog=$1 - - _G_count=0 - _G_path_prog_max=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo 'GREP' >> conftest.nl - "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin - GREP=$func_path_progs_result -} - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# All uppercase variable names are used for environment variables. These -# variables can be overridden by the user before calling a script that -# uses them if a suitable command of that name is not already available -# in the command search PATH. - -: ${CP="cp -f"} -: ${ECHO="printf %s\n"} -: ${EGREP="$GREP -E"} -: ${FGREP="$GREP -F"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} - - -## -------------------- ## -## Useful sed snippets. ## -## -------------------- ## - -sed_dirname='s|/[^/]*$||' -sed_basename='s|^.*/||' - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Same as above, but do not quote variable references. -sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' - -# Sed substitution that converts a w32 file name or path -# that contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-'\' parameter expansions in output of sed_double_quote_subst that -# were '\'-ed in input to the same. If an odd number of '\' preceded a -# '$' in input to sed_double_quote_subst, that '$' was protected from -# expansion. Since each input '\' is now two '\'s, look for any number -# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. -_G_bs='\\' -_G_bs2='\\\\' -_G_bs4='\\\\\\\\' -_G_dollar='\$' -sed_double_backslash="\ - s/$_G_bs4/&\\ -/g - s/^$_G_bs2$_G_dollar/$_G_bs&/ - s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g - s/\n//g" - - -## ----------------- ## -## Global variables. ## -## ----------------- ## - -# Except for the global variables explicitly listed below, the following -# functions in the '^func_' namespace, and the '^require_' namespace -# variables initialised in the 'Resource management' section, sourcing -# this file will not pollute your global namespace with anything -# else. There's no portable way to scope variables in Bourne shell -# though, so actually running these functions will sometimes place -# results into a variable named after the function, and often use -# temporary variables in the '^_G_' namespace. If you are careful to -# avoid using those namespaces casually in your sourcing script, things -# should continue to work as you expect. And, of course, you can freely -# overwrite any of the functions or variables defined here before -# calling anything to customize them. - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -# Allow overriding, eg assuming that you follow the convention of -# putting '$debug_cmd' at the start of all your functions, you can get -# bash to show function call trace with: -# -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name -debug_cmd=${debug_cmd-":"} -exit_cmd=: - -# By convention, finish your script with: -# -# exit $exit_status -# -# so that you can set exit_status to non-zero if you want to indicate -# something went wrong during execution without actually bailing out at -# the point of failure. -exit_status=$EXIT_SUCCESS - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath=$0 - -# The name of this program. -progname=`$ECHO "$progpath" |$SED "$sed_basename"` - -# Make sure we have an absolute progpath for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` - progdir=`cd "$progdir" && pwd` - progpath=$progdir/$progname - ;; - *) - _G_IFS=$IFS - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS=$_G_IFS - test -x "$progdir/$progname" && break - done - IFS=$_G_IFS - test -n "$progdir" || progdir=`pwd` - progpath=$progdir/$progname - ;; -esac - - -## ----------------- ## -## Standard options. ## -## ----------------- ## - -# The following options affect the operation of the functions defined -# below, and should be set appropriately depending on run-time para- -# meters passed on the command line. - -opt_dry_run=false -opt_quiet=false -opt_verbose=false - -# Categories 'all' and 'none' are always available. Append any others -# you will pass as the first argument to func_warning from your own -# code. -warning_categories= - -# By default, display warnings according to 'opt_warning_types'. Set -# 'warning_func' to ':' to elide all warnings, or func_fatal_error to -# treat the next displayed warning as a fatal error. -warning_func=func_warn_and_continue - -# Set to 'all' to display all warnings, 'none' to suppress all -# warnings, or a space delimited list of some subset of -# 'warning_categories' to display only the listed warnings. -opt_warning_types=all - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Call them using their associated -# 'require_*' variable to ensure that they are executed, at most, once. -# -# It's entirely deliberate that calling these functions can set -# variables that don't obey the namespace limitations obeyed by the rest -# of this file, in order that that they be as useful as possible to -# callers. - - -# require_term_colors -# ------------------- -# Allow display of bold text on terminals that support it. -require_term_colors=func_require_term_colors -func_require_term_colors () -{ - $debug_cmd - - test -t 1 && { - # COLORTERM and USE_ANSI_COLORS environment variables take - # precedence, because most terminfo databases neglect to describe - # whether color sequences are supported. - test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} - - if test 1 = "$USE_ANSI_COLORS"; then - # Standard ANSI escape sequences - tc_reset='' - tc_bold=''; tc_standout='' - tc_red=''; tc_green='' - tc_blue=''; tc_cyan='' - else - # Otherwise trust the terminfo database after all. - test -n "`tput sgr0 2>/dev/null`" && { - tc_reset=`tput sgr0` - test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` - tc_standout=$tc_bold - test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` - test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` - test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` - test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` - test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` - } - fi - } - - require_term_colors=: -} - - -## ----------------- ## -## Function library. ## -## ----------------- ## - -# This section contains a variety of useful functions to call in your -# scripts. Take note of the portable wrappers for features provided by -# some modern shells, which will fall back to slower equivalents on -# less featureful shells. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. - - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - - # _G_HAVE_PLUSEQ_OP - # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes - -if test yes = "$_G_HAVE_PLUSEQ_OP" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_append_quoted VAR VALUE -# ---------------------------- -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -if test yes = "$_G_HAVE_PLUSEQ_OP"; then - eval 'func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" - }' -else - func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" - } -fi - - -# func_append_uniq VAR VALUE -# -------------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_uniq options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_uniq () -{ - $debug_cmd - - eval _G_current_value='`$ECHO $'$1'`' - _G_delim=`expr "$2" : '\(.\)'` - - case $_G_delim$_G_current_value$_G_delim in - *"$2$_G_delim"*) ;; - *) func_append "$@" ;; - esac -} - - -# func_arith TERM... -# ------------------ -# Set func_arith_result to the result of evaluating TERMs. - test -z "$_G_HAVE_ARITH_OP" \ - && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ - && _G_HAVE_ARITH_OP=yes - -if test yes = "$_G_HAVE_ARITH_OP"; then - eval 'func_arith () - { - $debug_cmd - - func_arith_result=$(( $* )) - }' -else - func_arith () - { - $debug_cmd - - func_arith_result=`expr "$@"` - } -fi - - -# func_basename FILE -# ------------------ -# Set func_basename_result to FILE with everything up to and including -# the last / stripped. -if test yes = "$_G_HAVE_XSI_OPS"; then - # If this shell supports suffix pattern removal, then use it to avoid - # forking. Hide the definitions single quotes in case the shell chokes - # on unsupported syntax... - _b='func_basename_result=${1##*/}' - _d='case $1 in - */*) func_dirname_result=${1%/*}$2 ;; - * ) func_dirname_result=$3 ;; - esac' - -else - # ...otherwise fall back to using sed. - _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' - _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` - if test "X$func_dirname_result" = "X$1"; then - func_dirname_result=$3 - else - func_append func_dirname_result "$2" - fi' -fi - -eval 'func_basename () -{ - $debug_cmd - - '"$_b"' -}' - - -# func_dirname FILE APPEND NONDIR_REPLACEMENT -# ------------------------------------------- -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -eval 'func_dirname () -{ - $debug_cmd - - '"$_d"' -}' - - -# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT -# -------------------------------------------------------- -# Perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# For efficiency, we do not delegate to the functions above but instead -# duplicate the functionality here. -eval 'func_dirname_and_basename () -{ - $debug_cmd - - '"$_b"' - '"$_d"' -}' - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_echo_all ARG... -# -------------------- -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - - -# func_echo_infix_1 INFIX ARG... -# ------------------------------ -# Echo program name, followed by INFIX on the first line, with any -# additional lines not showing INFIX. -func_echo_infix_1 () -{ - $debug_cmd - - $require_term_colors - - _G_infix=$1; shift - _G_indent=$_G_infix - _G_prefix="$progname: $_G_infix: " - _G_message=$* - - # Strip color escape sequences before counting printable length - for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" - do - test -n "$_G_tc" && { - _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` - _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` - } - done - _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes - - func_echo_infix_1_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_infix_1_IFS - $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 - _G_prefix=$_G_indent - done - IFS=$func_echo_infix_1_IFS -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 -} - - -# func_fatal_error ARG... -# ----------------------- -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - $debug_cmd - - func_error "$*" - exit $EXIT_FAILURE -} - - -# func_grep EXPRESSION FILENAME -# ----------------------------- -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $debug_cmd - - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_len STRING -# --------------- -# Set func_len_result to the length of STRING. STRING may not -# start with a hyphen. - test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` - } -fi - - -# func_mkdir_p DIRECTORY-PATH -# --------------------------- -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - $debug_cmd - - _G_directory_path=$1 - _G_dir_list= - - if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - - # Protect directory names starting with '-' - case $_G_directory_path in - -*) _G_directory_path=./$_G_directory_path ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$_G_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - _G_dir_list=$_G_directory_path:$_G_dir_list - - # If the last portion added has no slash in it, the list is done - case $_G_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` - done - _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - - func_mkdir_p_IFS=$IFS; IFS=: - for _G_dir in $_G_dir_list; do - IFS=$func_mkdir_p_IFS - # mkdir can fail with a 'File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$_G_dir" 2>/dev/null || : - done - IFS=$func_mkdir_p_IFS - - # Bail out if we (or some other process) failed to create a directory. - test -d "$_G_directory_path" || \ - func_fatal_error "Failed to create '$1'" - fi -} - - -# func_mktempdir [BASENAME] -# ------------------------- -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, BASENAME is the basename for that directory. -func_mktempdir () -{ - $debug_cmd - - _G_template=${TMPDIR-/tmp}/${1-$progname} - - if test : = "$opt_dry_run"; then - # Return a directory name, but don't create it in dry-run mode - _G_tmpdir=$_G_template-$$ - else - - # If mktemp works, use that first and foremost - _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - - if test ! -d "$_G_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - _G_tmpdir=$_G_template-${RANDOM-0}$$ - - func_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$_G_tmpdir" - umask $func_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$_G_tmpdir" || \ - func_fatal_error "cannot create temporary directory '$_G_tmpdir'" - fi - - $ECHO "$_G_tmpdir" -} - - -# func_normal_abspath PATH -# ------------------------ -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -func_normal_abspath () -{ - $debug_cmd - - # These SED scripts presuppose an absolute path with a trailing slash. - _G_pathcar='s|^/\([^/]*\).*$|\1|' - _G_pathcdr='s|^/[^/]*||' - _G_removedotparts=':dotsl - s|/\./|/|g - t dotsl - s|/\.$|/|' - _G_collapseslashes='s|/\{1,\}|/|g' - _G_finalslash='s|/*$|/|' - - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` - while :; do - # Processed it all yet? - if test / = "$func_normal_abspath_tpath"; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result"; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - - -# func_notquiet ARG... -# -------------------- -# Echo program name prefixed message only when not in quiet mode. -func_notquiet () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - - -# func_relative_path SRCDIR DSTDIR -# -------------------------------- -# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. -func_relative_path () -{ - $debug_cmd - - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=$func_dirname_result - if test -z "$func_relative_path_tlibdir"; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test -n "$func_stripname_result"; then - func_append func_relative_path_result "/$func_stripname_result" - fi - - # Normalisation. If bindir is libdir, return '.' else relative path. - if test -n "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - fi - - test -n "$func_relative_path_result" || func_relative_path_result=. - - : -} - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" - fi - - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" - ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; - esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift - done -} - - -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd - - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; - esac - - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" - ;; - esac - - func_quote_for_expand_result=$_G_arg -} - - -# func_stripname PREFIX SUFFIX NAME -# --------------------------------- -# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_stripname () - { - $debug_cmd - - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary variable first. - func_stripname_result=$3 - func_stripname_result=${func_stripname_result#"$1"} - func_stripname_result=${func_stripname_result%"$2"} - }' -else - func_stripname () - { - $debug_cmd - - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; - esac - } -fi - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" - - $opt_dry_run || { - eval "$_G_cmd" - _G_status=$? - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_show_eval_locale CMD [FAIL_EXP] -# ------------------------------------ -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - $opt_dry_run || { - eval "$_G_user_locale - $_G_cmd" - _G_status=$? - eval "$_G_safe_locale" - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_tr_sh -# ---------- -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - $debug_cmd - - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $debug_cmd - - $opt_verbose && func_echo "$*" - - : -} - - -# func_warn_and_continue ARG... -# ----------------------------- -# Echo program name prefixed warning message to standard error. -func_warn_and_continue () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY, where this function -# elides messages where CATEGORY is not listed in the global variable -# 'opt_warning_types'. -func_warning () -{ - $debug_cmd - - # CATEGORY must be in the warning_categories list! - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category '$1'" ;; - esac - - _G_category=$1 - shift - - case " $opt_warning_types " in - *" $_G_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# 'sort -V' is not generally available. -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () -{ - $debug_cmd - - printf '%s\n%s\n' "$1" "$2" \ - | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n -} - -# func_lt_ver PREV CURR -# --------------------- -# Return true if PREV and CURR are in the correct order according to -# func_sort_ver, otherwise false. Use it like this: -# -# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." -func_lt_ver () -{ - $debug_cmd - - test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: -#! /bin/sh - -# Set a version string for this script. -scriptversion=2014-01-07.03; # UTC - -# A portable, pluggable option parser for Bourne shell. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# This file is a library for parsing options in your shell scripts along -# with assorted other useful supporting features that you can make use -# of too. -# -# For the simplest scripts you might need only: -# -# #!/bin/sh -# . relative/path/to/funclib.sh -# . relative/path/to/options-parser -# scriptversion=1.0 -# func_options ${1+"$@"} -# eval set dummy "$func_options_result"; shift -# ...rest of your script... -# -# In order for the '--version' option to work, you will need to have a -# suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. -# -# For '-h' and '--help' to work, you will also need a one line -# description of your script's purpose in a comment directly above the -# '# Written by ' line, like the one at the top of this file. -# -# The default options also support '--debug', which will turn on shell -# execution tracing (see the comment above debug_cmd below for another -# use), and '--verbose' and the func_verbose function to allow your script -# to display verbose messages only when your user has specified -# '--verbose'. -# -# After sourcing this file, you can plug processing for additional -# options by amending the variables from the 'Configuration' section -# below, and following the instructions in the 'Option parsing' -# section further down. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# You should override these variables in your script after sourcing this -# file so that they reflect the customisations you have added to the -# option parser. - -# The usage line for option parsing errors and the start of '-h' and -# '--help' output messages. You can embed shell variables for delayed -# expansion at the time the message is displayed, but you will need to -# quote other shell meta-characters carefully to prevent them being -# expanded when the contents are evaled. -usage='$progpath [OPTION]...' - -# Short help message in response to '-h' and '--help'. Add to this or -# override it after sourcing this library to reflect the full set of -# options your script accepts. -usage_message="\ - --debug enable verbose shell tracing - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -v, --verbose verbosely report processing - --version print version information and exit - -h, --help print short or long help message and exit -" - -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=" -Warning categories include: - 'all' show all warnings - 'none' turn off all the warnings - 'error' warnings are treated as fatal errors" - -# Help message printed before fatal option parsing errors. -fatal_help="Try '\$progname --help' for more information." - - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# 'func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_fns " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a call to 'func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more -# than a whitespace-delimited list of legal shell function names, and -# no effort is wasted trying to catch shell meta-characters or preserve -# whitespace. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; - esac - - eval _G_hook_fns=\$$1_hooks; shift - - for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - done - - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result -} - - - -## --------------- ## -## Option parsing. ## -## --------------- ## - -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. Like this: -# -# my_options_prep () -# { -# $debug_cmd -# -# # Extend the existing usage message. -# usage_message=$usage_message' -# -s, --silent don'\''t print informational messages -# ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result -# } -# func_add_hook func_options_prep my_options_prep -# -# -# my_silent_option () -# { -# $debug_cmd -# -# # Note that for efficiency, we parse as many options as we can -# # recognise in a loop before passing the remainder back to the -# # caller on the first unrecognised argument we encounter. -# while test $# -gt 0; do -# opt=$1; shift -# case $opt in -# --silent|-s) opt_silent=: ;; -# # Separate non-argument short options: -# -s*) func_split_short_opt "$_G_opt" -# set dummy "$func_split_short_opt_name" \ -# "-$func_split_short_opt_arg" ${1+"$@"} -# shift -# ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; -# esac -# done -# -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result -# } -# func_add_hook func_parse_options my_silent_option -# -# -# my_option_validation () -# { -# $debug_cmd -# -# $opt_silent && $opt_verbose && func_fatal_help "\ -# '--silent' and '--verbose' options are mutually exclusive." -# -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result -# } -# func_add_hook func_validate_options my_option_validation -# -# You'll alse need to manually amend $usage_message to reflect the extra -# options you parse. It's preferable to append if you can, so that -# multiple option parsing hooks can be added safely. - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () -{ - $debug_cmd - - # Option defaults: - opt_verbose=false - opt_warning_types= - - func_run_hooks func_options_prep ${1+"$@"} - - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result -} - - -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -func_hookable func_parse_options -func_parse_options () -{ - $debug_cmd - - func_parse_options_result= - - # this just eases exit handling - while test $# -gt 0; do - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift - - # Break out of the loop if we already parsed every option. - test $# -gt 0 || break - - _G_opt=$1 - shift - case $_G_opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result -} - - -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () -{ - $debug_cmd - - # Display all warnings if -W was not given. - test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE - - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result -} - - - -## ----------------- ## -## Helper functions. ## -## ----------------- ## - -# This section contains the helper functions used by the rest of the -# hookable option parser framework in ascii-betical order. - - -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - eval \$ECHO \""$fatal_help"\" - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - - -# func_help -# --------- -# Echo long help message to standard output and exit. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message" - exit 0 -} - - -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $debug_cmd - - func_error "Missing argument for '$1'." - exit_cmd=exit -} - - -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. -test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` - func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals - - -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt - - -# func_usage -# ---------- -# Echo short help message to standard output and exit. -func_usage () -{ - $debug_cmd - - func_usage_message - $ECHO "Run '$progname --help |${PAGER-more}' for full usage" - exit 0 -} - - -# func_usage_message -# ------------------ -# Echo short help message to standard output. -func_usage_message () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - echo - $SED -n 's|^# || - /^Written by/{ - x;p;x - } - h - /^Written by/q' < "$progpath" - echo - eval \$ECHO \""$usage_message"\" -} - - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () -{ - $debug_cmd - - printf '%s\n' "$progname $scriptversion" - $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - } - /^warranty; /q' < "$progpath" - - exit $? -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: - -# Set a version string. -scriptversion='(GNU libtool) 2.4.6' - - -# func_echo ARG... -# ---------------- -# Libtool also displays the current mode in messages, so override -# funclib.sh func_echo with this custom definition. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - -## ---------------- ## -## Options parsing. ## -## ---------------- ## - -# Hook in the functions to make sure our own options are parsed during -# the option parsing loop. - -usage='$progpath [OPTION]... [MODE-ARG]...' - -# Short help message in response to '-h'. -usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message -" - -# Additional text appended to 'usage_message' in response to '--help'. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. When passed as first option, -'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. -Try '$progname --help --mode=MODE' for a more detailed description of MODE. - -When reporting a bug, please describe a test case to reproduce it and -include the following information: - - host-triplet: $host - shell: $SHELL - compiler: $LTCC - compiler flags: $LTCFLAGS - linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 - automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` - autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` - -Report bugs to . -GNU libtool home page: . -General help using GNU software: ." - exit 0 -} - - -# func_lo2o OBJECT-NAME -# --------------------- -# Transform OBJECT-NAME from a '.lo' suffix to the platform specific -# object suffix. - -lo2o=s/\\.lo\$/.$objext/ -o2lo=s/\\.$objext\$/.lo/ - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_lo2o () - { - case $1 in - *.lo) func_lo2o_result=${1%.lo}.$objext ;; - * ) func_lo2o_result=$1 ;; - esac - }' - - # func_xform LIBOBJ-OR-SOURCE - # --------------------------- - # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) - # suffix to a '.lo' libtool-object suffix. - eval 'func_xform () - { - func_xform_result=${1%.*}.lo - }' -else - # ...otherwise fall back to using sed. - func_lo2o () - { - func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` - } - - func_xform () - { - func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` - } -fi - - -# func_fatal_configuration ARG... -# ------------------------------- -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func__fatal_error ${1+"$@"} \ - "See the $PACKAGE documentation for more information." \ - "Fatal configuration error." -} - - -# func_config -# ----------- -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - - -# func_features -# ------------- -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test yes = "$build_libtool_libs"; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test yes = "$build_old_libs"; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - - -# func_enable_tag TAGNAME -# ----------------------- -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname=$1 - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf=/$re_begincf/,/$re_endcf/p - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - - -# func_check_version_match -# ------------------------ -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# libtool_options_prep [ARG]... -# ----------------------------- -# Preparation for options parsed by libtool. -libtool_options_prep () -{ - $debug_mode - - # Option defaults: - opt_config=false - opt_dlopen= - opt_dry_run=false - opt_help=false - opt_mode= - opt_preserve_dup_deps=false - opt_quiet=false - - nonopt= - preserve_args= - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result -} -func_add_hook func_options_prep libtool_options_prep - - -# libtool_parse_options [ARG]... -# --------------------------------- -# Provide handling for libtool specific options. -libtool_parse_options () -{ - $debug_cmd - - # Perform our own loop to consume as many options as possible in - # each iteration. - while test $# -gt 0; do - _G_opt=$1 - shift - case $_G_opt in - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - - --config) func_config ;; - - --dlopen|-dlopen) - opt_dlopen="${opt_dlopen+$opt_dlopen -}$1" - shift - ;; - - --preserve-dup-deps) - opt_preserve_dup_deps=: ;; - - --features) func_features ;; - - --finish) set dummy --mode finish ${1+"$@"}; shift ;; - - --help) opt_help=: ;; - - --help-all) opt_help=': help-all' ;; - - --mode) test $# = 0 && func_missing_arg $_G_opt && break - opt_mode=$1 - case $1 in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" - exit_cmd=exit - break - ;; - esac - shift - ;; - - --no-silent|--no-quiet) - opt_quiet=false - func_append preserve_args " $_G_opt" - ;; - - --no-warnings|--no-warning|--no-warn) - opt_warning=false - func_append preserve_args " $_G_opt" - ;; - - --no-verbose) - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --silent|--quiet) - opt_quiet=: - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --tag) test $# = 0 && func_missing_arg $_G_opt && break - opt_tag=$1 - func_append preserve_args " $_G_opt $1" - func_enable_tag "$1" - shift - ;; - - --verbose|-v) opt_quiet=false - opt_verbose=: - func_append preserve_args " $_G_opt" - ;; - - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result -} -func_add_hook func_parse_options libtool_parse_options - - - -# libtool_validate_options [ARG]... -# --------------------------------- -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -libtool_validate_options () -{ - # save first non-option argument - if test 0 -lt $#; then - nonopt=$1 - shift - fi - - # preserve --debug - test : = "$debug_cmd" || func_append preserve_args " --debug" - - case $host in - # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 - # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - test yes != "$build_libtool_libs" \ - && test yes != "$build_old_libs" \ - && func_fatal_configuration "not configured to build any kind of library" - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test execute != "$opt_mode"; then - func_error "unrecognized option '-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help=$help - help="Try '$progname --help --mode=$opt_mode' for more information." - } - - # Pass back the unparsed argument list - func_quote_for_eval ${1+"$@"} - libtool_validate_options_result=$func_quote_for_eval_result -} -func_add_hook func_validate_options libtool_validate_options - - -# Process options as early as possible so that --help and --version -# can return quickly. -func_options ${1+"$@"} -eval set dummy "$func_options_result"; shift - - - -## ----------- ## -## Main. ## -## ----------- ## - -magic='%%%MAGIC variable%%%' -magic_exe='%%%MAGIC EXE variable%%%' - -# Global variables. -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# func_generated_by_libtool -# True iff stdin has been generated by Libtool. This function is only -# a basic sanity check; it will hardly flush out determined imposters. -func_generated_by_libtool_p () -{ - $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if 'file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case $lalib_p_line in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test yes = "$lalib_p" -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - test -f "$1" && - $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $debug_cmd - - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# 'FILE.' does not work on cygwin managed mounts. -func_source () -{ - $debug_cmd - - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case $lt_sysroot:$1 in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result='='$func_stripname_result - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $debug_cmd - - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=$1 - if test yes = "$build_libtool_libs"; then - write_lobj=\'$2\' - else - write_lobj=none - fi - - if test yes = "$build_old_libs"; then - write_oldobj=\'$3\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $debug_cmd - - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result= - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result"; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $debug_cmd - - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $debug_cmd - - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $debug_cmd - - if test -z "$2" && test -n "$1"; then - func_error "Could not determine host file name corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result=$1 - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $debug_cmd - - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " '$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result=$3 - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $debug_cmd - - case $4 in - $1 ) func_to_host_path_result=$3$func_to_host_path_result - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via '$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $debug_cmd - - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $debug_cmd - - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result=$1 -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result=$func_convert_core_file_wine_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via '$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $debug_cmd - - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd=func_convert_path_$func_stripname_result - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $debug_cmd - - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result=$1 -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_path_wine_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_dll_def_p FILE -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with _LT_DLL_DEF_P in libtool.m4 -func_dll_def_p () -{ - $debug_cmd - - func_dll_def_p_tmp=`$SED -n \ - -e 's/^[ ]*//' \ - -e '/^\(;.*\)*$/d' \ - -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ - -e q \ - "$1"` - test DEF = "$func_dll_def_p_tmp" -} - - -# func_mode_compile arg... -func_mode_compile () -{ - $debug_cmd - - # Get the compilation command and the source file. - base_compile= - srcfile=$nonopt # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg=$arg - arg_mode=normal - ;; - - target ) - libobj=$arg - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify '-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs=$IFS; IFS=, - for arg in $args; do - IFS=$save_ifs - func_append_quoted lastarg "$arg" - done - IFS=$save_ifs - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg=$srcfile - srcfile=$arg - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with '-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj=$func_basename_result - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from '$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test yes = "$build_libtool_libs" \ - || func_fatal_configuration "cannot build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name '$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname=$func_basename_result - xdir=$func_dirname_result - lobj=$xdir$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test yes = "$build_old_libs"; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test no = "$compiler_c_o"; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext - lockfile=$output_obj.lock - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test yes = "$need_locks"; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test warn = "$need_locks"; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test yes = "$build_libtool_libs"; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test no != "$pic_mode"; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test yes = "$suppress_opt"; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test yes = "$build_old_libs"; then - if test yes != "$pic_mode"; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test yes = "$compiler_c_o"; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test no != "$need_locks"; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test compile = "$opt_mode" && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a '.o' file suitable for static linking - -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a 'standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix '.c' with the -library object suffix, '.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to '-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the '--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the 'install' or 'cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE use a list of object files found in FILE to specify objects - -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with '-') are ignored. - -Every other argument is treated as a filename. Files ending in '.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in '.la', then a libtool library is created, -only library objects ('.lo' files) may be specified, and '-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created -using 'ar' and 'ranlib', or on Windows using 'lib'. - -If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode '$opt_mode'" - ;; - esac - - echo - $ECHO "Try '$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test : = "$opt_help"; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | $SED -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - $SED '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $debug_cmd - - # The first argument is the command name. - cmd=$nonopt - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "'$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "'$file' was not linked with '-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir=$func_dirname_result - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir=$func_dirname_result - ;; - - *) - func_warning "'-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir=$absdir - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic=$magic - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file=$progdir/$program - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file=$progdir/$program - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if $opt_dry_run; then - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - else - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd=\$cmd$args - fi -} - -test execute = "$opt_mode" && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $debug_cmd - - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "'$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument '$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and '=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_quiet && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the '-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the '$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the '$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the '$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test finish = "$opt_mode" && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $debug_cmd - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac - then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=false - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=: ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test X-m = "X$prev" && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the '$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=: - if $isdir; then - destdir=$dest - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir=$func_dirname_result - destname=$func_basename_result - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "'$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "'$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir=$func_dirname_result - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking '$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname=$1 - shift - - srcname=$realname - test -n "$relink_command" && srcname=${realname}T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme=$stripme - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme= - ;; - esac - ;; - os2*) - case $realname in - *_dll.a) - tstripme= - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try 'ln -sf' first, because the 'ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib=$destdir/$realname - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name=$func_basename_result - instname=$dir/${name}i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest=$destfile - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to '$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test yes = "$build_old_libs"; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext= - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=.exe - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script '$wrapper'" - - finalize=: - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "'$lib' has not been installed in '$libdir'" - finalize=false - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test no = "$fast_install" && test -n "$relink_command"; then - $opt_dry_run || { - if $finalize; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file=$func_basename_result - outputname=$tmpdir/$file - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_quiet || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink '$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file=$outputname - else - func_warning "cannot relink '$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name=$func_basename_result - - # Set up the ranlib parameters. - oldlib=$destdir/$name - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run '$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test install = "$opt_mode" && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $debug_cmd - - my_outputname=$1 - my_originator=$2 - my_pic_p=${3-false} - my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms=${my_outputname}S.c - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist=$output_objdir/$my_outputname.nm - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* External symbol declarations for the compiler. */\ -" - - if test yes = "$dlself"; then - func_verbose "generating symbol list for '$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from '$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp - $opt_dry_run || { - $RM $export_symbols - eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from '$dlprefile'" - func_basename "$dlprefile" - name=$func_basename_result - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename= - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname"; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename=$func_basename_result - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename"; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - func_show_eval '$RM "${nlist}I"' - if test -n "$global_symbol_to_import"; then - eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[];\ -" - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ -static void lt_syminit(void) -{ - LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; - for (; symbol->name; ++symbol) - {" - $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" - echo >> "$output_objdir/$my_dlsyms" "\ - } -}" - fi - echo >> "$output_objdir/$my_dlsyms" "\ -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{ {\"$my_originator\", (void *) 0}," - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ - {\"@INIT@\", (void *) <_syminit}," - fi - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - $my_pic_p && pic_flag_for_symtable=" $pic_flag" - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' - - # Transform the symbol file into the correct name. - symfileobj=$output_objdir/${my_outputname}S.$objext - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for '$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - 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)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $debug_cmd - - win32_libid_type=unknown - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - case $nm_interface in - "MS dumpbin") - if func_cygming_ms_implib_p "$1" || - func_cygming_gnu_implib_p "$1" - then - win32_nmres=import - else - win32_nmres= - fi - ;; - *) - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s|.*|import| - p - q - } - }'` - ;; - esac - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $debug_cmd - - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $debug_cmd - - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive that possess that section. Heuristic: eliminate - # all those that have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $debug_cmd - - if func_cygming_gnu_implib_p "$1"; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1"; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result= - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $debug_cmd - - f_ex_an_ar_dir=$1; shift - f_ex_an_ar_oldlib=$1 - if test yes = "$lock_old_archive_extraction"; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test yes = "$lock_old_archive_extraction"; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $debug_cmd - - my_gentop=$1; shift - my_oldlibs=${1+"$@"} - my_oldobjs= - my_xlib= - my_xabs= - my_xdir= - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib=$func_basename_result - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir=$my_gentop/$my_xlib_u - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - func_basename "$darwin_archive" - darwin_base_archive=$func_basename_result - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches; do - func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" - $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" - cd "unfat-$$/$darwin_base_archive-$darwin_arch" - func_extract_an_archive "`pwd`" "$darwin_base_archive" - cd "$darwin_curdir" - $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result=$my_oldobjs -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test yes = "$fast_install"; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - \$ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#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" -#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" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $debug_cmd - - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_suncc_cstd_abi -# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! -# Several compiler flags select an ABI that is incompatible with the -# Cstd library. Avoid specifying it if any are in CXXFLAGS. -func_suncc_cstd_abi () -{ - $debug_cmd - - case " $compile_command " in - *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) - suncc_use_cstd_abi=no - ;; - *) - suncc_use_cstd_abi=yes - ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $debug_cmd - - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # what system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll that has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - os2dllname= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=false - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module=$wl-single_module - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test yes != "$build_libtool_libs" \ - && func_fatal_configuration "cannot build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg=$1 - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir=$arg - prev= - continue - ;; - dlfiles|dlprefiles) - $preload || { - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=: - } - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test no = "$dlself"; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test dlprefiles = "$prev"; then - dlself=yes - elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test dlfiles = "$prev"; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols=$arg - test -f "$arg" \ - || func_fatal_error "symbol file '$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex=$arg - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir=$arg - prev= - continue - ;; - mllvm) - # Clang does not use LLVM to link, so we can simply discard any - # '-mllvm $arg' options when doing the link step. - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - if test none != "$pic_object"; then - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - fi - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file '$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - os2dllname) - os2dllname=$arg - prev= - continue - ;; - precious_regex) - precious_files_regex=$arg - prev= - continue - ;; - release) - release=-$arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test rpath = "$prev"; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds=$arg - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg=$arg - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "'-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test X-export-symbols = "X$arg"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between '-L' and '$1'" - else - func_fatal_error "need path for '-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of '$dir'" - dir=$absdir - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test X-lc = "X$arg" || test X-lm = "X$arg"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test X-lc = "X$arg" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc due to us having libc/libc_r. - test X-lc = "X$arg" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test X-lc = "X$arg" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test X-lc = "X$arg" && continue - ;; - esac - elif test X-lc_r = "X$arg"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -mllvm) - prev=mllvm - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module=$wl-multi_module - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -os2dllname) - prev=os2dllname - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # -fstack-protector* stack protector flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang - # -fsanitize=* Clang memory and address sanitizer - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -fsanitize=*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - -Z*) - if test os2 = "`expr $host : '.*\(os2\)'`"; then - # OS/2 uses -Zxxx to specify OS/2-specific options - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case $arg in - -Zlinker | -Zstack) - prev=xcompiler - ;; - esac - continue - else - # Otherwise treat like 'Some other compiler flag' below - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - fi - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - test none = "$pic_object" || { - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - } - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test dlfiles = "$prev"; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test dlprefiles = "$prev"; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the '$prevarg' option requires an argument" - - if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname=$func_basename_result - libobjs_save=$libobjs - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - # Definition is injected by LT_CONFIG during libtool generation. - func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" - - func_dirname "$output" "/" "" - output_objdir=$func_dirname_result$objdir - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test lib = "$linkmode"; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=false - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test lib,link = "$linkmode,$pass"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs=$tmp_deplibs - fi - - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass"; then - libs=$deplibs - deplibs= - fi - if test prog = "$linkmode"; then - case $pass in - dlopen) libs=$dlfiles ;; - dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test lib,dlpreopen = "$linkmode,$pass"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs=$dlprefiles - fi - if test dlopen = "$pass"; then - # Collect dlpreopened libraries - save_deplibs=$deplibs - deplibs= - fi - - for deplib in $libs; do - lib= - found=false - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test lib != "$linkmode" && test prog != "$linkmode"; then - func_warning "'-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test lib = "$linkmode"; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib=$searchdir/lib$name$search_ext - if test -f "$lib"; then - if test .la = "$search_ext"; then - found=: - else - found=false - fi - break 2 - fi - done - done - if $found; then - # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll=$l - done - if test "X$ll" = "X$old_library"; then # only static version available - found=false - func_dirname "$lib" "" "." - ladir=$func_dirname_result - lib=$ladir/$old_library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - else - # deplib doesn't seem to be a libtool library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - ;; # -l - *.ltframework) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test conv = "$pass" && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - if test scan = "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "'-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test link = "$pass"; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=false - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=: - fi - ;; - pass_all) - valid_a_lib=: - ;; - esac - if $valid_a_lib; then - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - else - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - fi - ;; - esac - continue - ;; - prog) - if test link != "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - elif test prog = "$linkmode"; then - if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=: - continue - ;; - esac # case $deplib - - $found || test -f "$lib" \ - || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "'$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir=$func_dirname_result - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass" || - { test prog != "$linkmode" && test lib != "$linkmode"; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test conv = "$pass"; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test prog != "$linkmode" && test lib != "$linkmode"; then - func_fatal_error "'$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test yes = "$prefer_static_libs" || - test built,no = "$prefer_static_libs,$installed"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib=$l - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - - # This library was specified with -dlopen. - if test dlopen = "$pass"; then - test -z "$libdir" \ - && func_fatal_error "cannot -dlopen a convenience library: '$lib'" - if test -z "$dlname" || - test yes != "$dlopen_support" || - test no = "$build_libtool_libs" - then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of '$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir=$ladir - fi - ;; - esac - func_basename "$lib" - laname=$func_basename_result - - # Find the relevant object directory and library name. - if test yes = "$installed"; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library '$lib' was moved." - dir=$ladir - absdir=$abs_ladir - libdir=$abs_ladir - else - dir=$lt_sysroot$libdir - absdir=$lt_sysroot$libdir - fi - test yes = "$hardcode_automatic" && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir=$ladir - absdir=$abs_ladir - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir=$ladir/$objdir - absdir=$abs_ladir/$objdir - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test dlpreopen = "$pass"; then - if test -z "$libdir" && test prog = "$linkmode"; then - func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" - fi - case $host in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test lib = "$linkmode"; then - deplibs="$dir/$old_library $deplibs" - elif test prog,link = "$linkmode,$pass"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test prog = "$linkmode" && test link != "$pass"; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=false - if test no != "$link_all_deplibs" || test -z "$library_names" || - test no = "$build_libtool_libs"; then - linkalldeplibs=: - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if $linkalldeplibs; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test prog,link = "$linkmode,$pass"; then - if test -n "$library_names" && - { { test no = "$prefer_static_libs" || - test built,yes = "$prefer_static_libs,$installed"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then - # Make sure the rpath contains only unique directories. - case $temp_rpath: in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if $alldeplibs && - { test pass_all = "$deplibs_check_method" || - { test yes = "$build_libtool_libs" && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test built = "$use_static_libs" && test yes = "$installed"; then - use_static_libs=no - fi - if test -n "$library_names" && - { test no = "$use_static_libs" || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc* | *os2*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test no = "$installed"; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule= - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule=$dlpremoduletest - break - fi - done - if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then - echo - if test prog = "$linkmode"; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test lib = "$linkmode" && - test yes = "$hardcode_into_libs"; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname=$1 - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname=$dlname - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc* | *os2*) - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - esac - eval soname=\"$soname_spec\" - else - soname=$realname - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot=$soname - func_basename "$soroot" - soname=$func_basename_result - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from '$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for '$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test prog = "$linkmode" || test relink != "$opt_mode"; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test no = "$hardcode_direct"; then - add=$dir/$linklib - case $host in - *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; - *-*-sysv4*uw2*) add_dir=-L$dir ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir=-L$dir ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we cannot - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library"; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add=$dir/$old_library - fi - elif test -n "$old_library"; then - add=$dir/$old_library - fi - fi - esac - elif test no = "$hardcode_minus_L"; then - case $host in - *-*-sunos*) add_shlibpath=$dir ;; - esac - add_dir=-L$dir - add=-l$name - elif test no = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - relink) - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$dir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$absdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test yes != "$lib_linked"; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test prog = "$linkmode"; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test yes != "$hardcode_direct" && - test yes != "$hardcode_minus_L" && - test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test prog = "$linkmode" || test relink = "$opt_mode"; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$libdir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$libdir - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add=-l$name - elif test yes = "$hardcode_automatic"; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib"; then - add=$inst_prefix_dir$libdir/$linklib - else - add=$libdir/$linklib - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir=-L$libdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - fi - - if test prog = "$linkmode"; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test prog = "$linkmode"; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test unsupported != "$hardcode_direct"; then - test -n "$old_library" && linklib=$old_library - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test yes = "$build_libtool_libs"; then - # Not a shared library - if test pass_all != "$deplibs_check_method"; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system cannot link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test yes = "$module"; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test lib = "$linkmode"; then - if test -n "$dependency_libs" && - { test yes != "$hardcode_into_libs" || - test yes = "$build_old_libs" || - test yes = "$link_static"; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs=$temp_deplibs - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test no != "$link_all_deplibs"; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path=$deplib ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of '$dir'" - absdir=$dir - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names"; then - for tmp in $deplibrary_names; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl"; then - depdepl=$absdir/$objdir/$depdepl - darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" - func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" - path= - fi - fi - ;; - *) - path=-L$absdir/$objdir - ;; - esac - else - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "'$deplib' seems to be moved" - - path=-L$absdir - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test link = "$pass"; then - if test prog = "$linkmode"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs=$newdependency_libs - if test dlpreopen = "$pass"; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test dlopen != "$pass"; then - test conv = "$pass" || { - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - } - - if test prog,link = "$linkmode,$pass"; then - vars="compile_deplibs finalize_deplibs" - else - vars=deplibs - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - - # Add Sun CC postdeps if required: - test CXX = "$tagname" && { - case $host_os in - linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C++ 5.9 - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - - solaris*) - func_cc_basename "$CC" - case $func_cc_basename_result in - CC* | sunCC*) - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - esac - } - - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i= - ;; - esac - if test -n "$i"; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test prog = "$linkmode"; then - dlfiles=$newdlfiles - fi - if test prog = "$linkmode" || test lib = "$linkmode"; then - dlprefiles=$newdlprefiles - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "'-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "'-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs=$output - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form 'libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test no = "$module" \ - && func_fatal_help "libtool library '$output' must begin with 'lib'" - - if test no != "$need_lib_prefix"; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test pass_all != "$deplibs_check_method"; then - func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test no = "$dlself" \ - || func_warning "'-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test 1 -lt "$#" \ - && func_warning "ignoring multiple '-rpath's for a libtool library" - - install_libdir=$1 - - oldlibs= - if test -z "$rpath"; then - if test yes = "$build_libtool_libs"; then - # Building a libtool convenience library. - # Some compilers have problems with a '.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "'-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs=$IFS; IFS=: - set dummy $vinfo 0 0 0 - shift - IFS=$save_ifs - - test -n "$7" && \ - func_fatal_help "too many parameters to '-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major=$1 - number_minor=$2 - number_revision=$3 - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # that has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_revision - ;; - freebsd-aout|qnx|sunos) - current=$number_major - revision=$number_minor - age=0 - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_minor - lt_irix_increment=no - ;; - esac - ;; - no) - current=$1 - revision=$2 - age=$3 - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 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]) ;; - *) - func_error "CURRENT '$current' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $revision in - 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]) ;; - *) - func_error "REVISION '$revision' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $age in - 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]) ;; - *) - func_error "AGE '$age' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE '$age' is greater than the current interface number '$current'" - func_fatal_error "'$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - # On Darwin other compilers - case $CC in - nagfor*) - verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - ;; - *) - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - esac - ;; - - freebsd-aout) - major=.$current - versuffix=.$current.$revision - ;; - - freebsd-elf) - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - irix | nonstopux) - if test no = "$lt_irix_increment"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring=$verstring_prefix$major.$revision - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test 0 -ne "$loop"; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring_prefix$major.$iface:$verstring - done - - # Before this point, $major must not contain '.'. - major=.$major - versuffix=$major.$revision - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=.$current.$age.$revision - verstring=$current.$age.$revision - - # Add in all the interfaces that we are compatible with. - loop=$age - while test 0 -ne "$loop"; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring:$iface.0 - done - - # Make executables depend on our current version. - func_append verstring ":$current.0" - ;; - - qnx) - major=.$current - versuffix=.$current - ;; - - sco) - major=.$current - versuffix=.$current - ;; - - sunos) - major=.$current - versuffix=.$current.$revision - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 file systems. - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - - *) - func_fatal_configuration "unknown library version type '$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring=0.0 - ;; - esac - if test no = "$need_version"; then - versuffix= - else - versuffix=.0.0 - fi - fi - - # Remove version info from name if versioning should be avoided - if test yes,no = "$avoid_version,$need_version"; then - major= - versuffix= - verstring= - fi - - # Check to see if the archive will have undefined symbols. - if test yes = "$allow_undefined"; then - if test unsupported = "$allow_undefined_flag"; then - if test yes = "$build_old_libs"; then - func_warning "undefined symbols not allowed in $host shared libraries; building static only" - build_libtool_libs=no - else - func_fatal_error "can't build $host shared library unless -no-undefined is specified" - fi - fi - else - # Don't allow undefined symbols. - allow_undefined_flag=$no_undefined_flag - fi - - fi - - func_generate_dlsyms "$libname" "$libname" : - func_append libobjs " $symfileobj" - test " " = "$libobjs" && libobjs= - - if test relink != "$opt_mode"; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) - if test -n "$precious_files_regex"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles=$dlfiles - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles=$dlprefiles - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test yes = "$build_libtool_libs"; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test yes = "$build_libtool_need_lc"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release= - versuffix= - major= - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib=$potent_lib - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | $SED 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; - *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib= - ;; - esac - fi - if test -n "$a_deplib"; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib=$potent_lib # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs= - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - for i in $predeps $postdeps; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test none = "$deplibs_check_method"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test yes = "$droppeddeps"; then - if test yes = "$module"; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test no = "$allow_undefined"; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs=$new_libs - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test yes = "$build_libtool_libs"; then - # Remove $wl instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test yes = "$hardcode_into_libs"; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath=$finalize_rpath - test relink = "$opt_mode" || rpath=$compile_rpath$rpath - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath=$finalize_shlibpath - test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname=$1 - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname=$realname - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib=$output_objdir/$realname - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols=$output_objdir/$libname.uexp - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - func_dll_def_p "$export_symbols" || { - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols=$export_symbols - export_symbols= - always_export_symbols=yes - } - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs=$IFS; IFS='~' - for cmd1 in $cmds; do - IFS=$save_ifs - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test yes = "$try_normal_branch" \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=$output_objdir/$output_la.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS=$save_ifs - if test -n "$export_symbols_regex" && test : != "$skipped_export"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test : != "$skipped_export" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs=$tmp_deplibs - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test yes = "$compiler_needs_object" && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test : != "$skipped_export" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then - output=$output_objdir/$output_la.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then - output=$output_objdir/$output_la.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test yes = "$compiler_needs_object"; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-$k.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test -z "$objlist" || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test 1 -eq "$k"; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-$k.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-$k.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - ${skipped_export-false} && { - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - } - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs=$IFS; IFS='~' - for cmd in $concat_cmds; do - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - ${skipped_export-false} && { - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - } - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs=$IFS; IFS='~' - for cmd in $cmds; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test yes = "$module" || test yes = "$export_dynamic"; then - # On all known operating systems, these are identical. - dlname=$soname - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "'-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object '$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj=$output - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # if reload_cmds runs $LD directly, get rid of -Wl from - # whole_archive_flag_spec and hope we can get by with turning comma - # into space. - case $reload_cmds in - *\$LD[\ \$]*) wl= ;; - esac - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags - else - gentop=$output_objdir/${obj}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test yes = "$build_libtool_libs" || libobjs=$non_pic_objects - - # Create the old-style object. - reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - - output=$obj - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - test yes = "$build_libtool_libs" || { - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - } - - if test -n "$pic_flag" || test default != "$pic_mode"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output=$libobj - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "'-release' is ignored for programs" - - $preload \ - && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ - && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test CXX = "$tagname"; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " $wl-bind_at_load" - func_append finalize_command " $wl-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs=$new_libs - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath=$rpath - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath=$rpath - - if test -n "$libobjs" && test yes = "$build_old_libs"; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" false - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=: - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=false - ;; - *cygwin* | *mingw* ) - test yes = "$build_libtool_libs" || wrappers_required=false - ;; - *) - if test no = "$need_relink" || test yes != "$build_libtool_libs"; then - wrappers_required=false - fi - ;; - esac - $wrappers_required || { - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command=$compile_command$compile_rpath - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.$objext"; then - func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' - fi - - exit $exit_status - } - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test yes = "$no_install"; then - # We don't need to create a wrapper script. - link_command=$compile_var$compile_command$compile_rpath - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - case $hardcode_action,$fast_install in - relink,*) - # Fast installation is not supported - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "'$output' will be relinked during installation" - ;; - *,yes) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - ;; - *,no) - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - ;; - *,needless) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command= - ;; - esac - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - 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'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource=$output_path/$objdir/lt-$output_name.c - cwrapper=$output_path/$output_name.exe - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host"; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - case $build_libtool_libs in - convenience) - oldobjs="$libobjs_save $symfileobj" - addlibs=$convenience - build_libtool_libs=no - ;; - module) - oldobjs=$libobjs_save - addlibs=$old_convenience - build_libtool_libs=no - ;; - *) - oldobjs="$old_deplibs $non_pic_objects" - $preload && test -f "$symfileobj" \ - && func_append oldobjs " $symfileobj" - addlibs=$old_convenience - ;; - esac - - if test -n "$addlibs"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase=$func_basename_result - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj"; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test -z "$oldobjs"; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test yes = "$build_old_libs" && old_library=$libname.$libext - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test yes = "$hardcode_automatic"; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test yes = "$installed"; then - if test -z "$install_libdir"; then - break - fi - output=$output_objdir/${outputname}i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name=$func_basename_result - func_resolve_sysroot "$deplib" - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs=$newdependency_libs - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles=$newdlprefiles - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles=$newdlprefiles - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test -n "$bindir"; then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result/$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that cannot go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test no,yes = "$installed,$need_relink"; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -if test link = "$opt_mode" || test relink = "$opt_mode"; then - func_mode_link ${1+"$@"} -fi - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $debug_cmd - - RM=$nonopt - files= - rmforce=false - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=: ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir=$func_dirname_result - if test . = "$dir"; then - odir=$objdir - else - odir=$dir/$objdir - fi - func_basename "$file" - name=$func_basename_result - test uninstall = "$opt_mode" && odir=$dir - - # Remember odir for removal later, being careful to avoid duplicates - if test clean = "$opt_mode"; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif $rmforce; then - continue - fi - - rmfiles=$file - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case $opt_mode in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && test none != "$pic_object"; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && test none != "$non_pic_object"; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test clean = "$opt_mode"; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.$objext" - if test yes = "$fast_install" && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name"; then - func_append rmfiles " $odir/lt-$noexename.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the $objdir's in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then - func_mode_uninstall ${1+"$@"} -fi - -test -z "$opt_mode" && { - help=$generic_help - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode '$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# where we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/unit/atf-src/admin/missing b/unit/atf-src/admin/missing deleted file mode 100755 index c6e379584b..0000000000 --- a/unit/atf-src/admin/missing +++ /dev/null @@ -1,215 +0,0 @@ -#! /bin/sh -# Common wrapper for a few potentially missing GNU programs. - -scriptversion=2016-01-11.22; # UTC - -# Copyright (C) 1996-2017 Free Software Foundation, Inc. -# Originally written by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try '$0 --help' for more information" - exit 1 -fi - -case $1 in - - --is-lightweight) - # Used by our autoconf macros to check whether the available missing - # script is modern enough. - exit 0 - ;; - - --run) - # Back-compat with the calling convention used by older automake. - shift - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due -to PROGRAM being missing or too old. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - -Supported PROGRAM values: - aclocal autoconf autoheader autom4te automake makeinfo - bison yacc flex lex help2man - -Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and -'g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: unknown '$1' option" - echo 1>&2 "Try '$0 --help' for more information" - exit 1 - ;; - -esac - -# Run the given program, remember its exit status. -"$@"; st=$? - -# If it succeeded, we are done. -test $st -eq 0 && exit 0 - -# Also exit now if we it failed (or wasn't found), and '--version' was -# passed; such an option is passed most likely to detect whether the -# program is present and works. -case $2 in --version|--help) exit $st;; esac - -# Exit code 63 means version mismatch. This often happens when the user -# tries to use an ancient version of a tool on a file that requires a -# minimum version. -if test $st -eq 63; then - msg="probably too old" -elif test $st -eq 127; then - # Program was missing. - msg="missing on your system" -else - # Program was found and executed, but failed. Give up. - exit $st -fi - -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software - -program_details () -{ - case $1 in - aclocal|automake) - echo "The '$1' program is part of the GNU Automake package:" - echo "<$gnu_software_URL/automake>" - echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" - echo "<$gnu_software_URL/autoconf>" - echo "<$gnu_software_URL/m4/>" - echo "<$perl_URL>" - ;; - autoconf|autom4te|autoheader) - echo "The '$1' program is part of the GNU Autoconf package:" - echo "<$gnu_software_URL/autoconf/>" - echo "It also requires GNU m4 and Perl in order to run:" - echo "<$gnu_software_URL/m4/>" - echo "<$perl_URL>" - ;; - esac -} - -give_advice () -{ - # Normalize program name to check for. - normalized_program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - - printf '%s\n' "'$1' is $msg." - - configure_deps="'configure.ac' or m4 files included by 'configure.ac'" - case $normalized_program in - autoconf*) - echo "You should only need it if you modified 'configure.ac'," - echo "or m4 files included by it." - program_details 'autoconf' - ;; - autoheader*) - echo "You should only need it if you modified 'acconfig.h' or" - echo "$configure_deps." - program_details 'autoheader' - ;; - automake*) - echo "You should only need it if you modified 'Makefile.am' or" - echo "$configure_deps." - program_details 'automake' - ;; - aclocal*) - echo "You should only need it if you modified 'acinclude.m4' or" - echo "$configure_deps." - program_details 'aclocal' - ;; - autom4te*) - echo "You might have modified some maintainer files that require" - echo "the 'autom4te' program to be rebuilt." - program_details 'autom4te' - ;; - bison*|yacc*) - echo "You should only need it if you modified a '.y' file." - echo "You may want to install the GNU Bison package:" - echo "<$gnu_software_URL/bison/>" - ;; - lex*|flex*) - echo "You should only need it if you modified a '.l' file." - echo "You may want to install the Fast Lexical Analyzer package:" - echo "<$flex_URL>" - ;; - help2man*) - echo "You should only need it if you modified a dependency" \ - "of a man page." - echo "You may want to install the GNU Help2man package:" - echo "<$gnu_software_URL/help2man/>" - ;; - makeinfo*) - echo "You should only need it if you modified a '.texi' file, or" - echo "any other file indirectly affecting the aspect of the manual." - echo "You might want to install the Texinfo package:" - echo "<$gnu_software_URL/texinfo/>" - echo "The spurious makeinfo call might also be the consequence of" - echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" - echo "want to install GNU make:" - echo "<$gnu_software_URL/make/>" - ;; - *) - echo "You might have modified some files without having the proper" - echo "tools for further handling them. Check the 'README' file, it" - echo "often tells you about the needed prerequisites for installing" - echo "this package. You may also peek at any GNU archive site, in" - echo "case some other package contains this missing '$1' program." - ;; - esac -} - -give_advice "$1" | sed -e '1s/^/WARNING: /' \ - -e '2,$s/^/ /' >&2 - -# Propagate the correct exit status (expected to be 127 for a program -# not found, 63 for a program that failed due to version mismatch). -exit $st - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/unit/atf-src/admin/travis-build.sh b/unit/atf-src/admin/travis-build.sh deleted file mode 100644 index 9831b34e01..0000000000 --- a/unit/atf-src/admin/travis-build.sh +++ /dev/null @@ -1,50 +0,0 @@ -#! /bin/sh -# Copyright 2014 Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of Google Inc. nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -set -e -x - -if [ -d /usr/local/share/aclocal ]; then - autoreconf -isv -I/usr/local/share/aclocal -else - autoreconf -isv -fi -./configure - -if [ "${AS_ROOT:-no}" = yes ]; then - cat >root-kyua.conf < -#include - -#endif // !defined(ATF_CXX_HPP) diff --git a/unit/atf-src/atf-c++/Atffile b/unit/atf-src/atf-c++/Atffile deleted file mode 100644 index 5e1d25fd7b..0000000000 --- a/unit/atf-src/atf-c++/Atffile +++ /dev/null @@ -1,13 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: detail - -tp: atf_c++_test -tp: build_test -tp: check_test -tp: macros_test -tp: pkg_config_test -tp: tests_test -tp: utils_test diff --git a/unit/atf-src/atf-c++/Kyuafile b/unit/atf-src/atf-c++/Kyuafile deleted file mode 100644 index 9fd43af76c..0000000000 --- a/unit/atf-src/atf-c++/Kyuafile +++ /dev/null @@ -1,13 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="atf_c++_test"} -atf_test_program{name="build_test"} -atf_test_program{name="check_test"} -atf_test_program{name="macros_test"} -atf_test_program{name="pkg_config_test"} -atf_test_program{name="tests_test"} -atf_test_program{name="utils_test"} - -include("detail/Kyuafile") diff --git a/unit/atf-src/atf-c++/Makefile.am.inc b/unit/atf-src/atf-c++/Makefile.am.inc deleted file mode 100644 index 58f9945904..0000000000 --- a/unit/atf-src/atf-c++/Makefile.am.inc +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -ATF_CXX_LIBS = libatf-c++.la libatf-c.la - -lib_LTLIBRARIES += libatf-c++.la -libatf_c___la_LIBADD = libatf-c.la -libatf_c___la_SOURCES = atf-c++/build.cpp \ - atf-c++/build.hpp \ - atf-c++/check.cpp \ - atf-c++/check.hpp \ - atf-c++/macros.hpp \ - atf-c++/tests.cpp \ - atf-c++/tests.hpp \ - atf-c++/utils.cpp \ - atf-c++/utils.hpp -libatf_c___la_LDFLAGS = -version-info 2:0:0 - -include_HEADERS += atf-c++.hpp -atf_c___HEADERS = atf-c++/build.hpp \ - atf-c++/check.hpp \ - atf-c++/macros.hpp \ - atf-c++/tests.hpp \ - atf-c++/utils.hpp -atf_c__dir = $(includedir)/atf-c++ - -dist_man_MANS += atf-c++/atf-c++.3 - -atf_aclocal_DATA += atf-c++/atf-c++.m4 -EXTRA_DIST += atf-c++/atf-c++.m4 - -atf_c__dirpkgconfigdir = $(atf_pkgconfigdir) -atf_c__dirpkgconfig_DATA = atf-c++/atf-c++.pc -CLEANFILES += atf-c++/atf-c++.pc -EXTRA_DIST += atf-c++/atf-c++.pc.in -atf-c++/atf-c++.pc: $(srcdir)/atf-c++/atf-c++.pc.in Makefile - $(AM_V_GEN)test -d atf-c++ || mkdir -p atf-c++; \ - sed -e 's#__ATF_VERSION__#$(PACKAGE_VERSION)#g' \ - -e 's#__CXX__#$(CXX)#g' \ - -e 's#__INCLUDEDIR__#$(includedir)#g' \ - -e 's#__LIBDIR__#$(libdir)#g' \ - <$(srcdir)/atf-c++/atf-c++.pc.in >atf-c++/atf-c++.pc.tmp; \ - mv atf-c++/atf-c++.pc.tmp atf-c++/atf-c++.pc - -tests_atf_c___DATA = atf-c++/Atffile \ - atf-c++/Kyuafile \ - atf-c++/macros_hpp_test.cpp \ - atf-c++/unused_test.cpp -tests_atf_c__dir = $(pkgtestsdir)/atf-c++ -EXTRA_DIST += $(tests_atf_c___DATA) - -tests_atf_c___PROGRAMS = atf-c++/atf_c++_test -atf_c___atf_c___test_SOURCES = atf-c++/atf_c++_test.cpp -atf_c___atf_c___test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___PROGRAMS += atf-c++/build_test -atf_c___build_test_SOURCES = atf-c++/build_test.cpp atf-c/h_build.h -atf_c___build_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___PROGRAMS += atf-c++/check_test -atf_c___check_test_SOURCES = atf-c++/check_test.cpp -atf_c___check_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___PROGRAMS += atf-c++/macros_test -atf_c___macros_test_SOURCES = atf-c++/macros_test.cpp -atf_c___macros_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___SCRIPTS = atf-c++/pkg_config_test -CLEANFILES += atf-c++/pkg_config_test -EXTRA_DIST += atf-c++/pkg_config_test.sh -atf-c++/pkg_config_test: $(srcdir)/atf-c++/pkg_config_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-c++/pkg_config_test.sh"; \ - dst="atf-c++/pkg_config_test"; $(BUILD_SH_TP) - -tests_atf_c___PROGRAMS += atf-c++/tests_test -atf_c___tests_test_SOURCES = atf-c++/tests_test.cpp -atf_c___tests_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -tests_atf_c___PROGRAMS += atf-c++/utils_test -atf_c___utils_test_SOURCES = atf-c++/utils_test.cpp -atf_c___utils_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) -include atf-c++/detail/Makefile.am.inc - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/atf-c++/atf-c++.3 b/unit/atf-src/atf-c++/atf-c++.3 deleted file mode 100644 index 984ec93644..0000000000 --- a/unit/atf-src/atf-c++/atf-c++.3 +++ /dev/null @@ -1,649 +0,0 @@ -.\" Copyright (c) 2008 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd October 13, 2014 -.Dt ATF-C++ 3 -.Os -.Sh NAME -.Nm atf-c++ , -.Nm ATF_ADD_TEST_CASE , -.Nm ATF_CHECK_ERRNO , -.Nm ATF_FAIL , -.Nm ATF_INIT_TEST_CASES , -.Nm ATF_PASS , -.Nm ATF_REQUIRE , -.Nm ATF_REQUIRE_EQ , -.Nm ATF_REQUIRE_ERRNO , -.Nm ATF_REQUIRE_IN , -.Nm ATF_REQUIRE_MATCH , -.Nm ATF_REQUIRE_NOT_IN , -.Nm ATF_REQUIRE_THROW , -.Nm ATF_REQUIRE_THROW_RE , -.Nm ATF_SKIP , -.Nm ATF_TEST_CASE , -.Nm ATF_TEST_CASE_BODY , -.Nm ATF_TEST_CASE_CLEANUP , -.Nm ATF_TEST_CASE_HEAD , -.Nm ATF_TEST_CASE_NAME , -.Nm ATF_TEST_CASE_USE , -.Nm ATF_TEST_CASE_WITH_CLEANUP , -.Nm ATF_TEST_CASE_WITHOUT_HEAD , -.Nm atf::utils::cat_file , -.Nm atf::utils::compare_file , -.Nm atf::utils::copy_file , -.Nm atf::utils::create_file , -.Nm atf::utils::file_exists , -.Nm atf::utils::fork , -.Nm atf::utils::grep_collection , -.Nm atf::utils::grep_file , -.Nm atf::utils::grep_string , -.Nm atf::utils::redirect , -.Nm atf::utils::wait -.Nd C++ API to write ATF-based test programs -.Sh SYNOPSIS -.In atf-c++.hpp -.Fn ATF_ADD_TEST_CASE "tcs" "name" -.Fn ATF_CHECK_ERRNO "expected_errno" "bool_expression" -.Fn ATF_FAIL "reason" -.Fn ATF_INIT_TEST_CASES "tcs" -.Fn ATF_PASS -.Fn ATF_REQUIRE "expression" -.Fn ATF_REQUIRE_EQ "expected_expression" "actual_expression" -.Fn ATF_REQUIRE_ERRNO "expected_errno" "bool_expression" -.Fn ATF_REQUIRE_IN "element" "collection" -.Fn ATF_REQUIRE_MATCH "regexp" "string_expression" -.Fn ATF_REQUIRE_NOT_IN "element" "collection" -.Fn ATF_REQUIRE_THROW "expected_exception" "statement" -.Fn ATF_REQUIRE_THROW_RE "expected_exception" "regexp" "statement" -.Fn ATF_SKIP "reason" -.Fn ATF_TEST_CASE "name" -.Fn ATF_TEST_CASE_BODY "name" -.Fn ATF_TEST_CASE_CLEANUP "name" -.Fn ATF_TEST_CASE_HEAD "name" -.Fn ATF_TEST_CASE_NAME "name" -.Fn ATF_TEST_CASE_USE "name" -.Fn ATF_TEST_CASE_WITH_CLEANUP "name" -.Fn ATF_TEST_CASE_WITHOUT_HEAD "name" -.Ft void -.Fo atf::utils::cat_file -.Fa "const std::string& path" -.Fa "const std::string& prefix" -.Fc -.Ft bool -.Fo atf::utils::compare_file -.Fa "const std::string& path" -.Fa "const std::string& contents" -.Fc -.Ft void -.Fo atf::utils::copy_file -.Fa "const std::string& source" -.Fa "const std::string& destination" -.Fc -.Ft void -.Fo atf::utils::create_file -.Fa "const std::string& path" -.Fa "const std::string& contents" -.Fc -.Ft void -.Fo atf::utils::file_exists -.Fa "const std::string& path" -.Fc -.Ft pid_t -.Fo atf::utils::fork -.Fa "void" -.Fc -.Ft bool -.Fo atf::utils::grep_collection -.Fa "const std::string& regexp" -.Fa "const Collection& collection" -.Fc -.Ft bool -.Fo atf::utils::grep_file -.Fa "const std::string& regexp" -.Fa "const std::string& path" -.Fc -.Ft bool -.Fo atf::utils::grep_string -.Fa "const std::string& regexp" -.Fa "const std::string& path" -.Fc -.Ft void -.Fo atf::utils::redirect -.Fa "const int fd" -.Fa "const std::string& path" -.Fc -.Ft void -.Fo atf::utils::wait -.Fa "const pid_t pid" -.Fa "const int expected_exit_status" -.Fa "const std::string& expected_stdout" -.Fa "const std::string& expected_stderr" -.Fc -.Sh DESCRIPTION -ATF provides a C++ programming interface to implement test programs. -C++-based test programs follow this template: -.Bd -literal -offset indent -extern "C" { -.Ns ... C-specific includes go here ... -} - -.Ns ... C++-specific includes go here ... - -#include - -ATF_TEST_CASE(tc1); -ATF_TEST_CASE_HEAD(tc1) -{ - ... first test case's header ... -} -ATF_TEST_CASE_BODY(tc1) -{ - ... first test case's body ... -} - -ATF_TEST_CASE_WITH_CLEANUP(tc2); -ATF_TEST_CASE_HEAD(tc2) -{ - ... second test case's header ... -} -ATF_TEST_CASE_BODY(tc2) -{ - ... second test case's body ... -} -ATF_TEST_CASE_CLEANUP(tc2) -{ - ... second test case's cleanup ... -} - -ATF_TEST_CASE(tc3); -ATF_TEST_CASE_BODY(tc3) -{ - ... third test case's body ... -} - -.Ns ... additional test cases ... - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, tc1); - ATF_ADD_TEST_CASE(tcs, tc2); - ATF_ADD_TEST_CASE(tcs, tc3); - ... add additional test cases ... -} -.Ed -.Ss Definition of test cases -Test cases have an identifier and are composed of three different parts: -the header, the body and an optional cleanup routine, all of which are -described in -.Xr atf-test-case 4 . -To define test cases, one can use the -.Fn ATF_TEST_CASE , -.Fn ATF_TEST_CASE_WITH_CLEANUP -or the -.Fn ATF_TEST_CASE_WITHOUT_HEAD -macros, which take a single parameter specifiying the test case's -name. -.Fn ATF_TEST_CASE , -requires to define a head and a body for the test case, -.Fn ATF_TEST_CASE_WITH_CLEANUP -requires to define a head, a body and a cleanup for the test case and -.Fn ATF_TEST_CASE_WITHOUT_HEAD -requires only a body for the test case. -It is important to note that these -.Em do not -set the test case up for execution when the program is run. -In order to do so, a later registration is needed through the -.Fn ATF_ADD_TEST_CASE -macro detailed in -.Sx Program initialization . -.Pp -Later on, one must define the three parts of the body by means of three -functions. -Their headers are given by the -.Fn ATF_TEST_CASE_HEAD , -.Fn ATF_TEST_CASE_BODY -and -.Fn ATF_TEST_CASE_CLEANUP -macros, all of which take the test case's name. -Following each of these, a block of code is expected, surrounded by the -opening and closing brackets. -.Pp -Additionally, the -.Fn ATF_TEST_CASE_NAME -macro can be used to obtain the name of the class corresponding to a -particular test case, as the name is internally manged by the library to -prevent clashes with other user identifiers. -Similarly, the -.Fn ATF_TEST_CASE_USE -macro can be executed on a particular test case to mark it as "used" and -thus prevent compiler warnings regarding unused symbols. -Note that -.Em you should never have to use these macros during regular operation. -.Ss Program initialization -The library provides a way to easily define the test program's -.Fn main -function. -You should never define one on your own, but rely on the -library to do it for you. -This is done by using the -.Fn ATF_INIT_TEST_CASES -macro, which is passed the name of the list that will hold the test cases. -This name can be whatever you want as long as it is a valid variable value. -.Pp -After the macro, you are supposed to provide the body of a function, which -should only use the -.Fn ATF_ADD_TEST_CASE -macro to register the test cases the test program will execute. -The first parameter of this macro matches the name you provided in the -former call. -.Ss Header definitions -The test case's header can define the meta-data by using the -.Fn set_md_var -method, which takes two parameters: the first one specifies the -meta-data variable to be set and the second one specifies its value. -Both of them are strings. -.Ss Configuration variables -The test case has read-only access to the current configuration variables -by means of the -.Ft bool -.Fn has_config_var -and the -.Ft std::string -.Fn get_config_var -methods, which can be called in any of the three parts of a test case. -.Ss Access to the source directory -It is possible to get the path to the test case's source directory from any -of its three components by querying the -.Sq srcdir -configuration variable. -.Ss Requiring programs -Aside from the -.Va require.progs -meta-data variable available in the header only, one can also check for -additional programs in the test case's body by using the -.Fn require_prog -function, which takes the base name or full path of a single binary. -Relative paths are forbidden. -If it is not found, the test case will be automatically skipped. -.Ss Test case finalization -The test case finalizes either when the body reaches its end, at which -point the test is assumed to have -.Em passed , -or at any explicit call to -.Fn ATF_PASS , -.Fn ATF_FAIL -or -.Fn ATF_SKIP . -These three macros terminate the execution of the test case immediately. -The cleanup routine will be processed afterwards in a completely automated -way, regardless of the test case's termination reason. -.Pp -.Fn ATF_PASS -does not take any parameters. -.Fn ATF_FAIL -and -.Fn ATF_SKIP -take a single string that describes why the test case failed or -was skipped, respectively. -It is very important to provide a clear error message in both cases so that -the user can quickly know why the test did not pass. -.Ss Expectations -Everything explained in the previous section changes when the test case -expectations are redefined by the programmer. -.Pp -Each test case has an internal state called -.Sq expect -that describes what the test case expectations are at any point in time. -The value of this property can change during execution by any of: -.Bl -tag -width indent -.It Fn expect_death "reason" -Expects the test case to exit prematurely regardless of the nature of the -exit. -.It Fn expect_exit "exitcode" "reason" -Expects the test case to exit cleanly. -If -.Va exitcode -is not -.Sq -1 , -the runtime engine will validate that the exit code of the test case -matches the one provided in this call. -Otherwise, the exact value will be ignored. -.It Fn expect_fail "reason" -Any failure (be it fatal or non-fatal) raised in this mode is recorded. -However, such failures do not report the test case as failed; instead, the -test case finalizes cleanly and is reported as -.Sq expected failure ; -this report includes the provided -.Fa reason -as part of it. -If no error is raised while running in this mode, then the test case is -reported as -.Sq failed . -.Pp -This mode is useful to reproduce actual known bugs in tests. -Whenever the developer fixes the bug later on, the test case will start -reporting a failure, signaling the developer that the test case must be -adjusted to the new conditions. -In this situation, it is useful, for example, to set -.Fa reason -as the bug number for tracking purposes. -.It Fn expect_pass -This is the normal mode of execution. -In this mode, any failure is reported as such to the user and the test case -is marked as -.Sq failed . -.It Fn expect_race "reason" -Any failure or timeout during the execution of the test case will be -considered as if a race condition has been triggered and reported as such. -If no problems arise, the test will continue execution as usual. -.It Fn expect_signal "signo" "reason" -Expects the test case to terminate due to the reception of a signal. -If -.Va signo -is not -.Sq -1 , -the runtime engine will validate that the signal that terminated the test -case matches the one provided in this call. -Otherwise, the exact value will be ignored. -.It Fn expect_timeout "reason" -Expects the test case to execute for longer than its timeout. -.El -.Ss Helper macros for common checks -The library provides several macros that are very handy in multiple -situations. -These basically check some condition after executing a given statement or -processing a given expression and, if the condition is not met, they -automatically call -.Fn ATF_FAIL -with an appropriate error message. -.Pp -.Fn ATF_REQUIRE -takes an expression and raises a failure if it evaluates to false. -.Pp -.Fn ATF_REQUIRE_EQ -takes two expressions and raises a failure if the two do not evaluate to -the same exact value. -The common style is to put the expected value in the first parameter and the -actual value in the second parameter. -.Pp -.Fn ATF_REQUIRE_IN -takes an element and a collection and validates that the element is present in -the collection. -.Pp -.Fn ATF_REQUIRE_MATCH -takes a regular expression and a string and raises a failure if the regular -expression does not match the string. -.Pp -.Fn ATF_REQUIRE_NOT_IN -takes an element and a collection and validates that the element is not present -in the collection. -.Pp -.Fn ATF_REQUIRE_THROW -takes the name of an exception and a statement and raises a failure if -the statement does not throw the specified exception. -.Fn ATF_REQUIRE_THROW_RE -takes the name of an exception, a regular expresion and a statement and raises a -failure if the statement does not throw the specified exception and if the -message of the exception does not match the regular expression. -.Pp -.Fn ATF_CHECK_ERRNO -and -.Fn ATF_REQUIRE_ERRNO -take, first, the error code that the check is expecting to find in the -.Va errno -variable and, second, a boolean expression that, if evaluates to true, -means that a call failed and -.Va errno -has to be checked against the first value. -.Ss Utility functions -The following functions are provided as part of the -.Nm -API to simplify the creation of a variety of tests. -In particular, these are useful to write tests for command-line interfaces. -.Pp -.Ft void -.Fo atf::utils::cat_file -.Fa "const std::string& path" -.Fa "const std::string& prefix" -.Fc -.Bd -ragged -offset indent -Prints the contents of -.Fa path -to the standard output, prefixing every line with the string in -.Fa prefix . -.Ed -.Pp -.Ft bool -.Fo atf::utils::compare_file -.Fa "const std::string& path" -.Fa "const std::string& contents" -.Fc -.Bd -ragged -offset indent -Returns true if the given -.Fa path -matches exactly the expected inlined -.Fa contents . -.Ed -.Pp -.Ft void -.Fo atf::utils::copy_file -.Fa "const std::string& source" -.Fa "const std::string& destination" -.Fc -.Bd -ragged -offset indent -Copies the file -.Fa source -to -.Fa destination . -The permissions of the file are preserved during the code. -.Ed -.Pp -.Ft void -.Fo atf::utils::create_file -.Fa "const std::string& path" -.Fa "const std::string& contents" -.Fc -.Bd -ragged -offset indent -Creates -.Fa file -with the text given in -.Fa contents . -.Ed -.Pp -.Ft void -.Fo atf::utils::file_exists -.Fa "const std::string& path" -.Fc -.Bd -ragged -offset indent -Checks if -.Fa path -exists. -.Ed -.Pp -.Ft pid_t -.Fo atf::utils::fork -.Fa "void" -.Fc -.Bd -ragged -offset indent -Forks a process and redirects the standard output and standard error of the -child to files for later validation with -.Fn atf::utils::wait . -Fails the test case if the fork fails, so this does not return an error. -.Ed -.Pp -.Ft bool -.Fo atf::utils::grep_collection -.Fa "const std::string& regexp" -.Fa "const Collection& collection" -.Fc -.Bd -ragged -offset indent -Searches for the regular expression -.Fa regexp -in any of the strings contained in the -.Fa collection . -This is a template that accepts any one-dimensional container of strings. -.Ed -.Pp -.Ft bool -.Fo atf::utils::grep_file -.Fa "const std::string& regexp" -.Fa "const std::string& path" -.Fc -.Bd -ragged -offset indent -Searches for the regular expression -.Fa regexp -in the file -.Fa path . -The variable arguments are used to construct the regular expression. -.Ed -.Pp -.Ft bool -.Fo atf::utils::grep_string -.Fa "const std::string& regexp" -.Fa "const std::string& str" -.Fc -.Bd -ragged -offset indent -Searches for the regular expression -.Fa regexp -in the string -.Fa str . -.Ed -.Ft void -.Fo atf::utils::redirect -.Fa "const int fd" -.Fa "const std::string& path" -.Fc -.Bd -ragged -offset indent -Redirects the given file descriptor -.Fa fd -to the file -.Fa path . -This function exits the process in case of an error and does not properly mark -the test case as failed. -As a result, it should only be used in subprocesses of the test case; specially -those spawned by -.Fn atf::utils::fork . -.Ed -.Pp -.Ft void -.Fo atf::utils::wait -.Fa "const pid_t pid" -.Fa "const int expected_exit_status" -.Fa "const std::string& expected_stdout" -.Fa "const std::string& expected_stderr" -.Fc -.Bd -ragged -offset indent -Waits and validates the result of a subprocess spawned with -.Fn atf::utils::wait . -The validation involves checking that the subprocess exited cleanly and returned -the code specified in -.Fa expected_exit_status -and that its standard output and standard error match the strings given in -.Fa expected_stdout -and -.Fa expected_stderr . -.Pp -If any of the -.Fa expected_stdout -or -.Fa expected_stderr -strings are prefixed with -.Sq save: , -then they specify the name of the file into which to store the stdout or stderr -of the subprocess, and no comparison is performed. -.Ed -.Sh ENVIRONMENT -The following variables are recognized by -.Nm -but should not be overridden other than for testing purposes: -.Pp -.Bl -tag -width ATFXBUILDXCXXFLAGSXX -compact -.It Va ATF_BUILD_CC -Path to the C compiler. -.It Va ATF_BUILD_CFLAGS -C compiler flags. -.It Va ATF_BUILD_CPP -Path to the C/C++ preprocessor. -.It Va ATF_BUILD_CPPFLAGS -C/C++ preprocessor flags. -.It Va ATF_BUILD_CXX -Path to the C++ compiler. -.It Va ATF_BUILD_CXXFLAGS -C++ compiler flags. -.El -.Sh EXAMPLES -The following shows a complete test program with a single test case that -validates the addition operator: -.Bd -literal -offset indent -#include - -ATF_TEST_CASE(addition); -ATF_TEST_CASE_HEAD(addition) -{ - set_md_var("descr", "Sample tests for the addition operator"); -} -ATF_TEST_CASE_BODY(addition) -{ - ATF_REQUIRE_EQ(0, 0 + 0); - ATF_REQUIRE_EQ(1, 0 + 1); - ATF_REQUIRE_EQ(1, 1 + 0); - - ATF_REQUIRE_EQ(2, 1 + 1); - - ATF_REQUIRE_EQ(300, 100 + 200); -} - -ATF_TEST_CASE(open_failure); -ATF_TEST_CASE_HEAD(open_failure) -{ - set_md_var("descr", "Sample tests for the open function"); -} -ATF_TEST_CASE_BODY(open_failure) -{ - ATF_REQUIRE_ERRNO(ENOENT, open("non-existent", O_RDONLY) == -1); -} - -ATF_TEST_CASE(known_bug); -ATF_TEST_CASE_HEAD(known_bug) -{ - set_md_var("descr", "Reproduces a known bug"); -} -ATF_TEST_CASE_BODY(known_bug) -{ - expect_fail("See bug number foo/bar"); - ATF_REQUIRE_EQ(3, 1 + 1); - expect_pass(); - ATF_REQUIRE_EQ(3, 1 + 2); -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, addition); - ATF_ADD_TEST_CASE(tcs, open_failure); - ATF_ADD_TEST_CASE(tcs, known_bug); -} -.Ed -.Sh SEE ALSO -.Xr atf-test-program 1 , -.Xr atf-test-case 4 diff --git a/unit/atf-src/atf-c++/atf-c++.m4 b/unit/atf-src/atf-c++/atf-c++.m4 deleted file mode 100644 index e142b564ab..0000000000 --- a/unit/atf-src/atf-c++/atf-c++.m4 +++ /dev/null @@ -1,44 +0,0 @@ -dnl Copyright 2011 Google Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions are -dnl met: -dnl -dnl * Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl * Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl * Neither the name of Google Inc. nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl ATF_CHECK_CXX([version-spec]) -dnl -dnl Checks if atf-c++ is present. If version-spec is provided, ensures that -dnl the installed version of atf-sh matches the required version. This -dnl argument must be something like '>= 0.14' and accepts any version -dnl specification supported by pkg-config. -dnl -dnl Defines and substitutes ATF_CXX_CFLAGS and ATF_CXX_LIBS with the compiler -dnl and linker flags need to build against atf-c++. -AC_DEFUN([ATF_CHECK_CXX], [ - spec="atf-c++[]m4_default_nblank([ $1], [])" - _ATF_CHECK_ARG_WITH( - [PKG_CHECK_MODULES([ATF_CXX], [${spec}], - [found=yes found_atf_cxx=yes], [found=no])], - [required ${spec} not found]) -]) diff --git a/unit/atf-src/atf-c++/atf-c++.pc.in b/unit/atf-src/atf-c++/atf-c++.pc.in deleted file mode 100644 index f366bb016d..0000000000 --- a/unit/atf-src/atf-c++/atf-c++.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -# ATF pkg-config file - -cxx=__CXX__ -includedir=__INCLUDEDIR__ -libdir=__LIBDIR__ - -Name: atf-c++ -Description: Automated Testing Framework (C++ binding) -Version: __ATF_VERSION__ -Cflags: -I${includedir} -Libs: -L${libdir} -latf-c++ -latf-c diff --git a/unit/atf-src/atf-c++/atf_c++_test.cpp b/unit/atf-src/atf-c++/atf_c++_test.cpp deleted file mode 100644 index cc708863f6..0000000000 --- a/unit/atf-src/atf-c++/atf_c++_test.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include - -#include "atf-c++/detail/test_helpers.hpp" - -// ------------------------------------------------------------------------ -// Tests cases for the header file. -// ------------------------------------------------------------------------ - -HEADER_TC(include, "atf-c++.hpp"); - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the header file. - ATF_ADD_TEST_CASE(tcs, include); -} diff --git a/unit/atf-src/atf-c++/build.cpp b/unit/atf-src/atf-c++/build.cpp deleted file mode 100644 index f2f80f4eb4..0000000000 --- a/unit/atf-src/atf-c++/build.cpp +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/build.hpp" - -extern "C" { -#include "atf-c/build.h" -#include "atf-c/error.h" -#include "atf-c/utils.h" -} - -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/process.hpp" - -namespace impl = atf::build; -#define IMPL_NAME "atf::build" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -inline -atf::process::argv_array -cargv_to_argv(const atf_list_t* l) -{ - std::vector< const char* > aux; - - atf_list_citer_t iter; - atf_list_for_each_c(iter, l) - aux.push_back(static_cast< const char* >(atf_list_citer_data(iter))); - - return atf::process::argv_array(aux); -} - -inline -atf::process::argv_array -cargv_to_argv_and_free(char** l) -{ - try { - atf::process::argv_array argv((const char* const*)l); - atf_utils_free_charpp(l); - return argv; - } catch (...) { - atf_utils_free_charpp(l); - throw; - } -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -atf::process::argv_array -impl::c_o(const std::string& sfile, const std::string& ofile, - const atf::process::argv_array& optargs) -{ - char** l; - - atf_error_t err = atf_build_c_o(sfile.c_str(), ofile.c_str(), - optargs.exec_argv(), &l); - if (atf_is_error(err)) - throw_atf_error(err); - - return cargv_to_argv_and_free(l); -} - -atf::process::argv_array -impl::cpp(const std::string& sfile, const std::string& ofile, - const atf::process::argv_array& optargs) -{ - char** l; - - atf_error_t err = atf_build_cpp(sfile.c_str(), ofile.c_str(), - optargs.exec_argv(), &l); - if (atf_is_error(err)) - throw_atf_error(err); - - return cargv_to_argv_and_free(l); -} - -atf::process::argv_array -impl::cxx_o(const std::string& sfile, const std::string& ofile, - const atf::process::argv_array& optargs) -{ - char** l; - - atf_error_t err = atf_build_cxx_o(sfile.c_str(), ofile.c_str(), - optargs.exec_argv(), &l); - if (atf_is_error(err)) - throw_atf_error(err); - - return cargv_to_argv_and_free(l); -} diff --git a/unit/atf-src/atf-c++/build.hpp b/unit/atf-src/atf-c++/build.hpp deleted file mode 100644 index 7aa5a978d9..0000000000 --- a/unit/atf-src/atf-c++/build.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_BUILD_HPP) -#define ATF_CXX_BUILD_HPP - -#include - -namespace atf { - -namespace process { -class argv_array; -} // namespace process - -namespace build { - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -process::argv_array c_o(const std::string&, const std::string&, - const process::argv_array&); -process::argv_array cpp(const std::string&, const std::string&, - const process::argv_array&); -process::argv_array cxx_o(const std::string&, const std::string&, - const process::argv_array&); - -} // namespace build -} // namespace atf - -#endif // !defined(ATF_CXX_BUILD_HPP) diff --git a/unit/atf-src/atf-c++/build_test.cpp b/unit/atf-src/atf-c++/build_test.cpp deleted file mode 100644 index 0a5ab9668a..0000000000 --- a/unit/atf-src/atf-c++/build_test.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/build.hpp" - -#include -#include - -#include - -extern "C" { -#include "atf-c/h_build.h" -} - -#include "atf-c++/detail/env.hpp" -#include "atf-c++/detail/process.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -template< class C > -void -print_col(const char* prefix, const C& c) -{ - std::cout << prefix << ":"; - for (typename C::const_iterator iter = c.begin(); iter != c.end(); - iter++) - std::cout << " '" << *iter << "'"; - std::cout << "\n"; -} - -static -void -print_array(const char* prefix, const char* const* a) -{ - std::cout << prefix << ":"; - for (; *a != NULL; a++) - std::cout << " '" << *a << "'"; - std::cout << "\n"; -} - -static -void -verbose_set_env(const char *var, const char *val) -{ - std::cout << "Setting " << var << " to '" << val << "'\n"; - atf::env::set(var, val); -} - -static -bool -equal_argvs(const atf::process::argv_array& aa, const char* const* array) -{ - bool equal = true; - - atf::process::argv_array::size_type i = 0; - while (equal && (i < aa.size() && array[i] != NULL)) { - if (std::strcmp(aa[i], array[i]) != 0) - equal = false; - else - i++; - } - - if (equal && (i < aa.size() || array[i] != NULL)) - equal = false; - - return equal; -} - -static -void -check_equal_argvs(const atf::process::argv_array& aa, const char* const* array) -{ - print_array("Expected arguments", array); - print_col("Arguments returned", aa); - - if (!equal_argvs(aa, array)) - ATF_FAIL("The constructed argv differs from the expected values"); -} - -// ------------------------------------------------------------------------ -// Internal test cases. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(equal_argvs); -ATF_TEST_CASE_HEAD(equal_argvs) -{ - set_md_var("descr", "Tests the test case internal equal_argvs function"); -} -ATF_TEST_CASE_BODY(equal_argvs) -{ - { - const char* const array[] = { NULL }; - const char* const argv[] = { NULL }; - - ATF_REQUIRE(equal_argvs(atf::process::argv_array(argv), array)); - } - - { - const char* const array[] = { NULL }; - const char* const argv[] = { "foo", NULL }; - - ATF_REQUIRE(!equal_argvs(atf::process::argv_array(argv), array)); - } - - { - const char* const array[] = { "foo", NULL }; - const char* const argv[] = { NULL }; - - ATF_REQUIRE(!equal_argvs(atf::process::argv_array(argv), array)); - } - - { - const char* const array[] = { "foo", NULL }; - const char* const argv[] = { "foo", NULL }; - - ATF_REQUIRE(equal_argvs(atf::process::argv_array(argv), array)); - } -} - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(c_o); -ATF_TEST_CASE_HEAD(c_o) -{ - set_md_var("descr", "Tests the c_o function"); -} -ATF_TEST_CASE_BODY(c_o) -{ - for (struct c_o_test* test = c_o_tests; test->expargv[0] != NULL; - test++) { - std::cout << "> Test: " << test->msg << "\n"; - - verbose_set_env("ATF_BUILD_CC", test->cc); - verbose_set_env("ATF_BUILD_CFLAGS", test->cflags); - verbose_set_env("ATF_BUILD_CPPFLAGS", test->cppflags); - - atf::process::argv_array argv = - atf::build::c_o(test->sfile, test->ofile, - atf::process::argv_array(test->optargs)); - check_equal_argvs(argv, test->expargv); - } -} - -ATF_TEST_CASE(cpp); -ATF_TEST_CASE_HEAD(cpp) -{ - set_md_var("descr", "Tests the cpp function"); -} -ATF_TEST_CASE_BODY(cpp) -{ - for (struct cpp_test* test = cpp_tests; test->expargv[0] != NULL; - test++) { - std::cout << "> Test: " << test->msg << "\n"; - - verbose_set_env("ATF_BUILD_CPP", test->cpp); - verbose_set_env("ATF_BUILD_CPPFLAGS", test->cppflags); - - atf::process::argv_array argv = - atf::build::cpp(test->sfile, test->ofile, - atf::process::argv_array(test->optargs)); - check_equal_argvs(argv, test->expargv); - } -} - -ATF_TEST_CASE(cxx_o); -ATF_TEST_CASE_HEAD(cxx_o) -{ - set_md_var("descr", "Tests the cxx_o function"); -} -ATF_TEST_CASE_BODY(cxx_o) -{ - for (struct cxx_o_test* test = cxx_o_tests; test->expargv[0] != NULL; - test++) { - std::cout << "> Test: " << test->msg << "\n"; - - verbose_set_env("ATF_BUILD_CXX", test->cxx); - verbose_set_env("ATF_BUILD_CXXFLAGS", test->cxxflags); - verbose_set_env("ATF_BUILD_CPPFLAGS", test->cppflags); - - atf::process::argv_array argv = - atf::build::cxx_o(test->sfile, test->ofile, - atf::process::argv_array(test->optargs)); - check_equal_argvs(argv, test->expargv); - } -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the internal test cases. - ATF_ADD_TEST_CASE(tcs, equal_argvs); - - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, c_o); - ATF_ADD_TEST_CASE(tcs, cpp); - ATF_ADD_TEST_CASE(tcs, cxx_o); -} diff --git a/unit/atf-src/atf-c++/check.cpp b/unit/atf-src/atf-c++/check.cpp deleted file mode 100644 index e4d7db4d49..0000000000 --- a/unit/atf-src/atf-c++/check.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/check.hpp" - -#include - -extern "C" { -#include "atf-c/build.h" -#include "atf-c/error.h" -} - -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/process.hpp" -#include "atf-c++/detail/sanity.hpp" - -namespace impl = atf::check; -#define IMPL_NAME "atf::check" - -// ------------------------------------------------------------------------ -// The "check_result" class. -// ------------------------------------------------------------------------ - -impl::check_result::check_result(const atf_check_result_t* result) -{ - std::memcpy(&m_result, result, sizeof(m_result)); -} - -impl::check_result::~check_result(void) -{ - atf_check_result_fini(&m_result); -} - -bool -impl::check_result::exited(void) - const -{ - return atf_check_result_exited(&m_result); -} - -int -impl::check_result::exitcode(void) - const -{ - PRE(exited()); - return atf_check_result_exitcode(&m_result); -} - -bool -impl::check_result::signaled(void) - const -{ - return atf_check_result_signaled(&m_result); -} - -int -impl::check_result::termsig(void) - const -{ - PRE(signaled()); - return atf_check_result_termsig(&m_result); -} - -const std::string -impl::check_result::stdout_path(void) const -{ - return atf_check_result_stdout(&m_result); -} - -const std::string -impl::check_result::stderr_path(void) const -{ - return atf_check_result_stderr(&m_result); -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -bool -impl::build_c_o(const std::string& sfile, const std::string& ofile, - const atf::process::argv_array& optargs) -{ - bool success; - - atf_error_t err = atf_check_build_c_o(sfile.c_str(), ofile.c_str(), - optargs.exec_argv(), &success); - if (atf_is_error(err)) - throw_atf_error(err); - - return success; -} - -bool -impl::build_cpp(const std::string& sfile, const std::string& ofile, - const atf::process::argv_array& optargs) -{ - bool success; - - atf_error_t err = atf_check_build_cpp(sfile.c_str(), ofile.c_str(), - optargs.exec_argv(), &success); - if (atf_is_error(err)) - throw_atf_error(err); - - return success; -} - -bool -impl::build_cxx_o(const std::string& sfile, const std::string& ofile, - const atf::process::argv_array& optargs) -{ - bool success; - - atf_error_t err = atf_check_build_cxx_o(sfile.c_str(), ofile.c_str(), - optargs.exec_argv(), &success); - if (atf_is_error(err)) - throw_atf_error(err); - - return success; -} - -std::auto_ptr< impl::check_result > -impl::exec(const atf::process::argv_array& argva) -{ - atf_check_result_t result; - - atf_error_t err = atf_check_exec_array(argva.exec_argv(), &result); - if (atf_is_error(err)) - throw_atf_error(err); - - return std::auto_ptr< impl::check_result >(new impl::check_result(&result)); -} diff --git a/unit/atf-src/atf-c++/check.hpp b/unit/atf-src/atf-c++/check.hpp deleted file mode 100644 index 0144dedb28..0000000000 --- a/unit/atf-src/atf-c++/check.hpp +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_CHECK_HPP) -#define ATF_CXX_CHECK_HPP - -extern "C" { -#include -} - -#include -#include -#include -#include - -namespace atf { - -namespace process { -class argv_array; -} // namespace process - -namespace check { - -// ------------------------------------------------------------------------ -// The "check_result" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A class that contains results of executed command. -//! -//! The check_result class holds information about results -//! of executing arbitrary command and manages files containing -//! its output. -//! -class check_result { - // Non-copyable. - check_result(const check_result&); - check_result& operator=(const check_result&); - - //! - //! \brief Internal representation of a result. - //! - atf_check_result_t m_result; - - //! - //! \brief Constructs a results object and grabs ownership of the - //! parameter passed in. - //! - check_result(const atf_check_result_t* result); - - friend check_result test_constructor(const char* const*); - friend std::auto_ptr< check_result > exec(const atf::process::argv_array&); - -public: - //! - //! \brief Destroys object and removes all managed files. - //! - ~check_result(void); - - //! - //! \brief Returns whether the command exited correctly or not. - //! - bool exited(void) const; - - //! - //! \brief Returns command's exit status. - //! - int exitcode(void) const; - - //! - //! \brief Returns whether the command received a signal or not. - //! - bool signaled(void) const; - - //! - //! \brief Returns the signal that terminated the command. - //! - int termsig(void) const; - - //! - //! \brief Returns the path to file contaning command's stdout. - //! - const std::string stdout_path(void) const; - - //! - //! \brief Returns the path to file contaning command's stderr. - //! - const std::string stderr_path(void) const; -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -bool build_c_o(const std::string&, const std::string&, - const atf::process::argv_array&); -bool build_cpp(const std::string&, const std::string&, - const atf::process::argv_array&); -bool build_cxx_o(const std::string&, const std::string&, - const atf::process::argv_array&); -std::auto_ptr< check_result > exec(const atf::process::argv_array&); - -// Useful for testing only. -check_result test_constructor(void); - -} // namespace check -} // namespace atf - -#endif // !defined(ATF_CXX_CHECK_HPP) diff --git a/unit/atf-src/atf-c++/check_test.cpp b/unit/atf-src/atf-c++/check_test.cpp deleted file mode 100644 index 7baf3fa196..0000000000 --- a/unit/atf-src/atf-c++/check_test.cpp +++ /dev/null @@ -1,394 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/check.hpp" - -extern "C" { -#include -#include -#include -} - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c++/detail/fs.hpp" -#include "atf-c++/detail/process.hpp" -#include "atf-c++/detail/test_helpers.hpp" -#include "atf-c++/detail/text.hpp" -#include "atf-c++/utils.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -std::auto_ptr< atf::check::check_result > -do_exec(const atf::tests::tc* tc, const char* helper_name) -{ - std::vector< std::string > argv; - argv.push_back(get_process_helpers_path(*tc, false).str()); - argv.push_back(helper_name); - std::cout << "Executing " << argv[0] << " " << argv[1] << "\n"; - - atf::process::argv_array argva(argv); - return atf::check::exec(argva); -} - -static -std::auto_ptr< atf::check::check_result > -do_exec(const atf::tests::tc* tc, const char* helper_name, const char *carg2) -{ - std::vector< std::string > argv; - argv.push_back(get_process_helpers_path(*tc, false).str()); - argv.push_back(helper_name); - argv.push_back(carg2); - std::cout << "Executing " << argv[0] << " " << argv[1] << " " - << argv[2] << "\n"; - - atf::process::argv_array argva(argv); - return atf::check::exec(argva); -} - -// ------------------------------------------------------------------------ -// Helper test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(h_build_c_o_ok); -ATF_TEST_CASE_HEAD(h_build_c_o_ok) -{ - set_md_var("descr", "Helper test case for build_c_o"); -} -ATF_TEST_CASE_BODY(h_build_c_o_ok) -{ - std::ofstream sfile("test.c"); - sfile << "#include \n"; - sfile.close(); - - ATF_REQUIRE(atf::check::build_c_o("test.c", "test.o", - atf::process::argv_array())); -} - -ATF_TEST_CASE(h_build_c_o_fail); -ATF_TEST_CASE_HEAD(h_build_c_o_fail) -{ - set_md_var("descr", "Helper test case for build_c_o"); -} -ATF_TEST_CASE_BODY(h_build_c_o_fail) -{ - std::ofstream sfile("test.c"); - sfile << "void foo(void) { int a = UNDEFINED_SYMBOL; }\n"; - sfile.close(); - - ATF_REQUIRE(!atf::check::build_c_o("test.c", "test.o", - atf::process::argv_array())); -} - -ATF_TEST_CASE(h_build_cpp_ok); -ATF_TEST_CASE_HEAD(h_build_cpp_ok) -{ - set_md_var("descr", "Helper test case for build_cpp"); -} -ATF_TEST_CASE_BODY(h_build_cpp_ok) -{ - std::ofstream sfile("test.c"); - sfile << "#define A foo\n"; - sfile << "#define B bar\n"; - sfile << "A B\n"; - sfile.close(); - - ATF_REQUIRE(atf::check::build_cpp("test.c", "test.p", - atf::process::argv_array())); -} - -ATF_TEST_CASE(h_build_cpp_fail); -ATF_TEST_CASE_HEAD(h_build_cpp_fail) -{ - set_md_var("descr", "Helper test case for build_cpp"); -} -ATF_TEST_CASE_BODY(h_build_cpp_fail) -{ - std::ofstream sfile("test.c"); - sfile << "#include \"./non-existent.h\"\n"; - sfile.close(); - - ATF_REQUIRE(!atf::check::build_cpp("test.c", "test.p", - atf::process::argv_array())); -} - -ATF_TEST_CASE(h_build_cxx_o_ok); -ATF_TEST_CASE_HEAD(h_build_cxx_o_ok) -{ - set_md_var("descr", "Helper test case for build_cxx_o"); -} -ATF_TEST_CASE_BODY(h_build_cxx_o_ok) -{ - std::ofstream sfile("test.cpp"); - sfile << "#include \n"; - sfile.close(); - - ATF_REQUIRE(atf::check::build_cxx_o("test.cpp", "test.o", - atf::process::argv_array())); -} - -ATF_TEST_CASE(h_build_cxx_o_fail); -ATF_TEST_CASE_HEAD(h_build_cxx_o_fail) -{ - set_md_var("descr", "Helper test case for build_cxx_o"); -} -ATF_TEST_CASE_BODY(h_build_cxx_o_fail) -{ - std::ofstream sfile("test.cpp"); - sfile << "void foo(void) { int a = UNDEFINED_SYMBOL; }\n"; - sfile.close(); - - ATF_REQUIRE(!atf::check::build_cxx_o("test.cpp", "test.o", - atf::process::argv_array())); -} - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(build_c_o); -ATF_TEST_CASE_HEAD(build_c_o) -{ - set_md_var("descr", "Tests the build_c_o function"); -} -ATF_TEST_CASE_BODY(build_c_o) -{ - ATF_TEST_CASE_USE(h_build_c_o_ok); - run_h_tc< ATF_TEST_CASE_NAME(h_build_c_o_ok) >(); - ATF_REQUIRE(atf::utils::grep_file("-o test.o", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("-c test.c", "stdout")); - - ATF_TEST_CASE_USE(h_build_c_o_fail); - run_h_tc< ATF_TEST_CASE_NAME(h_build_c_o_fail) >(); - ATF_REQUIRE(atf::utils::grep_file("-o test.o", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("-c test.c", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("test.c", "stderr")); - ATF_REQUIRE(atf::utils::grep_file("UNDEFINED_SYMBOL", "stderr")); -} - -ATF_TEST_CASE(build_cpp); -ATF_TEST_CASE_HEAD(build_cpp) -{ - set_md_var("descr", "Tests the build_cpp function"); -} -ATF_TEST_CASE_BODY(build_cpp) -{ - ATF_TEST_CASE_USE(h_build_cpp_ok); - run_h_tc< ATF_TEST_CASE_NAME(h_build_cpp_ok) >(); - ATF_REQUIRE(atf::utils::grep_file("-o.*test.p", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("test.c", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("foo bar", "test.p")); - - ATF_TEST_CASE_USE(h_build_cpp_fail); - run_h_tc< ATF_TEST_CASE_NAME(h_build_cpp_fail) >(); - ATF_REQUIRE(atf::utils::grep_file("-o test.p", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("test.c", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("test.c", "stderr")); - ATF_REQUIRE(atf::utils::grep_file("non-existent.h", "stderr")); -} - -ATF_TEST_CASE(build_cxx_o); -ATF_TEST_CASE_HEAD(build_cxx_o) -{ - set_md_var("descr", "Tests the build_cxx_o function"); -} -ATF_TEST_CASE_BODY(build_cxx_o) -{ - ATF_TEST_CASE_USE(h_build_cxx_o_ok); - run_h_tc< ATF_TEST_CASE_NAME(h_build_cxx_o_ok) >(); - ATF_REQUIRE(atf::utils::grep_file("-o test.o", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("-c test.cpp", "stdout")); - - ATF_TEST_CASE_USE(h_build_cxx_o_fail); - run_h_tc< ATF_TEST_CASE_NAME(h_build_cxx_o_fail) >(); - ATF_REQUIRE(atf::utils::grep_file("-o test.o", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("-c test.cpp", "stdout")); - ATF_REQUIRE(atf::utils::grep_file("test.cpp", "stderr")); - ATF_REQUIRE(atf::utils::grep_file("UNDEFINED_SYMBOL", "stderr")); -} - -ATF_TEST_CASE(exec_cleanup); -ATF_TEST_CASE_HEAD(exec_cleanup) -{ - set_md_var("descr", "Tests that exec properly cleans up the temporary " - "files it creates"); -} -ATF_TEST_CASE_BODY(exec_cleanup) -{ - std::auto_ptr< atf::fs::path > out; - std::auto_ptr< atf::fs::path > err; - - { - std::auto_ptr< atf::check::check_result > r = - do_exec(this, "exit-success"); - out.reset(new atf::fs::path(r->stdout_path())); - err.reset(new atf::fs::path(r->stderr_path())); - ATF_REQUIRE(atf::fs::exists(*out.get())); - ATF_REQUIRE(atf::fs::exists(*err.get())); - } - ATF_REQUIRE(!atf::fs::exists(*out.get())); - ATF_REQUIRE(!atf::fs::exists(*err.get())); -} - -ATF_TEST_CASE(exec_exitstatus); -ATF_TEST_CASE_HEAD(exec_exitstatus) -{ - set_md_var("descr", "Tests that exec properly captures the exit " - "status of the executed command"); -} -ATF_TEST_CASE_BODY(exec_exitstatus) -{ - { - std::auto_ptr< atf::check::check_result > r = - do_exec(this, "exit-success"); - ATF_REQUIRE(r->exited()); - ATF_REQUIRE(!r->signaled()); - ATF_REQUIRE_EQ(r->exitcode(), EXIT_SUCCESS); - } - - { - std::auto_ptr< atf::check::check_result > r = - do_exec(this, "exit-failure"); - ATF_REQUIRE(r->exited()); - ATF_REQUIRE(!r->signaled()); - ATF_REQUIRE_EQ(r->exitcode(), EXIT_FAILURE); - } - - { - std::auto_ptr< atf::check::check_result > r = - do_exec(this, "exit-signal"); - ATF_REQUIRE(!r->exited()); - ATF_REQUIRE(r->signaled()); - ATF_REQUIRE_EQ(r->termsig(), SIGKILL); - } -} - -static -void -check_lines(const std::string& path, const char* outname, - const char* resname) -{ - std::ifstream f(path.c_str()); - ATF_REQUIRE(f); - - std::string line; - std::getline(f, line); - ATF_REQUIRE_EQ(line, std::string("Line 1 to ") + outname + " for " + - resname); - std::getline(f, line); - ATF_REQUIRE_EQ(line, std::string("Line 2 to ") + outname + " for " + - resname); -} - -ATF_TEST_CASE(exec_stdout_stderr); -ATF_TEST_CASE_HEAD(exec_stdout_stderr) -{ - set_md_var("descr", "Tests that exec properly captures the stdout " - "and stderr streams of the child process"); -} -ATF_TEST_CASE_BODY(exec_stdout_stderr) -{ - std::auto_ptr< atf::check::check_result > r1 = - do_exec(this, "stdout-stderr", "result1"); - ATF_REQUIRE(r1->exited()); - ATF_REQUIRE_EQ(r1->exitcode(), EXIT_SUCCESS); - - std::auto_ptr< atf::check::check_result > r2 = - do_exec(this, "stdout-stderr", "result2"); - ATF_REQUIRE(r2->exited()); - ATF_REQUIRE_EQ(r2->exitcode(), EXIT_SUCCESS); - - const std::string out1 = r1->stdout_path(); - const std::string out2 = r2->stdout_path(); - const std::string err1 = r1->stderr_path(); - const std::string err2 = r2->stderr_path(); - - ATF_REQUIRE(out1.find("check.XXXXXX") == std::string::npos); - ATF_REQUIRE(out2.find("check.XXXXXX") == std::string::npos); - ATF_REQUIRE(err1.find("check.XXXXXX") == std::string::npos); - ATF_REQUIRE(err2.find("check.XXXXXX") == std::string::npos); - - ATF_REQUIRE(out1.find("/check") != std::string::npos); - ATF_REQUIRE(out2.find("/check") != std::string::npos); - ATF_REQUIRE(err1.find("/check") != std::string::npos); - ATF_REQUIRE(err2.find("/check") != std::string::npos); - - ATF_REQUIRE(out1.find("/stdout") != std::string::npos); - ATF_REQUIRE(out2.find("/stdout") != std::string::npos); - ATF_REQUIRE(err1.find("/stderr") != std::string::npos); - ATF_REQUIRE(err2.find("/stderr") != std::string::npos); - - ATF_REQUIRE(out1 != out2); - ATF_REQUIRE(err1 != err2); - - check_lines(out1, "stdout", "result1"); - check_lines(out2, "stdout", "result2"); - check_lines(err1, "stderr", "result1"); - check_lines(err2, "stderr", "result2"); -} - -ATF_TEST_CASE(exec_unknown); -ATF_TEST_CASE_HEAD(exec_unknown) -{ - set_md_var("descr", "Tests that running a non-existing binary " - "is handled correctly"); -} -ATF_TEST_CASE_BODY(exec_unknown) -{ - std::vector< std::string > argv; - argv.push_back("/foo/bar/non-existent"); - - atf::process::argv_array argva(argv); - std::auto_ptr< atf::check::check_result > r = atf::check::exec(argva); - ATF_REQUIRE(r->exited()); - ATF_REQUIRE_EQ(r->exitcode(), 127); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, build_c_o); - ATF_ADD_TEST_CASE(tcs, build_cpp); - ATF_ADD_TEST_CASE(tcs, build_cxx_o); - ATF_ADD_TEST_CASE(tcs, exec_cleanup); - ATF_ADD_TEST_CASE(tcs, exec_exitstatus); - ATF_ADD_TEST_CASE(tcs, exec_stdout_stderr); - ATF_ADD_TEST_CASE(tcs, exec_unknown); -} diff --git a/unit/atf-src/atf-c++/detail/Atffile b/unit/atf-src/atf-c++/detail/Atffile deleted file mode 100644 index 5cd6c57829..0000000000 --- a/unit/atf-src/atf-c++/detail/Atffile +++ /dev/null @@ -1,10 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: application_test -tp: auto_array_test -tp: env_test -tp: exceptions_test -tp: fs_test -tp: text_test diff --git a/unit/atf-src/atf-c++/detail/Kyuafile b/unit/atf-src/atf-c++/detail/Kyuafile deleted file mode 100644 index fc799e64df..0000000000 --- a/unit/atf-src/atf-c++/detail/Kyuafile +++ /dev/null @@ -1,11 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="application_test"} -atf_test_program{name="auto_array_test"} -atf_test_program{name="env_test"} -atf_test_program{name="exceptions_test"} -atf_test_program{name="fs_test"} -atf_test_program{name="process_test"} -atf_test_program{name="text_test"} diff --git a/unit/atf-src/atf-c++/detail/Makefile.am.inc b/unit/atf-src/atf-c++/detail/Makefile.am.inc deleted file mode 100644 index 5aace7009a..0000000000 --- a/unit/atf-src/atf-c++/detail/Makefile.am.inc +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -libatf_c___la_SOURCES += atf-c++/detail/application.cpp \ - atf-c++/detail/application.hpp \ - atf-c++/detail/auto_array.hpp \ - atf-c++/detail/env.cpp \ - atf-c++/detail/env.hpp \ - atf-c++/detail/exceptions.cpp \ - atf-c++/detail/exceptions.hpp \ - atf-c++/detail/fs.cpp \ - atf-c++/detail/fs.hpp \ - atf-c++/detail/process.cpp \ - atf-c++/detail/process.hpp \ - atf-c++/detail/sanity.hpp \ - atf-c++/detail/text.cpp \ - atf-c++/detail/text.hpp - -tests_atf_c___detail_DATA = atf-c++/detail/Atffile \ - atf-c++/detail/Kyuafile -tests_atf_c___detaildir = $(pkgtestsdir)/atf-c++/detail -EXTRA_DIST += $(tests_atf_c___detail_DATA) - -noinst_LTLIBRARIES += atf-c++/detail/libtest_helpers.la -atf_c___detail_libtest_helpers_la_SOURCES = atf-c++/detail/test_helpers.cpp \ - atf-c++/detail/test_helpers.hpp -atf_c___detail_libtest_helpers_la_CPPFLAGS = -DATF_INCLUDEDIR=\"$(includedir)\" - -tests_atf_c___detail_PROGRAMS = atf-c++/detail/application_test -atf_c___detail_application_test_SOURCES = atf-c++/detail/application_test.cpp -atf_c___detail_application_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/auto_array_test -atf_c___detail_auto_array_test_SOURCES = atf-c++/detail/auto_array_test.cpp -atf_c___detail_auto_array_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/env_test -atf_c___detail_env_test_SOURCES = atf-c++/detail/env_test.cpp -atf_c___detail_env_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/exceptions_test -atf_c___detail_exceptions_test_SOURCES = atf-c++/detail/exceptions_test.cpp -atf_c___detail_exceptions_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/fs_test -atf_c___detail_fs_test_SOURCES = atf-c++/detail/fs_test.cpp -atf_c___detail_fs_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/process_test -atf_c___detail_process_test_SOURCES = atf-c++/detail/process_test.cpp -atf_c___detail_process_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/text_test -atf_c___detail_text_test_SOURCES = atf-c++/detail/text_test.cpp -atf_c___detail_text_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS) - -tests_atf_c___detail_PROGRAMS += atf-c++/detail/version_helper -atf_c___detail_version_helper_SOURCES = atf-c++/detail/version_helper.cpp - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/atf-c++/detail/application.cpp b/unit/atf-src/atf-c++/detail/application.cpp deleted file mode 100644 index 37086eb3ae..0000000000 --- a/unit/atf-src/atf-c++/detail/application.cpp +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/application.hpp" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -} - -#include -#include -#include -#include -#include - -extern "C" { -#include "atf-c/defs.h" -} - -#include "atf-c++/detail/sanity.hpp" - -#if !defined(HAVE_VSNPRINTF_IN_STD) -namespace std { -using ::vsnprintf; -} -#endif // !defined(HAVE_VSNPRINTF_IN_STD) - -namespace impl = atf::application; -#define IMPL_NAME "atf::application" - -// ------------------------------------------------------------------------ -// The "usage_error" class. -// ------------------------------------------------------------------------ - -impl::usage_error::usage_error(const char *fmt, ...) - throw() : - std::runtime_error("usage_error; message unformatted") -{ - va_list ap; - - va_start(ap, fmt); - std::vsnprintf(m_text, sizeof(m_text), fmt, ap); - va_end(ap); -} - -impl::usage_error::~usage_error(void) - throw() -{ -} - -const char* -impl::usage_error::what(void) - const throw() -{ - return m_text; -} - -// ------------------------------------------------------------------------ -// The "application" class. -// ------------------------------------------------------------------------ - -impl::option::option(char ch, - const std::string& a, - const std::string& desc) : - m_character(ch), - m_argument(a), - m_description(desc) -{ -} - -bool -impl::option::operator<(const impl::option& o) - const -{ - return m_character < o.m_character; -} - -impl::app::app(const std::string& description, - const std::string& manpage) : - m_argc(-1), - m_argv(NULL), - m_prog_name(NULL), - m_description(description), - m_manpage(manpage) -{ -} - -impl::app::~app(void) -{ -} - -bool -impl::app::inited(void) -{ - return m_argc != -1; -} - -impl::app::options_set -impl::app::options(void) -{ - return specific_options(); -} - -std::string -impl::app::specific_args(void) - const -{ - return ""; -} - -impl::app::options_set -impl::app::specific_options(void) - const -{ - return options_set(); -} - -void -impl::app::process_option(int ch ATF_DEFS_ATTRIBUTE_UNUSED, - const char* arg ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::app::process_options(void) -{ - PRE(inited()); - - std::string optstr; -#if defined(HAVE_GNU_GETOPT) - optstr += '+'; // Turn on POSIX behavior. -#endif - optstr += ':'; - { - options_set opts = options(); - for (options_set::const_iterator iter = opts.begin(); - iter != opts.end(); iter++) { - const option& opt = (*iter); - - optstr += opt.m_character; - if (!opt.m_argument.empty()) - optstr += ':'; - } - } - - int ch; - const int old_opterr = ::opterr; - ::opterr = 0; - while ((ch = ::getopt(m_argc, m_argv, optstr.c_str())) != -1) { - switch (ch) { - case ':': - throw usage_error("Option -%c requires an argument.", - ::optopt); - - case '?': - throw usage_error("Unknown option -%c.", ::optopt); - - default: - process_option(ch, ::optarg); - } - } - m_argc -= ::optind; - m_argv += ::optind; - - // Clear getopt state just in case the test wants to use it. - opterr = old_opterr; - optind = 1; -#if defined(HAVE_OPTRESET) - optreset = 1; -#endif -} - -int -impl::app::run(int argc, char* const* argv) -{ - PRE(argc > 0); - PRE(argv != NULL); - - m_argc = argc; - m_argv = argv; - - m_argv0 = m_argv[0]; - - m_prog_name = std::strrchr(m_argv[0], '/'); - if (m_prog_name == NULL) - m_prog_name = m_argv[0]; - else - m_prog_name++; - - // Libtool workaround: if running from within the source tree (binaries - // that are not installed yet), skip the "lt-" prefix added to files in - // the ".libs" directory to show the real (not temporary) name. - if (std::strncmp(m_prog_name, "lt-", 3) == 0) - m_prog_name += 3; - - const std::string bug = - std::string("This is probably a bug in ") + m_prog_name + - " or one of the libraries it uses. Please report this problem to " - PACKAGE_BUGREPORT " and provide as many details as possible " - "describing how you got to this condition."; - - int errcode; - try { - process_options(); - errcode = main(); - } catch (const usage_error& e) { - std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n"; - std::cerr << m_prog_name << ": See " << m_manpage << " for usage " - "details.\n"; - errcode = EXIT_FAILURE; - } catch (const std::runtime_error& e) { - std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n"; - errcode = EXIT_FAILURE; - } catch (const std::exception& e) { - std::cerr << m_prog_name << ": ERROR: Caught unexpected error: " - << e.what() << "\n"; - errcode = EXIT_FAILURE; - } catch (...) { - std::cerr << m_prog_name << ": ERROR: Caught unknown error\n"; - errcode = EXIT_FAILURE; - } - return errcode; -} diff --git a/unit/atf-src/atf-c++/detail/application.hpp b/unit/atf-src/atf-c++/detail/application.hpp deleted file mode 100644 index cdb4073ad8..0000000000 --- a/unit/atf-src/atf-c++/detail/application.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_APPLICATION_HPP) -#define ATF_CXX_DETAIL_APPLICATION_HPP - -#include -#include -#include -#include - -namespace atf { -namespace application { - -// ------------------------------------------------------------------------ -// The "usage_error" class. -// ------------------------------------------------------------------------ - -class usage_error : public std::runtime_error { - char m_text[4096]; - -public: - usage_error(const char*, ...) throw(); - ~usage_error(void) throw(); - - const char* what(void) const throw(); -}; - -// ------------------------------------------------------------------------ -// The "option" class. -// ------------------------------------------------------------------------ - -class option { - char m_character; - std::string m_argument; - std::string m_description; - - friend class app; - -public: - option(char, const std::string&, const std::string&); - - bool operator<(const option&) const; -}; - -// ------------------------------------------------------------------------ -// The "app" class. -// ------------------------------------------------------------------------ - -class app { - void process_options(void); - void usage(std::ostream&); - - bool inited(void); - -protected: - typedef std::set< option > options_set; - - int m_argc; - char* const* m_argv; - - const char* m_argv0; - const char* m_prog_name; - std::string m_description; - std::string m_manpage; - - options_set options(void); - - // To be redefined. - virtual std::string specific_args(void) const; - virtual options_set specific_options(void) const; - virtual void process_option(int, const char*); - virtual int main(void) = 0; - -public: - app(const std::string&, const std::string&); - virtual ~app(void); - - int run(int, char* const*); -}; - -} // namespace application -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_APPLICATION_HPP) diff --git a/unit/atf-src/atf-c++/detail/application_test.cpp b/unit/atf-src/atf-c++/detail/application_test.cpp deleted file mode 100644 index 28b7a2f72f..0000000000 --- a/unit/atf-src/atf-c++/detail/application_test.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/application.hpp" - -extern "C" { -#include -} - -#include - -class getopt_app : public atf::application::app { -public: - getopt_app(void) : app("description", "manpage") {} - - int main(void) - { - // Provide an option that is unknown to the application driver and - // one that is, together with an argument that would be swallowed by - // the test program option if it were recognized. - int argc = 4; - char arg1[] = "progname"; - char arg2[] = "-Z"; - char arg3[] = "-s"; - char arg4[] = "foo"; - char *const argv[] = { arg1, arg2, arg3, arg4, NULL }; - - int ch; - bool zflag; - - // Given that this obviously is an application, and that we used the - // same driver to start, we can test getopt(3) right here without doing - // any fancy stuff. - zflag = false; - while ((ch = ::getopt(argc, argv, ":Z")) != -1) { - switch (ch) { - case 'Z': - zflag = true; - break; - - case '?': - default: - if (optopt != 's') - ATF_FAIL("Unexpected unknown option found"); - } - } - - ATF_REQUIRE(zflag); - ATF_REQUIRE_EQ(1, argc - optind); - ATF_REQUIRE_EQ(std::string("foo"), argv[optind]); - - return 0; - } -}; - -ATF_TEST_CASE_WITHOUT_HEAD(getopt); -ATF_TEST_CASE_BODY(getopt) -{ - int argc = 1; - char arg1[] = "progname"; - char *const argv[] = { arg1, NULL }; - ATF_REQUIRE_EQ(0, getopt_app().run(argc, argv)); -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, getopt); -} diff --git a/unit/atf-src/atf-c++/detail/auto_array.hpp b/unit/atf-src/atf-c++/detail/auto_array.hpp deleted file mode 100644 index b434a58082..0000000000 --- a/unit/atf-src/atf-c++/detail/auto_array.hpp +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_AUTO_ARRAY_HPP) -#define ATF_CXX_DETAIL_AUTO_ARRAY_HPP - -#include - -namespace atf { - -// ------------------------------------------------------------------------ -// The "auto_array" class. -// ------------------------------------------------------------------------ - -template< class T > -struct auto_array_ref { - T* m_ptr; - - explicit auto_array_ref(T*); -}; - -template< class T > -auto_array_ref< T >::auto_array_ref(T* ptr) : - m_ptr(ptr) -{ -} - -template< class T > -class auto_array { - T* m_ptr; - -public: - auto_array(T* = NULL) throw(); - auto_array(auto_array< T >&) throw(); - auto_array(auto_array_ref< T >) throw(); - ~auto_array(void) throw(); - - T* get(void) throw(); - const T* get(void) const throw(); - T* release(void) throw(); - void reset(T* = NULL) throw(); - - auto_array< T >& operator=(auto_array< T >&) throw(); - auto_array< T >& operator=(auto_array_ref< T >) throw(); - - T& operator[](int) throw(); - operator auto_array_ref< T >(void) throw(); -}; - -template< class T > -auto_array< T >::auto_array(T* ptr) - throw() : - m_ptr(ptr) -{ -} - -template< class T > -auto_array< T >::auto_array(auto_array< T >& ptr) - throw() : - m_ptr(ptr.release()) -{ -} - -template< class T > -auto_array< T >::auto_array(auto_array_ref< T > ref) - throw() : - m_ptr(ref.m_ptr) -{ -} - -template< class T > -auto_array< T >::~auto_array(void) - throw() -{ - if (m_ptr != NULL) - delete [] m_ptr; -} - -template< class T > -T* -auto_array< T >::get(void) - throw() -{ - return m_ptr; -} - -template< class T > -const T* -auto_array< T >::get(void) - const throw() -{ - return m_ptr; -} - -template< class T > -T* -auto_array< T >::release(void) - throw() -{ - T* ptr = m_ptr; - m_ptr = NULL; - return ptr; -} - -template< class T > -void -auto_array< T >::reset(T* ptr) - throw() -{ - if (m_ptr != NULL) - delete [] m_ptr; - m_ptr = ptr; -} - -template< class T > -auto_array< T >& -auto_array< T >::operator=(auto_array< T >& ptr) - throw() -{ - reset(ptr.release()); - return *this; -} - -template< class T > -auto_array< T >& -auto_array< T >::operator=(auto_array_ref< T > ref) - throw() -{ - if (m_ptr != ref.m_ptr) { - delete [] m_ptr; - m_ptr = ref.m_ptr; - } - return *this; -} - -template< class T > -T& -auto_array< T >::operator[](int pos) - throw() -{ - return m_ptr[pos]; -} - -template< class T > -auto_array< T >::operator auto_array_ref< T >(void) - throw() -{ - return auto_array_ref< T >(release()); -} - -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_AUTO_ARRAY_HPP) diff --git a/unit/atf-src/atf-c++/detail/auto_array_test.cpp b/unit/atf-src/atf-c++/detail/auto_array_test.cpp deleted file mode 100644 index aaad90e152..0000000000 --- a/unit/atf-src/atf-c++/detail/auto_array_test.cpp +++ /dev/null @@ -1,302 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/auto_array.hpp" - -extern "C" { -#include -} - -#include - -#include - -extern "C" { -#include "atf-c/defs.h" -} - -// ------------------------------------------------------------------------ -// Tests for the "auto_array" class. -// ------------------------------------------------------------------------ - -class test_array { -public: - int m_value; - - static ssize_t m_nblocks; - - static - atf::auto_array< test_array > - do_copy(atf::auto_array< test_array >& ta) - { - return atf::auto_array< test_array >(ta); - } - - void* operator new(size_t size ATF_DEFS_ATTRIBUTE_UNUSED) - { - ATF_FAIL("New called but should have been new[]"); - return new int(5); - } - - void* operator new[](size_t size) - { - m_nblocks++; - void* mem = ::operator new(size); - std::cout << "Allocated 'test_array' object " << mem << "\n"; - return mem; - } - - void operator delete(void* mem ATF_DEFS_ATTRIBUTE_UNUSED) - { - ATF_FAIL("Delete called but should have been delete[]"); - } - - void operator delete[](void* mem) - { - std::cout << "Releasing 'test_array' object " << mem << "\n"; - if (m_nblocks == 0) - ATF_FAIL("Unbalanced delete[]"); - m_nblocks--; - ::operator delete(mem); - } -}; - -ssize_t test_array::m_nblocks = 0; - -ATF_TEST_CASE(auto_array_scope); -ATF_TEST_CASE_HEAD(auto_array_scope) -{ - set_md_var("descr", "Tests the automatic scope handling in the " - "auto_array smart pointer class"); -} -ATF_TEST_CASE_BODY(auto_array_scope) -{ - using atf::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_copy); -ATF_TEST_CASE_HEAD(auto_array_copy) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' copy " - "constructor"); -} -ATF_TEST_CASE_BODY(auto_array_copy) -{ - using atf::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2(t1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_copy_ref); -ATF_TEST_CASE_HEAD(auto_array_copy_ref) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' copy " - "constructor through the auxiliary auto_array_ref object"); -} -ATF_TEST_CASE_BODY(auto_array_copy_ref) -{ - using atf::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2 = test_array::do_copy(t1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_get); -ATF_TEST_CASE_HEAD(auto_array_get) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' get " - "method"); -} -ATF_TEST_CASE_BODY(auto_array_get) -{ - using atf::auto_array; - - test_array* ta = new test_array[10]; - auto_array< test_array > t(ta); - ATF_REQUIRE_EQ(t.get(), ta); -} - -ATF_TEST_CASE(auto_array_release); -ATF_TEST_CASE_HEAD(auto_array_release) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' release " - "method"); -} -ATF_TEST_CASE_BODY(auto_array_release) -{ - using atf::auto_array; - - test_array* ta1 = new test_array[10]; - { - auto_array< test_array > t(ta1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - test_array* ta2 = t.release(); - ATF_REQUIRE_EQ(ta2, ta1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - delete [] ta1; -} - -ATF_TEST_CASE(auto_array_reset); -ATF_TEST_CASE_HEAD(auto_array_reset) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' reset " - "method"); -} -ATF_TEST_CASE_BODY(auto_array_reset) -{ - using atf::auto_array; - - test_array* ta1 = new test_array[10]; - test_array* ta2 = new test_array[10]; - ATF_REQUIRE_EQ(test_array::m_nblocks, 2); - - { - auto_array< test_array > t(ta1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 2); - t.reset(ta2); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - t.reset(); - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_assign); -ATF_TEST_CASE_HEAD(auto_array_assign) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' " - "assignment operator"); -} -ATF_TEST_CASE_BODY(auto_array_assign) -{ - using atf::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2; - t2 = t1; - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_assign_ref); -ATF_TEST_CASE_HEAD(auto_array_assign_ref) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' " - "assignment operator through the auxiliary auto_array_ref " - "object"); -} -ATF_TEST_CASE_BODY(auto_array_assign_ref) -{ - using atf::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2; - t2 = test_array::do_copy(t1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_access); -ATF_TEST_CASE_HEAD(auto_array_access) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' access " - "operator"); -} -ATF_TEST_CASE_BODY(auto_array_access) -{ - using atf::auto_array; - - auto_array< test_array > t(new test_array[10]); - - for (int i = 0; i < 10; i++) - t[i].m_value = i * 2; - - for (int i = 0; i < 10; i++) - ATF_REQUIRE_EQ(t[i].m_value, i * 2); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test for the "auto_array" class. - ATF_ADD_TEST_CASE(tcs, auto_array_scope); - ATF_ADD_TEST_CASE(tcs, auto_array_copy); - ATF_ADD_TEST_CASE(tcs, auto_array_copy_ref); - ATF_ADD_TEST_CASE(tcs, auto_array_get); - ATF_ADD_TEST_CASE(tcs, auto_array_release); - ATF_ADD_TEST_CASE(tcs, auto_array_reset); - ATF_ADD_TEST_CASE(tcs, auto_array_assign); - ATF_ADD_TEST_CASE(tcs, auto_array_assign_ref); - ATF_ADD_TEST_CASE(tcs, auto_array_access); -} diff --git a/unit/atf-src/atf-c++/detail/env.cpp b/unit/atf-src/atf-c++/detail/env.cpp deleted file mode 100644 index 8855dcbc9a..0000000000 --- a/unit/atf-src/atf-c++/detail/env.cpp +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/env.hpp" - -extern "C" { -#include "atf-c/detail/env.h" -#include "atf-c/error.h" -} - -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/sanity.hpp" - -namespace impl = atf::env; -#define IMPL_NAME "atf::env" - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -std::string -impl::get(const std::string& name) -{ - return atf_env_get(name.c_str()); -} - -std::string -impl::get(const std::string& name, const std::string& default_value) -{ - return atf_env_get_with_default(name.c_str(), default_value.c_str()); -} - -bool -impl::has(const std::string& name) -{ - return atf_env_has(name.c_str()); -} - -void -impl::set(const std::string& name, const std::string& val) -{ - atf_error_t err = atf_env_set(name.c_str(), val.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); -} - -void -impl::unset(const std::string& name) -{ - atf_error_t err = atf_env_unset(name.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); -} diff --git a/unit/atf-src/atf-c++/detail/env.hpp b/unit/atf-src/atf-c++/detail/env.hpp deleted file mode 100644 index e1dcbc0fae..0000000000 --- a/unit/atf-src/atf-c++/detail/env.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_ENV_HPP) -#define ATF_CXX_DETAIL_ENV_HPP - -#include - -namespace atf { -namespace env { - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -//! -//! \brief Returns the value of an environment variable. -//! -//! Returns the value of the specified environment variable. The variable -//! must be defined. -//! -std::string get(const std::string&); - -//! -//! \brief Returns the value of an environment variable with a default. -//! -std::string get(const std::string&, const std::string&); - -//! -//! \brief Checks if the environment has a variable. -//! -//! Checks if the environment has a given variable. -//! -bool has(const std::string&); - -//! -//! \brief Sets an environment variable to a given value. -//! -//! Sets the specified environment variable to the given value. Note that -//! variables set to the empty string are different to undefined ones. -//! -//! Be aware that this alters the program's global status, which in general -//! is a bad thing to do due to the side-effects it may have. There are -//! some legitimate usages for this function, though. -//! -void set(const std::string&, const std::string&); - -//! -//! \brief Unsets an environment variable. -//! -//! Unsets the specified environment variable Note that undefined -//! variables are different to those defined but set to an empty value. -//! -//! Be aware that this alters the program's global status, which in general -//! is a bad thing to do due to the side-effects it may have. There are -//! some legitimate usages for this function, though. -//! -void unset(const std::string&); - -} // namespace env -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_ENV_HPP) diff --git a/unit/atf-src/atf-c++/detail/env_test.cpp b/unit/atf-src/atf-c++/detail/env_test.cpp deleted file mode 100644 index 91616f38f0..0000000000 --- a/unit/atf-src/atf-c++/detail/env_test.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/env.hpp" - -#include - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(has_get); -ATF_TEST_CASE_HEAD(has_get) -{ - set_md_var("descr", "Tests the has and get functions"); -} -ATF_TEST_CASE_BODY(has_get) -{ - ATF_REQUIRE(atf::env::has("PATH")); - ATF_REQUIRE(!atf::env::get("PATH").empty()); - - ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_")); -} - -ATF_TEST_CASE(get_with_default); -ATF_TEST_CASE_HEAD(get_with_default) -{ - set_md_var("descr", "Tests the get function with a default value"); -} -ATF_TEST_CASE_BODY(get_with_default) -{ - ATF_REQUIRE(atf::env::has("PATH")); - ATF_REQUIRE(atf::env::get("PATH", "default value") != "default value"); - - ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_", "foo bar"), "foo bar"); -} - -ATF_TEST_CASE(set); -ATF_TEST_CASE_HEAD(set) -{ - set_md_var("descr", "Tests the set function"); -} -ATF_TEST_CASE_BODY(set) -{ - ATF_REQUIRE(atf::env::has("PATH")); - const std::string& oldval = atf::env::get("PATH"); - atf::env::set("PATH", "foo-bar"); - ATF_REQUIRE(atf::env::get("PATH") != oldval); - ATF_REQUIRE_EQ(atf::env::get("PATH"), "foo-bar"); - - ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_")); - atf::env::set("_UNDEFINED_VARIABLE_", "foo2-bar2"); - ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_"), "foo2-bar2"); -} - -ATF_TEST_CASE(unset); -ATF_TEST_CASE_HEAD(unset) -{ - set_md_var("descr", "Tests the unset function"); -} -ATF_TEST_CASE_BODY(unset) -{ - ATF_REQUIRE(atf::env::has("PATH")); - atf::env::unset("PATH"); - ATF_REQUIRE(!atf::env::has("PATH")); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, has_get); - ATF_ADD_TEST_CASE(tcs, get_with_default); - ATF_ADD_TEST_CASE(tcs, set); - ATF_ADD_TEST_CASE(tcs, unset); -} diff --git a/unit/atf-src/atf-c++/detail/exceptions.cpp b/unit/atf-src/atf-c++/detail/exceptions.cpp deleted file mode 100644 index a5b74a370e..0000000000 --- a/unit/atf-src/atf-c++/detail/exceptions.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/exceptions.hpp" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include -#include -#include - -extern "C" { -#include "atf-c/error.h" -} - -#include "atf-c++/detail/sanity.hpp" - -// ------------------------------------------------------------------------ -// The "system_error" type. -// ------------------------------------------------------------------------ - -atf::system_error::system_error(const std::string& who, - const std::string& message, - int sys_err) : - std::runtime_error(who + ": " + message), - m_sys_err(sys_err) -{ -} - -atf::system_error::~system_error(void) - throw() -{ -} - -int -atf::system_error::code(void) - const - throw() -{ - return m_sys_err; -} - -const char* -atf::system_error::what(void) - const - throw() -{ - try { - if (m_message.length() == 0) { - m_message = std::string(std::runtime_error::what()) + ": "; - m_message += ::strerror(m_sys_err); - } - - return m_message.c_str(); - } catch (...) { - return "Unable to format system_error message"; - } -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -static -void -throw_libc_error(atf_error_t err) -{ - PRE(atf_error_is(err, "libc")); - - const int ecode = atf_libc_error_code(err); - const std::string msg = atf_libc_error_msg(err); - atf_error_free(err); - throw atf::system_error("XXX", msg, ecode); -} - -static -void -throw_no_memory_error(atf_error_t err) -{ - PRE(atf_error_is(err, "no_memory")); - - atf_error_free(err); - throw std::bad_alloc(); -} - -static -void -throw_unknown_error(atf_error_t err) -{ - PRE(atf_is_error(err)); - - static char buf[4096]; - atf_error_format(err, buf, sizeof(buf)); - atf_error_free(err); - throw std::runtime_error(buf); -} - -void -atf::throw_atf_error(atf_error_t err) -{ - static struct handler { - const char* m_name; - void (*m_func)(atf_error_t); - } handlers[] = { - { "libc", throw_libc_error }, - { "no_memory", throw_no_memory_error }, - { NULL, throw_unknown_error }, - }; - - PRE(atf_is_error(err)); - - handler* h = handlers; - while (h->m_name != NULL) { - if (atf_error_is(err, h->m_name)) { - h->m_func(err); - UNREACHABLE; - } else - h++; - } - // XXX: I'm not sure that raising an "unknown" error is a wise thing - // to do here. The C++ binding is supposed to have feature parity - // with the C one, so all possible errors raised by the C library - // should have their counterpart in the C++ library. Still, removing - // this will require some code auditing that I can't afford at the - // moment. - INV(h->m_name == NULL && h->m_func != NULL); - h->m_func(err); - UNREACHABLE; -} diff --git a/unit/atf-src/atf-c++/detail/exceptions.hpp b/unit/atf-src/atf-c++/detail/exceptions.hpp deleted file mode 100644 index 0728ad1c6d..0000000000 --- a/unit/atf-src/atf-c++/detail/exceptions.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_EXCEPTIONS_HPP) -#define ATF_CXX_DETAIL_EXCEPTIONS_HPP - -#include -#include - -extern "C" { -struct atf_error; -} - -namespace atf { - -class system_error : public std::runtime_error { - int m_sys_err; - mutable std::string m_message; - -public: - system_error(const std::string&, const std::string&, int); - ~system_error(void) throw(); - - int code(void) const throw(); - const char* what(void) const throw(); -}; - -void throw_atf_error(struct atf_error *); - -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_EXCEPTIONS_HPP) diff --git a/unit/atf-src/atf-c++/detail/exceptions_test.cpp b/unit/atf-src/atf-c++/detail/exceptions_test.cpp deleted file mode 100644 index c0bf4fc2f0..0000000000 --- a/unit/atf-src/atf-c++/detail/exceptions_test.cpp +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/exceptions.hpp" - -extern "C" { -#include "atf-c/error.h" -} - -#include -#include - -#include - -#include "atf-c++/detail/sanity.hpp" - -// ------------------------------------------------------------------------ -// The "test" error. -// ------------------------------------------------------------------------ - -extern "C" { - -struct test_error_data { - const char* m_msg; -}; -typedef struct test_error_data test_error_data_t; - -static -void -test_format(const atf_error_t err, char *buf, size_t buflen) -{ - const test_error_data_t* data; - - PRE(atf_error_is(err, "test")); - - data = static_cast< const test_error_data_t * >(atf_error_data(err)); - snprintf(buf, buflen, "Message: %s", data->m_msg); -} - -static -atf_error_t -test_error(const char* msg) -{ - atf_error_t err; - test_error_data_t data; - - data.m_msg = msg; - - err = atf_error_new("test", &data, sizeof(data), test_format); - - return err; -} - -} // extern - -// ------------------------------------------------------------------------ -// Tests cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(throw_atf_error_libc); -ATF_TEST_CASE_HEAD(throw_atf_error_libc) -{ - set_md_var("descr", "Tests the throw_atf_error function when raising " - "a libc error"); -} -ATF_TEST_CASE_BODY(throw_atf_error_libc) -{ - try { - atf::throw_atf_error(atf_libc_error(1, "System error 1")); - } catch (const atf::system_error& e) { - ATF_REQUIRE(e.code() == 1); - ATF_REQUIRE(std::string(e.what()).find("System error 1") != - std::string::npos); - } catch (const std::exception& e) { - ATF_FAIL(std::string("Got unexpected exception: ") + e.what()); - } -} - -ATF_TEST_CASE(throw_atf_error_no_memory); -ATF_TEST_CASE_HEAD(throw_atf_error_no_memory) -{ - set_md_var("descr", "Tests the throw_atf_error function when raising " - "a no_memory error"); -} -ATF_TEST_CASE_BODY(throw_atf_error_no_memory) -{ - try { - atf::throw_atf_error(atf_no_memory_error()); - } catch (const std::bad_alloc&) { - } catch (const std::exception& e) { - ATF_FAIL(std::string("Got unexpected exception: ") + e.what()); - } -} - -ATF_TEST_CASE(throw_atf_error_unknown); -ATF_TEST_CASE_HEAD(throw_atf_error_unknown) -{ - set_md_var("descr", "Tests the throw_atf_error function when raising " - "an unknown error"); -} -ATF_TEST_CASE_BODY(throw_atf_error_unknown) -{ - try { - atf::throw_atf_error(test_error("The message")); - } catch (const std::runtime_error& e) { - const std::string msg = e.what(); - ATF_REQUIRE(msg.find("The message") != std::string::npos); - } catch (const std::exception& e) { - ATF_FAIL(std::string("Got unexpected exception: ") + e.what()); - } -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, throw_atf_error_libc); - ATF_ADD_TEST_CASE(tcs, throw_atf_error_no_memory); - ATF_ADD_TEST_CASE(tcs, throw_atf_error_unknown); -} diff --git a/unit/atf-src/atf-c++/detail/fs.cpp b/unit/atf-src/atf-c++/detail/fs.cpp deleted file mode 100644 index bcef9204d1..0000000000 --- a/unit/atf-src/atf-c++/detail/fs.cpp +++ /dev/null @@ -1,513 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/fs.hpp" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -#include -#include -#include -#include -#include -#include -#include -} - -#include -#include -#include - -extern "C" { -#include "atf-c/error.h" -} - -#include "atf-c++/detail/env.hpp" -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/process.hpp" -#include "atf-c++/detail/sanity.hpp" -#include "atf-c++/detail/text.hpp" -#include "atf-c++/utils.hpp" - -namespace impl = atf::fs; -#define IMPL_NAME "atf::fs" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static bool safe_access(const impl::path&, int, int); - -//! -//! \brief A controlled version of access(2). -//! -//! This function reimplements the standard access(2) system call to -//! safely control its exit status and raise an exception in case of -//! failure. -//! -static -bool -safe_access(const impl::path& p, int mode, int experr) -{ - bool ok; - - atf_error_t err = atf_fs_eaccess(p.c_path(), mode); - if (atf_is_error(err)) { - if (atf_error_is(err, "libc")) { - if (atf_libc_error_code(err) == experr) { - atf_error_free(err); - ok = false; - } else { - atf::throw_atf_error(err); - // XXX Silence warning; maybe throw_atf_error should be - // an exception and not a function. - ok = false; - } - } else { - atf::throw_atf_error(err); - // XXX Silence warning; maybe throw_atf_error should be - // an exception and not a function. - ok = false; - } - } else - ok = true; - - return ok; -} - -// ------------------------------------------------------------------------ -// The "path" class. -// ------------------------------------------------------------------------ - -impl::path::path(const std::string& s) -{ - atf_error_t err = atf_fs_path_init_fmt(&m_path, "%s", s.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); -} - -impl::path::path(const path& p) -{ - atf_error_t err = atf_fs_path_copy(&m_path, &p.m_path); - if (atf_is_error(err)) - throw_atf_error(err); -} - -impl::path::path(const atf_fs_path_t *p) -{ - atf_error_t err = atf_fs_path_copy(&m_path, p); - if (atf_is_error(err)) - throw_atf_error(err); -} - -impl::path::~path(void) -{ - atf_fs_path_fini(&m_path); -} - -const char* -impl::path::c_str(void) - const -{ - return atf_fs_path_cstring(&m_path); -} - -const atf_fs_path_t* -impl::path::c_path(void) - const -{ - return &m_path; -} - -std::string -impl::path::str(void) - const -{ - return c_str(); -} - -bool -impl::path::is_absolute(void) - const -{ - return atf_fs_path_is_absolute(&m_path); -} - -bool -impl::path::is_root(void) - const -{ - return atf_fs_path_is_root(&m_path); -} - -impl::path -impl::path::branch_path(void) - const -{ - atf_fs_path_t bp; - atf_error_t err; - - err = atf_fs_path_branch_path(&m_path, &bp); - if (atf_is_error(err)) - throw_atf_error(err); - - path p(atf_fs_path_cstring(&bp)); - atf_fs_path_fini(&bp); - return p; -} - -std::string -impl::path::leaf_name(void) - const -{ - atf_dynstr_t ln; - atf_error_t err; - - err = atf_fs_path_leaf_name(&m_path, &ln); - if (atf_is_error(err)) - throw_atf_error(err); - - std::string s(atf_dynstr_cstring(&ln)); - atf_dynstr_fini(&ln); - return s; -} - -impl::path -impl::path::to_absolute(void) - const -{ - atf_fs_path_t pa; - - atf_error_t err = atf_fs_path_to_absolute(&m_path, &pa); - if (atf_is_error(err)) - throw_atf_error(err); - - path p(atf_fs_path_cstring(&pa)); - atf_fs_path_fini(&pa); - return p; -} - -impl::path& -impl::path::operator=(const path& p) -{ - atf_fs_path_t tmp; - - atf_error_t err = atf_fs_path_init_fmt(&tmp, "%s", p.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); - else { - atf_fs_path_fini(&m_path); - m_path = tmp; - } - - return *this; -} - -bool -impl::path::operator==(const path& p) - const -{ - return atf_equal_fs_path_fs_path(&m_path, &p.m_path); -} - -bool -impl::path::operator!=(const path& p) - const -{ - return !atf_equal_fs_path_fs_path(&m_path, &p.m_path); -} - -impl::path -impl::path::operator/(const std::string& p) - const -{ - path p2 = *this; - - atf_error_t err = atf_fs_path_append_fmt(&p2.m_path, "%s", p.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); - - return p2; -} - -impl::path -impl::path::operator/(const path& p) - const -{ - path p2 = *this; - - atf_error_t err = atf_fs_path_append_fmt(&p2.m_path, "%s", - atf_fs_path_cstring(&p.m_path)); - if (atf_is_error(err)) - throw_atf_error(err); - - return p2; -} - -bool -impl::path::operator<(const path& p) - const -{ - const char *s1 = atf_fs_path_cstring(&m_path); - const char *s2 = atf_fs_path_cstring(&p.m_path); - return std::strcmp(s1, s2) < 0; -} - -// ------------------------------------------------------------------------ -// The "file_info" class. -// ------------------------------------------------------------------------ - -const int impl::file_info::blk_type = atf_fs_stat_blk_type; -const int impl::file_info::chr_type = atf_fs_stat_chr_type; -const int impl::file_info::dir_type = atf_fs_stat_dir_type; -const int impl::file_info::fifo_type = atf_fs_stat_fifo_type; -const int impl::file_info::lnk_type = atf_fs_stat_lnk_type; -const int impl::file_info::reg_type = atf_fs_stat_reg_type; -const int impl::file_info::sock_type = atf_fs_stat_sock_type; -const int impl::file_info::wht_type = atf_fs_stat_wht_type; - -impl::file_info::file_info(const path& p) -{ - atf_error_t err; - - err = atf_fs_stat_init(&m_stat, p.c_path()); - if (atf_is_error(err)) - throw_atf_error(err); -} - -impl::file_info::file_info(const file_info& fi) -{ - atf_fs_stat_copy(&m_stat, &fi.m_stat); -} - -impl::file_info::~file_info(void) -{ - atf_fs_stat_fini(&m_stat); -} - -dev_t -impl::file_info::get_device(void) - const -{ - return atf_fs_stat_get_device(&m_stat); -} - -ino_t -impl::file_info::get_inode(void) - const -{ - return atf_fs_stat_get_inode(&m_stat); -} - -mode_t -impl::file_info::get_mode(void) - const -{ - return atf_fs_stat_get_mode(&m_stat); -} - -off_t -impl::file_info::get_size(void) - const -{ - return atf_fs_stat_get_size(&m_stat); -} - -int -impl::file_info::get_type(void) - const -{ - return atf_fs_stat_get_type(&m_stat); -} - -bool -impl::file_info::is_owner_readable(void) - const -{ - return atf_fs_stat_is_owner_readable(&m_stat); -} - -bool -impl::file_info::is_owner_writable(void) - const -{ - return atf_fs_stat_is_owner_writable(&m_stat); -} - -bool -impl::file_info::is_owner_executable(void) - const -{ - return atf_fs_stat_is_owner_executable(&m_stat); -} - -bool -impl::file_info::is_group_readable(void) - const -{ - return atf_fs_stat_is_group_readable(&m_stat); -} - -bool -impl::file_info::is_group_writable(void) - const -{ - return atf_fs_stat_is_group_writable(&m_stat); -} - -bool -impl::file_info::is_group_executable(void) - const -{ - return atf_fs_stat_is_group_executable(&m_stat); -} - -bool -impl::file_info::is_other_readable(void) - const -{ - return atf_fs_stat_is_other_readable(&m_stat); -} - -bool -impl::file_info::is_other_writable(void) - const -{ - return atf_fs_stat_is_other_writable(&m_stat); -} - -bool -impl::file_info::is_other_executable(void) - const -{ - return atf_fs_stat_is_other_executable(&m_stat); -} - -// ------------------------------------------------------------------------ -// The "directory" class. -// ------------------------------------------------------------------------ - -impl::directory::directory(const path& p) -{ - DIR* dp = ::opendir(p.c_str()); - if (dp == NULL) - throw system_error(IMPL_NAME "::directory::directory(" + - p.str() + ")", "opendir(3) failed", errno); - - struct dirent* dep; - while ((dep = ::readdir(dp)) != NULL) { - path entryp = p / dep->d_name; - insert(value_type(dep->d_name, file_info(entryp))); - } - - if (::closedir(dp) == -1) - throw system_error(IMPL_NAME "::directory::directory(" + - p.str() + ")", "closedir(3) failed", errno); -} - -std::set< std::string > -impl::directory::names(void) - const -{ - std::set< std::string > ns; - - for (const_iterator iter = begin(); iter != end(); iter++) - ns.insert((*iter).first); - - return ns; -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -bool -impl::exists(const path& p) -{ - atf_error_t err; - bool b; - - err = atf_fs_exists(p.c_path(), &b); - if (atf_is_error(err)) - throw_atf_error(err); - - return b; -} - -bool -impl::have_prog_in_path(const std::string& prog) -{ - PRE(prog.find('/') == std::string::npos); - - // Do not bother to provide a default value for PATH. If it is not - // there something is broken in the user's environment. - if (!atf::env::has("PATH")) - throw std::runtime_error("PATH not defined in the environment"); - std::vector< std::string > dirs = - atf::text::split(atf::env::get("PATH"), ":"); - - bool found = false; - for (std::vector< std::string >::const_iterator iter = dirs.begin(); - !found && iter != dirs.end(); iter++) { - const path& dir = path(*iter); - - if (is_executable(dir / prog)) - found = true; - } - return found; -} - -bool -impl::is_executable(const path& p) -{ - if (!exists(p)) - return false; - return safe_access(p, atf_fs_access_x, EACCES); -} - -void -impl::remove(const path& p) -{ - if (file_info(p).get_type() == file_info::dir_type) - throw atf::system_error(IMPL_NAME "::remove(" + p.str() + ")", - "Is a directory", - EPERM); - if (::unlink(p.c_str()) == -1) - throw atf::system_error(IMPL_NAME "::remove(" + p.str() + ")", - "unlink(" + p.str() + ") failed", - errno); -} - -void -impl::rmdir(const path& p) -{ - atf_error_t err = atf_fs_rmdir(p.c_path()); - if (atf_is_error(err)) - throw_atf_error(err); -} diff --git a/unit/atf-src/atf-c++/detail/fs.hpp b/unit/atf-src/atf-c++/detail/fs.hpp deleted file mode 100644 index d6670f6e67..0000000000 --- a/unit/atf-src/atf-c++/detail/fs.hpp +++ /dev/null @@ -1,387 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_FS_HPP) -#define ATF_CXX_DETAIL_FS_HPP - -extern "C" { -#include -} - -#include -#include -#include -#include -#include -#include - -extern "C" { -#include "atf-c/detail/fs.h" -} - -namespace atf { - -namespace io { -class systembuf; -} // namespace io - -namespace fs { - -// ------------------------------------------------------------------------ -// The "path" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A class to represent a path to a file. -//! -//! The path class represents the route to a file or directory in the -//! file system. All file manipulation operations use this class to -//! represent their arguments as it takes care of normalizing user-provided -//! strings and ensures they are valid. -//! -//! It is important to note that the file pointed to by a path need not -//! exist. -//! -class path { - //! - //! \brief Internal representation of a path. - //! - atf_fs_path_t m_path; - -public: - //! \brief Constructs a new path from a user-provided string. - //! - //! This constructor takes a string, either provided by the program's - //! code or by the user and constructs a new path object. The string - //! is normalized to not contain multiple delimiters together and to - //! remove any trailing one. - //! - //! The input string cannot be empty. - //! - explicit path(const std::string&); - - //! - //! \brief Copy constructor. - //! - path(const path&); - - //! - //! \brief Copy constructor. - //! - path(const atf_fs_path_t *); - - //! - //! \brief Destructor for the path class. - //! - ~path(void); - - //! - //! \brief Returns a pointer to a C-style string representing this path. - //! - const char* c_str(void) const; - - //! - //! \brief Returns a pointer to the implementation data. - //! - const atf_fs_path_t* c_path(void) const; - - //! - //! \brief Returns a string representing this path. - //! XXX Really needed? - //! - std::string str(void) const; - - //! - //! \brief Returns the branch path of this path. - //! - //! Calculates and returns the branch path of this path. In other - //! words, it returns what the standard ::dirname function would return. - //! - path branch_path(void) const; - - //! - //! \brief Returns the leaf name of this path. - //! - //! Calculates and returns the leaf name of this path. In other words, - //! it returns what the standard ::basename function would return. - //! - std::string leaf_name(void) const; - - //! - //! \brief Checks whether this path is absolute or not. - //! - //! Returns a boolean indicating if this is an absolute path or not; - //! i.e. if it starts with a slash. - //! - bool is_absolute(void) const; - - //! - //! \brief Checks whether this path points to the root directory or not. - //! - //! Returns a boolean indicating if this is path points to the root - //! directory or not. The checks made by this are extremely simple (so - //! the results cannot always be trusted) but they are enough for our - //! modest sanity-checking needs. I.e. "/../" could return false. - //! - bool is_root(void) const; - - //! - //! \brief Converts the path to be absolute. - //! - //! \pre The path was not absolute. - //! - path to_absolute(void) const; - - //! - //! \brief Assignment operator. - //! - path& operator=(const path&); - - //! - //! \brief Checks if two paths are equal. - //! - bool operator==(const path&) const; - - //! - //! \brief Checks if two paths are different. - //! - bool operator!=(const path&) const; - - //! - //! \brief Concatenates a path with a string. - //! - //! Constructs a new path object that is the concatenation of the - //! left-hand path with the right-hand string. The string is normalized - //! before the concatenation, and a path delimiter is introduced between - //! the two components if needed. - //! - path operator/(const std::string&) const; - - //! - //! \brief Concatenates a path with another path. - //! - //! Constructs a new path object that is the concatenation of the - //! left-hand path with the right-hand one. A path delimiter is - //! introduced between the two components if needed. - //! - path operator/(const path&) const; - - //! - //! \brief Checks if a path has to be sorted before another one - //! lexicographically. - //! - bool operator<(const path&) const; -}; - -// ------------------------------------------------------------------------ -// The "file_info" class. -// ------------------------------------------------------------------------ - -class directory; - -//! -//! \brief A class that contains information about a file. -//! -//! The file_info class holds information about an specific file that -//! exists in the file system. -//! -class file_info { - atf_fs_stat_t m_stat; - -public: - //! - //! \brief The file's type. - //! - static const int blk_type; - static const int chr_type; - static const int dir_type; - static const int fifo_type; - static const int lnk_type; - static const int reg_type; - static const int sock_type; - static const int wht_type; - - //! - //! \brief Constructs a new file_info based on a given file. - //! - //! This constructor creates a new file_info object and fills it with - //! the data returned by ::stat when run on the given file, which must - //! exist. - //! - explicit file_info(const path&); - - //! - //! \brief The copy constructor. - //! - file_info(const file_info&); - - //! - //! \brief The destructor. - //! - ~file_info(void); - - //! - //! \brief Returns the device containing the file. - //! - dev_t get_device(void) const; - - //! - //! \brief Returns the file's inode. - //! - ino_t get_inode(void) const; - - //! - //! \brief Returns the file's permissions. - //! - mode_t get_mode(void) const; - - //! - //! \brief Returns the file's size. - //! - off_t get_size(void) const; - - //! - //! \brief Returns the file's type. - //! - int get_type(void) const; - - //! - //! \brief Returns whether the file is readable by its owner or not. - //! - bool is_owner_readable(void) const; - - //! - //! \brief Returns whether the file is writable by its owner or not. - //! - bool is_owner_writable(void) const; - - //! - //! \brief Returns whether the file is executable by its owner or not. - //! - bool is_owner_executable(void) const; - - //! - //! \brief Returns whether the file is readable by the users belonging - //! to its group or not. - //! - bool is_group_readable(void) const; - - //! - //! \brief Returns whether the file is writable the users belonging to - //! its group or not. - //! - bool is_group_writable(void) const; - - //! - //! \brief Returns whether the file is executable by the users - //! belonging to its group or not. - //! - bool is_group_executable(void) const; - - //! - //! \brief Returns whether the file is readable by people different - //! than the owner and those belonging to the group or not. - //! - bool is_other_readable(void) const; - - //! - //! \brief Returns whether the file is write by people different - //! than the owner and those belonging to the group or not. - //! - bool is_other_writable(void) const; - - //! - //! \brief Returns whether the file is executable by people different - //! than the owner and those belonging to the group or not. - //! - bool is_other_executable(void) const; -}; - -// ------------------------------------------------------------------------ -// The "directory" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A class representing a file system directory. -//! -//! The directory class represents a group of files in the file system and -//! corresponds to exactly one directory. -//! -class directory : public std::map< std::string, file_info > { -public: - //! - //! \brief Constructs a new directory. - //! - //! Constructs a new directory object representing the given path. - //! The directory must exist at creation time as the contents of the - //! class are gathered from it. - //! - directory(const path&); - - //! - //! \brief Returns the file names of the files in the directory. - //! - //! Returns the leaf names of all files contained in the directory. - //! I.e. the keys of the directory map. - //! - std::set< std::string > names(void) const; -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -//! -//! \brief Checks if the given path exists. -//! -bool exists(const path&); - -//! -//! \brief Looks for the given program in the PATH. -//! -//! Given a program name (without slashes) looks for it in the path and -//! returns its full path name if found, otherwise an empty path. -//! -bool have_prog_in_path(const std::string&); - -//! -//! \brief Checks if the given path exists, is accessible and is executable. -//! -bool is_executable(const path&); - -//! -//! \brief Removes a given file. -//! -void remove(const path&); - -//! -//! \brief Removes an empty directory. -//! -void rmdir(const path&); - -} // namespace fs -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_FS_HPP) diff --git a/unit/atf-src/atf-c++/detail/fs_test.cpp b/unit/atf-src/atf-c++/detail/fs_test.cpp deleted file mode 100644 index bf64ab2bf0..0000000000 --- a/unit/atf-src/atf-c++/detail/fs_test.cpp +++ /dev/null @@ -1,542 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/fs.hpp" - -extern "C" { -#include -#include -} - -#include -#include -#include - -#include - -#include "atf-c++/detail/exceptions.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -void -create_files(void) -{ - ::mkdir("files", 0755); - ::mkdir("files/dir", 0755); - - std::ofstream os("files/reg"); - os.close(); - - // TODO: Should create all other file types (blk, chr, fifo, lnk, sock) - // and test for them... but the underlying file system may not support - // most of these. Specially as we are working on /tmp, which can be - // mounted with flags such as "nodev". See how to deal with this - // situation. -} - -// ------------------------------------------------------------------------ -// Test cases for the "path" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(path_normalize); -ATF_TEST_CASE_HEAD(path_normalize) -{ - set_md_var("descr", "Tests the path's normalization"); -} -ATF_TEST_CASE_BODY(path_normalize) -{ - using atf::fs::path; - - ATF_REQUIRE_EQ(path(".").str(), "."); - ATF_REQUIRE_EQ(path("..").str(), ".."); - - ATF_REQUIRE_EQ(path("foo").str(), "foo"); - ATF_REQUIRE_EQ(path("foo/bar").str(), "foo/bar"); - ATF_REQUIRE_EQ(path("foo/bar/").str(), "foo/bar"); - - ATF_REQUIRE_EQ(path("/foo").str(), "/foo"); - ATF_REQUIRE_EQ(path("/foo/bar").str(), "/foo/bar"); - ATF_REQUIRE_EQ(path("/foo/bar/").str(), "/foo/bar"); - - ATF_REQUIRE_EQ(path("///foo").str(), "/foo"); - ATF_REQUIRE_EQ(path("///foo///bar").str(), "/foo/bar"); - ATF_REQUIRE_EQ(path("///foo///bar///").str(), "/foo/bar"); -} - -ATF_TEST_CASE(path_is_absolute); -ATF_TEST_CASE_HEAD(path_is_absolute) -{ - set_md_var("descr", "Tests the path::is_absolute function"); -} -ATF_TEST_CASE_BODY(path_is_absolute) -{ - using atf::fs::path; - - ATF_REQUIRE( path("/").is_absolute()); - ATF_REQUIRE( path("////").is_absolute()); - ATF_REQUIRE( path("////a").is_absolute()); - ATF_REQUIRE( path("//a//").is_absolute()); - ATF_REQUIRE(!path("a////").is_absolute()); - ATF_REQUIRE(!path("../foo").is_absolute()); -} - -ATF_TEST_CASE(path_is_root); -ATF_TEST_CASE_HEAD(path_is_root) -{ - set_md_var("descr", "Tests the path::is_root function"); -} -ATF_TEST_CASE_BODY(path_is_root) -{ - using atf::fs::path; - - ATF_REQUIRE( path("/").is_root()); - ATF_REQUIRE( path("////").is_root()); - ATF_REQUIRE(!path("////a").is_root()); - ATF_REQUIRE(!path("//a//").is_root()); - ATF_REQUIRE(!path("a////").is_root()); - ATF_REQUIRE(!path("../foo").is_root()); -} - -ATF_TEST_CASE(path_branch_path); -ATF_TEST_CASE_HEAD(path_branch_path) -{ - set_md_var("descr", "Tests the path::branch_path function"); -} -ATF_TEST_CASE_BODY(path_branch_path) -{ - using atf::fs::path; - - ATF_REQUIRE_EQ(path(".").branch_path().str(), "."); - ATF_REQUIRE_EQ(path("foo").branch_path().str(), "."); - ATF_REQUIRE_EQ(path("foo/bar").branch_path().str(), "foo"); - ATF_REQUIRE_EQ(path("/foo").branch_path().str(), "/"); - ATF_REQUIRE_EQ(path("/foo/bar").branch_path().str(), "/foo"); -} - -ATF_TEST_CASE(path_leaf_name); -ATF_TEST_CASE_HEAD(path_leaf_name) -{ - set_md_var("descr", "Tests the path::leaf_name function"); -} -ATF_TEST_CASE_BODY(path_leaf_name) -{ - using atf::fs::path; - - ATF_REQUIRE_EQ(path(".").leaf_name(), "."); - ATF_REQUIRE_EQ(path("foo").leaf_name(), "foo"); - ATF_REQUIRE_EQ(path("foo/bar").leaf_name(), "bar"); - ATF_REQUIRE_EQ(path("/foo").leaf_name(), "foo"); - ATF_REQUIRE_EQ(path("/foo/bar").leaf_name(), "bar"); -} - -ATF_TEST_CASE(path_compare_equal); -ATF_TEST_CASE_HEAD(path_compare_equal) -{ - set_md_var("descr", "Tests the comparison for equality between paths"); -} -ATF_TEST_CASE_BODY(path_compare_equal) -{ - using atf::fs::path; - - ATF_REQUIRE(path("/") == path("///")); - ATF_REQUIRE(path("/a") == path("///a")); - ATF_REQUIRE(path("/a") == path("///a///")); - - ATF_REQUIRE(path("a/b/c") == path("a//b//c")); - ATF_REQUIRE(path("a/b/c") == path("a//b//c///")); -} - -ATF_TEST_CASE(path_compare_different); -ATF_TEST_CASE_HEAD(path_compare_different) -{ - set_md_var("descr", "Tests the comparison for difference between paths"); -} -ATF_TEST_CASE_BODY(path_compare_different) -{ - using atf::fs::path; - - ATF_REQUIRE(path("/") != path("//a/")); - ATF_REQUIRE(path("/a") != path("a///")); - - ATF_REQUIRE(path("a/b/c") != path("a/b")); - ATF_REQUIRE(path("a/b/c") != path("a//b")); - ATF_REQUIRE(path("a/b/c") != path("/a/b/c")); - ATF_REQUIRE(path("a/b/c") != path("/a//b//c")); -} - -ATF_TEST_CASE(path_concat); -ATF_TEST_CASE_HEAD(path_concat) -{ - set_md_var("descr", "Tests the concatenation of multiple paths"); -} -ATF_TEST_CASE_BODY(path_concat) -{ - using atf::fs::path; - - ATF_REQUIRE_EQ((path("foo") / "bar").str(), "foo/bar"); - ATF_REQUIRE_EQ((path("foo/") / "/bar").str(), "foo/bar"); - ATF_REQUIRE_EQ((path("foo/") / "/bar/baz").str(), "foo/bar/baz"); - ATF_REQUIRE_EQ((path("foo/") / "///bar///baz").str(), "foo/bar/baz"); -} - -ATF_TEST_CASE(path_to_absolute); -ATF_TEST_CASE_HEAD(path_to_absolute) -{ - set_md_var("descr", "Tests the conversion of a relative path to an " - "absolute one"); -} -ATF_TEST_CASE_BODY(path_to_absolute) -{ - using atf::fs::file_info; - using atf::fs::path; - - create_files(); - - { - const path p("."); - path pa = p.to_absolute(); - ATF_REQUIRE(pa.is_absolute()); - - file_info fi(p); - file_info fia(pa); - ATF_REQUIRE_EQ(fi.get_device(), fia.get_device()); - ATF_REQUIRE_EQ(fi.get_inode(), fia.get_inode()); - } - - { - const path p("files/reg"); - path pa = p.to_absolute(); - ATF_REQUIRE(pa.is_absolute()); - - file_info fi(p); - file_info fia(pa); - ATF_REQUIRE_EQ(fi.get_device(), fia.get_device()); - ATF_REQUIRE_EQ(fi.get_inode(), fia.get_inode()); - } -} - -ATF_TEST_CASE(path_op_less); -ATF_TEST_CASE_HEAD(path_op_less) -{ - set_md_var("descr", "Tests that the path's less-than operator works"); -} -ATF_TEST_CASE_BODY(path_op_less) -{ - using atf::fs::path; - - create_files(); - - ATF_REQUIRE(!(path("aaa") < path("aaa"))); - - ATF_REQUIRE( path("aab") < path("abc")); - ATF_REQUIRE(!(path("abc") < path("aab"))); -} - -// ------------------------------------------------------------------------ -// Test cases for the "directory" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(directory_read); -ATF_TEST_CASE_HEAD(directory_read) -{ - set_md_var("descr", "Tests the directory class creation, which reads " - "the contents of a directory"); -} -ATF_TEST_CASE_BODY(directory_read) -{ - using atf::fs::directory; - using atf::fs::path; - - create_files(); - - directory d(path("files")); - ATF_REQUIRE_EQ(d.size(), 4); - ATF_REQUIRE(d.find(".") != d.end()); - ATF_REQUIRE(d.find("..") != d.end()); - ATF_REQUIRE(d.find("dir") != d.end()); - ATF_REQUIRE(d.find("reg") != d.end()); -} - -ATF_TEST_CASE(directory_file_info); -ATF_TEST_CASE_HEAD(directory_file_info) -{ - set_md_var("descr", "Tests that the file_info objects attached to the " - "directory are valid"); -} -ATF_TEST_CASE_BODY(directory_file_info) -{ - using atf::fs::directory; - using atf::fs::file_info; - using atf::fs::path; - - create_files(); - - directory d(path("files")); - - { - directory::const_iterator iter = d.find("dir"); - ATF_REQUIRE(iter != d.end()); - const file_info& fi = (*iter).second; - ATF_REQUIRE(fi.get_type() == file_info::dir_type); - } - - { - directory::const_iterator iter = d.find("reg"); - ATF_REQUIRE(iter != d.end()); - const file_info& fi = (*iter).second; - ATF_REQUIRE(fi.get_type() == file_info::reg_type); - } -} - -ATF_TEST_CASE(directory_names); -ATF_TEST_CASE_HEAD(directory_names) -{ - set_md_var("descr", "Tests the directory's names method"); -} -ATF_TEST_CASE_BODY(directory_names) -{ - using atf::fs::directory; - using atf::fs::path; - - create_files(); - - directory d(path("files")); - std::set< std::string > ns = d.names(); - ATF_REQUIRE_EQ(ns.size(), 4); - ATF_REQUIRE(ns.find(".") != ns.end()); - ATF_REQUIRE(ns.find("..") != ns.end()); - ATF_REQUIRE(ns.find("dir") != ns.end()); - ATF_REQUIRE(ns.find("reg") != ns.end()); -} - -// ------------------------------------------------------------------------ -// Test cases for the "file_info" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(file_info_stat); -ATF_TEST_CASE_HEAD(file_info_stat) -{ - set_md_var("descr", "Tests the file_info creation and its basic contents"); -} -ATF_TEST_CASE_BODY(file_info_stat) -{ - using atf::fs::file_info; - using atf::fs::path; - - create_files(); - - { - path p("files/dir"); - file_info fi(p); - ATF_REQUIRE(fi.get_type() == file_info::dir_type); - } - - { - path p("files/reg"); - file_info fi(p); - ATF_REQUIRE(fi.get_type() == file_info::reg_type); - } -} - -ATF_TEST_CASE(file_info_perms); -ATF_TEST_CASE_HEAD(file_info_perms) -{ - set_md_var("descr", "Tests the file_info methods to get the file's " - "permissions"); -} -ATF_TEST_CASE_BODY(file_info_perms) -{ - using atf::fs::file_info; - using atf::fs::path; - - path p("file"); - - std::ofstream os(p.c_str()); - os.close(); - -#define perms(ur, uw, ux, gr, gw, gx, othr, othw, othx) \ - { \ - file_info fi(p); \ - ATF_REQUIRE(fi.is_owner_readable() == ur); \ - ATF_REQUIRE(fi.is_owner_writable() == uw); \ - ATF_REQUIRE(fi.is_owner_executable() == ux); \ - ATF_REQUIRE(fi.is_group_readable() == gr); \ - ATF_REQUIRE(fi.is_group_writable() == gw); \ - ATF_REQUIRE(fi.is_group_executable() == gx); \ - ATF_REQUIRE(fi.is_other_readable() == othr); \ - ATF_REQUIRE(fi.is_other_writable() == othw); \ - ATF_REQUIRE(fi.is_other_executable() == othx); \ - } - - ::chmod(p.c_str(), 0000); - perms(false, false, false, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0001); - perms(false, false, false, false, false, false, false, false, true); - - ::chmod(p.c_str(), 0010); - perms(false, false, false, false, false, true, false, false, false); - - ::chmod(p.c_str(), 0100); - perms(false, false, true, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0002); - perms(false, false, false, false, false, false, false, true, false); - - ::chmod(p.c_str(), 0020); - perms(false, false, false, false, true, false, false, false, false); - - ::chmod(p.c_str(), 0200); - perms(false, true, false, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0004); - perms(false, false, false, false, false, false, true, false, false); - - ::chmod(p.c_str(), 0040); - perms(false, false, false, true, false, false, false, false, false); - - ::chmod(p.c_str(), 0400); - perms(true, false, false, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0644); - perms(true, true, false, true, false, false, true, false, false); - - ::chmod(p.c_str(), 0755); - perms(true, true, true, true, false, true, true, false, true); - - ::chmod(p.c_str(), 0777); - perms(true, true, true, true, true, true, true, true, true); - -#undef perms -} - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(exists); -ATF_TEST_CASE_HEAD(exists) -{ - set_md_var("descr", "Tests the exists function"); -} -ATF_TEST_CASE_BODY(exists) -{ - using atf::fs::exists; - using atf::fs::path; - - create_files(); - - ATF_REQUIRE( exists(path("files"))); - ATF_REQUIRE(!exists(path("file"))); - ATF_REQUIRE(!exists(path("files2"))); - - ATF_REQUIRE( exists(path("files/."))); - ATF_REQUIRE( exists(path("files/.."))); - ATF_REQUIRE( exists(path("files/dir"))); - ATF_REQUIRE( exists(path("files/reg"))); - ATF_REQUIRE(!exists(path("files/foo"))); -} - -ATF_TEST_CASE(is_executable); -ATF_TEST_CASE_HEAD(is_executable) -{ - set_md_var("descr", "Tests the is_executable function"); -} -ATF_TEST_CASE_BODY(is_executable) -{ - using atf::fs::is_executable; - using atf::fs::path; - - create_files(); - - ATF_REQUIRE( is_executable(path("files"))); - ATF_REQUIRE( is_executable(path("files/."))); - ATF_REQUIRE( is_executable(path("files/.."))); - ATF_REQUIRE( is_executable(path("files/dir"))); - - ATF_REQUIRE(!is_executable(path("non-existent"))); - - ATF_REQUIRE(!is_executable(path("files/reg"))); - ATF_REQUIRE(::chmod("files/reg", 0755) != -1); - ATF_REQUIRE( is_executable(path("files/reg"))); -} - -ATF_TEST_CASE(remove); -ATF_TEST_CASE_HEAD(remove) -{ - set_md_var("descr", "Tests the remove function"); -} -ATF_TEST_CASE_BODY(remove) -{ - using atf::fs::exists; - using atf::fs::path; - using atf::fs::remove; - - create_files(); - - ATF_REQUIRE( exists(path("files/reg"))); - remove(path("files/reg")); - ATF_REQUIRE(!exists(path("files/reg"))); - - ATF_REQUIRE( exists(path("files/dir"))); - ATF_REQUIRE_THROW(atf::system_error, remove(path("files/dir"))); - ATF_REQUIRE( exists(path("files/dir"))); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the tests for the "path" class. - ATF_ADD_TEST_CASE(tcs, path_normalize); - ATF_ADD_TEST_CASE(tcs, path_is_absolute); - ATF_ADD_TEST_CASE(tcs, path_is_root); - ATF_ADD_TEST_CASE(tcs, path_branch_path); - ATF_ADD_TEST_CASE(tcs, path_leaf_name); - ATF_ADD_TEST_CASE(tcs, path_compare_equal); - ATF_ADD_TEST_CASE(tcs, path_compare_different); - ATF_ADD_TEST_CASE(tcs, path_concat); - ATF_ADD_TEST_CASE(tcs, path_to_absolute); - ATF_ADD_TEST_CASE(tcs, path_op_less); - - // Add the tests for the "file_info" class. - ATF_ADD_TEST_CASE(tcs, file_info_stat); - ATF_ADD_TEST_CASE(tcs, file_info_perms); - - // Add the tests for the "directory" class. - ATF_ADD_TEST_CASE(tcs, directory_read); - ATF_ADD_TEST_CASE(tcs, directory_names); - ATF_ADD_TEST_CASE(tcs, directory_file_info); - - // Add the tests for the free functions. - ATF_ADD_TEST_CASE(tcs, exists); - ATF_ADD_TEST_CASE(tcs, is_executable); - ATF_ADD_TEST_CASE(tcs, remove); -} diff --git a/unit/atf-src/atf-c++/detail/process.cpp b/unit/atf-src/atf-c++/detail/process.cpp deleted file mode 100644 index 8139536d39..0000000000 --- a/unit/atf-src/atf-c++/detail/process.cpp +++ /dev/null @@ -1,346 +0,0 @@ -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/process.hpp" - -extern "C" { -#include - -#include "atf-c/detail/process.h" -#include "atf-c/error.h" -} - -#include - -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/sanity.hpp" - -namespace detail = atf::process::detail; -namespace impl = atf::process; -#define IMPL_NAME "atf::process" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -template< class C > -atf::auto_array< const char* > -collection_to_argv(const C& c) -{ - atf::auto_array< const char* > argv(new const char*[c.size() + 1]); - - std::size_t pos = 0; - for (typename C::const_iterator iter = c.begin(); iter != c.end(); - iter++) { - argv[pos] = (*iter).c_str(); - pos++; - } - INV(pos == c.size()); - argv[pos] = NULL; - - return argv; -} - -template< class C > -C -argv_to_collection(const char* const* argv) -{ - C c; - - for (const char* const* iter = argv; *iter != NULL; iter++) - c.push_back(std::string(*iter)); - - return c; -} - -// ------------------------------------------------------------------------ -// The "argv_array" type. -// ------------------------------------------------------------------------ - -impl::argv_array::argv_array(void) : - m_exec_argv(collection_to_argv(m_args)) -{ -} - -impl::argv_array::argv_array(const char* arg1, ...) -{ - m_args.push_back(arg1); - - { - va_list ap; - const char* nextarg; - - va_start(ap, arg1); - while ((nextarg = va_arg(ap, const char*)) != NULL) - m_args.push_back(nextarg); - va_end(ap); - } - - ctor_init_exec_argv(); -} - -impl::argv_array::argv_array(const char* const* ca) : - m_args(argv_to_collection< args_vector >(ca)), - m_exec_argv(collection_to_argv(m_args)) -{ -} - -impl::argv_array::argv_array(const argv_array& a) : - m_args(a.m_args), - m_exec_argv(collection_to_argv(m_args)) -{ -} - -void -impl::argv_array::ctor_init_exec_argv(void) -{ - m_exec_argv = collection_to_argv(m_args); -} - -const char* const* -impl::argv_array::exec_argv(void) - const -{ - return m_exec_argv.get(); -} - -impl::argv_array::size_type -impl::argv_array::size(void) - const -{ - return m_args.size(); -} - -const char* -impl::argv_array::operator[](int idx) - const -{ - return m_args[idx].c_str(); -} - -impl::argv_array::const_iterator -impl::argv_array::begin(void) - const -{ - return m_args.begin(); -} - -impl::argv_array::const_iterator -impl::argv_array::end(void) - const -{ - return m_args.end(); -} - -impl::argv_array& -impl::argv_array::operator=(const argv_array& a) -{ - if (this != &a) { - m_args = a.m_args; - m_exec_argv = collection_to_argv(m_args); - } - return *this; -} - -// ------------------------------------------------------------------------ -// The "stream" types. -// ------------------------------------------------------------------------ - -impl::basic_stream::basic_stream(void) : - m_inited(false) -{ -} - -impl::basic_stream::~basic_stream(void) -{ - if (m_inited) - atf_process_stream_fini(&m_sb); -} - -const atf_process_stream_t* -impl::basic_stream::get_sb(void) - const -{ - INV(m_inited); - return &m_sb; -} - -impl::stream_capture::stream_capture(void) -{ - atf_error_t err = atf_process_stream_init_capture(&m_sb); - if (atf_is_error(err)) - throw_atf_error(err); - m_inited = true; -} - -impl::stream_connect::stream_connect(const int src_fd, const int tgt_fd) -{ - atf_error_t err = atf_process_stream_init_connect(&m_sb, src_fd, tgt_fd); - if (atf_is_error(err)) - throw_atf_error(err); - m_inited = true; -} - -impl::stream_inherit::stream_inherit(void) -{ - atf_error_t err = atf_process_stream_init_inherit(&m_sb); - if (atf_is_error(err)) - throw_atf_error(err); - m_inited = true; -} - -impl::stream_redirect_fd::stream_redirect_fd(const int fd) -{ - atf_error_t err = atf_process_stream_init_redirect_fd(&m_sb, fd); - if (atf_is_error(err)) - throw_atf_error(err); - m_inited = true; -} - -impl::stream_redirect_path::stream_redirect_path(const fs::path& p) -{ - atf_error_t err = atf_process_stream_init_redirect_path(&m_sb, p.c_path()); - if (atf_is_error(err)) - throw_atf_error(err); - m_inited = true; -} - -// ------------------------------------------------------------------------ -// The "status" type. -// ------------------------------------------------------------------------ - -impl::status::status(atf_process_status_t& s) : - m_status(s) -{ -} - -impl::status::~status(void) -{ - atf_process_status_fini(&m_status); -} - -bool -impl::status::exited(void) - const -{ - return atf_process_status_exited(&m_status); -} - -int -impl::status::exitstatus(void) - const -{ - return atf_process_status_exitstatus(&m_status); -} - -bool -impl::status::signaled(void) - const -{ - return atf_process_status_signaled(&m_status); -} - -int -impl::status::termsig(void) - const -{ - return atf_process_status_termsig(&m_status); -} - -bool -impl::status::coredump(void) - const -{ - return atf_process_status_coredump(&m_status); -} - -// ------------------------------------------------------------------------ -// The "child" type. -// ------------------------------------------------------------------------ - -impl::child::child(atf_process_child_t& c) : - m_child(c), - m_waited(false) -{ -} - -impl::child::~child(void) -{ - if (!m_waited) { - ::kill(atf_process_child_pid(&m_child), SIGTERM); - - atf_process_status_t s; - atf_error_t err = atf_process_child_wait(&m_child, &s); - INV(!atf_is_error(err)); - atf_process_status_fini(&s); - } -} - -impl::status -impl::child::wait(void) -{ - atf_process_status_t s; - - atf_error_t err = atf_process_child_wait(&m_child, &s); - if (atf_is_error(err)) - throw_atf_error(err); - - m_waited = true; - return status(s); -} - -pid_t -impl::child::pid(void) - const -{ - return atf_process_child_pid(&m_child); -} - -int -impl::child::stdout_fd(void) -{ - return atf_process_child_stdout(&m_child); -} - -int -impl::child::stderr_fd(void) -{ - return atf_process_child_stderr(&m_child); -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -void -detail::flush_streams(void) -{ - // TODO: This should only be executed when inheriting the stdout or - // stderr file descriptors. However, the flushing is specific to the - // iostreams, so we cannot do it from the C library where all the process - // logic is performed. Come up with a better design. - std::cout.flush(); - std::cerr.flush(); -} diff --git a/unit/atf-src/atf-c++/detail/process.hpp b/unit/atf-src/atf-c++/detail/process.hpp deleted file mode 100644 index 0d4989a4f4..0000000000 --- a/unit/atf-src/atf-c++/detail/process.hpp +++ /dev/null @@ -1,274 +0,0 @@ -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_PROCESS_HPP) -#define ATF_CXX_DETAIL_PROCESS_HPP - -extern "C" { -#include - -#include -#include -} - -#include -#include - -#include -#include -#include - -namespace atf { -namespace process { - -class child; -class status; - -// ------------------------------------------------------------------------ -// The "argv_array" type. -// ------------------------------------------------------------------------ - -class argv_array { - typedef std::vector< std::string > args_vector; - args_vector m_args; - - // TODO: This is immutable, so we should be able to use - // std::tr1::shared_array instead when it becomes widely available. - // The reason would be to remove all copy constructors and assignment - // operators from this class. - auto_array< const char* > m_exec_argv; - void ctor_init_exec_argv(void); - -public: - typedef args_vector::const_iterator const_iterator; - typedef args_vector::size_type size_type; - - argv_array(void); - argv_array(const char*, ...); - explicit argv_array(const char* const*); - template< class C > explicit argv_array(const C&); - argv_array(const argv_array&); - - const char* const* exec_argv(void) const; - size_type size(void) const; - const char* operator[](int) const; - - const_iterator begin(void) const; - const_iterator end(void) const; - - argv_array& operator=(const argv_array&); -}; - -template< class C > -argv_array::argv_array(const C& c) -{ - for (typename C::const_iterator iter = c.begin(); iter != c.end(); - iter++) - m_args.push_back(*iter); - ctor_init_exec_argv(); -} - -// ------------------------------------------------------------------------ -// The "stream" types. -// ------------------------------------------------------------------------ - -class basic_stream { -protected: - atf_process_stream_t m_sb; - bool m_inited; - - const atf_process_stream_t* get_sb(void) const; - -public: - basic_stream(void); - ~basic_stream(void); -}; - -class stream_capture : basic_stream { - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), const OutStream&, const ErrStream&, void*); - template< class OutStream, class ErrStream > friend - status exec(const atf::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - -public: - stream_capture(void); -}; - -class stream_connect : basic_stream { - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), const OutStream&, const ErrStream&, void*); - template< class OutStream, class ErrStream > friend - status exec(const atf::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - -public: - stream_connect(const int, const int); -}; - -class stream_inherit : basic_stream { - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), const OutStream&, const ErrStream&, void*); - template< class OutStream, class ErrStream > friend - status exec(const atf::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - -public: - stream_inherit(void); -}; - -class stream_redirect_fd : basic_stream { - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), const OutStream&, const ErrStream&, void*); - template< class OutStream, class ErrStream > friend - status exec(const atf::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - -public: - stream_redirect_fd(const int); -}; - -class stream_redirect_path : basic_stream { - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), const OutStream&, const ErrStream&, void*); - template< class OutStream, class ErrStream > friend - status exec(const atf::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - -public: - stream_redirect_path(const fs::path&); -}; - -// ------------------------------------------------------------------------ -// The "status" type. -// ------------------------------------------------------------------------ - -class status { - atf_process_status_t m_status; - - friend class child; - template< class OutStream, class ErrStream > friend - status exec(const atf::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - status(atf_process_status_t&); - -public: - ~status(void); - - bool exited(void) const; - int exitstatus(void) const; - - bool signaled(void) const; - int termsig(void) const; - bool coredump(void) const; -}; - -// ------------------------------------------------------------------------ -// The "child" type. -// ------------------------------------------------------------------------ - -class child { - atf_process_child_t m_child; - bool m_waited; - - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), const OutStream&, const ErrStream&, void*); - - child(atf_process_child_t& c); - -public: - ~child(void); - - status wait(void); - - pid_t pid(void) const; - int stdout_fd(void); - int stderr_fd(void); -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -namespace detail { -void flush_streams(void); -} // namespace detail - -// TODO: The void* cookie can probably be templatized, thus also allowing -// const data structures. -template< class OutStream, class ErrStream > -child -fork(void (*start)(void*), const OutStream& outsb, - const ErrStream& errsb, void* v) -{ - atf_process_child_t c; - - detail::flush_streams(); - atf_error_t err = atf_process_fork(&c, start, outsb.get_sb(), - errsb.get_sb(), v); - if (atf_is_error(err)) - throw_atf_error(err); - - return child(c); -} - -template< class OutStream, class ErrStream > -status -exec(const atf::fs::path& prog, const argv_array& argv, - const OutStream& outsb, const ErrStream& errsb, - void (*prehook)(void)) -{ - atf_process_status_t s; - - detail::flush_streams(); - atf_error_t err = atf_process_exec_array(&s, prog.c_path(), - argv.exec_argv(), - outsb.get_sb(), - errsb.get_sb(), - prehook); - if (atf_is_error(err)) - throw_atf_error(err); - - return status(s); -} - -template< class OutStream, class ErrStream > -status -exec(const atf::fs::path& prog, const argv_array& argv, - const OutStream& outsb, const ErrStream& errsb) -{ - return exec(prog, argv, outsb, errsb, NULL); -} - -} // namespace process -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_PROCESS_HPP) diff --git a/unit/atf-src/atf-c++/detail/process_test.cpp b/unit/atf-src/atf-c++/detail/process_test.cpp deleted file mode 100644 index 0686d2a191..0000000000 --- a/unit/atf-src/atf-c++/detail/process_test.cpp +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/process.hpp" - -#include -#include - -#include - -#include "atf-c++/detail/test_helpers.hpp" - -// TODO: Testing the fork function is a huge task and I'm afraid of -// copy/pasting tons of stuff from the C version. I'd rather not do that -// until some code can be shared, which cannot happen until the C++ binding -// is cleaned by a fair amount. Instead... just rely (at the moment) on -// the system tests for the tools using this module. - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -std::size_t -array_size(const char* const* array) -{ - std::size_t size = 0; - - for (const char* const* ptr = array; *ptr != NULL; ptr++) - size++; - - return size; -} - -static -atf::process::status -exec_process_helpers(const atf::tests::tc& tc, const char* helper_name) -{ - using atf::process::exec; - - std::vector< std::string > argv; - argv.push_back(get_process_helpers_path(tc, true).leaf_name()); - argv.push_back(helper_name); - - return exec(get_process_helpers_path(tc, true), - atf::process::argv_array(argv), - atf::process::stream_inherit(), - atf::process::stream_inherit()); -} - -// ------------------------------------------------------------------------ -// Tests for the "argv_array" type. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(argv_array_init_carray); -ATF_TEST_CASE_HEAD(argv_array_init_carray) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "from a C-style array of strings"); -} -ATF_TEST_CASE_BODY(argv_array_init_carray) -{ - { - const char* const carray[] = { NULL }; - atf::process::argv_array argv(carray); - - ATF_REQUIRE_EQ(argv.size(), 0); - } - - { - const char* const carray[] = { "arg0", NULL }; - atf::process::argv_array argv(carray); - - ATF_REQUIRE_EQ(argv.size(), 1); - ATF_REQUIRE(std::strcmp(argv[0], carray[0]) == 0); - } - - { - const char* const carray[] = { "arg0", "arg1", "arg2", NULL }; - atf::process::argv_array argv(carray); - - ATF_REQUIRE_EQ(argv.size(), 3); - ATF_REQUIRE(std::strcmp(argv[0], carray[0]) == 0); - ATF_REQUIRE(std::strcmp(argv[1], carray[1]) == 0); - ATF_REQUIRE(std::strcmp(argv[2], carray[2]) == 0); - } -} - -ATF_TEST_CASE(argv_array_init_col); -ATF_TEST_CASE_HEAD(argv_array_init_col) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "from a string collection"); -} -ATF_TEST_CASE_BODY(argv_array_init_col) -{ - { - std::vector< std::string > col; - atf::process::argv_array argv(col); - - ATF_REQUIRE_EQ(argv.size(), 0); - } - - { - std::vector< std::string > col; - col.push_back("arg0"); - atf::process::argv_array argv(col); - - ATF_REQUIRE_EQ(argv.size(), 1); - ATF_REQUIRE_EQ(argv[0], col[0]); - } - - { - std::vector< std::string > col; - col.push_back("arg0"); - col.push_back("arg1"); - col.push_back("arg2"); - atf::process::argv_array argv(col); - - ATF_REQUIRE_EQ(argv.size(), 3); - ATF_REQUIRE_EQ(argv[0], col[0]); - ATF_REQUIRE_EQ(argv[1], col[1]); - ATF_REQUIRE_EQ(argv[2], col[2]); - } -} - -ATF_TEST_CASE(argv_array_init_empty); -ATF_TEST_CASE_HEAD(argv_array_init_empty) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "by the default constructor"); -} -ATF_TEST_CASE_BODY(argv_array_init_empty) -{ - atf::process::argv_array argv; - - ATF_REQUIRE_EQ(argv.size(), 0); -} - -ATF_TEST_CASE(argv_array_init_varargs); -ATF_TEST_CASE_HEAD(argv_array_init_varargs) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "from a variable list of arguments"); -} -ATF_TEST_CASE_BODY(argv_array_init_varargs) -{ - { - atf::process::argv_array argv("arg0", NULL); - - ATF_REQUIRE_EQ(argv.size(), 1); - ATF_REQUIRE_EQ(argv[0], std::string("arg0")); - } - - { - atf::process::argv_array argv("arg0", "arg1", "arg2", NULL); - - ATF_REQUIRE_EQ(argv.size(), 3); - ATF_REQUIRE_EQ(argv[0], std::string("arg0")); - ATF_REQUIRE_EQ(argv[1], std::string("arg1")); - ATF_REQUIRE_EQ(argv[2], std::string("arg2")); - } -} - -ATF_TEST_CASE(argv_array_assign); -ATF_TEST_CASE_HEAD(argv_array_assign) -{ - set_md_var("descr", "Tests that assigning an argv_array works"); -} -ATF_TEST_CASE_BODY(argv_array_assign) -{ - using atf::process::argv_array; - - const char* const carray1[] = { "arg1", NULL }; - const char* const carray2[] = { "arg1", "arg2", NULL }; - - std::auto_ptr< argv_array > argv1(new argv_array(carray1)); - std::auto_ptr< argv_array > argv2(new argv_array(carray2)); - - *argv2 = *argv1; - ATF_REQUIRE_EQ(argv2->size(), argv1->size()); - ATF_REQUIRE(std::strcmp((*argv2)[0], (*argv1)[0]) == 0); - - ATF_REQUIRE(argv2->exec_argv() != argv1->exec_argv()); - argv1.release(); - { - const char* const* eargv2 = argv2->exec_argv(); - ATF_REQUIRE(std::strcmp(eargv2[0], carray1[0]) == 0); - ATF_REQUIRE_EQ(eargv2[1], static_cast< const char* >(NULL)); - } - - argv2.release(); -} - -ATF_TEST_CASE(argv_array_copy); -ATF_TEST_CASE_HEAD(argv_array_copy) -{ - set_md_var("descr", "Tests that copying an argv_array constructed from " - "a C-style array of strings works"); -} -ATF_TEST_CASE_BODY(argv_array_copy) -{ - using atf::process::argv_array; - - const char* const carray[] = { "arg0", NULL }; - - std::auto_ptr< argv_array > argv1(new argv_array(carray)); - std::auto_ptr< argv_array > argv2(new argv_array(*argv1)); - - ATF_REQUIRE_EQ(argv2->size(), argv1->size()); - ATF_REQUIRE(std::strcmp((*argv2)[0], (*argv1)[0]) == 0); - - ATF_REQUIRE(argv2->exec_argv() != argv1->exec_argv()); - argv1.release(); - { - const char* const* eargv2 = argv2->exec_argv(); - ATF_REQUIRE(std::strcmp(eargv2[0], carray[0]) == 0); - ATF_REQUIRE_EQ(eargv2[1], static_cast< const char* >(NULL)); - } - - argv2.release(); -} - -ATF_TEST_CASE(argv_array_exec_argv); -ATF_TEST_CASE_HEAD(argv_array_exec_argv) -{ - set_md_var("descr", "Tests that the exec argv provided by an argv_array " - "is correct"); -} -ATF_TEST_CASE_BODY(argv_array_exec_argv) -{ - using atf::process::argv_array; - - { - argv_array argv; - const char* const* eargv = argv.exec_argv(); - ATF_REQUIRE_EQ(array_size(eargv), 0); - ATF_REQUIRE_EQ(eargv[0], static_cast< const char* >(NULL)); - } - - { - const char* const carray[] = { "arg0", NULL }; - argv_array argv(carray); - const char* const* eargv = argv.exec_argv(); - ATF_REQUIRE_EQ(array_size(eargv), 1); - ATF_REQUIRE(std::strcmp(eargv[0], "arg0") == 0); - ATF_REQUIRE_EQ(eargv[1], static_cast< const char* >(NULL)); - } - - { - std::vector< std::string > col; - col.push_back("arg0"); - argv_array argv(col); - const char* const* eargv = argv.exec_argv(); - ATF_REQUIRE_EQ(array_size(eargv), 1); - ATF_REQUIRE(std::strcmp(eargv[0], "arg0") == 0); - ATF_REQUIRE_EQ(eargv[1], static_cast< const char* >(NULL)); - } -} - -ATF_TEST_CASE(argv_array_iter); -ATF_TEST_CASE_HEAD(argv_array_iter) -{ - set_md_var("descr", "Tests that an argv_array can be iterated"); -} -ATF_TEST_CASE_BODY(argv_array_iter) -{ - using atf::process::argv_array; - - std::vector< std::string > vector; - vector.push_back("arg0"); - vector.push_back("arg1"); - vector.push_back("arg2"); - - argv_array argv(vector); - ATF_REQUIRE_EQ(argv.size(), 3); - std::vector< std::string >::size_type pos = 0; - for (argv_array::const_iterator iter = argv.begin(); iter != argv.end(); - iter++) { - ATF_REQUIRE_EQ(*iter, vector[pos]); - pos++; - } -} - -// ------------------------------------------------------------------------ -// Tests cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(exec_failure); -ATF_TEST_CASE_HEAD(exec_failure) -{ - set_md_var("descr", "Tests execing a command that reports failure"); -} -ATF_TEST_CASE_BODY(exec_failure) -{ - const atf::process::status s = exec_process_helpers(*this, "exit-failure"); - ATF_REQUIRE(s.exited()); - ATF_REQUIRE_EQ(s.exitstatus(), EXIT_FAILURE); -} - -ATF_TEST_CASE(exec_success); -ATF_TEST_CASE_HEAD(exec_success) -{ - set_md_var("descr", "Tests execing a command that reports success"); -} -ATF_TEST_CASE_BODY(exec_success) -{ - const atf::process::status s = exec_process_helpers(*this, "exit-success"); - ATF_REQUIRE(s.exited()); - ATF_REQUIRE_EQ(s.exitstatus(), EXIT_SUCCESS); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the "argv_array" type. - ATF_ADD_TEST_CASE(tcs, argv_array_assign); - ATF_ADD_TEST_CASE(tcs, argv_array_copy); - ATF_ADD_TEST_CASE(tcs, argv_array_exec_argv); - ATF_ADD_TEST_CASE(tcs, argv_array_init_carray); - ATF_ADD_TEST_CASE(tcs, argv_array_init_col); - ATF_ADD_TEST_CASE(tcs, argv_array_init_empty); - ATF_ADD_TEST_CASE(tcs, argv_array_init_varargs); - ATF_ADD_TEST_CASE(tcs, argv_array_iter); - - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, exec_failure); - ATF_ADD_TEST_CASE(tcs, exec_success); -} diff --git a/unit/atf-src/atf-c++/detail/sanity.hpp b/unit/atf-src/atf-c++/detail/sanity.hpp deleted file mode 100644 index 3d89ab4b03..0000000000 --- a/unit/atf-src/atf-c++/detail/sanity.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_SANITY_HPP) -#define ATF_CXX_DETAIL_SANITY_HPP - -extern "C" { -#include -} - -#endif // !defined(ATF_CXX_DETAIL_SANITY_HPP) diff --git a/unit/atf-src/atf-c++/detail/test_helpers.cpp b/unit/atf-src/atf-c++/detail/test_helpers.cpp deleted file mode 100644 index d3f94003ac..0000000000 --- a/unit/atf-src/atf-c++/detail/test_helpers.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/test_helpers.hpp" - -#include -#include -#include -#include - -#include - -#include "atf-c++/check.hpp" -#include "atf-c++/detail/env.hpp" -#include "atf-c++/detail/fs.hpp" -#include "atf-c++/detail/process.hpp" - -// Path to the directory containing the libatf-c tests, used to locate the -// process_helpers program. If NULL (the default), the code will use a -// relative path. Otherwise, the provided path will be used; this is so -// that we can locate the helpers binary if the installation uses a -// different layout than the one we provide (as is the case in FreeBSD). -#if defined(ATF_C_TESTS_BASE) -static const char* atf_c_tests_base = ATF_C_TESTS_BASE; -#else -static const char* atf_c_tests_base = NULL; -#endif -#undef ATF_C_TESTS_BASE - -bool -build_check_cxx_o(const char* sfile) -{ - std::vector< std::string > optargs; - optargs.push_back("-I" + atf::env::get("ATF_INCLUDEDIR", ATF_INCLUDEDIR)); - optargs.push_back("-Wall"); - optargs.push_back("-Werror"); - - return atf::check::build_cxx_o(sfile, "test.o", - atf::process::argv_array(optargs)); -} - -bool -build_check_cxx_o_srcdir(const atf::tests::tc& tc, const char* sfile) -{ - const atf::fs::path sfilepath = - atf::fs::path(tc.get_config_var("srcdir")) / sfile; - return build_check_cxx_o(sfilepath.c_str()); -} - -void -header_check(const char *hdrname) -{ - std::ofstream srcfile("test.cpp"); - ATF_REQUIRE(srcfile); - srcfile << "#include <" << hdrname << ">\n"; - srcfile.close(); - - const std::string failmsg = std::string("Header check failed; ") + - hdrname + " is not self-contained"; - if (!build_check_cxx_o("test.cpp")) - ATF_FAIL(failmsg); -} - -atf::fs::path -get_process_helpers_path(const atf::tests::tc& tc, bool is_detail) -{ - const char* helper = "detail/process_helpers"; - if (atf_c_tests_base == NULL) { - if (is_detail) - return atf::fs::path(tc.get_config_var("srcdir")) / - ".." / ".." / "atf-c" / helper; - else - return atf::fs::path(tc.get_config_var("srcdir")) / - ".." / "atf-c" / helper; - } else { - return atf::fs::path(atf_c_tests_base) / helper; - } -} diff --git a/unit/atf-src/atf-c++/detail/test_helpers.hpp b/unit/atf-src/atf-c++/detail/test_helpers.hpp deleted file mode 100644 index f166ee218a..0000000000 --- a/unit/atf-src/atf-c++/detail/test_helpers.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if defined(ATF_CXX_DETAIL_TEST_HELPERS_H) -# error "Cannot include test_helpers.hpp more than once." -#else -# define ATF_CXX_DETAIL_TEST_HELPERS_H -#endif - -#include -#include -#include -#include - -#include - -#include - -#define HEADER_TC(name, hdrname) \ - ATF_TEST_CASE(name); \ - ATF_TEST_CASE_HEAD(name) \ - { \ - set_md_var("descr", "Tests that the " hdrname " file can be " \ - "included on its own, without any prerequisites"); \ - } \ - ATF_TEST_CASE_BODY(name) \ - { \ - header_check(hdrname); \ - } - -#define BUILD_TC(name, sfile, descr, failmsg) \ - ATF_TEST_CASE(name); \ - ATF_TEST_CASE_HEAD(name) \ - { \ - set_md_var("descr", descr); \ - } \ - ATF_TEST_CASE_BODY(name) \ - { \ - if (!build_check_cxx_o_srcdir(*this, sfile)) \ - ATF_FAIL(failmsg); \ - } - -namespace atf { -namespace tests { -class tc; -} -} - -void header_check(const char*); -bool build_check_cxx_o(const char*); -bool build_check_cxx_o_srcdir(const atf::tests::tc&, const char*); -atf::fs::path get_process_helpers_path(const atf::tests::tc&, bool); - -struct run_h_tc_data { - const atf::tests::vars_map& m_config; - - run_h_tc_data(const atf::tests::vars_map& config) : - m_config(config) {} -}; - -template< class TestCase > -void -run_h_tc_child(void* v) -{ - run_h_tc_data* data = static_cast< run_h_tc_data* >(v); - - TestCase tc; - tc.init(data->m_config); - tc.run("result"); - std::exit(EXIT_SUCCESS); -} - -template< class TestCase > -void -run_h_tc(atf::tests::vars_map config = atf::tests::vars_map()) -{ - run_h_tc_data data(config); - atf::process::child c = atf::process::fork( - run_h_tc_child< TestCase >, - atf::process::stream_redirect_path(atf::fs::path("stdout")), - atf::process::stream_redirect_path(atf::fs::path("stderr")), - &data); - const atf::process::status s = c.wait(); - ATF_REQUIRE(s.exited()); -} diff --git a/unit/atf-src/atf-c++/detail/text.cpp b/unit/atf-src/atf-c++/detail/text.cpp deleted file mode 100644 index 35a0beca95..0000000000 --- a/unit/atf-src/atf-c++/detail/text.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/text.hpp" - -extern "C" { -#include -} - -#include -#include - -extern "C" { -#include "atf-c/detail/text.h" -#include "atf-c/error.h" -} - -#include "atf-c++/detail/exceptions.hpp" - -namespace impl = atf::text; -#define IMPL_NAME "atf::text" - -char* -impl::duplicate(const char* str) -{ - char* copy = new char[std::strlen(str) + 1]; - std::strcpy(copy, str); - return copy; -} - -bool -impl::match(const std::string& str, const std::string& regex) -{ - bool found; - - // Special case: regcomp does not like empty regular expressions. - if (regex.empty()) { - found = str.empty(); - } else { - ::regex_t preg; - - if (::regcomp(&preg, regex.c_str(), REG_EXTENDED) != 0) - throw std::runtime_error("Invalid regular expression '" + regex + - "'"); - - const int res = ::regexec(&preg, str.c_str(), 0, NULL, 0); - regfree(&preg); - if (res != 0 && res != REG_NOMATCH) - throw std::runtime_error("Invalid regular expression " + regex); - - found = res == 0; - } - - return found; -} - -std::string -impl::to_lower(const std::string& str) -{ - std::string lc; - for (std::string::const_iterator iter = str.begin(); iter != str.end(); - iter++) - lc += std::tolower(*iter); - return lc; -} - -std::vector< std::string > -impl::split(const std::string& str, const std::string& delim) -{ - std::vector< std::string > words; - - std::string::size_type pos = 0, newpos = 0; - while (pos < str.length() && newpos != std::string::npos) { - newpos = str.find(delim, pos); - if (newpos != pos) - words.push_back(str.substr(pos, newpos - pos)); - pos = newpos + delim.length(); - } - - return words; -} - -std::string -impl::trim(const std::string& str) -{ - std::string::size_type pos1 = str.find_first_not_of(" \t"); - std::string::size_type pos2 = str.find_last_not_of(" \t"); - - if (pos1 == std::string::npos && pos2 == std::string::npos) - return ""; - else if (pos1 == std::string::npos) - return str.substr(0, str.length() - pos2); - else if (pos2 == std::string::npos) - return str.substr(pos1); - else - return str.substr(pos1, pos2 - pos1 + 1); -} - -bool -impl::to_bool(const std::string& str) -{ - bool b; - - atf_error_t err = atf_text_to_bool(str.c_str(), &b); - if (atf_is_error(err)) - throw_atf_error(err); - - return b; -} - -int64_t -impl::to_bytes(std::string str) -{ - if (str.empty()) - throw std::runtime_error("Empty value"); - - const char unit = str[str.length() - 1]; - int64_t multiplier; - switch (unit) { - case 'k': case 'K': multiplier = 1 << 10; break; - case 'm': case 'M': multiplier = 1 << 20; break; - case 'g': case 'G': multiplier = 1 << 30; break; - case 't': case 'T': multiplier = int64_t(1) << 40; break; - default: - if (!std::isdigit(unit)) - throw std::runtime_error(std::string("Unknown size unit '") + unit - + "'"); - multiplier = 1; - } - if (multiplier != 1) - str.erase(str.length() - 1); - - return to_type< int64_t >(str) * multiplier; -} diff --git a/unit/atf-src/atf-c++/detail/text.hpp b/unit/atf-src/atf-c++/detail/text.hpp deleted file mode 100644 index 63c3190a37..0000000000 --- a/unit/atf-src/atf-c++/detail/text.hpp +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_DETAIL_TEXT_HPP) -#define ATF_CXX_DETAIL_TEXT_HPP - -extern "C" { -#include -} - -#include -#include -#include -#include - -namespace atf { -namespace text { - -//! -//! \brief Duplicates a C string using the new[] allocator. -//! -//! Replaces the functionality of strdup by using the new[] allocator and -//! thus allowing the resulting memory to be managed by utils::auto_array. -//! -char* duplicate(const char*); - -//! -//! \brief Joins multiple words into a string. -//! -//! Joins a list of words into a string, separating them using the provided -//! separator. Empty words are not omitted. -//! -template< class T > -std::string -join(const T& words, const std::string& separator) -{ - std::string str; - - typename T::const_iterator iter = words.begin(); - bool done = iter == words.end(); - while (!done) { - str += *iter; - iter++; - if (iter != words.end()) - str += separator; - else - done = true; - } - - return str; -} - -//! -//! \brief Checks if the string matches a regular expression. -//! -bool match(const std::string&, const std::string&); - -//! -//! \brief Splits a string into words. -//! -//! Splits the given string into multiple words, all separated by the -//! given delimiter. Multiple occurrences of the same delimiter are -//! not condensed so that rejoining the words later on using the same -//! delimiter results in the original string. -//! -std::vector< std::string > split(const std::string&, const std::string&); - -//! -//! \brief Removes whitespace from the beginning and end of a string. -//! -std::string trim(const std::string&); - -//! -//! \brief Converts a string to a boolean value. -//! -bool to_bool(const std::string&); - -//! -//! \brief Converts the given string to a bytes size. -//! -int64_t to_bytes(std::string); - -//! -//! \brief Changes the case of a string to lowercase. -//! -//! Returns a new string that is a lowercased version of the original -//! one. -//! -std::string to_lower(const std::string&); - -//! -//! \brief Converts the given object to a string. -//! -//! Returns a string with the representation of the given object. There -//! must exist an operator<< method for that object. -//! -template< class T > -std::string -to_string(const T& ob) -{ - std::ostringstream ss; - ss << ob; - return ss.str(); -} - -//! -//! \brief Converts the given string to another type. -//! -//! Attempts to convert the given string to the requested type. Throws -//! an exception if the conversion failed. -//! -template< class T > -T -to_type(const std::string& str) -{ - std::istringstream ss(str); - T value; - ss >> value; - if (!ss.eof() || (ss.eof() && (ss.fail() || ss.bad()))) - throw std::runtime_error("Cannot convert string to requested type"); - return value; -} - -} // namespace text -} // namespace atf - -#endif // !defined(ATF_CXX_DETAIL_TEXT_HPP) diff --git a/unit/atf-src/atf-c++/detail/text_test.cpp b/unit/atf-src/atf-c++/detail/text_test.cpp deleted file mode 100644 index 49d37741b4..0000000000 --- a/unit/atf-src/atf-c++/detail/text_test.cpp +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/detail/text.hpp" - -#include -#include -#include - -#include - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(duplicate); -ATF_TEST_CASE_HEAD(duplicate) -{ - set_md_var("descr", "Tests the duplicate function"); -} -ATF_TEST_CASE_BODY(duplicate) -{ - using atf::text::duplicate; - - const char* orig = "foo"; - - char* copy = duplicate(orig); - ATF_REQUIRE_EQ(std::strlen(copy), 3); - ATF_REQUIRE(std::strcmp(copy, "foo") == 0); - - std::strcpy(copy, "bar"); - ATF_REQUIRE(std::strcmp(copy, "bar") == 0); - ATF_REQUIRE(std::strcmp(orig, "foo") == 0); -} - -ATF_TEST_CASE(join); -ATF_TEST_CASE_HEAD(join) -{ - set_md_var("descr", "Tests the join function"); -} -ATF_TEST_CASE_BODY(join) -{ - using atf::text::join; - - // First set of tests using a non-sorted collection, std::vector. - { - std::vector< std::string > words; - std::string str; - - words.clear(); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.push_back(""); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.push_back(""); - words.push_back(""); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ","); - - words.clear(); - words.push_back("foo"); - words.push_back(""); - words.push_back("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, "foo,,baz"); - - words.clear(); - words.push_back("foo"); - words.push_back("bar"); - words.push_back("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, "foo,bar,baz"); - } - - // Second set of tests using a sorted collection, std::set. - { - std::set< std::string > words; - std::string str; - - words.clear(); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.insert(""); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.insert("foo"); - words.insert(""); - words.insert("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ",baz,foo"); - - words.clear(); - words.insert("foo"); - words.insert("bar"); - words.insert("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, "bar,baz,foo"); - } -} - -ATF_TEST_CASE(match); -ATF_TEST_CASE_HEAD(match) -{ - set_md_var("descr", "Tests the match function"); -} -ATF_TEST_CASE_BODY(match) -{ - using atf::text::match; - - ATF_REQUIRE_THROW(std::runtime_error, match("", "[")); - - ATF_REQUIRE(match("", "")); - ATF_REQUIRE(!match("foo", "")); - - ATF_REQUIRE(match("", ".*")); - ATF_REQUIRE(match("", "[a-z]*")); - - ATF_REQUIRE(match("hello", "hello")); - ATF_REQUIRE(match("hello", "[a-z]+")); - ATF_REQUIRE(match("hello", "^[a-z]+$")); - - ATF_REQUIRE(!match("hello", "helooo")); - ATF_REQUIRE(!match("hello", "[a-z]+5")); - ATF_REQUIRE(!match("hello", "^ [a-z]+$")); -} - -ATF_TEST_CASE(split); -ATF_TEST_CASE_HEAD(split) -{ - set_md_var("descr", "Tests the split function"); -} -ATF_TEST_CASE_BODY(split) -{ - using atf::text::split; - - std::vector< std::string > words; - - words = split("", " "); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split(" ", " "); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split(" ", " "); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split("a b", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "b"); - - words = split("a b c d", " "); - ATF_REQUIRE_EQ(words.size(), 4); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "b"); - ATF_REQUIRE_EQ(words[2], "c"); - ATF_REQUIRE_EQ(words[3], "d"); - - words = split("foo bar", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split("foo bar baz foobar", " "); - ATF_REQUIRE_EQ(words.size(), 4); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - ATF_REQUIRE_EQ(words[2], "baz"); - ATF_REQUIRE_EQ(words[3], "foobar"); - - words = split(" foo bar", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split("foo bar", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split("foo bar ", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split(" foo bar ", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); -} - -ATF_TEST_CASE(split_delims); -ATF_TEST_CASE_HEAD(split_delims) -{ - set_md_var("descr", "Tests the split function using different delimiters"); -} -ATF_TEST_CASE_BODY(split_delims) -{ - using atf::text::split; - - std::vector< std::string > words; - - words = split("", "/"); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split(" ", "/"); - ATF_REQUIRE_EQ(words.size(), 1); - ATF_REQUIRE_EQ(words[0], " "); - - words = split(" ", "/"); - ATF_REQUIRE_EQ(words.size(), 1); - ATF_REQUIRE_EQ(words[0], " "); - - words = split("a/b", "/"); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "b"); - - words = split("aLONGDELIMbcdLONGDELIMef", "LONGDELIM"); - ATF_REQUIRE_EQ(words.size(), 3); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "bcd"); - ATF_REQUIRE_EQ(words[2], "ef"); -} - -ATF_TEST_CASE(trim); -ATF_TEST_CASE_HEAD(trim) -{ - set_md_var("descr", "Tests the trim function"); -} -ATF_TEST_CASE_BODY(trim) -{ - using atf::text::trim; - - ATF_REQUIRE_EQ(trim(""), ""); - ATF_REQUIRE_EQ(trim(" "), ""); - ATF_REQUIRE_EQ(trim("\t"), ""); - - ATF_REQUIRE_EQ(trim(" foo"), "foo"); - ATF_REQUIRE_EQ(trim("\t foo"), "foo"); - ATF_REQUIRE_EQ(trim(" \tfoo"), "foo"); - ATF_REQUIRE_EQ(trim("foo\t "), "foo"); - ATF_REQUIRE_EQ(trim("foo \t"), "foo"); - - ATF_REQUIRE_EQ(trim("foo bar"), "foo bar"); - ATF_REQUIRE_EQ(trim("\t foo bar"), "foo bar"); - ATF_REQUIRE_EQ(trim(" \tfoo bar"), "foo bar"); - ATF_REQUIRE_EQ(trim("foo bar\t "), "foo bar"); - ATF_REQUIRE_EQ(trim("foo bar \t"), "foo bar"); -} - -ATF_TEST_CASE(to_bool); -ATF_TEST_CASE_HEAD(to_bool) -{ - set_md_var("descr", "Tests the to_string function"); -} -ATF_TEST_CASE_BODY(to_bool) -{ - using atf::text::to_bool; - - ATF_REQUIRE(to_bool("true")); - ATF_REQUIRE(to_bool("TRUE")); - ATF_REQUIRE(to_bool("yes")); - ATF_REQUIRE(to_bool("YES")); - - ATF_REQUIRE(!to_bool("false")); - ATF_REQUIRE(!to_bool("FALSE")); - ATF_REQUIRE(!to_bool("no")); - ATF_REQUIRE(!to_bool("NO")); - - ATF_REQUIRE_THROW(std::runtime_error, to_bool("")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("tru")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("true2")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("fals")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("false2")); -} - -ATF_TEST_CASE(to_bytes); -ATF_TEST_CASE_HEAD(to_bytes) -{ - set_md_var("descr", "Tests the to_bytes function"); -} -ATF_TEST_CASE_BODY(to_bytes) -{ - using atf::text::to_bytes; - - ATF_REQUIRE_EQ(0, to_bytes("0")); - ATF_REQUIRE_EQ(12345, to_bytes("12345")); - ATF_REQUIRE_EQ(2 * 1024, to_bytes("2k")); - ATF_REQUIRE_EQ(4 * 1024 * 1024, to_bytes("4m")); - ATF_REQUIRE_EQ(int64_t(8) * 1024 * 1024 * 1024, to_bytes("8g")); - ATF_REQUIRE_EQ(int64_t(16) * 1024 * 1024 * 1024 * 1024, to_bytes("16t")); - - ATF_REQUIRE_THROW_RE(std::runtime_error, "Empty", to_bytes("")); - ATF_REQUIRE_THROW_RE(std::runtime_error, "Unknown size unit 'd'", - to_bytes("12d")); - ATF_REQUIRE_THROW(std::runtime_error, to_bytes(" ")); - ATF_REQUIRE_THROW(std::runtime_error, to_bytes(" k")); -} - -ATF_TEST_CASE(to_string); -ATF_TEST_CASE_HEAD(to_string) -{ - set_md_var("descr", "Tests the to_string function"); -} -ATF_TEST_CASE_BODY(to_string) -{ - using atf::text::to_string; - - ATF_REQUIRE_EQ(to_string('a'), "a"); - ATF_REQUIRE_EQ(to_string("a"), "a"); - ATF_REQUIRE_EQ(to_string(5), "5"); -} - -ATF_TEST_CASE(to_type); -ATF_TEST_CASE_HEAD(to_type) -{ - set_md_var("descr", "Tests the to_type function"); -} -ATF_TEST_CASE_BODY(to_type) -{ - using atf::text::to_type; - - ATF_REQUIRE_EQ(to_type< int >("0"), 0); - ATF_REQUIRE_EQ(to_type< int >("1234"), 1234); - ATF_REQUIRE_THROW(std::runtime_error, to_type< int >(" ")); - ATF_REQUIRE_THROW(std::runtime_error, to_type< int >("0 a")); - ATF_REQUIRE_THROW(std::runtime_error, to_type< int >("a")); - - ATF_REQUIRE_EQ(to_type< float >("0.5"), 0.5); - ATF_REQUIRE_EQ(to_type< float >("1234.5"), 1234.5); - ATF_REQUIRE_THROW(std::runtime_error, to_type< float >("0.5 a")); - ATF_REQUIRE_THROW(std::runtime_error, to_type< float >("a")); - - ATF_REQUIRE_EQ(to_type< std::string >("a"), "a"); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, duplicate); - ATF_ADD_TEST_CASE(tcs, join); - ATF_ADD_TEST_CASE(tcs, match); - ATF_ADD_TEST_CASE(tcs, split); - ATF_ADD_TEST_CASE(tcs, split_delims); - ATF_ADD_TEST_CASE(tcs, trim); - ATF_ADD_TEST_CASE(tcs, to_bool); - ATF_ADD_TEST_CASE(tcs, to_bytes); - ATF_ADD_TEST_CASE(tcs, to_string); - ATF_ADD_TEST_CASE(tcs, to_type); -} diff --git a/unit/atf-src/atf-c++/detail/version_helper.cpp b/unit/atf-src/atf-c++/detail/version_helper.cpp deleted file mode 100644 index 0ee47913e2..0000000000 --- a/unit/atf-src/atf-c++/detail/version_helper.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// * Neither the name of Google Inc. nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include - -int -main(void) -{ - std::cout << PACKAGE_VERSION << "\n"; - return EXIT_SUCCESS; -} diff --git a/unit/atf-src/atf-c++/macros.hpp b/unit/atf-src/atf-c++/macros.hpp deleted file mode 100644 index ea0b2dc080..0000000000 --- a/unit/atf-src/atf-c++/macros.hpp +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_MACROS_HPP) -#define ATF_CXX_MACROS_HPP - -#include -#include -#include - -#include - -// Do not define inline methods for the test case classes. Doing so -// significantly increases the memory requirements of GNU G++ during -// compilation. - -#define ATF_TEST_CASE_WITHOUT_HEAD(name) \ - namespace { \ - class atfu_tc_ ## name : public atf::tests::tc { \ - void body(void) const; \ - public: \ - atfu_tc_ ## name(void); \ - }; \ - static atfu_tc_ ## name* atfu_tcptr_ ## name; \ - atfu_tc_ ## name::atfu_tc_ ## name(void) : atf::tests::tc(#name, false) {} \ - } - -#define ATF_TEST_CASE(name) \ - namespace { \ - class atfu_tc_ ## name : public atf::tests::tc { \ - void head(void); \ - void body(void) const; \ - public: \ - atfu_tc_ ## name(void); \ - }; \ - static atfu_tc_ ## name* atfu_tcptr_ ## name; \ - atfu_tc_ ## name::atfu_tc_ ## name(void) : atf::tests::tc(#name, false) {} \ - } - -#define ATF_TEST_CASE_WITH_CLEANUP(name) \ - namespace { \ - class atfu_tc_ ## name : public atf::tests::tc { \ - void head(void); \ - void body(void) const; \ - void cleanup(void) const; \ - public: \ - atfu_tc_ ## name(void); \ - }; \ - static atfu_tc_ ## name* atfu_tcptr_ ## name; \ - atfu_tc_ ## name::atfu_tc_ ## name(void) : atf::tests::tc(#name, true) {} \ - } - -#define ATF_TEST_CASE_NAME(name) atfu_tc_ ## name -#define ATF_TEST_CASE_USE(name) (atfu_tcptr_ ## name) = NULL - -#define ATF_TEST_CASE_HEAD(name) \ - void \ - atfu_tc_ ## name::head(void) - -#define ATF_TEST_CASE_BODY(name) \ - void \ - atfu_tc_ ## name::body(void) \ - const - -#define ATF_TEST_CASE_CLEANUP(name) \ - void \ - atfu_tc_ ## name::cleanup(void) \ - const - -#define ATF_FAIL(reason) atf::tests::tc::fail(reason) - -#define ATF_SKIP(reason) atf::tests::tc::skip(reason) - -#define ATF_PASS() atf::tests::tc::pass() - -#define ATF_REQUIRE(expression) \ - do { \ - if (!(expression)) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": " << #expression \ - << " not met"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } \ - } while (false) - -#define ATF_REQUIRE_EQ(expected, actual) \ - do { \ - if ((expected) != (actual)) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": " \ - << #expected << " != " << #actual \ - << " (" << (expected) << " != " << (actual) << ")"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } \ - } while (false) - -#define ATF_REQUIRE_IN(element, collection) \ - ATF_REQUIRE((collection).find(element) != (collection).end()) - -#define ATF_REQUIRE_NOT_IN(element, collection) \ - ATF_REQUIRE((collection).find(element) == (collection).end()) - -#define ATF_REQUIRE_MATCH(regexp, string) \ - do { \ - if (!atf::tests::detail::match(regexp, string)) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": '" << string << "' does not " \ - << "match regexp '" << regexp << "'"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } \ - } while (false) - -#define ATF_REQUIRE_THROW(expected_exception, statement) \ - do { \ - try { \ - statement; \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ \ - << ": " #statement " did not throw " #expected_exception \ - " as expected"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } catch (const expected_exception&) { \ - } catch (const std::exception& atfu_e) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": " #statement " threw an " \ - "unexpected error (not " #expected_exception "): " \ - << atfu_e.what(); \ - atf::tests::tc::fail(atfu_ss.str()); \ - } catch (...) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": " #statement " threw an " \ - "unexpected error (not " #expected_exception ")"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } \ - } while (false) - -#define ATF_REQUIRE_THROW_RE(expected_exception, regexp, statement) \ - do { \ - try { \ - statement; \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ \ - << ": " #statement " did not throw " #expected_exception \ - " as expected"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } catch (const expected_exception& e) { \ - if (!atf::tests::detail::match(regexp, e.what())) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ \ - << ": " #statement " threw " #expected_exception "(" \ - << e.what() << "), but does not match '" << regexp \ - << "'"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } \ - } catch (const std::exception& atfu_e) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": " #statement " threw an " \ - "unexpected error (not " #expected_exception "): " \ - << atfu_e.what(); \ - atf::tests::tc::fail(atfu_ss.str()); \ - } catch (...) { \ - std::ostringstream atfu_ss; \ - atfu_ss << "Line " << __LINE__ << ": " #statement " threw an " \ - "unexpected error (not " #expected_exception ")"; \ - atf::tests::tc::fail(atfu_ss.str()); \ - } \ - } while (false) - -#define ATF_CHECK_ERRNO(expected_errno, bool_expr) \ - atf::tests::tc::check_errno(__FILE__, __LINE__, expected_errno, \ - #bool_expr, bool_expr) - -#define ATF_REQUIRE_ERRNO(expected_errno, bool_expr) \ - atf::tests::tc::require_errno(__FILE__, __LINE__, expected_errno, \ - #bool_expr, bool_expr) - -#define ATF_INIT_TEST_CASES(tcs) \ - namespace atf { \ - namespace tests { \ - int run_tp(int, char**, \ - void (*)(std::vector< atf::tests::tc * >&)); \ - } \ - } \ - \ - static void atfu_init_tcs(std::vector< atf::tests::tc * >&); \ - \ - int \ - main(int argc, char** argv) \ - { \ - return atf::tests::run_tp(argc, argv, atfu_init_tcs); \ - } \ - \ - static \ - void \ - atfu_init_tcs(std::vector< atf::tests::tc * >& tcs) - -#define ATF_ADD_TEST_CASE(tcs, tcname) \ - do { \ - atfu_tcptr_ ## tcname = new atfu_tc_ ## tcname(); \ - (tcs).push_back(atfu_tcptr_ ## tcname); \ - } while (0); - -#endif // !defined(ATF_CXX_MACROS_HPP) diff --git a/unit/atf-src/atf-c++/macros_hpp_test.cpp b/unit/atf-src/atf-c++/macros_hpp_test.cpp deleted file mode 100644 index 0bc27c60cb..0000000000 --- a/unit/atf-src/atf-c++/macros_hpp_test.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include - -#include - -void -atf_check_errno_semicolons(void) -{ - // Check that ATF_CHECK_ERRNO does not contain a semicolon that would - // cause an empty-statement that confuses some compilers. - ATF_CHECK_ERRNO(1, 1 == 1); - ATF_CHECK_ERRNO(2, 2 == 2); -} - -void -atf_require_inside_if(void) -{ - // Make sure that ATF_REQUIRE can be used inside an if statement that - // does not have braces. Earlier versions of it generated an error - // if there was an else clause because they confused the compiler - // by defining an unprotected nested if. - if (true) - ATF_REQUIRE(true); - else - ATF_REQUIRE(true); -} - -void -atf_require_eq_inside_if(void) -{ - // Make sure that ATF_REQUIRE_EQ can be used inside an if statement - // that does not have braces. Earlier versions of it generated an - // error if there was an else clause because they confused the - // compiler by defining an unprotected nested if. - if (true) - ATF_REQUIRE_EQ(true, true); - else - ATF_REQUIRE_EQ(true, true); -} - -void -atf_require_throw_runtime_error(void) -{ - // Check that we can pass std::runtime_error to ATF_REQUIRE_THROW. - // Earlier versions generated a warning because the macro's code also - // attempted to capture this exception, and thus we had a duplicate - // catch clause. - ATF_REQUIRE_THROW(std::runtime_error, (void)0); -} - -void -atf_require_throw_inside_if(void) -{ - // Make sure that ATF_REQUIRE_THROW can be used inside an if statement - // that does not have braces. Earlier versions of it generated an - // error because a trailing ; after a catch block was not allowed. - if (true) - ATF_REQUIRE_THROW(std::runtime_error, (void)0); - else - ATF_REQUIRE_THROW(std::runtime_error, (void)1); -} - -void -atf_require_errno_semicolons(void) -{ - // Check that ATF_REQUIRE_ERRNO does not contain a semicolon that would - // cause an empty-statement that confuses some compilers. - ATF_REQUIRE_ERRNO(1, 1 == 1); - ATF_REQUIRE_ERRNO(2, 2 == 2); -} - -// Test case names should not be expanded during instatiation so that they -// can have the exact same name as macros. -#define TEST_MACRO_1 invalid + name -#define TEST_MACRO_2 invalid + name -#define TEST_MACRO_3 invalid + name -ATF_TEST_CASE(TEST_MACRO_1); -ATF_TEST_CASE_HEAD(TEST_MACRO_1) { } -ATF_TEST_CASE_BODY(TEST_MACRO_1) { } -void instantiate_1(void) { - ATF_TEST_CASE_USE(TEST_MACRO_1); - atf::tests::tc* the_test = new ATF_TEST_CASE_NAME(TEST_MACRO_1)(); - delete the_test; -} -ATF_TEST_CASE_WITH_CLEANUP(TEST_MACRO_2); -ATF_TEST_CASE_HEAD(TEST_MACRO_2) { } -ATF_TEST_CASE_BODY(TEST_MACRO_2) { } -ATF_TEST_CASE_CLEANUP(TEST_MACRO_2) { } -void instatiate_2(void) { - ATF_TEST_CASE_USE(TEST_MACRO_2); - atf::tests::tc* the_test = new ATF_TEST_CASE_NAME(TEST_MACRO_2)(); - delete the_test; -} -ATF_TEST_CASE_WITH_CLEANUP(TEST_MACRO_3); -ATF_TEST_CASE_HEAD(TEST_MACRO_3) { } -ATF_TEST_CASE_BODY(TEST_MACRO_3) { } -ATF_TEST_CASE_CLEANUP(TEST_MACRO_3) { } -void instatiate_3(void) { - ATF_TEST_CASE_USE(TEST_MACRO_3); - atf::tests::tc* the_test = new ATF_TEST_CASE_NAME(TEST_MACRO_3)(); - delete the_test; -} diff --git a/unit/atf-src/atf-c++/macros_test.cpp b/unit/atf-src/atf-c++/macros_test.cpp deleted file mode 100644 index 23b5e5cbb6..0000000000 --- a/unit/atf-src/atf-c++/macros_test.cpp +++ /dev/null @@ -1,811 +0,0 @@ -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/macros.hpp" - -extern "C" { -#include -#include -} - -#include -#include -#include -#include - -#include - -#include "atf-c++/detail/fs.hpp" -#include "atf-c++/detail/process.hpp" -#include "atf-c++/detail/sanity.hpp" -#include "atf-c++/detail/test_helpers.hpp" -#include "atf-c++/detail/text.hpp" -#include "atf-c++/utils.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -void -create_ctl_file(const char *name) -{ - ATF_REQUIRE(open(name, O_CREAT | O_WRONLY | O_TRUNC, 0644) != -1); -} - -// ------------------------------------------------------------------------ -// Auxiliary test cases. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(h_pass); -ATF_TEST_CASE_HEAD(h_pass) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_pass) -{ - create_ctl_file("before"); - ATF_PASS(); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_fail); -ATF_TEST_CASE_HEAD(h_fail) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_fail) -{ - create_ctl_file("before"); - ATF_FAIL("Failed on purpose"); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_skip); -ATF_TEST_CASE_HEAD(h_skip) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_skip) -{ - create_ctl_file("before"); - ATF_SKIP("Skipped on purpose"); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require); -ATF_TEST_CASE_HEAD(h_require) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require) -{ - bool condition = atf::text::to_bool(get_config_var("condition")); - - create_ctl_file("before"); - ATF_REQUIRE(condition); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_eq); -ATF_TEST_CASE_HEAD(h_require_eq) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_eq) -{ - long v1 = atf::text::to_type< long >(get_config_var("v1")); - long v2 = atf::text::to_type< long >(get_config_var("v2")); - - create_ctl_file("before"); - ATF_REQUIRE_EQ(v1, v2); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_in); -ATF_TEST_CASE_HEAD(h_require_in) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_in) -{ - const std::string element = get_config_var("value"); - - std::set< std::string > collection; - collection.insert("foo"); - collection.insert("bar"); - collection.insert("baz"); - - create_ctl_file("before"); - ATF_REQUIRE_IN(element, collection); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_match); -ATF_TEST_CASE_HEAD(h_require_match) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_match) -{ - const std::string regexp = get_config_var("regexp"); - const std::string string = get_config_var("string"); - - create_ctl_file("before"); - ATF_REQUIRE_MATCH(regexp, string); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_not_in); -ATF_TEST_CASE_HEAD(h_require_not_in) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_not_in) -{ - const std::string element = get_config_var("value"); - - std::set< std::string > collection; - collection.insert("foo"); - collection.insert("bar"); - collection.insert("baz"); - - create_ctl_file("before"); - ATF_REQUIRE_NOT_IN(element, collection); - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_throw); -ATF_TEST_CASE_HEAD(h_require_throw) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_throw) -{ - create_ctl_file("before"); - - if (get_config_var("what") == "throw_int") - ATF_REQUIRE_THROW(std::runtime_error, if (1) throw int(5)); - else if (get_config_var("what") == "throw_rt") - ATF_REQUIRE_THROW(std::runtime_error, - if (1) throw std::runtime_error("e")); - else if (get_config_var("what") == "no_throw_rt") - ATF_REQUIRE_THROW(std::runtime_error, - if (0) throw std::runtime_error("e")); - - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_throw_re); -ATF_TEST_CASE_HEAD(h_require_throw_re) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_throw_re) -{ - create_ctl_file("before"); - - if (get_config_var("what") == "throw_int") - ATF_REQUIRE_THROW_RE(std::runtime_error, "5", if (1) throw int(5)); - else if (get_config_var("what") == "throw_rt_match") - ATF_REQUIRE_THROW_RE(std::runtime_error, "foo.*baz", - if (1) throw std::runtime_error("a foo bar baz")); - else if (get_config_var("what") == "throw_rt_no_match") - ATF_REQUIRE_THROW_RE(std::runtime_error, "foo.*baz", - if (1) throw std::runtime_error("baz foo bar a")); - else if (get_config_var("what") == "no_throw_rt") - ATF_REQUIRE_THROW_RE(std::runtime_error, "e", - if (0) throw std::runtime_error("e")); - - create_ctl_file("after"); -} - -static int -errno_fail_stub(const int raised_errno) -{ - errno = raised_errno; - return -1; -} - -static int -errno_ok_stub(void) -{ - return 0; -} - -ATF_TEST_CASE(h_check_errno); -ATF_TEST_CASE_HEAD(h_check_errno) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_check_errno) -{ - create_ctl_file("before"); - - if (get_config_var("what") == "no_error") - ATF_CHECK_ERRNO(-1, errno_ok_stub() == -1); - else if (get_config_var("what") == "errno_ok") - ATF_CHECK_ERRNO(2, errno_fail_stub(2) == -1); - else if (get_config_var("what") == "errno_fail") - ATF_CHECK_ERRNO(3, errno_fail_stub(4) == -1); - else - UNREACHABLE; - - create_ctl_file("after"); -} - -ATF_TEST_CASE(h_require_errno); -ATF_TEST_CASE_HEAD(h_require_errno) -{ - set_md_var("descr", "Helper test case"); -} -ATF_TEST_CASE_BODY(h_require_errno) -{ - create_ctl_file("before"); - - if (get_config_var("what") == "no_error") - ATF_REQUIRE_ERRNO(-1, errno_ok_stub() == -1); - else if (get_config_var("what") == "errno_ok") - ATF_REQUIRE_ERRNO(2, errno_fail_stub(2) == -1); - else if (get_config_var("what") == "errno_fail") - ATF_REQUIRE_ERRNO(3, errno_fail_stub(4) == -1); - else - UNREACHABLE; - - create_ctl_file("after"); -} - -// ------------------------------------------------------------------------ -// Test cases for the macros. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(pass); -ATF_TEST_CASE_HEAD(pass) -{ - set_md_var("descr", "Tests the ATF_PASS macro"); -} -ATF_TEST_CASE_BODY(pass) -{ - ATF_TEST_CASE_USE(h_pass); - run_h_tc< ATF_TEST_CASE_NAME(h_pass) >(); - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(atf::fs::path("before"))); - ATF_REQUIRE(!atf::fs::exists(atf::fs::path("after"))); -} - -ATF_TEST_CASE(fail); -ATF_TEST_CASE_HEAD(fail) -{ - set_md_var("descr", "Tests the ATF_FAIL macro"); -} -ATF_TEST_CASE_BODY(fail) -{ - ATF_TEST_CASE_USE(h_fail); - run_h_tc< ATF_TEST_CASE_NAME(h_fail) >(); - ATF_REQUIRE(atf::utils::grep_file("^failed: Failed on purpose", "result")); - ATF_REQUIRE(atf::fs::exists(atf::fs::path("before"))); - ATF_REQUIRE(!atf::fs::exists(atf::fs::path("after"))); -} - -ATF_TEST_CASE(skip); -ATF_TEST_CASE_HEAD(skip) -{ - set_md_var("descr", "Tests the ATF_SKIP macro"); -} -ATF_TEST_CASE_BODY(skip) -{ - ATF_TEST_CASE_USE(h_skip); - run_h_tc< ATF_TEST_CASE_NAME(h_skip) >(); - ATF_REQUIRE(atf::utils::grep_file("^skipped: Skipped on purpose", - "result")); - ATF_REQUIRE(atf::fs::exists(atf::fs::path("before"))); - ATF_REQUIRE(!atf::fs::exists(atf::fs::path("after"))); -} - -ATF_TEST_CASE(require); -ATF_TEST_CASE_HEAD(require) -{ - set_md_var("descr", "Tests the ATF_REQUIRE macro"); -} -ATF_TEST_CASE_BODY(require) -{ - struct test { - const char *cond; - bool ok; - } *t, tests[] = { - { "false", false }, - { "true", true }, - { NULL, false } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->cond != NULL; t++) { - atf::tests::vars_map config; - config["condition"] = t->cond; - - std::cout << "Checking with a " << t->cond << " value\n"; - - ATF_TEST_CASE_USE(h_require); - run_h_tc< ATF_TEST_CASE_NAME(h_require) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - ATF_REQUIRE(atf::utils::grep_file( - "^failed: .*condition not met", "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_eq); -ATF_TEST_CASE_HEAD(require_eq) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_EQ macro"); -} -ATF_TEST_CASE_BODY(require_eq) -{ - struct test { - const char *v1; - const char *v2; - bool ok; - } *t, tests[] = { - { "1", "1", true }, - { "1", "2", false }, - { "2", "1", false }, - { "2", "2", true }, - { NULL, NULL, false } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->v1 != NULL; t++) { - atf::tests::vars_map config; - config["v1"] = t->v1; - config["v2"] = t->v2; - - std::cout << "Checking with " << t->v1 << ", " << t->v2 - << " and expecting " << (t->ok ? "true" : "false") - << "\n"; - - ATF_TEST_CASE_USE(h_require_eq); - run_h_tc< ATF_TEST_CASE_NAME(h_require_eq) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - ATF_REQUIRE(atf::utils::grep_file("^failed: .*v1 != v2", "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_in); -ATF_TEST_CASE_HEAD(require_in) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_IN macro"); -} -ATF_TEST_CASE_BODY(require_in) -{ - struct test { - const char *value; - bool ok; - } *t, tests[] = { - { "foo", true }, - { "bar", true }, - { "baz", true }, - { "xxx", false }, - { "fooa", false }, - { "foo ", false }, - { NULL, false } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->value != NULL; t++) { - atf::tests::vars_map config; - config["value"] = t->value; - - ATF_TEST_CASE_USE(h_require_in); - run_h_tc< ATF_TEST_CASE_NAME(h_require_in) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - ATF_REQUIRE(atf::utils::grep_file("^failed: ", "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_match); -ATF_TEST_CASE_HEAD(require_match) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_MATCH macro"); -} -ATF_TEST_CASE_BODY(require_match) -{ - struct test { - const char *regexp; - const char *string; - bool ok; - } *t, tests[] = { - { "foo.*bar", "this is a foo, bar, baz", true }, - { "bar.*baz", "this is a baz, bar, foo", false }, - { NULL, NULL, false } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->regexp != NULL; t++) { - atf::tests::vars_map config; - config["regexp"] = t->regexp; - config["string"] = t->string; - - std::cout << "Checking with " << t->regexp << ", " << t->string - << " and expecting " << (t->ok ? "true" : "false") - << "\n"; - - ATF_TEST_CASE_USE(h_require_match); - run_h_tc< ATF_TEST_CASE_NAME(h_require_match) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - ATF_REQUIRE(atf::utils::grep_file("^failed: ", "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_not_in); -ATF_TEST_CASE_HEAD(require_not_in) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_NOT_IN macro"); -} -ATF_TEST_CASE_BODY(require_not_in) -{ - struct test { - const char *value; - bool ok; - } *t, tests[] = { - { "foo", false }, - { "bar", false }, - { "baz", false }, - { "xxx", true }, - { "fooa", true }, - { "foo ", true }, - { NULL, false } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->value != NULL; t++) { - atf::tests::vars_map config; - config["value"] = t->value; - - ATF_TEST_CASE_USE(h_require_not_in); - run_h_tc< ATF_TEST_CASE_NAME(h_require_not_in) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - ATF_REQUIRE(atf::utils::grep_file("^failed: ", "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_throw); -ATF_TEST_CASE_HEAD(require_throw) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_THROW macro"); -} -ATF_TEST_CASE_BODY(require_throw) -{ - struct test { - const char *what; - bool ok; - const char *msg; - } *t, tests[] = { - { "throw_int", false, "unexpected error" }, - { "throw_rt", true, NULL }, - { "no_throw_rt", false, "did not throw" }, - { NULL, false, NULL } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->what != NULL; t++) { - atf::tests::vars_map config; - config["what"] = t->what; - - std::cout << "Checking with " << t->what << " and expecting " - << (t->ok ? "true" : "false") << "\n"; - - ATF_TEST_CASE_USE(h_require_throw); - run_h_tc< ATF_TEST_CASE_NAME(h_require_throw) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - std::cout << "Checking that message contains '" << t->msg - << "'\n"; - std::string exp_result = std::string("^failed: .*") + t->msg; - ATF_REQUIRE(atf::utils::grep_file(exp_result.c_str(), "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_throw_re); -ATF_TEST_CASE_HEAD(require_throw_re) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_THROW_RE macro"); -} -ATF_TEST_CASE_BODY(require_throw_re) -{ - struct test { - const char *what; - bool ok; - const char *msg; - } *t, tests[] = { - { "throw_int", false, "unexpected error" }, - { "throw_rt_match", true, NULL }, - { "throw_rt_no_match", false, - "threw.*runtime_error\\(baz foo bar a\\).*" - "does not match 'foo\\.\\*baz'" }, - { "no_throw_rt", false, "did not throw" }, - { NULL, false, NULL } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->what != NULL; t++) { - atf::tests::vars_map config; - config["what"] = t->what; - - std::cout << "Checking with " << t->what << " and expecting " - << (t->ok ? "true" : "false") << "\n"; - - ATF_TEST_CASE_USE(h_require_throw_re); - run_h_tc< ATF_TEST_CASE_NAME(h_require_throw_re) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - std::cout << "Checking that message contains '" << t->msg - << "'\n"; - std::string exp_result = std::string("^failed: .*") + t->msg; - ATF_REQUIRE(atf::utils::grep_file(exp_result.c_str(), "result")); - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(check_errno); -ATF_TEST_CASE_HEAD(check_errno) -{ - set_md_var("descr", "Tests the ATF_CHECK_ERRNO macro"); -} -ATF_TEST_CASE_BODY(check_errno) -{ - struct test { - const char *what; - bool ok; - const char *msg; - } *t, tests[] = { - { "no_error", false, - "Expected true value in errno_ok_stub\\(\\) == -1" }, - { "errno_ok", true, NULL }, - { "errno_fail", false, - "Expected errno 3, got 4, in errno_fail_stub\\(4\\) == -1" }, - { NULL, false, NULL } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->what != NULL; t++) { - atf::tests::vars_map config; - config["what"] = t->what; - - ATF_TEST_CASE_USE(h_check_errno); - run_h_tc< ATF_TEST_CASE_NAME(h_check_errno) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - ATF_REQUIRE(atf::fs::exists(after)); - - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - } else { - ATF_REQUIRE(atf::utils::grep_file("^failed", "result")); - - std::string exp_result = "macros_test.cpp:[0-9]+: " + - std::string(t->msg) + "$"; - ATF_REQUIRE(atf::utils::grep_file(exp_result.c_str(), "stderr")); - } - - atf::fs::remove(before); - atf::fs::remove(after); - } -} - -ATF_TEST_CASE(require_errno); -ATF_TEST_CASE_HEAD(require_errno) -{ - set_md_var("descr", "Tests the ATF_REQUIRE_ERRNO macro"); -} -ATF_TEST_CASE_BODY(require_errno) -{ - struct test { - const char *what; - bool ok; - const char *msg; - } *t, tests[] = { - { "no_error", false, - "Expected true value in errno_ok_stub\\(\\) == -1" }, - { "errno_ok", true, NULL }, - { "errno_fail", false, - "Expected errno 3, got 4, in errno_fail_stub\\(4\\) == -1" }, - { NULL, false, NULL } - }; - - const atf::fs::path before("before"); - const atf::fs::path after("after"); - - for (t = &tests[0]; t->what != NULL; t++) { - atf::tests::vars_map config; - config["what"] = t->what; - - ATF_TEST_CASE_USE(h_require_errno); - run_h_tc< ATF_TEST_CASE_NAME(h_require_errno) >(config); - - ATF_REQUIRE(atf::fs::exists(before)); - if (t->ok) { - ATF_REQUIRE(atf::utils::grep_file("^passed", "result")); - ATF_REQUIRE(atf::fs::exists(after)); - } else { - std::string exp_result = "^failed: .*macros_test.cpp:[0-9]+: " + - std::string(t->msg) + "$"; - ATF_REQUIRE(atf::utils::grep_file(exp_result.c_str(), "result")); - - ATF_REQUIRE(!atf::fs::exists(after)); - } - - atf::fs::remove(before); - if (t->ok) - atf::fs::remove(after); - } -} - -// ------------------------------------------------------------------------ -// Tests cases for the header file. -// ------------------------------------------------------------------------ - -BUILD_TC(use, "macros_hpp_test.cpp", - "Tests that the macros provided by the atf-c++/macros.hpp file " - "do not cause syntax errors when used", - "Build of macros_hpp_test.cpp failed; some macros in " - "atf-c++/macros.hpp are broken"); - -ATF_TEST_CASE(detect_unused_tests); -ATF_TEST_CASE_HEAD(detect_unused_tests) -{ - set_md_var("descr", - "Tests that defining an unused test case raises a warning (and " - "thus an error)"); -} -ATF_TEST_CASE_BODY(detect_unused_tests) -{ - const char* validate_compiler = - "class test_class { public: int dummy; };\n" - "#define define_unused static test_class unused\n" - "define_unused;\n"; - - atf::utils::create_file("compiler_test.cpp", validate_compiler); - if (build_check_cxx_o("compiler_test.cpp")) - expect_fail("Compiler does not raise a warning on an unused " - "static global variable declared by a macro"); - - if (build_check_cxx_o_srcdir(*this, "unused_test.cpp")) - ATF_FAIL("Build of unused_test.cpp passed; unused test cases are " - "not properly detected"); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the macros. - ATF_ADD_TEST_CASE(tcs, pass); - ATF_ADD_TEST_CASE(tcs, fail); - ATF_ADD_TEST_CASE(tcs, skip); - ATF_ADD_TEST_CASE(tcs, check_errno); - ATF_ADD_TEST_CASE(tcs, require); - ATF_ADD_TEST_CASE(tcs, require_eq); - ATF_ADD_TEST_CASE(tcs, require_in); - ATF_ADD_TEST_CASE(tcs, require_match); - ATF_ADD_TEST_CASE(tcs, require_not_in); - ATF_ADD_TEST_CASE(tcs, require_throw); - ATF_ADD_TEST_CASE(tcs, require_throw_re); - ATF_ADD_TEST_CASE(tcs, require_errno); - - // Add the test cases for the header file. - ATF_ADD_TEST_CASE(tcs, use); - ATF_ADD_TEST_CASE(tcs, detect_unused_tests); -} diff --git a/unit/atf-src/atf-c++/pkg_config_test.sh b/unit/atf-src/atf-c++/pkg_config_test.sh deleted file mode 100644 index af541f6d76..0000000000 --- a/unit/atf-src/atf-c++/pkg_config_test.sh +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright (c) 2008 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The following tests assume that the atfc++.pc file is installed in a -# directory that is known by pkg-config. Otherwise they will fail, -# and you will be required to adjust PKG_CONFIG_PATH accordingly. -# -# It would be possible to bypass this requirement by setting the path -# explicitly during the tests, but then this would not do a real check -# to ensure that the installation is working. - -require_pc() -{ - pkg-config ${1} || atf_fail "pkg-config could not locate ${1}.pc;" \ - "maybe need to set PKG_CONFIG_PATH?" -} - -check_version() -{ - ver1=$($(atf_get_srcdir)/detail/version_helper) - echo "Version reported by builtin PACKAGE_VERSION: ${ver1}" - - atf_check -s eq:0 -o save:stdout -e empty pkg-config --modversion "${1}" - ver2=$(cat stdout) - echo "Version reported by pkg-config: ${ver2}" - - atf_check_equal ${ver1} ${ver2} -} - -atf_test_case version -version_head() -{ - atf_set "descr" "Checks that the version in atf-c++ is correct" - atf_set "require.progs" "pkg-config" -} -version_body() -{ - require_pc "atf-c++" - - check_version "atf-c++" -} - -atf_test_case build -build_head() -{ - atf_set "descr" "Checks that a test program can be built against" \ - "the C++ library based on the pkg-config information" - atf_set "require.progs" "pkg-config" -} -build_body() -{ - require_pc "atf-c++" - - atf_check -s eq:0 -o save:stdout -e empty \ - pkg-config --variable=cxx atf-c++ - cxx=$(cat stdout) - echo "Compiler is: ${cxx}" - atf_require_prog ${cxx} - - cat >tp.cpp < - -#include - -ATF_TEST_CASE(tc); -ATF_TEST_CASE_HEAD(tc) { - set_md_var("descr", "A test case"); -} -ATF_TEST_CASE_BODY(tc) { - std::cout << "Running\n"; -} - -ATF_INIT_TEST_CASES(tcs) { - ATF_ADD_TEST_CASE(tcs, tc); -} -EOF - - atf_check -s eq:0 -o save:stdout -e empty pkg-config --cflags atf-c++ - cxxflags=$(cat stdout) - echo "CXXFLAGS are: ${cxxflags}" - - atf_check -s eq:0 -o save:stdout -e empty \ - pkg-config --libs-only-L --libs-only-other atf-c++ - ldflags=$(cat stdout) - atf_check -s eq:0 -o save:stdout -e empty \ - pkg-config --libs-only-l atf-c++ - libs=$(cat stdout) - echo "LDFLAGS are: ${ldflags}" - echo "LIBS are: ${libs}" - - atf_check -s eq:0 -o empty -e empty ${cxx} ${cxxflags} -o tp.o -c tp.cpp - atf_check -s eq:0 -o empty -e empty ${cxx} ${ldflags} -o tp tp.o ${libs} - - libpath= - for f in ${ldflags}; do - case ${f} in - -L*) - dir=$(echo ${f} | sed -e 's,^-L,,') - if [ -z "${libpath}" ]; then - libpath="${dir}" - else - libpath="${libpath}:${dir}" - fi - ;; - *) - ;; - esac - done - - atf_check -s eq:0 -o empty -e empty test -x tp - atf_check -s eq:0 -o match:'Running' -e empty -x \ - "LD_LIBRARY_PATH=${libpath} ./tp tc" -} - -atf_init_test_cases() -{ - atf_add_test_case version - atf_add_test_case build -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-c++/tests.cpp b/unit/atf-src/atf-c++/tests.cpp deleted file mode 100644 index ede9609e32..0000000000 --- a/unit/atf-src/atf-c++/tests.cpp +++ /dev/null @@ -1,658 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/tests.hpp" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -#include -#include -#include -#include -#include -} - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -extern "C" { -#include "atf-c/error.h" -#include "atf-c/tc.h" -#include "atf-c/utils.h" -} - -#include "atf-c++/detail/application.hpp" -#include "atf-c++/detail/auto_array.hpp" -#include "atf-c++/detail/env.hpp" -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/fs.hpp" -#include "atf-c++/detail/sanity.hpp" -#include "atf-c++/detail/text.hpp" - -#if defined(HAVE_GNU_GETOPT) -# define GETOPT_POSIX "+" -#else -# define GETOPT_POSIX "" -#endif - -namespace impl = atf::tests; -namespace detail = atf::tests::detail; -#define IMPL_NAME "atf::tests" - -using atf::application::usage_error; - -// ------------------------------------------------------------------------ -// The "atf_tp_writer" class. -// ------------------------------------------------------------------------ - -detail::atf_tp_writer::atf_tp_writer(std::ostream& os) : - m_os(os), - m_is_first(true) -{ - m_os << "Content-Type: application/X-atf-tp; version=\"1\"\n\n"; -} - -void -detail::atf_tp_writer::start_tc(const std::string& ident) -{ - if (!m_is_first) - m_os << "\n"; - m_os << "ident: " << ident << "\n"; - m_os.flush(); -} - -void -detail::atf_tp_writer::end_tc(void) -{ - if (m_is_first) - m_is_first = false; -} - -void -detail::atf_tp_writer::tc_meta_data(const std::string& name, - const std::string& value) -{ - PRE(name != "ident"); - m_os << name << ": " << value << "\n"; - m_os.flush(); -} - -// ------------------------------------------------------------------------ -// Free helper functions. -// ------------------------------------------------------------------------ - -std::string Program_Name; - -static void -set_program_name(const char* argv0) -{ - const std::string program_name = atf::fs::path(argv0).leaf_name(); - // Libtool workaround: if running from within the source tree (binaries - // that are not installed yet), skip the "lt-" prefix added to files in - // the ".libs" directory to show the real (not temporary) name. - if (program_name.substr(0, 3) == "lt-") - Program_Name = program_name.substr(3); - else - Program_Name = program_name; -} - -bool -detail::match(const std::string& regexp, const std::string& str) -{ - return atf::text::match(str, regexp); -} - -// ------------------------------------------------------------------------ -// The "tc" class. -// ------------------------------------------------------------------------ - -static std::map< atf_tc_t*, impl::tc* > wraps; -static std::map< const atf_tc_t*, const impl::tc* > cwraps; - -struct impl::tc_impl { -private: - // Non-copyable. - tc_impl(const tc_impl&); - tc_impl& operator=(const tc_impl&); - -public: - std::string m_ident; - atf_tc_t m_tc; - bool m_has_cleanup; - - tc_impl(const std::string& ident, const bool has_cleanup) : - m_ident(ident), - m_has_cleanup(has_cleanup) - { - } - - static void - wrap_head(atf_tc_t *tc) - { - std::map< atf_tc_t*, impl::tc* >::iterator iter = wraps.find(tc); - INV(iter != wraps.end()); - (*iter).second->head(); - } - - static void - wrap_body(const atf_tc_t *tc) - { - std::map< const atf_tc_t*, const impl::tc* >::const_iterator iter = - cwraps.find(tc); - INV(iter != cwraps.end()); - (*iter).second->body(); - } - - static void - wrap_cleanup(const atf_tc_t *tc) - { - std::map< const atf_tc_t*, const impl::tc* >::const_iterator iter = - cwraps.find(tc); - INV(iter != cwraps.end()); - (*iter).second->cleanup(); - } -}; - -impl::tc::tc(const std::string& ident, const bool has_cleanup) : - pimpl(new tc_impl(ident, has_cleanup)) -{ -} - -impl::tc::~tc(void) -{ - cwraps.erase(&pimpl->m_tc); - wraps.erase(&pimpl->m_tc); - - atf_tc_fini(&pimpl->m_tc); -} - -void -impl::tc::init(const vars_map& config) -{ - atf_error_t err; - - auto_array< const char * > array(new const char*[(config.size() * 2) + 1]); - const char **ptr = array.get(); - for (vars_map::const_iterator iter = config.begin(); - iter != config.end(); iter++) { - *ptr = (*iter).first.c_str(); - *(ptr + 1) = (*iter).second.c_str(); - ptr += 2; - } - *ptr = NULL; - - wraps[&pimpl->m_tc] = this; - cwraps[&pimpl->m_tc] = this; - - err = atf_tc_init(&pimpl->m_tc, pimpl->m_ident.c_str(), pimpl->wrap_head, - pimpl->wrap_body, pimpl->m_has_cleanup ? pimpl->wrap_cleanup : NULL, - array.get()); - if (atf_is_error(err)) - throw_atf_error(err); -} - -bool -impl::tc::has_config_var(const std::string& var) - const -{ - return atf_tc_has_config_var(&pimpl->m_tc, var.c_str()); -} - -bool -impl::tc::has_md_var(const std::string& var) - const -{ - return atf_tc_has_md_var(&pimpl->m_tc, var.c_str()); -} - -const std::string -impl::tc::get_config_var(const std::string& var) - const -{ - return atf_tc_get_config_var(&pimpl->m_tc, var.c_str()); -} - -const std::string -impl::tc::get_config_var(const std::string& var, const std::string& defval) - const -{ - return atf_tc_get_config_var_wd(&pimpl->m_tc, var.c_str(), defval.c_str()); -} - -const std::string -impl::tc::get_md_var(const std::string& var) - const -{ - return atf_tc_get_md_var(&pimpl->m_tc, var.c_str()); -} - -const impl::vars_map -impl::tc::get_md_vars(void) - const -{ - vars_map vars; - - char **array = atf_tc_get_md_vars(&pimpl->m_tc); - try { - char **ptr; - for (ptr = array; *ptr != NULL; ptr += 2) - vars[*ptr] = *(ptr + 1); - } catch (...) { - atf_utils_free_charpp(array); - throw; - } - - return vars; -} - -void -impl::tc::set_md_var(const std::string& var, const std::string& val) -{ - atf_error_t err = atf_tc_set_md_var(&pimpl->m_tc, var.c_str(), val.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); -} - -void -impl::tc::run(const std::string& resfile) - const -{ - atf_error_t err = atf_tc_run(&pimpl->m_tc, resfile.c_str()); - if (atf_is_error(err)) - throw_atf_error(err); -} - -void -impl::tc::run_cleanup(void) - const -{ - atf_error_t err = atf_tc_cleanup(&pimpl->m_tc); - if (atf_is_error(err)) - throw_atf_error(err); -} - -void -impl::tc::head(void) -{ -} - -void -impl::tc::cleanup(void) - const -{ -} - -void -impl::tc::require_prog(const std::string& prog) - const -{ - atf_tc_require_prog(prog.c_str()); -} - -void -impl::tc::pass(void) -{ - atf_tc_pass(); -} - -void -impl::tc::fail(const std::string& reason) -{ - atf_tc_fail("%s", reason.c_str()); -} - -void -impl::tc::fail_nonfatal(const std::string& reason) -{ - atf_tc_fail_nonfatal("%s", reason.c_str()); -} - -void -impl::tc::skip(const std::string& reason) -{ - atf_tc_skip("%s", reason.c_str()); -} - -void -impl::tc::check_errno(const char* file, const int line, const int exp_errno, - const char* expr_str, const bool result) -{ - atf_tc_check_errno(file, line, exp_errno, expr_str, result); -} - -void -impl::tc::require_errno(const char* file, const int line, const int exp_errno, - const char* expr_str, const bool result) -{ - atf_tc_require_errno(file, line, exp_errno, expr_str, result); -} - -void -impl::tc::expect_pass(void) -{ - atf_tc_expect_pass(); -} - -void -impl::tc::expect_fail(const std::string& reason) -{ - atf_tc_expect_fail("%s", reason.c_str()); -} - -void -impl::tc::expect_exit(const int exitcode, const std::string& reason) -{ - atf_tc_expect_exit(exitcode, "%s", reason.c_str()); -} - -void -impl::tc::expect_signal(const int signo, const std::string& reason) -{ - atf_tc_expect_signal(signo, "%s", reason.c_str()); -} - -void -impl::tc::expect_death(const std::string& reason) -{ - atf_tc_expect_death("%s", reason.c_str()); -} - -void -impl::tc::expect_timeout(const std::string& reason) -{ - atf_tc_expect_timeout("%s", reason.c_str()); -} - -// ------------------------------------------------------------------------ -// Test program main code. -// ------------------------------------------------------------------------ - -namespace { - -typedef std::vector< impl::tc * > tc_vector; - -enum tc_part { BODY, CLEANUP }; - -static void -parse_vflag(const std::string& str, atf::tests::vars_map& vars) -{ - if (str.empty()) - throw std::runtime_error("-v requires a non-empty argument"); - - std::vector< std::string > ws = atf::text::split(str, "="); - if (ws.size() == 1 && str[str.length() - 1] == '=') { - vars[ws[0]] = ""; - } else { - if (ws.size() != 2) - throw std::runtime_error("-v requires an argument of the form " - "var=value"); - - vars[ws[0]] = ws[1]; - } -} - -static atf::fs::path -handle_srcdir(const char* argv0, const std::string& srcdir_arg) -{ - atf::fs::path srcdir("."); - - if (srcdir_arg.empty()) { - srcdir = atf::fs::path(argv0).branch_path(); - if (srcdir.leaf_name() == ".libs") - srcdir = srcdir.branch_path(); - } else - srcdir = atf::fs::path(srcdir_arg); - - if (!atf::fs::exists(srcdir / Program_Name)) - throw usage_error("Cannot find the test program in the source " - "directory `%s'", srcdir.c_str()); - - if (!srcdir.is_absolute()) - srcdir = srcdir.to_absolute(); - - return srcdir; -} - -static void -init_tcs(void (*add_tcs)(tc_vector&), tc_vector& tcs, - const atf::tests::vars_map& vars) -{ - add_tcs(tcs); - for (tc_vector::iterator iter = tcs.begin(); iter != tcs.end(); iter++) { - impl::tc* tc = *iter; - - tc->init(vars); - } -} - -static int -list_tcs(const tc_vector& tcs) -{ - detail::atf_tp_writer writer(std::cout); - - for (tc_vector::const_iterator iter = tcs.begin(); - iter != tcs.end(); iter++) { - const impl::vars_map vars = (*iter)->get_md_vars(); - - { - impl::vars_map::const_iterator iter2 = vars.find("ident"); - INV(iter2 != vars.end()); - writer.start_tc((*iter2).second); - } - - for (impl::vars_map::const_iterator iter2 = vars.begin(); - iter2 != vars.end(); iter2++) { - const std::string& key = (*iter2).first; - if (key != "ident") - writer.tc_meta_data(key, (*iter2).second); - } - - writer.end_tc(); - } - - return EXIT_SUCCESS; -} - -static impl::tc* -find_tc(tc_vector tcs, const std::string& name) -{ - std::vector< std::string > ids; - for (tc_vector::iterator iter = tcs.begin(); - iter != tcs.end(); iter++) { - impl::tc* tc = *iter; - - if (tc->get_md_var("ident") == name) - return tc; - } - throw usage_error("Unknown test case `%s'", name.c_str()); -} - -static std::pair< std::string, tc_part > -process_tcarg(const std::string& tcarg) -{ - const std::string::size_type pos = tcarg.find(':'); - if (pos == std::string::npos) { - return std::make_pair(tcarg, BODY); - } else { - const std::string tcname = tcarg.substr(0, pos); - - const std::string partname = tcarg.substr(pos + 1); - if (partname == "body") - return std::make_pair(tcname, BODY); - else if (partname == "cleanup") - return std::make_pair(tcname, CLEANUP); - else { - throw usage_error("Invalid test case part `%s'", partname.c_str()); - } - } -} - -static int -run_tc(tc_vector& tcs, const std::string& tcarg, const atf::fs::path& resfile) -{ - const std::pair< std::string, tc_part > fields = process_tcarg(tcarg); - - impl::tc* tc = find_tc(tcs, fields.first); - - if (!atf::env::has("__RUNNING_INSIDE_ATF_RUN") || atf::env::get( - "__RUNNING_INSIDE_ATF_RUN") != "internal-yes-value") - { - std::cerr << Program_Name << ": WARNING: Running test cases outside " - "of kyua(1) is unsupported\n"; - std::cerr << Program_Name << ": WARNING: No isolation nor timeout " - "control is being applied; you may get unexpected failures; see " - "atf-test-case(4)\n"; - } - - switch (fields.second) { - case BODY: - tc->run(resfile.str()); - break; - case CLEANUP: - tc->run_cleanup(); - break; - default: - UNREACHABLE; - } - return EXIT_SUCCESS; -} - -static int -safe_main(int argc, char** argv, void (*add_tcs)(tc_vector&)) -{ - const char* argv0 = argv[0]; - - bool lflag = false; - atf::fs::path resfile("/dev/stdout"); - std::string srcdir_arg; - atf::tests::vars_map vars; - - int ch; - int old_opterr; - - old_opterr = opterr; - ::opterr = 0; - while ((ch = ::getopt(argc, argv, GETOPT_POSIX ":lr:s:v:")) != -1) { - switch (ch) { - case 'l': - lflag = true; - break; - - case 'r': - resfile = atf::fs::path(::optarg); - break; - - case 's': - srcdir_arg = ::optarg; - break; - - case 'v': - parse_vflag(::optarg, vars); - break; - - case ':': - throw usage_error("Option -%c requires an argument.", ::optopt); - break; - - case '?': - default: - throw usage_error("Unknown option -%c.", ::optopt); - } - } - argc -= optind; - argv += optind; - - // Clear getopt state just in case the test wants to use it. - ::opterr = old_opterr; - ::optind = 1; -#if defined(HAVE_OPTRESET) - ::optreset = 1; -#endif - - vars["srcdir"] = handle_srcdir(argv0, srcdir_arg).str(); - - int errcode; - - tc_vector tcs; - if (lflag) { - if (argc > 0) - throw usage_error("Cannot provide test case names with -l"); - - init_tcs(add_tcs, tcs, vars); - errcode = list_tcs(tcs); - } else { - if (argc == 0) - throw usage_error("Must provide a test case name"); - else if (argc > 1) - throw usage_error("Cannot provide more than one test case name"); - INV(argc == 1); - - init_tcs(add_tcs, tcs, vars); - errcode = run_tc(tcs, argv[0], resfile); - } - for (tc_vector::iterator iter = tcs.begin(); iter != tcs.end(); iter++) { - impl::tc* tc = *iter; - - delete tc; - } - - return errcode; -} - -} // anonymous namespace - -namespace atf { - namespace tests { - int run_tp(int, char**, void (*)(tc_vector&)); - } -} - -int -impl::run_tp(int argc, char** argv, void (*add_tcs)(tc_vector&)) -{ - try { - set_program_name(argv[0]); - return ::safe_main(argc, argv, add_tcs); - } catch (const usage_error& e) { - std::cerr - << Program_Name << ": ERROR: " << e.what() << '\n' - << Program_Name << ": See atf-test-program(1) for usage details.\n"; - return EXIT_FAILURE; - } -} diff --git a/unit/atf-src/atf-c++/tests.hpp b/unit/atf-src/atf-c++/tests.hpp deleted file mode 100644 index ce2fb1d165..0000000000 --- a/unit/atf-src/atf-c++/tests.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_TESTS_HPP) -#define ATF_CXX_TESTS_HPP - -#include -#include -#include - -extern "C" { -#include -} - -namespace atf { -namespace tests { - -namespace detail { - -class atf_tp_writer { - std::ostream& m_os; - - bool m_is_first; - -public: - atf_tp_writer(std::ostream&); - - void start_tc(const std::string&); - void end_tc(void); - void tc_meta_data(const std::string&, const std::string&); -}; - -bool match(const std::string&, const std::string&); - -} // namespace - -// ------------------------------------------------------------------------ -// The "vars_map" class. -// ------------------------------------------------------------------------ - -typedef std::map< std::string, std::string > vars_map; - -// ------------------------------------------------------------------------ -// The "tc" class. -// ------------------------------------------------------------------------ - -struct tc_impl; - -class tc { - // Non-copyable. - tc(const tc&); - tc& operator=(const tc&); - - std::auto_ptr< tc_impl > pimpl; - -protected: - virtual void head(void); - virtual void body(void) const = 0; - virtual void cleanup(void) const; - - void require_prog(const std::string&) const; - - friend struct tc_impl; - -public: - tc(const std::string&, const bool); - virtual ~tc(void); - - void init(const vars_map&); - - const std::string get_config_var(const std::string&) const; - const std::string get_config_var(const std::string&, const std::string&) - const; - const std::string get_md_var(const std::string&) const; - const vars_map get_md_vars(void) const; - bool has_config_var(const std::string&) const; - bool has_md_var(const std::string&) const; - void set_md_var(const std::string&, const std::string&); - - void run(const std::string&) const; - void run_cleanup(void) const; - - // To be called from the child process only. - static void pass(void) ATF_DEFS_ATTRIBUTE_NORETURN; - static void fail(const std::string&) ATF_DEFS_ATTRIBUTE_NORETURN; - static void fail_nonfatal(const std::string&); - static void skip(const std::string&) ATF_DEFS_ATTRIBUTE_NORETURN; - static void check_errno(const char*, const int, const int, const char*, - const bool); - static void require_errno(const char*, const int, const int, const char*, - const bool); - static void expect_pass(void); - static void expect_fail(const std::string&); - static void expect_exit(const int, const std::string&); - static void expect_signal(const int, const std::string&); - static void expect_death(const std::string&); - static void expect_timeout(const std::string&); -}; - -} // namespace tests -} // namespace atf - -#endif // !defined(ATF_CXX_TESTS_HPP) diff --git a/unit/atf-src/atf-c++/tests_test.cpp b/unit/atf-src/atf-c++/tests_test.cpp deleted file mode 100644 index ed9fef0d01..0000000000 --- a/unit/atf-src/atf-c++/tests_test.cpp +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/tests.hpp" - -extern "C" { -#include -#include - -#include -#include -} - -#include -#include -#include - -#include - -#include "atf-c++/detail/text.hpp" - -// ------------------------------------------------------------------------ -// Tests for the "atf_tp_writer" class. -// ------------------------------------------------------------------------ - -static -void -print_indented(const std::string& str) -{ - std::vector< std::string > ws = atf::text::split(str, "\n"); - for (std::vector< std::string >::const_iterator iter = ws.begin(); - iter != ws.end(); iter++) - std::cout << ">>" << *iter << "<<\n"; -} - -// XXX Should this string handling and verbosity level be part of the -// ATF_REQUIRE_EQ macro? It may be hard to predict sometimes that a -// string can have newlines in it, and so the error message generated -// at the moment will be bogus if there are some. -static -void -check_equal(const atf::tests::tc& tc, const std::string& str, - const std::string& exp) -{ - if (str != exp) { - std::cout << "String equality check failed.\n" - "Adding >> and << to delimit the string boundaries below.\n"; - std::cout << "GOT:\n"; - print_indented(str); - std::cout << "EXPECTED:\n"; - print_indented(exp); - tc.fail("Constructed string differs from the expected one"); - } -} - -ATF_TEST_CASE(atf_tp_writer); -ATF_TEST_CASE_HEAD(atf_tp_writer) -{ - set_md_var("descr", "Verifies the application/X-atf-tp writer"); -} -ATF_TEST_CASE_BODY(atf_tp_writer) -{ - std::ostringstream expss; - std::ostringstream ss; - -#define RESET \ - expss.str(""); \ - ss.str("") - -#define CHECK \ - check_equal(*this, ss.str(), expss.str()) - - { - RESET; - - atf::tests::detail::atf_tp_writer w(ss); - expss << "Content-Type: application/X-atf-tp; version=\"1\"\n\n"; - CHECK; - } - - { - RESET; - - atf::tests::detail::atf_tp_writer w(ss); - expss << "Content-Type: application/X-atf-tp; version=\"1\"\n\n"; - CHECK; - - w.start_tc("test1"); - expss << "ident: test1\n"; - CHECK; - - w.end_tc(); - CHECK; - } - - { - RESET; - - atf::tests::detail::atf_tp_writer w(ss); - expss << "Content-Type: application/X-atf-tp; version=\"1\"\n\n"; - CHECK; - - w.start_tc("test1"); - expss << "ident: test1\n"; - CHECK; - - w.end_tc(); - CHECK; - - w.start_tc("test2"); - expss << "\nident: test2\n"; - CHECK; - - w.end_tc(); - CHECK; - } - - { - RESET; - - atf::tests::detail::atf_tp_writer w(ss); - expss << "Content-Type: application/X-atf-tp; version=\"1\"\n\n"; - CHECK; - - w.start_tc("test1"); - expss << "ident: test1\n"; - CHECK; - - w.tc_meta_data("descr", "the description"); - expss << "descr: the description\n"; - CHECK; - - w.end_tc(); - CHECK; - - w.start_tc("test2"); - expss << "\nident: test2\n"; - CHECK; - - w.tc_meta_data("descr", "second test case"); - expss << "descr: second test case\n"; - CHECK; - - w.tc_meta_data("require.progs", "/bin/cp"); - expss << "require.progs: /bin/cp\n"; - CHECK; - - w.tc_meta_data("X-custom", "foo bar baz"); - expss << "X-custom: foo bar baz\n"; - CHECK; - - w.end_tc(); - CHECK; - } - -#undef CHECK -#undef RESET -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add tests for the "atf_tp_writer" class. - ATF_ADD_TEST_CASE(tcs, atf_tp_writer); -} diff --git a/unit/atf-src/atf-c++/unused_test.cpp b/unit/atf-src/atf-c++/unused_test.cpp deleted file mode 100644 index 1a577e14be..0000000000 --- a/unit/atf-src/atf-c++/unused_test.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2012 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include - -ATF_TEST_CASE(this_is_used); -ATF_TEST_CASE_HEAD(this_is_used) -{ -} -ATF_TEST_CASE_BODY(this_is_used) -{ -} - -ATF_TEST_CASE(this_is_unused); -ATF_TEST_CASE_HEAD(this_is_unused) -{ -} -ATF_TEST_CASE_BODY(this_is_unused) -{ -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, this_is_used); - //ATF_ADD_TEST_CASE(tcs, this_is_unused); -} diff --git a/unit/atf-src/atf-c++/utils.cpp b/unit/atf-src/atf-c++/utils.cpp deleted file mode 100644 index a6ab08f0d7..0000000000 --- a/unit/atf-src/atf-c++/utils.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/utils.hpp" - -extern "C" { -#include "atf-c/utils.h" -} - -#include -#include - -void -atf::utils::cat_file(const std::string& path, const std::string& prefix) -{ - atf_utils_cat_file(path.c_str(), prefix.c_str()); -} - -void -atf::utils::copy_file(const std::string& source, const std::string& destination) -{ - atf_utils_copy_file(source.c_str(), destination.c_str()); -} - -bool -atf::utils::compare_file(const std::string& path, const std::string& contents) -{ - return atf_utils_compare_file(path.c_str(), contents.c_str()); -} - -void -atf::utils::create_file(const std::string& path, const std::string& contents) -{ - atf_utils_create_file(path.c_str(), "%s", contents.c_str()); -} - -bool -atf::utils::file_exists(const std::string& path) -{ - return atf_utils_file_exists(path.c_str()); -} - -pid_t -atf::utils::fork(void) -{ - std::cout.flush(); - std::cerr.flush(); - return atf_utils_fork(); -} - -bool -atf::utils::grep_file(const std::string& regex, const std::string& path) -{ - return atf_utils_grep_file("%s", path.c_str(), regex.c_str()); -} - -bool -atf::utils::grep_string(const std::string& regex, const std::string& str) -{ - return atf_utils_grep_string("%s", str.c_str(), regex.c_str()); -} - -void -atf::utils::redirect(const int fd, const std::string& path) -{ - if (fd == STDOUT_FILENO) - std::cout.flush(); - else if (fd == STDERR_FILENO) - std::cerr.flush(); - atf_utils_redirect(fd, path.c_str()); -} - -void -atf::utils::wait(const pid_t pid, const int exitstatus, - const std::string& expout, const std::string& experr) -{ - atf_utils_wait(pid, exitstatus, expout.c_str(), experr.c_str()); -} diff --git a/unit/atf-src/atf-c++/utils.hpp b/unit/atf-src/atf-c++/utils.hpp deleted file mode 100644 index 8f5c5e3374..0000000000 --- a/unit/atf-src/atf-c++/utils.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#if !defined(ATF_CXX_UTILS_HPP) -#define ATF_CXX_UTILS_HPP - -extern "C" { -#include -} - -#include - -namespace atf { -namespace utils { - -void cat_file(const std::string&, const std::string&); -bool compare_file(const std::string&, const std::string&); -void copy_file(const std::string&, const std::string&); -void create_file(const std::string&, const std::string&); -bool file_exists(const std::string&); -pid_t fork(void); -bool grep_file(const std::string&, const std::string&); -bool grep_string(const std::string&, const std::string&); -void redirect(const int, const std::string&); -void wait(const pid_t, const int, const std::string&, const std::string&); - -template< typename Collection > -bool -grep_collection(const std::string& regexp, const Collection& collection) -{ - for (typename Collection::const_iterator iter = collection.begin(); - iter != collection.end(); ++iter) { - if (grep_string(regexp, *iter)) - return true; - } - return false; -} - -} // namespace utils -} // namespace atf - -#endif // !defined(ATF_CXX_UTILS_HPP) diff --git a/unit/atf-src/atf-c++/utils_test.cpp b/unit/atf-src/atf-c++/utils_test.cpp deleted file mode 100644 index 34e0709f58..0000000000 --- a/unit/atf-src/atf-c++/utils_test.cpp +++ /dev/null @@ -1,509 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "atf-c++/utils.hpp" - -extern "C" { -#include -#include - -#include -#include -} - -#include -#include -#include -#include -#include -#include - -#include - -static std::string -read_file(const std::string& path) -{ - char buffer[1024]; - - const int fd = open(path.c_str(), O_RDONLY); - if (fd == -1) - ATF_FAIL("Cannot open " + path); - const ssize_t length = read(fd, buffer, sizeof(buffer) - 1); - close(fd); - ATF_REQUIRE(length != -1); - if (length == sizeof(buffer) - 1) - ATF_FAIL("Internal buffer not long enough to read temporary file"); - ((char *)buffer)[length] = '\0'; - - return buffer; -} - -// ------------------------------------------------------------------------ -// Tests cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE_WITHOUT_HEAD(cat_file__empty); -ATF_TEST_CASE_BODY(cat_file__empty) -{ - atf::utils::create_file("file.txt", ""); - atf::utils::redirect(STDOUT_FILENO, "captured.txt"); - atf::utils::cat_file("file.txt", "PREFIX"); - std::cout.flush(); - close(STDOUT_FILENO); - - ATF_REQUIRE_EQ("", read_file("captured.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(cat_file__one_line); -ATF_TEST_CASE_BODY(cat_file__one_line) -{ - atf::utils::create_file("file.txt", "This is a single line\n"); - atf::utils::redirect(STDOUT_FILENO, "captured.txt"); - atf::utils::cat_file("file.txt", "PREFIX"); - std::cout.flush(); - close(STDOUT_FILENO); - - ATF_REQUIRE_EQ("PREFIXThis is a single line\n", read_file("captured.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(cat_file__several_lines); -ATF_TEST_CASE_BODY(cat_file__several_lines) -{ - atf::utils::create_file("file.txt", "First\nSecond line\nAnd third\n"); - atf::utils::redirect(STDOUT_FILENO, "captured.txt"); - atf::utils::cat_file("file.txt", ">"); - std::cout.flush(); - close(STDOUT_FILENO); - - ATF_REQUIRE_EQ(">First\n>Second line\n>And third\n", - read_file("captured.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(cat_file__no_newline_eof); -ATF_TEST_CASE_BODY(cat_file__no_newline_eof) -{ - atf::utils::create_file("file.txt", "Foo\n bar baz"); - atf::utils::redirect(STDOUT_FILENO, "captured.txt"); - atf::utils::cat_file("file.txt", "PREFIX"); - std::cout.flush(); - close(STDOUT_FILENO); - - ATF_REQUIRE_EQ("PREFIXFoo\nPREFIX bar baz", read_file("captured.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(compare_file__empty__match); -ATF_TEST_CASE_BODY(compare_file__empty__match) -{ - atf::utils::create_file("test.txt", ""); - ATF_REQUIRE(atf::utils::compare_file("test.txt", "")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(compare_file__empty__not_match); -ATF_TEST_CASE_BODY(compare_file__empty__not_match) -{ - atf::utils::create_file("test.txt", ""); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "\n")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "foo")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", " ")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(compare_file__short__match); -ATF_TEST_CASE_BODY(compare_file__short__match) -{ - atf::utils::create_file("test.txt", "this is a short file"); - ATF_REQUIRE(atf::utils::compare_file("test.txt", "this is a short file")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(compare_file__short__not_match); -ATF_TEST_CASE_BODY(compare_file__short__not_match) -{ - atf::utils::create_file("test.txt", "this is a short file"); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "\n")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "this is a Short file")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "this is a short fil")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "this is a short file ")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(compare_file__long__match); -ATF_TEST_CASE_BODY(compare_file__long__match) -{ - char long_contents[3456]; - size_t i = 0; - for (; i < sizeof(long_contents) - 1; i++) - long_contents[i] = '0' + (i % 10); - long_contents[i] = '\0'; - atf::utils::create_file("test.txt", long_contents); - - ATF_REQUIRE(atf::utils::compare_file("test.txt", long_contents)); -} - -ATF_TEST_CASE_WITHOUT_HEAD(compare_file__long__not_match); -ATF_TEST_CASE_BODY(compare_file__long__not_match) -{ - char long_contents[3456]; - size_t i = 0; - for (; i < sizeof(long_contents) - 1; i++) - long_contents[i] = '0' + (i % 10); - long_contents[i] = '\0'; - atf::utils::create_file("test.txt", long_contents); - - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "\n")); - ATF_REQUIRE(!atf::utils::compare_file("test.txt", "0123456789")); - long_contents[i - 1] = 'Z'; - ATF_REQUIRE(!atf::utils::compare_file("test.txt", long_contents)); -} - -ATF_TEST_CASE_WITHOUT_HEAD(copy_file__empty); -ATF_TEST_CASE_BODY(copy_file__empty) -{ - atf::utils::create_file("src.txt", ""); - ATF_REQUIRE(chmod("src.txt", 0520) != -1); - - atf::utils::copy_file("src.txt", "dest.txt"); - ATF_REQUIRE(atf::utils::compare_file("dest.txt", "")); - struct stat sb; - ATF_REQUIRE(stat("dest.txt", &sb) != -1); - ATF_REQUIRE_EQ(0520, sb.st_mode & 0xfff); -} - -ATF_TEST_CASE_WITHOUT_HEAD(copy_file__some_contents); -ATF_TEST_CASE_BODY(copy_file__some_contents) -{ - atf::utils::create_file("src.txt", "This is a\ntest file\n"); - atf::utils::copy_file("src.txt", "dest.txt"); - ATF_REQUIRE(atf::utils::compare_file("dest.txt", "This is a\ntest file\n")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(create_file); -ATF_TEST_CASE_BODY(create_file) -{ - atf::utils::create_file("test.txt", "This is a %d test"); - - ATF_REQUIRE_EQ("This is a %d test", read_file("test.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(file_exists); -ATF_TEST_CASE_BODY(file_exists) -{ - atf::utils::create_file("test.txt", "foo"); - - ATF_REQUIRE( atf::utils::file_exists("test.txt")); - ATF_REQUIRE( atf::utils::file_exists("./test.txt")); - ATF_REQUIRE(!atf::utils::file_exists("./test.tx")); - ATF_REQUIRE(!atf::utils::file_exists("test.txt2")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(fork); -ATF_TEST_CASE_BODY(fork) -{ - std::cout << "Should not get into child\n"; - std::cerr << "Should not get into child\n"; - pid_t pid = atf::utils::fork(); - if (pid == 0) { - std::cout << "Child stdout\n"; - std::cerr << "Child stderr\n"; - exit(EXIT_SUCCESS); - } - - int status; - ATF_REQUIRE(waitpid(pid, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - - std::ostringstream out_name; - out_name << "atf_utils_fork_" << pid << "_out.txt"; - std::ostringstream err_name; - err_name << "atf_utils_fork_" << pid << "_err.txt"; - - ATF_REQUIRE_EQ("Child stdout\n", read_file(out_name.str())); - ATF_REQUIRE_EQ("Child stderr\n", read_file(err_name.str())); -} - -ATF_TEST_CASE_WITHOUT_HEAD(grep_collection__set); -ATF_TEST_CASE_BODY(grep_collection__set) -{ - std::set< std::string > strings; - strings.insert("First"); - strings.insert("Second"); - - ATF_REQUIRE( atf::utils::grep_collection("irs", strings)); - ATF_REQUIRE( atf::utils::grep_collection("cond", strings)); - ATF_REQUIRE(!atf::utils::grep_collection("Third", strings)); -} - -ATF_TEST_CASE_WITHOUT_HEAD(grep_collection__vector); -ATF_TEST_CASE_BODY(grep_collection__vector) -{ - std::vector< std::string > strings; - strings.push_back("First"); - strings.push_back("Second"); - - ATF_REQUIRE( atf::utils::grep_collection("irs", strings)); - ATF_REQUIRE( atf::utils::grep_collection("cond", strings)); - ATF_REQUIRE(!atf::utils::grep_collection("Third", strings)); -} - -ATF_TEST_CASE_WITHOUT_HEAD(grep_file); -ATF_TEST_CASE_BODY(grep_file) -{ - atf::utils::create_file("test.txt", "line1\nthe second line\naaaabbbb\n"); - - ATF_REQUIRE(atf::utils::grep_file("line1", "test.txt")); - ATF_REQUIRE(atf::utils::grep_file("second line", "test.txt")); - ATF_REQUIRE(atf::utils::grep_file("aa.*bb", "test.txt")); - ATF_REQUIRE(!atf::utils::grep_file("foo", "test.txt")); - ATF_REQUIRE(!atf::utils::grep_file("bar", "test.txt")); - ATF_REQUIRE(!atf::utils::grep_file("aaaaa", "test.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(grep_string); -ATF_TEST_CASE_BODY(grep_string) -{ - const char *str = "a string - aaaabbbb"; - ATF_REQUIRE(atf::utils::grep_string("a string", str)); - ATF_REQUIRE(atf::utils::grep_string("^a string", str)); - ATF_REQUIRE(atf::utils::grep_string("aaaabbbb$", str)); - ATF_REQUIRE(atf::utils::grep_string("aa.*bb", str)); - ATF_REQUIRE(!atf::utils::grep_string("foo", str)); - ATF_REQUIRE(!atf::utils::grep_string("bar", str)); - ATF_REQUIRE(!atf::utils::grep_string("aaaaa", str)); -} - -ATF_TEST_CASE_WITHOUT_HEAD(redirect__stdout); -ATF_TEST_CASE_BODY(redirect__stdout) -{ - std::cout << "Buffer this"; - atf::utils::redirect(STDOUT_FILENO, "captured.txt"); - std::cout << "The printed message"; - std::cout.flush(); - - ATF_REQUIRE_EQ("The printed message", read_file("captured.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(redirect__stderr); -ATF_TEST_CASE_BODY(redirect__stderr) -{ - std::cerr << "Buffer this"; - atf::utils::redirect(STDERR_FILENO, "captured.txt"); - std::cerr << "The printed message"; - std::cerr.flush(); - - ATF_REQUIRE_EQ("The printed message", read_file("captured.txt")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(redirect__other); -ATF_TEST_CASE_BODY(redirect__other) -{ - const std::string message = "Foo bar\nbaz\n"; - atf::utils::redirect(15, "captured.txt"); - ATF_REQUIRE(write(15, message.c_str(), message.length()) != -1); - close(15); - - ATF_REQUIRE_EQ(message, read_file("captured.txt")); -} - -static void -fork_and_wait(const int exitstatus, const char* expout, const char* experr) -{ - const pid_t pid = atf::utils::fork(); - if (pid == 0) { - std::cout << "Some output\n"; - std::cerr << "Some error\n"; - exit(123); - } - atf::utils::wait(pid, exitstatus, expout, experr); - exit(EXIT_SUCCESS); -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__ok); -ATF_TEST_CASE_BODY(wait__ok) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output\n", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__ok_nested); -ATF_TEST_CASE_BODY(wait__ok_nested) -{ - const pid_t parent = atf::utils::fork(); - ATF_REQUIRE(parent != -1); - if (parent == 0) { - const pid_t child = atf::utils::fork(); - ATF_REQUIRE(child != -1); - if (child == 0) { - std::cerr.flush(); - std::cout << "Child output\n"; - std::cout.flush(); - std::cerr << "Child error\n"; - std::exit(50); - } else { - std::cout << "Parent output\n"; - std::cerr << "Parent error\n"; - atf::utils::wait(child, 50, "Child output\n", "Child error\n"); - std::exit(40); - } - } else { - atf::utils::wait(parent, 40, - "Parent output\n" - "subprocess stdout: Child output\n" - "subprocess stderr: Child error\n", - "Parent error\n"); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__invalid_exitstatus); -ATF_TEST_CASE_BODY(wait__invalid_exitstatus) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(120, "Some output\n", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_FAILURE, WEXITSTATUS(status)); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__invalid_stdout); -ATF_TEST_CASE_BODY(wait__invalid_stdout) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output foo\n", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_FAILURE, WEXITSTATUS(status)); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__invalid_stderr); -ATF_TEST_CASE_BODY(wait__invalid_stderr) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output\n", "Some error foo\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_FAILURE, WEXITSTATUS(status)); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__save_stdout); -ATF_TEST_CASE_BODY(wait__save_stdout) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "save:my-output.txt", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - - ATF_REQUIRE(atf::utils::compare_file("my-output.txt", "Some output\n")); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(wait__save_stderr); -ATF_TEST_CASE_BODY(wait__save_stderr) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output\n", "save:my-output.txt"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - - ATF_REQUIRE(atf::utils::compare_file("my-output.txt", "Some error\n")); - } -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test for the free functions. - ATF_ADD_TEST_CASE(tcs, cat_file__empty); - ATF_ADD_TEST_CASE(tcs, cat_file__one_line); - ATF_ADD_TEST_CASE(tcs, cat_file__several_lines); - ATF_ADD_TEST_CASE(tcs, cat_file__no_newline_eof); - - ATF_ADD_TEST_CASE(tcs, compare_file__empty__match); - ATF_ADD_TEST_CASE(tcs, compare_file__empty__not_match); - ATF_ADD_TEST_CASE(tcs, compare_file__short__match); - ATF_ADD_TEST_CASE(tcs, compare_file__short__not_match); - ATF_ADD_TEST_CASE(tcs, compare_file__long__match); - ATF_ADD_TEST_CASE(tcs, compare_file__long__not_match); - - ATF_ADD_TEST_CASE(tcs, copy_file__empty); - ATF_ADD_TEST_CASE(tcs, copy_file__some_contents); - - ATF_ADD_TEST_CASE(tcs, create_file); - - ATF_ADD_TEST_CASE(tcs, file_exists); - - ATF_ADD_TEST_CASE(tcs, fork); - - ATF_ADD_TEST_CASE(tcs, grep_collection__set); - ATF_ADD_TEST_CASE(tcs, grep_collection__vector); - ATF_ADD_TEST_CASE(tcs, grep_file); - ATF_ADD_TEST_CASE(tcs, grep_string); - - ATF_ADD_TEST_CASE(tcs, redirect__stdout); - ATF_ADD_TEST_CASE(tcs, redirect__stderr); - ATF_ADD_TEST_CASE(tcs, redirect__other); - - ATF_ADD_TEST_CASE(tcs, wait__ok); - ATF_ADD_TEST_CASE(tcs, wait__ok_nested); - ATF_ADD_TEST_CASE(tcs, wait__invalid_exitstatus); - ATF_ADD_TEST_CASE(tcs, wait__invalid_stdout); - ATF_ADD_TEST_CASE(tcs, wait__invalid_stderr); - ATF_ADD_TEST_CASE(tcs, wait__save_stdout); - ATF_ADD_TEST_CASE(tcs, wait__save_stderr); -} diff --git a/unit/atf-src/atf-c.h b/unit/atf-src/atf-c.h deleted file mode 100644 index 701f7464f7..0000000000 --- a/unit/atf-src/atf-c.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_H) -#define ATF_C_H - -#include -#include -#include - -#endif /* !defined(ATF_C_H) */ diff --git a/unit/atf-src/atf-c/Atffile b/unit/atf-src/atf-c/Atffile deleted file mode 100644 index d6fd6b9a2b..0000000000 --- a/unit/atf-src/atf-c/Atffile +++ /dev/null @@ -1,15 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: detail - -tp: atf_c_test -tp: build_test -tp: check_test -tp: error_test -tp: macros_test -tp: pkg_config_test -tp: tc_test -tp: tp_test -tp: utils_test diff --git a/unit/atf-src/atf-c/Kyuafile b/unit/atf-src/atf-c/Kyuafile deleted file mode 100644 index 40fdb92158..0000000000 --- a/unit/atf-src/atf-c/Kyuafile +++ /dev/null @@ -1,15 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="atf_c_test"} -atf_test_program{name="build_test"} -atf_test_program{name="check_test"} -atf_test_program{name="error_test"} -atf_test_program{name="macros_test"} -atf_test_program{name="pkg_config_test"} -atf_test_program{name="tc_test"} -atf_test_program{name="tp_test"} -atf_test_program{name="utils_test"} - -include("detail/Kyuafile") diff --git a/unit/atf-src/atf-c/Makefile.am.inc b/unit/atf-src/atf-c/Makefile.am.inc deleted file mode 100644 index fb89bf01f7..0000000000 --- a/unit/atf-src/atf-c/Makefile.am.inc +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -lib_LTLIBRARIES += libatf-c.la -libatf_c_la_SOURCES = atf-c/build.c \ - atf-c/build.h \ - atf-c/check.c \ - atf-c/check.h \ - atf-c/error.c \ - atf-c/error.h \ - atf-c/error_fwd.h \ - atf-c/macros.h \ - atf-c/tc.c \ - atf-c/tc.h \ - atf-c/tp.c \ - atf-c/tp.h \ - atf-c/utils.c \ - atf-c/utils.h -nodist_libatf_c_la_SOURCES = atf-c/defs.h -#libatf_c_la_CPPFLAGS = "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \ -# "-DATF_BUILD_CFLAGS=\"$(ATF_BUILD_CFLAGS)\"" \ -# "-DATF_BUILD_CPP=\"$(ATF_BUILD_CPP)\"" \ -# "-DATF_BUILD_CPPFLAGS=\"$(ATF_BUILD_CPPFLAGS)\"" \ -# "-DATF_BUILD_CXX=\"$(ATF_BUILD_CXX)\"" \ -# "-DATF_BUILD_CXXFLAGS=\"$(ATF_BUILD_CXXFLAGS)\"" \ -# "-DATF_INCLUDEDIR=\"$(includedir)\"" \ -# "-DATF_LIBEXECDIR=\"$(libexecdir)\"" \ -# "-DATF_PKGDATADIR=\"$(pkgdatadir)\"" \ -# "-DATF_SHELL=\"$(ATF_SHELL)\"" \ -# "-DATF_WORKDIR=\"$(ATF_WORKDIR)\"" -libatf_c_la_CPPFLAGS = "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \ - "-DATF_BUILD_CFLAGS=\"$(ATF_BUILD_CFLAGS)\"" \ - "-DATF_BUILD_CPP=\"$(ATF_BUILD_CPP)\"" \ - "-DATF_BUILD_CPPFLAGS=\"$(ATF_BUILD_CPPFLAGS)\"" \ - "-DATF_BUILD_CXX=\"$(ATF_BUILD_CXX)\"" \ - "-DATF_BUILD_CXXFLAGS=\"$(ATF_BUILD_CXXFLAGS)\"" -libatf_c_la_LDFLAGS = -version-info 1:0:0 - -# XXX For some reason, the nodist line above does not work as expected. -# Work this problem around. -DIST_HOOKS += kill-defs-h -kill-defs-h: - rm -f $(distdir)/atf-c/defs.h - -include_HEADERS += atf-c.h -atf_c_HEADERS = atf-c/build.h \ - atf-c/check.h \ - atf-c/error.h \ - atf-c/error_fwd.h \ - atf-c/macros.h \ - atf-c/tc.h \ - atf-c/tp.h \ - atf-c/utils.h -nodist_atf_c_HEADERS = atf-c/defs.h -atf_cdir = $(includedir)/atf-c - -dist_man_MANS += atf-c/atf-c.3 - -atf_aclocal_DATA += atf-c/atf-common.m4 atf-c/atf-c.m4 -EXTRA_DIST += atf-c/atf-common.m4 atf-c/atf-c.m4 - -atf_cpkgconfigdir = $(atf_pkgconfigdir) -atf_cpkgconfig_DATA = atf-c/atf-c.pc -CLEANFILES += atf-c/atf-c.pc -EXTRA_DIST += atf-c/atf-c.pc.in -atf-c/atf-c.pc: $(srcdir)/atf-c/atf-c.pc.in Makefile - $(AM_V_GEN)test -d atf-c || mkdir -p atf-c; \ - sed -e 's#__ATF_VERSION__#$(PACKAGE_VERSION)#g' \ - -e 's#__CC__#$(CC)#g' \ - -e 's#__INCLUDEDIR__#$(includedir)#g' \ - -e 's#__LIBDIR__#$(libdir)#g' \ - <$(srcdir)/atf-c/atf-c.pc.in >atf-c/atf-c.pc.tmp; \ - mv atf-c/atf-c.pc.tmp atf-c/atf-c.pc - -tests_atf_c_DATA = atf-c/Atffile \ - atf-c/Kyuafile \ - atf-c/macros_h_test.c \ - atf-c/unused_test.c -tests_atf_cdir = $(pkgtestsdir)/atf-c -EXTRA_DIST += $(tests_atf_c_DATA) - -tests_atf_c_PROGRAMS = atf-c/atf_c_test -atf_c_atf_c_test_SOURCES = atf-c/atf_c_test.c -atf_c_atf_c_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_PROGRAMS += atf-c/build_test -atf_c_build_test_SOURCES = atf-c/build_test.c atf-c/h_build.h -atf_c_build_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_PROGRAMS += atf-c/check_test -atf_c_check_test_SOURCES = atf-c/check_test.c -atf_c_check_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_PROGRAMS += atf-c/error_test -atf_c_error_test_SOURCES = atf-c/error_test.c -atf_c_error_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_PROGRAMS += atf-c/macros_test -atf_c_macros_test_SOURCES = atf-c/macros_test.c -atf_c_macros_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_SCRIPTS = atf-c/pkg_config_test -CLEANFILES += atf-c/pkg_config_test -EXTRA_DIST += atf-c/pkg_config_test.sh -atf-c/pkg_config_test: $(srcdir)/atf-c/pkg_config_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-c/pkg_config_test.sh"; \ - dst="atf-c/pkg_config_test"; $(BUILD_SH_TP) - -tests_atf_c_PROGRAMS += atf-c/tc_test -atf_c_tc_test_SOURCES = atf-c/tc_test.c -atf_c_tc_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_PROGRAMS += atf-c/tp_test -atf_c_tp_test_SOURCES = atf-c/tp_test.c -atf_c_tp_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_PROGRAMS += atf-c/utils_test -atf_c_utils_test_SOURCES = atf-c/utils_test.c atf-c/h_build.h -atf_c_utils_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -include atf-c/detail/Makefile.am.inc - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/atf-c/atf-c.3 b/unit/atf-src/atf-c/atf-c.3 deleted file mode 100644 index edb7207d7c..0000000000 --- a/unit/atf-src/atf-c/atf-c.3 +++ /dev/null @@ -1,793 +0,0 @@ -.\" Copyright (c) 2008 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd October 13, 2014 -.Dt ATF-C 3 -.Os -.Sh NAME -.Nm atf-c , -.Nm ATF_CHECK , -.Nm ATF_CHECK_MSG , -.Nm ATF_CHECK_EQ , -.Nm ATF_CHECK_EQ_MSG , -.Nm ATF_CHECK_MATCH , -.Nm ATF_CHECK_MATCH_MSG , -.Nm ATF_CHECK_STREQ , -.Nm ATF_CHECK_STREQ_MSG , -.Nm ATF_CHECK_ERRNO , -.Nm ATF_REQUIRE , -.Nm ATF_REQUIRE_MSG , -.Nm ATF_REQUIRE_EQ , -.Nm ATF_REQUIRE_EQ_MSG , -.Nm ATF_REQUIRE_MATCH , -.Nm ATF_REQUIRE_MATCH_MSG , -.Nm ATF_REQUIRE_STREQ , -.Nm ATF_REQUIRE_STREQ_MSG , -.Nm ATF_REQUIRE_ERRNO , -.Nm ATF_TC , -.Nm ATF_TC_BODY , -.Nm ATF_TC_BODY_NAME , -.Nm ATF_TC_CLEANUP , -.Nm ATF_TC_CLEANUP_NAME , -.Nm ATF_TC_HEAD , -.Nm ATF_TC_HEAD_NAME , -.Nm ATF_TC_NAME , -.Nm ATF_TC_WITH_CLEANUP , -.Nm ATF_TC_WITHOUT_HEAD , -.Nm ATF_TP_ADD_TC , -.Nm ATF_TP_ADD_TCS , -.Nm atf_tc_get_config_var , -.Nm atf_tc_get_config_var_wd , -.Nm atf_tc_get_config_var_as_bool , -.Nm atf_tc_get_config_var_as_bool_wd , -.Nm atf_tc_get_config_var_as_long , -.Nm atf_tc_get_config_var_as_long_wd , -.Nm atf_no_error , -.Nm atf_tc_expect_death , -.Nm atf_tc_expect_exit , -.Nm atf_tc_expect_fail , -.Nm atf_tc_expect_pass , -.Nm atf_tc_expect_signal , -.Nm atf_tc_expect_timeout , -.Nm atf_tc_fail , -.Nm atf_tc_fail_nonfatal , -.Nm atf_tc_pass , -.Nm atf_tc_skip , -.Nm atf_utils_cat_file , -.Nm atf_utils_compare_file , -.Nm atf_utils_copy_file , -.Nm atf_utils_create_file , -.Nm atf_utils_file_exists , -.Nm atf_utils_fork , -.Nm atf_utils_free_charpp , -.Nm atf_utils_grep_file , -.Nm atf_utils_grep_string , -.Nm atf_utils_readline , -.Nm atf_utils_redirect , -.Nm atf_utils_wait -.Nd C API to write ATF-based test programs -.Sh SYNOPSIS -.In atf-c.h -.\" NO_CHECK_STYLE_BEGIN -.Fn ATF_CHECK "expression" -.Fn ATF_CHECK_MSG "expression" "fail_msg_fmt" ... -.Fn ATF_CHECK_EQ "expected_expression" "actual_expression" -.Fn ATF_CHECK_EQ_MSG "expected_expression" "actual_expression" "fail_msg_fmt" ... -.Fn ATF_CHECK_MATCH "regexp" "string" -.Fn ATF_CHECK_MATCH_MSG "regexp" "string" "fail_msg_fmt" ... -.Fn ATF_CHECK_STREQ "string_1" "string_2" -.Fn ATF_CHECK_STREQ_MSG "string_1" "string_2" "fail_msg_fmt" ... -.Fn ATF_CHECK_ERRNO "expected_errno" "bool_expression" -.Fn ATF_REQUIRE "expression" -.Fn ATF_REQUIRE_MSG "expression" "fail_msg_fmt" ... -.Fn ATF_REQUIRE_EQ "expected_expression" "actual_expression" -.Fn ATF_REQUIRE_EQ_MSG "expected_expression" "actual_expression" "fail_msg_fmt" ... -.Fn ATF_REQUIRE_MATCH "regexp" "string" -.Fn ATF_REQUIRE_MATCH_MSG "regexp" "string" "fail_msg_fmt" ... -.Fn ATF_REQUIRE_STREQ "expected_string" "actual_string" -.Fn ATF_REQUIRE_STREQ_MSG "expected_string" "actual_string" "fail_msg_fmt" ... -.Fn ATF_REQUIRE_ERRNO "expected_errno" "bool_expression" -.\" NO_CHECK_STYLE_END -.Fn ATF_TC "name" -.Fn ATF_TC_BODY "name" "tc" -.Fn ATF_TC_BODY_NAME "name" -.Fn ATF_TC_CLEANUP "name" "tc" -.Fn ATF_TC_CLEANUP_NAME "name" -.Fn ATF_TC_HEAD "name" "tc" -.Fn ATF_TC_HEAD_NAME "name" -.Fn ATF_TC_NAME "name" -.Fn ATF_TC_WITH_CLEANUP "name" -.Fn ATF_TC_WITHOUT_HEAD "name" -.Fn ATF_TP_ADD_TC "tp_name" "tc_name" -.Fn ATF_TP_ADD_TCS "tp_name" -.Fn atf_tc_get_config_var "tc" "varname" -.Fn atf_tc_get_config_var_wd "tc" "variable_name" "default_value" -.Fn atf_tc_get_config_var_as_bool "tc" "variable_name" -.Fn atf_tc_get_config_var_as_bool_wd "tc" "variable_name" "default_value" -.Fn atf_tc_get_config_var_as_long "tc" "variable_name" -.Fn atf_tc_get_config_var_as_long_wd "tc" "variable_name" "default_value" -.Fn atf_no_error -.Fn atf_tc_expect_death "reason" "..." -.Fn atf_tc_expect_exit "exitcode" "reason" "..." -.Fn atf_tc_expect_fail "reason" "..." -.Fn atf_tc_expect_pass -.Fn atf_tc_expect_signal "signo" "reason" "..." -.Fn atf_tc_expect_timeout "reason" "..." -.Fn atf_tc_fail "reason" -.Fn atf_tc_fail_nonfatal "reason" -.Fn atf_tc_pass -.Fn atf_tc_skip "reason" -.Ft void -.Fo atf_utils_cat_file -.Fa "const char *file" -.Fa "const char *prefix" -.Fc -.Ft bool -.Fo atf_utils_compare_file -.Fa "const char *file" -.Fa "const char *contents" -.Fc -.Ft void -.Fo atf_utils_copy_file -.Fa "const char *source" -.Fa "const char *destination" -.Fc -.Ft void -.Fo atf_utils_create_file -.Fa "const char *file" -.Fa "const char *contents" -.Fa "..." -.Fc -.Ft void -.Fo atf_utils_file_exists -.Fa "const char *file" -.Fc -.Ft pid_t -.Fo atf_utils_fork -.Fa "void" -.Fc -.Ft void -.Fo atf_utils_free_charpp -.Fa "char **argv" -.Fc -.Ft bool -.Fo atf_utils_grep_file -.Fa "const char *regexp" -.Fa "const char *file" -.Fa "..." -.Fc -.Ft bool -.Fo atf_utils_grep_string -.Fa "const char *regexp" -.Fa "const char *str" -.Fa "..." -.Fc -.Ft char * -.Fo atf_utils_readline -.Fa "int fd" -.Fc -.Ft void -.Fo atf_utils_redirect -.Fa "const int fd" -.Fa "const char *file" -.Fc -.Ft void -.Fo atf_utils_wait -.Fa "const pid_t pid" -.Fa "const int expected_exit_status" -.Fa "const char *expected_stdout" -.Fa "const char *expected_stderr" -.Fc -.Sh DESCRIPTION -ATF provides a C programming interface to implement test programs. -C-based test programs follow this template: -.Bd -literal -offset indent -.Ns ... C-specific includes go here ... - -#include - -ATF_TC(tc1); -ATF_TC_HEAD(tc1, tc) -{ - ... first test case's header ... -} -ATF_TC_BODY(tc1, tc) -{ - ... first test case's body ... -} - -ATF_TC_WITH_CLEANUP(tc2); -ATF_TC_HEAD(tc2, tc) -{ - ... second test case's header ... -} -ATF_TC_BODY(tc2, tc) -{ - ... second test case's body ... -} -ATF_TC_CLEANUP(tc2, tc) -{ - ... second test case's cleanup ... -} - -ATF_TC_WITHOUT_HEAD(tc3); -ATF_TC_BODY(tc3, tc) -{ - ... third test case's body ... -} - -.Ns ... additional test cases ... - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tcs, tc1); - ATF_TP_ADD_TC(tcs, tc2); - ATF_TP_ADD_TC(tcs, tc3); - ... add additional test cases ... - - return atf_no_error(); -} -.Ed -.Ss Definition of test cases -Test cases have an identifier and are composed of three different parts: -the header, the body and an optional cleanup routine, all of which are -described in -.Xr atf-test-case 4 . -To define test cases, one can use the -.Fn ATF_TC , -.Fn ATF_TC_WITH_CLEANUP -or the -.Fn ATF_TC_WITHOUT_HEAD -macros, which take a single parameter specifiying the test case's name. -.Fn ATF_TC , -requires to define a head and a body for the test case, -.Fn ATF_TC_WITH_CLEANUP -requires to define a head, a body and a cleanup for the test case and -.Fn ATF_TC_WITHOUT_HEAD -requires only a body for the test case. -It is important to note that these -.Em do not -set the test case up for execution when the program is run. -In order to do so, a later registration is needed with the -.Fn ATF_TP_ADD_TC -macro detailed in -.Sx Program initialization . -.Pp -Later on, one must define the three parts of the body by means of three -functions. -Their headers are given by the -.Fn ATF_TC_HEAD , -.Fn ATF_TC_BODY -and -.Fn ATF_TC_CLEANUP -macros, all of which take the test case name provided to the -.Fn ATF_TC -.Fn ATF_TC_WITH_CLEANUP , -or -.Fn ATF_TC_WITHOUT_HEAD -macros and the name of the variable that will hold a pointer to the -test case data. -Following each of these, a block of code is expected, surrounded by the -opening and closing brackets. -.Ss Program initialization -The library provides a way to easily define the test program's -.Fn main -function. -You should never define one on your own, but rely on the -library to do it for you. -This is done by using the -.Fn ATF_TP_ADD_TCS -macro, which is passed the name of the object that will hold the test -cases; i.e. the test program instance. -This name can be whatever you want as long as it is a valid variable -identifier. -.Pp -After the macro, you are supposed to provide the body of a function, which -should only use the -.Fn ATF_TP_ADD_TC -macro to register the test cases the test program will execute and return -a success error code. -The first parameter of this macro matches the name you provided in the -former call. -The success status can be returned using the -.Fn atf_no_error -function. -.Ss Header definitions -The test case's header can define the meta-data by using the -.Fn atf_tc_set_md_var -method, which takes three parameters: the first one points to the test -case data, the second one specifies the meta-data variable to be set -and the third one specifies its value. -Both of them are strings. -.Ss Configuration variables -The test case has read-only access to the current configuration variables -by means of the -.Ft bool -.Fn atf_tc_has_config_var , -.Ft const char * -.Fn atf_tc_get_config_var , -.Ft const char * -.Fn atf_tc_get_config_var_wd , -.Ft bool -.Fn atf_tc_get_config_var_as_bool , -.Ft bool -.Fn atf_tc_get_config_var_as_bool_wd , -.Ft long -.Fn atf_tc_get_config_var_as_long , -and the -.Ft long -.Fn atf_tc_get_config_var_as_long_wd -functions, which can be called in any of the three parts of a test case. -.Pp -The -.Sq _wd -variants take a default value for the variable which is returned if the -variable is not defined. -The other functions without the -.Sq _wd -suffix -.Em require -the variable to be defined. -.Ss Access to the source directory -It is possible to get the path to the test case's source directory from any -of its three components by querying the -.Sq srcdir -configuration variable. -.Ss Requiring programs -Aside from the -.Va require.progs -meta-data variable available in the header only, one can also check for -additional programs in the test case's body by using the -.Fn atf_tc_require_prog -function, which takes the base name or full path of a single binary. -Relative paths are forbidden. -If it is not found, the test case will be automatically skipped. -.Ss Test case finalization -The test case finalizes either when the body reaches its end, at which -point the test is assumed to have -.Em passed , -unless any non-fatal errors were raised using -.Fn atf_tc_fail_nonfatal , -or at any explicit call to -.Fn atf_tc_pass , -.Fn atf_tc_fail -or -.Fn atf_tc_skip . -These three functions terminate the execution of the test case immediately. -The cleanup routine will be processed afterwards in a completely automated -way, regardless of the test case's termination reason. -.Pp -.Fn atf_tc_pass -does not take any parameters. -.Fn atf_tc_fail , -.Fn atf_tc_fail_nonfatal -and -.Fn atf_tc_skip -take a format string and a variable list of parameters, which describe, in -a user-friendly manner, why the test case failed or was skipped, -respectively. -It is very important to provide a clear error message in both cases so that -the user can quickly know why the test did not pass. -.Ss Expectations -Everything explained in the previous section changes when the test case -expectations are redefined by the programmer. -.Pp -Each test case has an internal state called -.Sq expect -that describes what the test case expectations are at any point in time. -The value of this property can change during execution by any of: -.Bl -tag -width indent -.It Fn atf_tc_expect_death "reason" "..." -Expects the test case to exit prematurely regardless of the nature of the -exit. -.It Fn atf_tc_expect_exit "exitcode" "reason" "..." -Expects the test case to exit cleanly. -If -.Va exitcode -is not -.Sq -1 , -the runtime engine will validate that the exit code of the test case -matches the one provided in this call. -Otherwise, the exact value will be ignored. -.It Fn atf_tc_expect_fail "reason" "..." -Any failure (be it fatal or non-fatal) raised in this mode is recorded. -However, such failures do not report the test case as failed; instead, the -test case finalizes cleanly and is reported as -.Sq expected failure ; -this report includes the provided -.Fa reason -as part of it. -If no error is raised while running in this mode, then the test case is -reported as -.Sq failed . -.Pp -This mode is useful to reproduce actual known bugs in tests. -Whenever the developer fixes the bug later on, the test case will start -reporting a failure, signaling the developer that the test case must be -adjusted to the new conditions. -In this situation, it is useful, for example, to set -.Fa reason -as the bug number for tracking purposes. -.It Fn atf_tc_expect_pass -This is the normal mode of execution. -In this mode, any failure is reported as such to the user and the test case -is marked as -.Sq failed . -.It Fn atf_tc_expect_signal "signo" "reason" "..." -Expects the test case to terminate due to the reception of a signal. -If -.Va signo -is not -.Sq -1 , -the runtime engine will validate that the signal that terminated the test -case matches the one provided in this call. -Otherwise, the exact value will be ignored. -.It Fn atf_tc_expect_timeout "reason" "..." -Expects the test case to execute for longer than its timeout. -.El -.Ss Helper macros for common checks -The library provides several macros that are very handy in multiple -situations. -These basically check some condition after executing a given statement or -processing a given expression and, if the condition is not met, they -report the test case as failed. -.Pp -The -.Sq REQUIRE -variant of the macros immediately abort the test case as soon as an error -condition is detected by calling the -.Fn atf_tc_fail -function. -Use this variant whenever it makes no sense to continue the execution of a -test case when the checked condition is not met. -The -.Sq CHECK -variant, on the other hand, reports a failure as soon as it is encountered -using the -.Fn atf_tc_fail_nonfatal -function, but the execution of the test case continues as if nothing had -happened. -Use this variant whenever the checked condition is important as a result of -the test case, but there are other conditions that can be subsequently -checked on the same run without aborting. -.Pp -Additionally, the -.Sq MSG -variants take an extra set of parameters to explicitly specify the failure -message. -This failure message is formatted according to the -.Xr printf 3 -formatters. -.Pp -.Fn ATF_CHECK , -.Fn ATF_CHECK_MSG , -.Fn ATF_REQUIRE -and -.Fn ATF_REQUIRE_MSG -take an expression and fail if the expression evaluates to false. -.Pp -.Fn ATF_CHECK_EQ , -.Fn ATF_CHECK_EQ_MSG , -.Fn ATF_REQUIRE_EQ -and -.Fn ATF_REQUIRE_EQ_MSG -take two expressions and fail if the two evaluated values are not equal. -The common style is to put the expected value in the first parameter and the -actual value in the second parameter. -.Pp -.Fn ATF_CHECK_MATCH , -.Fn ATF_CHECK_MATCH_MSG , -.Fn ATF_REQUIRE_MATCH -and -.Fn ATF_REQUIRE_MATCH_MSG -take a regular expression and a string and fail if the regular expression does -not match the given string. -Note that the regular expression is not anchored, so it will match anywhere in -the string. -.Pp -.Fn ATF_CHECK_STREQ , -.Fn ATF_CHECK_STREQ_MSG , -.Fn ATF_REQUIRE_STREQ -and -.Fn ATF_REQUIRE_STREQ_MSG -take two strings and fail if the two are not equal character by character. -The common style is to put the expected string in the first parameter and the -actual string in the second parameter. -.Pp -.Fn ATF_CHECK_ERRNO -and -.Fn ATF_REQUIRE_ERRNO -take, first, the error code that the check is expecting to find in the -.Va errno -variable and, second, a boolean expression that, if evaluates to true, -means that a call failed and -.Va errno -has to be checked against the first value. -.Ss Utility functions -The following functions are provided as part of the -.Nm -API to simplify the creation of a variety of tests. -In particular, these are useful to write tests for command-line interfaces. -.Pp -.Ft void -.Fo atf_utils_cat_file -.Fa "const char *file" -.Fa "const char *prefix" -.Fc -.Bd -ragged -offset indent -Prints the contents of -.Fa file -to the standard output, prefixing every line with the string in -.Fa prefix . -.Ed -.Pp -.Ft bool -.Fo atf_utils_compare_file -.Fa "const char *file" -.Fa "const char *contents" -.Fc -.Bd -ragged -offset indent -Returns true if the given -.Fa file -matches exactly the expected inlined -.Fa contents . -.Ed -.Pp -.Ft void -.Fo atf_utils_copy_file -.Fa "const char *source" -.Fa "const char *destination" -.Fc -.Bd -ragged -offset indent -Copies the file -.Fa source -to -.Fa destination . -The permissions of the file are preserved during the code. -.Ed -.Pp -.Ft void -.Fo atf_utils_create_file -.Fa "const char *file" -.Fa "const char *contents" -.Fa "..." -.Fc -.Bd -ragged -offset indent -Creates -.Fa file -with the text given in -.Fa contents , -which is a formatting string that uses the rest of the variable arguments. -.Ed -.Pp -.Ft void -.Fo atf_utils_file_exists -.Fa "const char *file" -.Fc -.Bd -ragged -offset indent -Checks if -.Fa file -exists. -.Ed -.Pp -.Ft pid_t -.Fo atf_utils_fork -.Fa "void" -.Fc -.Bd -ragged -offset indent -Forks a process and redirects the standard output and standard error of the -child to files for later validation with -.Fn atf_utils_wait . -Fails the test case if the fork fails, so this does not return an error. -.Ed -.Pp -.Ft void -.Fo atf_utils_free_charpp -.Fa "char **argv" -.Fc -.Bd -ragged -offset indent -Frees a dynamically-allocated array of dynamically-allocated strings. -.Ed -.Pp -.Ft bool -.Fo atf_utils_grep_file -.Fa "const char *regexp" -.Fa "const char *file" -.Fa "..." -.Fc -.Bd -ragged -offset indent -Searches for the -.Fa regexp , -which is a formatting string representing the regular expression, -in the -.Fa file . -The variable arguments are used to construct the regular expression. -.Ed -.Pp -.Ft bool -.Fo atf_utils_grep_string -.Fa "const char *regexp" -.Fa "const char *str" -.Fa "..." -.Fc -.Bd -ragged -offset indent -Searches for the -.Fa regexp , -which is a formatting string representing the regular expression, -in the literal string -.Fa str . -The variable arguments are used to construct the regular expression. -.Ed -.Pp -.Ft char * -.Fo atf_utils_readline -.Fa "int fd" -.Fc -.Bd -ragged -offset indent -Reads a line from the file descriptor -.Fa fd . -The line, if any, is returned as a dynamically-allocated buffer that must be -released with -.Xr free 3 . -If there was nothing to read, returns -.Sq NULL . -.Ed -.Pp -.Ft void -.Fo atf_utils_redirect -.Fa "const int fd" -.Fa "const char *file" -.Fc -.Bd -ragged -offset indent -Redirects the given file descriptor -.Fa fd -to -.Fa file . -This function exits the process in case of an error and does not properly mark -the test case as failed. -As a result, it should only be used in subprocesses of the test case; specially -those spawned by -.Fn atf_utils_fork . -.Ed -.Pp -.Ft void -.Fo atf_utils_wait -.Fa "const pid_t pid" -.Fa "const int expected_exit_status" -.Fa "const char *expected_stdout" -.Fa "const char *expected_stderr" -.Fc -.Bd -ragged -offset indent -Waits and validates the result of a subprocess spawned with -.Fn atf_utils_wait . -The validation involves checking that the subprocess exited cleanly and returned -the code specified in -.Fa expected_exit_status -and that its standard output and standard error match the strings given in -.Fa expected_stdout -and -.Fa expected_stderr . -.Pp -If any of the -.Fa expected_stdout -or -.Fa expected_stderr -strings are prefixed with -.Sq save: , -then they specify the name of the file into which to store the stdout or stderr -of the subprocess, and no comparison is performed. -.Ed -.Sh ENVIRONMENT -The following variables are recognized by -.Nm -but should not be overridden other than for testing purposes: -.Pp -.Bl -tag -width ATFXBUILDXCXXFLAGSXX -compact -.It Va ATF_BUILD_CC -Path to the C compiler. -.It Va ATF_BUILD_CFLAGS -C compiler flags. -.It Va ATF_BUILD_CPP -Path to the C/C++ preprocessor. -.It Va ATF_BUILD_CPPFLAGS -C/C++ preprocessor flags. -.It Va ATF_BUILD_CXX -Path to the C++ compiler. -.It Va ATF_BUILD_CXXFLAGS -C++ compiler flags. -.El -.Sh EXAMPLES -The following shows a complete test program with a single test case that -validates the addition operator: -.Bd -literal -offset indent -#include - -ATF_TC(addition); -ATF_TC_HEAD(addition, tc) -{ - atf_tc_set_md_var(tc, "descr", - "Sample tests for the addition operator"); -} -ATF_TC_BODY(addition, tc) -{ - ATF_CHECK_EQ(0, 0 + 0); - ATF_CHECK_EQ(1, 0 + 1); - ATF_CHECK_EQ(1, 1 + 0); - - ATF_CHECK_EQ(2, 1 + 1); - - ATF_CHECK_EQ(300, 100 + 200); -} - -ATF_TC(string_formatting); -ATF_TC_HEAD(string_formatting, tc) -{ - atf_tc_set_md_var(tc, "descr", - "Sample tests for the snprintf"); -} -ATF_TC_BODY(string_formatting, tc) -{ - char buf[1024]; - snprintf(buf, sizeof(buf), "a %s", "string"); - ATF_CHECK_STREQ_MSG("a string", buf, "%s is not working"); -} - -ATF_TC(open_failure); -ATF_TC_HEAD(open_failure, tc) -{ - atf_tc_set_md_var(tc, "descr", - "Sample tests for the open function"); -} -ATF_TC_BODY(open_failure, tc) -{ - ATF_CHECK_ERRNO(ENOENT, open("non-existent", O_RDONLY) == -1); -} - -ATF_TC(known_bug); -ATF_TC_HEAD(known_bug, tc) -{ - atf_tc_set_md_var(tc, "descr", - "Reproduces a known bug"); -} -ATF_TC_BODY(known_bug, tc) -{ - atf_tc_expect_fail("See bug number foo/bar"); - ATF_CHECK_EQ(3, 1 + 1); - atf_tc_expect_pass(); - ATF_CHECK_EQ(3, 1 + 2); -} - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, addition); - ATF_TP_ADD_TC(tp, string_formatting); - ATF_TP_ADD_TC(tp, open_failure); - ATF_TP_ADD_TC(tp, known_bug); - - return atf_no_error(); -} -.Ed -.Sh SEE ALSO -.Xr atf-test-program 1 , -.Xr atf-test-case 4 diff --git a/unit/atf-src/atf-c/atf-c.m4 b/unit/atf-src/atf-c/atf-c.m4 deleted file mode 100644 index 94288f7e16..0000000000 --- a/unit/atf-src/atf-c/atf-c.m4 +++ /dev/null @@ -1,44 +0,0 @@ -dnl Copyright 2011 Google Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions are -dnl met: -dnl -dnl * Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl * Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl * Neither the name of Google Inc. nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl ATF_CHECK_C([version-spec]) -dnl -dnl Checks if atf-c is present. If version-spec is provided, ensures that -dnl the installed version of atf-sh matches the required version. This -dnl argument must be something like '>= 0.14' and accepts any version -dnl specification supported by pkg-config. -dnl -dnl Defines and substitutes ATF_C_CFLAGS and ATF_C_LIBS with the compiler -dnl and linker flags need to build against atf-c. -AC_DEFUN([ATF_CHECK_C], [ - spec="atf-c[]m4_default_nblank([ $1], [])" - _ATF_CHECK_ARG_WITH( - [PKG_CHECK_MODULES([ATF_C], [${spec}], - [found=yes found_atf_c=yes], [found=no])], - [required ${spec} not found]) -]) diff --git a/unit/atf-src/atf-c/atf-c.pc.in b/unit/atf-src/atf-c/atf-c.pc.in deleted file mode 100644 index 6fd52740b7..0000000000 --- a/unit/atf-src/atf-c/atf-c.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -# ATF pkg-config file - -cc=__CC__ -includedir=__INCLUDEDIR__ -libdir=__LIBDIR__ - -Name: atf-c -Description: Automated Testing Framework (C binding) -Version: __ATF_VERSION__ -Cflags: -I${includedir} -Libs: -L${libdir} -latf-c diff --git a/unit/atf-src/atf-c/atf-common.m4 b/unit/atf-src/atf-c/atf-common.m4 deleted file mode 100644 index f8fc7e9ebb..0000000000 --- a/unit/atf-src/atf-c/atf-common.m4 +++ /dev/null @@ -1,88 +0,0 @@ -dnl Copyright 2011 Google Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions are -dnl met: -dnl -dnl * Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl * Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl * Neither the name of Google Inc. nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl ATF_ARG_WITH -dnl -dnl Adds a --with-atf flag to the configure script that allows the user to -dnl enable or disable atf support. -dnl -dnl The ATF_CHECK_{C,CXX,SH} macros honor the flag defined herein if -dnl instantiated. If not instantiated, they will request the presence of -dnl the libraries unconditionally. -dnl -dnl Defines the WITH_ATF Automake conditional if ATF has been found by any -dnl of the ATF_CHECK_{C,CXX,SH} macros. -AC_DEFUN([ATF_ARG_WITH], [ - m4_define([atf_arg_with_called], [yes]) - - m4_divert_text([DEFAULTS], [with_atf=auto]) - AC_ARG_WITH([atf], - [AS_HELP_STRING([--with-atf=], - [build atf-based test programs])], - [with_atf=${withval}], [with_atf=auto]) - - m4_divert_text([DEFAULTS], [ - found_atf_c=no - found_atf_cxx=no - found_atf_sh=no - ]) - AM_CONDITIONAL([WITH_ATF], [test x"${found_atf_c}" = x"yes" -o \ - x"${found_atf_cxx}" = x"yes" -o \ - x"${found_atf_sh}" = x"yes"]) -]) - -dnl _ATF_CHECK_ARG_WITH(check, error_message) -dnl -dnl Internal macro to execute a check conditional on the --with-atf flag -dnl and handle the result accordingly. -dnl -dnl 'check' specifies the piece of code to be run to detect the feature. -dnl This code must set the 'found' shell variable to yes or no depending -dnl on the raw result of the check. -AC_DEFUN([_ATF_CHECK_ARG_WITH], [ - m4_ifdef([atf_arg_with_called], [ - m4_fatal([ATF_ARG_WITH must be called after the ATF_CHECK_* checks]) - ]) - - m4_divert_text([DEFAULTS], [with_atf=yes]) - - if test x"${with_atf}" = x"no"; then - _found=no - else - $1 - if test x"${with_atf}" = x"auto"; then - _found="${found}" - else - if test x"${found}" = x"yes"; then - _found=yes - else - AC_MSG_ERROR([$2]) - fi - fi - fi -]) diff --git a/unit/atf-src/atf-c/atf_c_test.c b/unit/atf-src/atf-c/atf_c_test.c deleted file mode 100644 index eda9596bd2..0000000000 --- a/unit/atf-src/atf-c/atf_c_test.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include - -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Tests cases for the header file. - * --------------------------------------------------------------------- */ - -HEADER_TC(include, "atf-c.h"); - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the test cases for the header file. */ - ATF_TP_ADD_TC(tp, include); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/build.c b/unit/atf-src/atf-c/build.c deleted file mode 100644 index c119fc97a2..0000000000 --- a/unit/atf-src/atf-c/build.c +++ /dev/null @@ -1,282 +0,0 @@ -/* Copyright (c) 2009 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/build.h" - -#include -#include - -#include "atf-c/detail/env.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/text.h" -#include "atf-c/error.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -atf_error_t -append_config_var(const char *var, const char *default_value, atf_list_t *argv) -{ - atf_error_t err; - atf_list_t words; - - err = atf_text_split(atf_env_get_with_default(var, default_value), - " ", &words); - if (atf_is_error(err)) - goto out; - - atf_list_append_list(argv, &words); - -out: - return err; -} - -static -atf_error_t -append_arg1(const char *arg, atf_list_t *argv) -{ - return atf_list_append(argv, strdup(arg), true); -} - -static -atf_error_t -append_arg2(const char *flag, const char *arg, atf_list_t *argv) -{ - atf_error_t err; - - err = append_arg1(flag, argv); - if (!atf_is_error(err)) - err = append_arg1(arg, argv); - - return err; -} - -static -atf_error_t -append_optargs(const char *const optargs[], atf_list_t *argv) -{ - atf_error_t err; - - err = atf_no_error(); - while (*optargs != NULL && !atf_is_error(err)) { - err = append_arg1(strdup(*optargs), argv); - optargs++; - } - - return err; -} - -static -atf_error_t -append_src_out(const char *src, const char *obj, atf_list_t *argv) -{ - atf_error_t err; - - err = append_arg2("-o", obj, argv); - if (atf_is_error(err)) - goto out; - - err = append_arg1("-c", argv); - if (atf_is_error(err)) - goto out; - - err = append_arg1(src, argv); - -out: - return err; -} - -static -atf_error_t -list_to_array(const atf_list_t *l, char ***ap) -{ - atf_error_t err; - char **a; - - a = (char **)malloc((atf_list_size(l) + 1) * sizeof(char *)); - if (a == NULL) - err = atf_no_memory_error(); - else { - char **aiter; - atf_list_citer_t liter; - - aiter = a; - atf_list_for_each_c(liter, l) { - *aiter = strdup((const char *)atf_list_citer_data(liter)); - aiter++; - } - *aiter = NULL; - - err = atf_no_error(); - } - *ap = a; /* Shut up warnings in the caller about uninitialized *ap. */ - - return err; -} - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -atf_error_t -atf_build_c_o(const char *sfile, - const char *ofile, - const char *const optargs[], - char ***argv) -{ - atf_error_t err; - atf_list_t argv_list; - - err = atf_list_init(&argv_list); - if (atf_is_error(err)) - goto out; - - err = append_config_var("ATF_BUILD_CC", ATF_BUILD_CC, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = append_config_var("ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, - &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = append_config_var("ATF_BUILD_CFLAGS", ATF_BUILD_CFLAGS, &argv_list); - if (atf_is_error(err)) - goto out_list; - - if (optargs != NULL) { - err = append_optargs(optargs, &argv_list); - if (atf_is_error(err)) - goto out_list; - } - - err = append_src_out(sfile, ofile, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = list_to_array(&argv_list, argv); - if (atf_is_error(err)) - goto out_list; - -out_list: - atf_list_fini(&argv_list); -out: - return err; -} - -atf_error_t -atf_build_cpp(const char *sfile, - const char *ofile, - const char *const optargs[], - char ***argv) -{ - atf_error_t err; - atf_list_t argv_list; - - err = atf_list_init(&argv_list); - if (atf_is_error(err)) - goto out; - - err = append_config_var("ATF_BUILD_CPP", ATF_BUILD_CPP, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = append_config_var("ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, - &argv_list); - if (atf_is_error(err)) - goto out_list; - - if (optargs != NULL) { - err = append_optargs(optargs, &argv_list); - if (atf_is_error(err)) - goto out_list; - } - - err = append_arg2("-o", ofile, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = append_arg1(sfile, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = list_to_array(&argv_list, argv); - if (atf_is_error(err)) - goto out_list; - -out_list: - atf_list_fini(&argv_list); -out: - return err; -} - -atf_error_t -atf_build_cxx_o(const char *sfile, - const char *ofile, - const char *const optargs[], - char ***argv) -{ - atf_error_t err; - atf_list_t argv_list; - - err = atf_list_init(&argv_list); - if (atf_is_error(err)) - goto out; - - err = append_config_var("ATF_BUILD_CXX", ATF_BUILD_CXX, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = append_config_var("ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, - &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = append_config_var("ATF_BUILD_CXXFLAGS", ATF_BUILD_CXXFLAGS, - &argv_list); - if (atf_is_error(err)) - goto out_list; - - if (optargs != NULL) { - err = append_optargs(optargs, &argv_list); - if (atf_is_error(err)) - goto out_list; - } - - err = append_src_out(sfile, ofile, &argv_list); - if (atf_is_error(err)) - goto out_list; - - err = list_to_array(&argv_list, argv); - if (atf_is_error(err)) - goto out_list; - -out_list: - atf_list_fini(&argv_list); -out: - return err; -} diff --git a/unit/atf-src/atf-c/build.h b/unit/atf-src/atf-c/build.h deleted file mode 100644 index a263f5063b..0000000000 --- a/unit/atf-src/atf-c/build.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (c) 2009 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_BUILD_H) -#define ATF_C_BUILD_H - -#include - -atf_error_t atf_build_c_o(const char *, const char *, const char *const [], - char ***); -atf_error_t atf_build_cpp(const char *, const char *, const char *const [], - char ***); -atf_error_t atf_build_cxx_o(const char *, const char *, const char *const [], - char ***); - -#endif /* !defined(ATF_C_BUILD_H) */ diff --git a/unit/atf-src/atf-c/build_test.c b/unit/atf-src/atf-c/build_test.c deleted file mode 100644 index c24b573702..0000000000 --- a/unit/atf-src/atf-c/build_test.c +++ /dev/null @@ -1,249 +0,0 @@ -/* Copyright (c) 2009 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/build.h" - -#include -#include -#include - -#include - -#include "atf-c/detail/env.h" -#include "atf-c/detail/test_helpers.h" -#include "atf-c/h_build.h" -#include "atf-c/utils.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -bool -equal_arrays(const char *const *exp_array, char **actual_array) -{ - bool equal; - - if (*exp_array == NULL && *actual_array == NULL) - equal = true; - else if (*exp_array == NULL || *actual_array == NULL) - equal = false; - else { - equal = true; - while (*actual_array != NULL) { - if (*exp_array == NULL || strcmp(*exp_array, *actual_array) != 0) { - equal = false; - break; - } - exp_array++; - actual_array++; - } - } - - return equal; -} - -static -void -check_equal_array(const char *const *exp_array, char **actual_array) -{ - { - const char *const *exp_ptr; - printf("Expected arguments:"); - for (exp_ptr = exp_array; *exp_ptr != NULL; exp_ptr++) - printf(" '%s'", *exp_ptr); - printf("\n"); - } - - { - char **actual_ptr; - printf("Returned arguments:"); - for (actual_ptr = actual_array; *actual_ptr != NULL; actual_ptr++) - printf(" '%s'", *actual_ptr); - printf("\n"); - } - - if (!equal_arrays(exp_array, actual_array)) - atf_tc_fail_nonfatal("The constructed argv differs from the " - "expected values"); -} - -static -void -verbose_set_env(const char *var, const char *val) -{ - printf("Setting %s to '%s'\n", var, val); - RE(atf_env_set(var, val)); -} - -/* --------------------------------------------------------------------- - * Internal test cases. - * --------------------------------------------------------------------- */ - -ATF_TC(equal_arrays); -ATF_TC_HEAD(equal_arrays, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the test case internal " - "equal_arrays function"); -} -ATF_TC_BODY(equal_arrays, tc) -{ - { - const char *const exp[] = { NULL }; - char *actual[] = { NULL }; - - ATF_CHECK(equal_arrays(exp, actual)); - } - - { - const char *const exp[] = { NULL }; - char *actual[2] = { strdup("foo"), NULL }; - - ATF_CHECK(!equal_arrays(exp, actual)); - free(actual[0]); - } - - { - const char *const exp[] = { "foo", NULL }; - char *actual[] = { NULL }; - - ATF_CHECK(!equal_arrays(exp, actual)); - } - - { - const char *const exp[] = { "foo", NULL }; - char *actual[2] = { strdup("foo"), NULL }; - - ATF_CHECK(equal_arrays(exp, actual)); - free(actual[0]); - } -} - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(c_o); -ATF_TC_HEAD(c_o, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_build_c_o function"); -} -ATF_TC_BODY(c_o, tc) -{ - struct c_o_test *test; - - for (test = c_o_tests; test->expargv[0] != NULL; test++) { - printf("> Test: %s\n", test->msg); - - verbose_set_env("ATF_BUILD_CC", test->cc); - verbose_set_env("ATF_BUILD_CFLAGS", test->cflags); - verbose_set_env("ATF_BUILD_CPPFLAGS", test->cppflags); - - { - char **argv; - if (test->hasoptargs) - RE(atf_build_c_o(test->sfile, test->ofile, test->optargs, - &argv)); - else - RE(atf_build_c_o(test->sfile, test->ofile, NULL, &argv)); - check_equal_array(test->expargv, argv); - atf_utils_free_charpp(argv); - } - } -} - -ATF_TC(cpp); -ATF_TC_HEAD(cpp, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_build_cpp function"); -} -ATF_TC_BODY(cpp, tc) -{ - struct cpp_test *test; - - for (test = cpp_tests; test->expargv[0] != NULL; test++) { - printf("> Test: %s\n", test->msg); - - verbose_set_env("ATF_BUILD_CPP", test->cpp); - verbose_set_env("ATF_BUILD_CPPFLAGS", test->cppflags); - - { - char **argv; - if (test->hasoptargs) - RE(atf_build_cpp(test->sfile, test->ofile, test->optargs, - &argv)); - else - RE(atf_build_cpp(test->sfile, test->ofile, NULL, &argv)); - check_equal_array(test->expargv, argv); - atf_utils_free_charpp(argv); - } - } -} - -ATF_TC(cxx_o); -ATF_TC_HEAD(cxx_o, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_build_cxx_o function"); -} -ATF_TC_BODY(cxx_o, tc) -{ - struct cxx_o_test *test; - - for (test = cxx_o_tests; test->expargv[0] != NULL; test++) { - printf("> Test: %s\n", test->msg); - - verbose_set_env("ATF_BUILD_CXX", test->cxx); - verbose_set_env("ATF_BUILD_CXXFLAGS", test->cxxflags); - verbose_set_env("ATF_BUILD_CPPFLAGS", test->cppflags); - - { - char **argv; - if (test->hasoptargs) - RE(atf_build_cxx_o(test->sfile, test->ofile, test->optargs, - &argv)); - else - RE(atf_build_cxx_o(test->sfile, test->ofile, NULL, &argv)); - check_equal_array(test->expargv, argv); - atf_utils_free_charpp(argv); - } - } -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the internal test cases. */ - ATF_TP_ADD_TC(tp, equal_arrays); - - /* Add the test cases for the free functions. */ - ATF_TP_ADD_TC(tp, c_o); - ATF_TP_ADD_TC(tp, cpp); - ATF_TP_ADD_TC(tp, cxx_o); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/check.c b/unit/atf-src/atf-c/check.c deleted file mode 100644 index 38afdf3743..0000000000 --- a/unit/atf-src/atf-c/check.c +++ /dev/null @@ -1,484 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/check.h" - -#include - -#include -#include -#include -#include -#include -#include - -#include "atf-c/build.h" -#include "atf-c/defs.h" -#include "atf-c/detail/dynstr.h" -#include "atf-c/detail/env.h" -#include "atf-c/detail/fs.h" -#include "atf-c/detail/list.h" -#include "atf-c/detail/process.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" -#include "atf-c/utils.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -atf_error_t -create_tmpdir(atf_fs_path_t *dir) -{ - atf_error_t err; - - err = atf_fs_path_init_fmt(dir, "%s/check.XXXXXX", - atf_env_get_with_default("TMPDIR", "/tmp")); - if (atf_is_error(err)) - goto out; - - err = atf_fs_mkdtemp(dir); - if (atf_is_error(err)) { - atf_fs_path_fini(dir); - goto out; - } - - INV(!atf_is_error(err)); -out: - return err; -} - -static -void -cleanup_tmpdir(const atf_fs_path_t *dir, const atf_fs_path_t *outfile, - const atf_fs_path_t *errfile) -{ - { - atf_error_t err = atf_fs_unlink(outfile); - if (atf_is_error(err)) { - INV(atf_error_is(err, "libc") && - atf_libc_error_code(err) == ENOENT); - atf_error_free(err); - } else - INV(!atf_is_error(err)); - } - - { - atf_error_t err = atf_fs_unlink(errfile); - if (atf_is_error(err)) { - INV(atf_error_is(err, "libc") && - atf_libc_error_code(err) == ENOENT); - atf_error_free(err); - } else - INV(!atf_is_error(err)); - } - - { - atf_error_t err = atf_fs_rmdir(dir); - INV(!atf_is_error(err)); - } -} - -static -int -const_execvp(const char *file, const char *const *argv) -{ -#define UNCONST(a) ((void *)(unsigned long)(const void *)(a)) - return execvp(file, UNCONST(argv)); -#undef UNCONST -} - -static -atf_error_t -init_sb(const atf_fs_path_t *path, atf_process_stream_t *sb) -{ - atf_error_t err; - - if (path == NULL) - err = atf_process_stream_init_inherit(sb); - else - err = atf_process_stream_init_redirect_path(sb, path); - - return err; -} - -static -atf_error_t -init_sbs(const atf_fs_path_t *outfile, atf_process_stream_t *outsb, - const atf_fs_path_t *errfile, atf_process_stream_t *errsb) -{ - atf_error_t err; - - err = init_sb(outfile, outsb); - if (atf_is_error(err)) - goto out; - - err = init_sb(errfile, errsb); - if (atf_is_error(err)) { - atf_process_stream_fini(outsb); - goto out; - } - -out: - return err; -} - -struct exec_data { - const char *const *m_argv; -}; - -static void exec_child(void *) ATF_DEFS_ATTRIBUTE_NORETURN; - -static -void -exec_child(void *v) -{ - struct exec_data *ea = v; - - const_execvp(ea->m_argv[0], ea->m_argv); - fprintf(stderr, "execvp(%s) failed: %s\n", ea->m_argv[0], strerror(errno)); - exit(127); -} - -static -atf_error_t -fork_and_wait(const char *const *argv, const atf_fs_path_t *outfile, - const atf_fs_path_t *errfile, atf_process_status_t *status) -{ - atf_error_t err; - atf_process_child_t child; - atf_process_stream_t outsb, errsb; - struct exec_data ea = { argv }; - - err = init_sbs(outfile, &outsb, errfile, &errsb); - if (atf_is_error(err)) - goto out; - - err = atf_process_fork(&child, exec_child, &outsb, &errsb, &ea); - if (atf_is_error(err)) - goto out_sbs; - - err = atf_process_child_wait(&child, status); - -out_sbs: - atf_process_stream_fini(&errsb); - atf_process_stream_fini(&outsb); -out: - return err; -} - -static -void -update_success_from_status(const char *progname, - const atf_process_status_t *status, bool *success) -{ - bool s = atf_process_status_exited(status) && - atf_process_status_exitstatus(status) == EXIT_SUCCESS; - - if (atf_process_status_exited(status)) { - if (atf_process_status_exitstatus(status) == EXIT_SUCCESS) - INV(s); - else { - INV(!s); - fprintf(stderr, "%s failed with exit code %d\n", progname, - atf_process_status_exitstatus(status)); - } - } else if (atf_process_status_signaled(status)) { - INV(!s); - fprintf(stderr, "%s failed due to signal %d%s\n", progname, - atf_process_status_termsig(status), - atf_process_status_coredump(status) ? " (core dumped)" : ""); - } else { - INV(!s); - fprintf(stderr, "%s failed due to unknown reason\n", progname); - } - - *success = s; -} - -static -atf_error_t -array_to_list(const char *const *a, atf_list_t *l) -{ - atf_error_t err; - - err = atf_list_init(l); - if (atf_is_error(err)) - goto out; - - while (*a != NULL) { - char *item = strdup(*a); - if (item == NULL) { - err = atf_no_memory_error(); - goto out; - } - - err = atf_list_append(l, item, true); - if (atf_is_error(err)) - goto out; - - a++; - } - -out: - return err; -} - -static void -print_array(const char *const *array, const char *pfx) -{ - const char *const *ptr; - - printf("%s", pfx); - for (ptr = array; *ptr != NULL; ptr++) - printf(" %s", *ptr); - printf("\n"); -} - -static -atf_error_t -check_build_run(const char *const *argv, bool *success) -{ - atf_error_t err; - atf_process_status_t status; - - print_array(argv, ">"); - - err = fork_and_wait(argv, NULL, NULL, &status); - if (atf_is_error(err)) - goto out; - - update_success_from_status(argv[0], &status, success); - atf_process_status_fini(&status); - - INV(!atf_is_error(err)); -out: - return err; -} - -/* --------------------------------------------------------------------- - * The "atf_check_result" type. - * --------------------------------------------------------------------- */ - -struct atf_check_result_impl { - atf_list_t m_argv; - atf_fs_path_t m_dir; - atf_fs_path_t m_stdout; - atf_fs_path_t m_stderr; - atf_process_status_t m_status; -}; - -static -atf_error_t -atf_check_result_init(atf_check_result_t *r, const char *const *argv, - const atf_fs_path_t *dir) -{ - atf_error_t err; - - r->pimpl = malloc(sizeof(struct atf_check_result_impl)); - if (r->pimpl == NULL) - return atf_no_memory_error(); - - err = array_to_list(argv, &r->pimpl->m_argv); - if (atf_is_error(err)) - goto out; - - err = atf_fs_path_copy(&r->pimpl->m_dir, dir); - if (atf_is_error(err)) - goto err_argv; - - err = atf_fs_path_init_fmt(&r->pimpl->m_stdout, "%s/stdout", - atf_fs_path_cstring(dir)); - if (atf_is_error(err)) - goto err_dir; - - err = atf_fs_path_init_fmt(&r->pimpl->m_stderr, "%s/stderr", - atf_fs_path_cstring(dir)); - if (atf_is_error(err)) - goto err_stdout; - - INV(!atf_is_error(err)); - goto out; - -err_stdout: - atf_fs_path_fini(&r->pimpl->m_stdout); -err_dir: - atf_fs_path_fini(&r->pimpl->m_dir); -err_argv: - atf_list_fini(&r->pimpl->m_argv); -out: - return err; -} - -void -atf_check_result_fini(atf_check_result_t *r) -{ - atf_process_status_fini(&r->pimpl->m_status); - - cleanup_tmpdir(&r->pimpl->m_dir, &r->pimpl->m_stdout, - &r->pimpl->m_stderr); - atf_fs_path_fini(&r->pimpl->m_stdout); - atf_fs_path_fini(&r->pimpl->m_stderr); - atf_fs_path_fini(&r->pimpl->m_dir); - - atf_list_fini(&r->pimpl->m_argv); - - free(r->pimpl); -} - -const char * -atf_check_result_stdout(const atf_check_result_t *r) -{ - return atf_fs_path_cstring(&r->pimpl->m_stdout); -} - -const char * -atf_check_result_stderr(const atf_check_result_t *r) -{ - return atf_fs_path_cstring(&r->pimpl->m_stderr); -} - -bool -atf_check_result_exited(const atf_check_result_t *r) -{ - return atf_process_status_exited(&r->pimpl->m_status); -} - -int -atf_check_result_exitcode(const atf_check_result_t *r) -{ - return atf_process_status_exitstatus(&r->pimpl->m_status); -} - -bool -atf_check_result_signaled(const atf_check_result_t *r) -{ - return atf_process_status_signaled(&r->pimpl->m_status); -} - -int -atf_check_result_termsig(const atf_check_result_t *r) -{ - return atf_process_status_termsig(&r->pimpl->m_status); -} - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -/* XXX: This function shouldn't be in this module. It messes with stdout - * and stderr, and it provides a very high-end interface. This belongs, - * probably, somewhere related to test cases (such as in the tc module). */ -atf_error_t -atf_check_build_c_o(const char *sfile, - const char *ofile, - const char *const optargs[], - bool *success) -{ - atf_error_t err; - char **argv; - - err = atf_build_c_o(sfile, ofile, optargs, &argv); - if (atf_is_error(err)) - goto out; - - err = check_build_run((const char *const *)argv, success); - - atf_utils_free_charpp(argv); -out: - return err; -} - -atf_error_t -atf_check_build_cpp(const char *sfile, - const char *ofile, - const char *const optargs[], - bool *success) -{ - atf_error_t err; - char **argv; - - err = atf_build_cpp(sfile, ofile, optargs, &argv); - if (atf_is_error(err)) - goto out; - - err = check_build_run((const char *const *)argv, success); - - atf_utils_free_charpp(argv); -out: - return err; -} - -atf_error_t -atf_check_build_cxx_o(const char *sfile, - const char *ofile, - const char *const optargs[], - bool *success) -{ - atf_error_t err; - char **argv; - - err = atf_build_cxx_o(sfile, ofile, optargs, &argv); - if (atf_is_error(err)) - goto out; - - err = check_build_run((const char *const *)argv, success); - - atf_utils_free_charpp(argv); -out: - return err; -} - -atf_error_t -atf_check_exec_array(const char *const *argv, atf_check_result_t *r) -{ - atf_error_t err; - atf_fs_path_t dir; - - err = create_tmpdir(&dir); - if (atf_is_error(err)) - goto out; - - err = atf_check_result_init(r, argv, &dir); - if (atf_is_error(err)) { - atf_error_t err2 = atf_fs_rmdir(&dir); - INV(!atf_is_error(err2)); - goto out; - } - - err = fork_and_wait(argv, &r->pimpl->m_stdout, &r->pimpl->m_stderr, - &r->pimpl->m_status); - if (atf_is_error(err)) { - atf_check_result_fini(r); - goto out; - } - - INV(!atf_is_error(err)); - - atf_fs_path_fini(&dir); -out: - return err; -} diff --git a/unit/atf-src/atf-c/check.h b/unit/atf-src/atf-c/check.h deleted file mode 100644 index 1eb2267d7e..0000000000 --- a/unit/atf-src/atf-c/check.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_CHECK_H) -#define ATF_C_CHECK_H - -#include - -#include - -/* --------------------------------------------------------------------- - * The "atf_check_result" type. - * --------------------------------------------------------------------- */ - -struct atf_check_result_impl; -struct atf_check_result { - struct atf_check_result_impl *pimpl; -}; -typedef struct atf_check_result atf_check_result_t; - -/* Construtors and destructors */ -void atf_check_result_fini(atf_check_result_t *); - -/* Getters */ -const char *atf_check_result_stdout(const atf_check_result_t *); -const char *atf_check_result_stderr(const atf_check_result_t *); -bool atf_check_result_exited(const atf_check_result_t *); -int atf_check_result_exitcode(const atf_check_result_t *); -bool atf_check_result_signaled(const atf_check_result_t *); -int atf_check_result_termsig(const atf_check_result_t *); - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -atf_error_t atf_check_build_c_o(const char *, const char *, - const char *const [], - bool *); -atf_error_t atf_check_build_cpp(const char *, const char *, - const char *const [], - bool *); -atf_error_t atf_check_build_cxx_o(const char *, const char *, - const char *const [], - bool *); -atf_error_t atf_check_exec_array(const char *const *, atf_check_result_t *); - -#endif /* !defined(ATF_C_CHECK_H) */ diff --git a/unit/atf-src/atf-c/check_test.c b/unit/atf-src/atf-c/check_test.c deleted file mode 100644 index adaca649be..0000000000 --- a/unit/atf-src/atf-c/check_test.c +++ /dev/null @@ -1,521 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/check.h" - -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/fs.h" -#include "atf-c/detail/map.h" -#include "atf-c/detail/process.h" -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -void -do_exec(const atf_tc_t *tc, const char *helper_name, atf_check_result_t *r) -{ - atf_fs_path_t process_helpers; - const char *argv[3]; - - get_process_helpers_path(tc, false, &process_helpers); - - argv[0] = atf_fs_path_cstring(&process_helpers); - argv[1] = helper_name; - argv[2] = NULL; - printf("Executing %s %s\n", argv[0], argv[1]); - RE(atf_check_exec_array(argv, r)); - - atf_fs_path_fini(&process_helpers); -} - -static -void -do_exec_with_arg(const atf_tc_t *tc, const char *helper_name, const char *arg, - atf_check_result_t *r) -{ - atf_fs_path_t process_helpers; - const char *argv[4]; - - get_process_helpers_path(tc, false, &process_helpers); - - argv[0] = atf_fs_path_cstring(&process_helpers); - argv[1] = helper_name; - argv[2] = arg; - argv[3] = NULL; - printf("Executing %s %s %s\n", argv[0], argv[1], argv[2]); - RE(atf_check_exec_array(argv, r)); - - atf_fs_path_fini(&process_helpers); -} - -static -void -check_line(int fd, const char *exp) -{ - char *line = atf_utils_readline(fd); - ATF_CHECK(line != NULL); - ATF_CHECK_STREQ_MSG(exp, line, "read: '%s', expected: '%s'", line, exp); - free(line); -} - -/* --------------------------------------------------------------------- - * Helper test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(h_build_c_o_ok); -ATF_TC_HEAD(h_build_c_o_ok, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for build_c_o"); -} -ATF_TC_BODY(h_build_c_o_ok, tc) -{ - FILE *sfile; - bool success; - - ATF_REQUIRE((sfile = fopen("test.c", "w")) != NULL); - fprintf(sfile, "#include \n"); - fclose(sfile); - - RE(atf_check_build_c_o("test.c", "test.o", NULL, &success)); - ATF_REQUIRE(success); -} - -ATF_TC(h_build_c_o_fail); -ATF_TC_HEAD(h_build_c_o_fail, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for build_c_o"); -} -ATF_TC_BODY(h_build_c_o_fail, tc) -{ - FILE *sfile; - bool success; - - ATF_REQUIRE((sfile = fopen("test.c", "w")) != NULL); - fprintf(sfile, "void foo(void) { int a = UNDEFINED_SYMBOL; }\n"); - fclose(sfile); - - RE(atf_check_build_c_o("test.c", "test.o", NULL, &success)); - ATF_REQUIRE(!success); -} - -ATF_TC(h_build_cpp_ok); -ATF_TC_HEAD(h_build_cpp_ok, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for build_cpp"); -} -ATF_TC_BODY(h_build_cpp_ok, tc) -{ - FILE *sfile; - bool success; - atf_fs_path_t test_p; - - RE(atf_fs_path_init_fmt(&test_p, "test.p")); - - ATF_REQUIRE((sfile = fopen("test.c", "w")) != NULL); - fprintf(sfile, "#define A foo\n"); - fprintf(sfile, "#define B bar\n"); - fprintf(sfile, "A B\n"); - fclose(sfile); - - RE(atf_check_build_cpp("test.c", atf_fs_path_cstring(&test_p), NULL, - &success)); - ATF_REQUIRE(success); - - atf_fs_path_fini(&test_p); -} - -ATF_TC(h_build_cpp_fail); -ATF_TC_HEAD(h_build_cpp_fail, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for build_cpp"); -} -ATF_TC_BODY(h_build_cpp_fail, tc) -{ - FILE *sfile; - bool success; - - ATF_REQUIRE((sfile = fopen("test.c", "w")) != NULL); - fprintf(sfile, "#include \"./non-existent.h\"\n"); - fclose(sfile); - - RE(atf_check_build_cpp("test.c", "test.p", NULL, &success)); - ATF_REQUIRE(!success); -} - -ATF_TC(h_build_cxx_o_ok); -ATF_TC_HEAD(h_build_cxx_o_ok, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for build_cxx_o"); -} -ATF_TC_BODY(h_build_cxx_o_ok, tc) -{ - FILE *sfile; - bool success; - - ATF_REQUIRE((sfile = fopen("test.cpp", "w")) != NULL); - fprintf(sfile, "#include \n"); - fclose(sfile); - - RE(atf_check_build_cxx_o("test.cpp", "test.o", NULL, &success)); - ATF_REQUIRE(success); -} - -ATF_TC(h_build_cxx_o_fail); -ATF_TC_HEAD(h_build_cxx_o_fail, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for build_cxx_o"); -} -ATF_TC_BODY(h_build_cxx_o_fail, tc) -{ - FILE *sfile; - bool success; - - ATF_REQUIRE((sfile = fopen("test.cpp", "w")) != NULL); - fprintf(sfile, "void foo(void) { int a = UNDEFINED_SYMBOL; }\n"); - fclose(sfile); - - RE(atf_check_build_cxx_o("test.cpp", "test.o", NULL, &success)); - ATF_REQUIRE(!success); -} - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -static -void -init_and_run_h_tc(atf_tc_t *tc, const atf_tc_pack_t *tcpack, - const char *outname, const char *errname) -{ - const char *const config[] = { NULL }; - - RE(atf_tc_init_pack(tc, tcpack, config)); - run_h_tc(tc, outname, errname, "result"); - atf_tc_fini(tc); -} - -ATF_TC(build_c_o); -ATF_TC_HEAD(build_c_o, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_check_build_c_o " - "function"); -} -ATF_TC_BODY(build_c_o, tc) -{ - init_and_run_h_tc(&ATF_TC_NAME(h_build_c_o_ok), - &ATF_TC_PACK_NAME(h_build_c_o_ok), "stdout", "stderr"); - ATF_CHECK(atf_utils_grep_file("-o test.o", "stdout")); - ATF_CHECK(atf_utils_grep_file("-c test.c", "stdout")); - - init_and_run_h_tc(&ATF_TC_NAME(h_build_c_o_fail), - &ATF_TC_PACK_NAME(h_build_c_o_fail), "stdout", "stderr"); - ATF_CHECK(atf_utils_grep_file("-o test.o", "stdout")); - ATF_CHECK(atf_utils_grep_file("-c test.c", "stdout")); - ATF_CHECK(atf_utils_grep_file("test.c", "stderr")); - ATF_CHECK(atf_utils_grep_file("UNDEFINED_SYMBOL", "stderr")); -} - -ATF_TC(build_cpp); -ATF_TC_HEAD(build_cpp, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_check_build_cpp " - "function"); -} -ATF_TC_BODY(build_cpp, tc) -{ - init_and_run_h_tc(&ATF_TC_NAME(h_build_cpp_ok), - &ATF_TC_PACK_NAME(h_build_cpp_ok), "stdout", "stderr"); - ATF_CHECK(atf_utils_grep_file("-o.*test.p", "stdout")); - ATF_CHECK(atf_utils_grep_file("test.c", "stdout")); - ATF_CHECK(atf_utils_grep_file("foo bar", "test.p")); - - init_and_run_h_tc(&ATF_TC_NAME(h_build_cpp_fail), - &ATF_TC_PACK_NAME(h_build_cpp_fail), "stdout", "stderr"); - ATF_CHECK(atf_utils_grep_file("-o test.p", "stdout")); - ATF_CHECK(atf_utils_grep_file("test.c", "stdout")); - ATF_CHECK(atf_utils_grep_file("test.c", "stderr")); - ATF_CHECK(atf_utils_grep_file("non-existent.h", "stderr")); -} - -ATF_TC(build_cxx_o); -ATF_TC_HEAD(build_cxx_o, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_check_build_cxx_o " - "function"); -} -ATF_TC_BODY(build_cxx_o, tc) -{ - init_and_run_h_tc(&ATF_TC_NAME(h_build_cxx_o_ok), - &ATF_TC_PACK_NAME(h_build_cxx_o_ok), "stdout", "stderr"); - ATF_CHECK(atf_utils_grep_file("-o test.o", "stdout")); - ATF_CHECK(atf_utils_grep_file("-c test.cpp", "stdout")); - - init_and_run_h_tc(&ATF_TC_NAME(h_build_cxx_o_fail), - &ATF_TC_PACK_NAME(h_build_cxx_o_fail), "stdout", "stderr"); - ATF_CHECK(atf_utils_grep_file("-o test.o", "stdout")); - ATF_CHECK(atf_utils_grep_file("-c test.cpp", "stdout")); - ATF_CHECK(atf_utils_grep_file("test.cpp", "stderr")); - ATF_CHECK(atf_utils_grep_file("UNDEFINED_SYMBOL", "stderr")); -} - -ATF_TC(exec_array); -ATF_TC_HEAD(exec_array, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that atf_check_exec_array " - "works properly"); -} -ATF_TC_BODY(exec_array, tc) -{ - atf_fs_path_t process_helpers; - atf_check_result_t result; - - get_process_helpers_path(tc, false, &process_helpers); - - const char *argv[4]; - argv[0] = atf_fs_path_cstring(&process_helpers); - argv[1] = "echo"; - argv[2] = "test-message"; - argv[3] = NULL; - - RE(atf_check_exec_array(argv, &result)); - - ATF_CHECK(atf_check_result_exited(&result)); - ATF_CHECK(atf_check_result_exitcode(&result) == EXIT_SUCCESS); - - { - const char *path = atf_check_result_stdout(&result); - int fd = open(path, O_RDONLY); - ATF_CHECK(fd != -1); - check_line(fd, "test-message"); - close(fd); - } - - atf_check_result_fini(&result); - atf_fs_path_fini(&process_helpers); -} - -ATF_TC(exec_cleanup); -ATF_TC_HEAD(exec_cleanup, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that atf_check_exec_array " - "properly cleans up the temporary files it creates"); -} -ATF_TC_BODY(exec_cleanup, tc) -{ - atf_fs_path_t out, err; - atf_check_result_t result; - bool exists; - - do_exec(tc, "exit-success", &result); - RE(atf_fs_path_init_fmt(&out, "%s", atf_check_result_stdout(&result))); - RE(atf_fs_path_init_fmt(&err, "%s", atf_check_result_stderr(&result))); - - RE(atf_fs_exists(&out, &exists)); ATF_CHECK(exists); - RE(atf_fs_exists(&err, &exists)); ATF_CHECK(exists); - atf_check_result_fini(&result); - RE(atf_fs_exists(&out, &exists)); ATF_CHECK(!exists); - RE(atf_fs_exists(&err, &exists)); ATF_CHECK(!exists); - - atf_fs_path_fini(&err); - atf_fs_path_fini(&out); -} - -ATF_TC(exec_exitstatus); -ATF_TC_HEAD(exec_exitstatus, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that atf_check_exec_array " - "properly captures the exit status of the executed " - "command"); -} -ATF_TC_BODY(exec_exitstatus, tc) -{ - { - atf_check_result_t result; - do_exec(tc, "exit-success", &result); - ATF_CHECK(atf_check_result_exited(&result)); - ATF_CHECK(!atf_check_result_signaled(&result)); - ATF_CHECK(atf_check_result_exitcode(&result) == EXIT_SUCCESS); - atf_check_result_fini(&result); - } - - { - atf_check_result_t result; - do_exec(tc, "exit-failure", &result); - ATF_CHECK(atf_check_result_exited(&result)); - ATF_CHECK(!atf_check_result_signaled(&result)); - ATF_CHECK(atf_check_result_exitcode(&result) == EXIT_FAILURE); - atf_check_result_fini(&result); - } - - { - atf_check_result_t result; - do_exec(tc, "exit-signal", &result); - ATF_CHECK(!atf_check_result_exited(&result)); - ATF_CHECK(atf_check_result_signaled(&result)); - ATF_CHECK(atf_check_result_termsig(&result) == SIGKILL); - atf_check_result_fini(&result); - } -} - -ATF_TC(exec_stdout_stderr); -ATF_TC_HEAD(exec_stdout_stderr, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that atf_check_exec_array " - "properly captures the stdout and stderr streams " - "of the child process"); -} -ATF_TC_BODY(exec_stdout_stderr, tc) -{ - atf_check_result_t result1, result2; - const char *out1, *out2; - const char *err1, *err2; - - do_exec_with_arg(tc, "stdout-stderr", "result1", &result1); - ATF_CHECK(atf_check_result_exited(&result1)); - ATF_CHECK(atf_check_result_exitcode(&result1) == EXIT_SUCCESS); - - do_exec_with_arg(tc, "stdout-stderr", "result2", &result2); - ATF_CHECK(atf_check_result_exited(&result2)); - ATF_CHECK(atf_check_result_exitcode(&result2) == EXIT_SUCCESS); - - out1 = atf_check_result_stdout(&result1); - out2 = atf_check_result_stdout(&result2); - err1 = atf_check_result_stderr(&result1); - err2 = atf_check_result_stderr(&result2); - - ATF_CHECK(strstr(out1, "check.XXXXXX") == NULL); - ATF_CHECK(strstr(out2, "check.XXXXXX") == NULL); - ATF_CHECK(strstr(err1, "check.XXXXXX") == NULL); - ATF_CHECK(strstr(err2, "check.XXXXXX") == NULL); - - ATF_CHECK(strstr(out1, "/check") != NULL); - ATF_CHECK(strstr(out2, "/check") != NULL); - ATF_CHECK(strstr(err1, "/check") != NULL); - ATF_CHECK(strstr(err2, "/check") != NULL); - - ATF_CHECK(strstr(out1, "/stdout") != NULL); - ATF_CHECK(strstr(out2, "/stdout") != NULL); - ATF_CHECK(strstr(err1, "/stderr") != NULL); - ATF_CHECK(strstr(err2, "/stderr") != NULL); - - ATF_CHECK(strcmp(out1, out2) != 0); - ATF_CHECK(strcmp(err1, err2) != 0); - -#define CHECK_LINES(path, outname, resname) \ - do { \ - int fd = open(path, O_RDONLY); \ - ATF_CHECK(fd != -1); \ - check_line(fd, "Line 1 to " outname " for " resname); \ - check_line(fd, "Line 2 to " outname " for " resname); \ - close(fd); \ - } while (false) - - CHECK_LINES(out1, "stdout", "result1"); - CHECK_LINES(out2, "stdout", "result2"); - CHECK_LINES(err1, "stderr", "result1"); - CHECK_LINES(err2, "stderr", "result2"); - -#undef CHECK_LINES - - atf_check_result_fini(&result2); - atf_check_result_fini(&result1); -} - -ATF_TC(exec_umask); -ATF_TC_HEAD(exec_umask, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that atf_check_exec_array " - "correctly reports an error if the umask is too " - "restrictive to create temporary files"); -} -ATF_TC_BODY(exec_umask, tc) -{ - atf_check_result_t result; - atf_fs_path_t process_helpers; - const char *argv[3]; - - get_process_helpers_path(tc, false, &process_helpers); - argv[0] = atf_fs_path_cstring(&process_helpers); - argv[1] = "exit-success"; - argv[2] = NULL; - - umask(0222); - atf_error_t err = atf_check_exec_array(argv, &result); - ATF_CHECK(atf_is_error(err)); - ATF_CHECK(atf_error_is(err, "invalid_umask")); - atf_error_free(err); - - atf_fs_path_fini(&process_helpers); -} - -ATF_TC(exec_unknown); -ATF_TC_HEAD(exec_unknown, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that running a non-existing " - "binary is handled correctly"); -} -ATF_TC_BODY(exec_unknown, tc) -{ - const char *argv[2]; - argv[0] = "/foo/bar/non-existent"; - argv[1] = NULL; - - atf_check_result_t result; - RE(atf_check_exec_array(argv, &result)); - ATF_CHECK(atf_check_result_exited(&result)); - ATF_CHECK(atf_check_result_exitcode(&result) == 127); - atf_check_result_fini(&result); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the test cases for the free functions. */ - ATF_TP_ADD_TC(tp, build_c_o); - ATF_TP_ADD_TC(tp, build_cpp); - ATF_TP_ADD_TC(tp, build_cxx_o); - ATF_TP_ADD_TC(tp, exec_array); - ATF_TP_ADD_TC(tp, exec_cleanup); - ATF_TP_ADD_TC(tp, exec_exitstatus); - ATF_TP_ADD_TC(tp, exec_stdout_stderr); - ATF_TP_ADD_TC(tp, exec_umask); - ATF_TP_ADD_TC(tp, exec_unknown); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/defs.h.in b/unit/atf-src/atf-c/defs.h.in deleted file mode 100644 index 6059e7fdb0..0000000000 --- a/unit/atf-src/atf-c/defs.h.in +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DEFS_H) -#define ATF_C_DEFS_H - -#define ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(a, b) @ATTRIBUTE_FORMAT_PRINTF@ -#define ATF_DEFS_ATTRIBUTE_NORETURN @ATTRIBUTE_NORETURN@ -#define ATF_DEFS_ATTRIBUTE_UNUSED @ATTRIBUTE_UNUSED@ - -#endif /* !defined(ATF_C_DEFS_H) */ diff --git a/unit/atf-src/atf-c/detail/Atffile b/unit/atf-src/atf-c/detail/Atffile deleted file mode 100644 index 5fd859382c..0000000000 --- a/unit/atf-src/atf-c/detail/Atffile +++ /dev/null @@ -1,13 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: dynstr_test -tp: env_test -tp: fs_test -tp: list_test -tp: map_test -tp: process_test -tp: sanity_test -tp: text_test -tp: user_test diff --git a/unit/atf-src/atf-c/detail/Kyuafile b/unit/atf-src/atf-c/detail/Kyuafile deleted file mode 100644 index bb741da4dd..0000000000 --- a/unit/atf-src/atf-c/detail/Kyuafile +++ /dev/null @@ -1,13 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="dynstr_test"} -atf_test_program{name="env_test"} -atf_test_program{name="fs_test"} -atf_test_program{name="list_test"} -atf_test_program{name="map_test"} -atf_test_program{name="process_test"} -atf_test_program{name="sanity_test"} -atf_test_program{name="text_test"} -atf_test_program{name="user_test"} diff --git a/unit/atf-src/atf-c/detail/Makefile.am.inc b/unit/atf-src/atf-c/detail/Makefile.am.inc deleted file mode 100644 index ad45602d18..0000000000 --- a/unit/atf-src/atf-c/detail/Makefile.am.inc +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -libatf_c_la_SOURCES += atf-c/detail/dynstr.c \ - atf-c/detail/dynstr.h \ - atf-c/detail/env.c \ - atf-c/detail/env.h \ - atf-c/detail/fs.c \ - atf-c/detail/fs.h \ - atf-c/detail/list.c \ - atf-c/detail/list.h \ - atf-c/detail/map.c \ - atf-c/detail/map.h \ - atf-c/detail/process.c \ - atf-c/detail/process.h \ - atf-c/detail/sanity.c \ - atf-c/detail/sanity.h \ - atf-c/detail/text.c \ - atf-c/detail/text.h \ - atf-c/detail/tp_main.c \ - atf-c/detail/user.c \ - atf-c/detail/user.h - -tests_atf_c_detail_DATA = atf-c/detail/Atffile \ - atf-c/detail/Kyuafile -tests_atf_c_detaildir = $(pkgtestsdir)/atf-c/detail -EXTRA_DIST += $(tests_atf_c_detail_DATA) - -noinst_LTLIBRARIES += atf-c/detail/libtest_helpers.la -atf_c_detail_libtest_helpers_la_SOURCES = atf-c/detail/test_helpers.c \ - atf-c/detail/test_helpers.h -atf_c_detail_libtest_helpers_la_CPPFLAGS = -I$(srcdir)/atf-c \ - -DATF_INCLUDEDIR=\"$(includedir)\" - -tests_atf_c_detail_PROGRAMS = atf-c/detail/dynstr_test -atf_c_detail_dynstr_test_SOURCES = atf-c/detail/dynstr_test.c -atf_c_detail_dynstr_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/env_test -atf_c_detail_env_test_SOURCES = atf-c/detail/env_test.c -atf_c_detail_env_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/fs_test -atf_c_detail_fs_test_SOURCES = atf-c/detail/fs_test.c -atf_c_detail_fs_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/list_test -atf_c_detail_list_test_SOURCES = atf-c/detail/list_test.c -atf_c_detail_list_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/map_test -atf_c_detail_map_test_SOURCES = atf-c/detail/map_test.c -atf_c_detail_map_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/process_helpers -atf_c_detail_process_helpers_SOURCES = atf-c/detail/process_helpers.c - -tests_atf_c_detail_PROGRAMS += atf-c/detail/process_test -atf_c_detail_process_test_SOURCES = atf-c/detail/process_test.c -atf_c_detail_process_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/sanity_test -atf_c_detail_sanity_test_SOURCES = atf-c/detail/sanity_test.c -atf_c_detail_sanity_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/text_test -atf_c_detail_text_test_SOURCES = atf-c/detail/text_test.c -atf_c_detail_text_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/user_test -atf_c_detail_user_test_SOURCES = atf-c/detail/user_test.c -atf_c_detail_user_test_LDADD = atf-c/detail/libtest_helpers.la libatf-c.la - -tests_atf_c_detail_PROGRAMS += atf-c/detail/version_helper -atf_c_detail_version_helper_SOURCES = atf-c/detail/version_helper.c - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/atf-c/detail/dynstr.c b/unit/atf-src/atf-c/detail/dynstr.c deleted file mode 100644 index 424a1c9dac..0000000000 --- a/unit/atf-src/atf-c/detail/dynstr.c +++ /dev/null @@ -1,394 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/dynstr.h" - -#include -#include -#include -#include -#include -#include - -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/text.h" -#include "atf-c/error.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -atf_error_t -resize(atf_dynstr_t *ad, size_t newsize) -{ - char *newdata; - atf_error_t err; - - PRE(newsize > ad->m_datasize); - - newdata = (char *)malloc(newsize); - if (newdata == NULL) { - err = atf_no_memory_error(); - } else { - strcpy(newdata, ad->m_data); - free(ad->m_data); - ad->m_data = newdata; - ad->m_datasize = newsize; - err = atf_no_error(); - } - - return err; -} - -static -atf_error_t -prepend_or_append(atf_dynstr_t *ad, const char *fmt, va_list ap, - bool prepend) -{ - char *aux; - atf_error_t err; - size_t newlen; - va_list ap2; - - va_copy(ap2, ap); - err = atf_text_format_ap(&aux, fmt, ap2); - va_end(ap2); - if (atf_is_error(err)) - goto out; - newlen = ad->m_length + strlen(aux); - - if (newlen + sizeof(char) > ad->m_datasize) { - err = resize(ad, newlen + sizeof(char)); - if (atf_is_error(err)) - goto out_free; - } - - if (prepend) { - memmove(ad->m_data + strlen(aux), ad->m_data, ad->m_length + 1); - memcpy(ad->m_data, aux, strlen(aux)); - } else - strcpy(ad->m_data + ad->m_length, aux); - ad->m_length = newlen; - err = atf_no_error(); - -out_free: - free(aux); -out: - return err; -} - -/* --------------------------------------------------------------------- - * The "atf_dynstr" type. - * --------------------------------------------------------------------- */ - -/* - * Constants. - */ - -const size_t atf_dynstr_npos = SIZE_MAX; - -/* - * Constructors and destructors. - */ - -atf_error_t -atf_dynstr_init(atf_dynstr_t *ad) -{ - atf_error_t err; - - ad->m_data = (char *)malloc(sizeof(char)); - if (ad->m_data == NULL) { - err = atf_no_memory_error(); - goto out; - } - - ad->m_data[0] = '\0'; - ad->m_datasize = 1; - ad->m_length = 0; - err = atf_no_error(); - -out: - return err; -} - -atf_error_t -atf_dynstr_init_ap(atf_dynstr_t *ad, const char *fmt, va_list ap) -{ - atf_error_t err; - - ad->m_datasize = strlen(fmt) + 1; - ad->m_length = 0; - - do { - va_list ap2; - int ret; - - ad->m_datasize *= 2; - ad->m_data = (char *)malloc(ad->m_datasize); - if (ad->m_data == NULL) { - err = atf_no_memory_error(); - goto out; - } - - va_copy(ap2, ap); - ret = vsnprintf(ad->m_data, ad->m_datasize, fmt, ap2); - va_end(ap2); - if (ret < 0) { - free(ad->m_data); - err = atf_libc_error(errno, "Cannot format string"); - goto out; - } - - INV(ret >= 0); - if ((size_t)ret >= ad->m_datasize) { - free(ad->m_data); - ad->m_data = NULL; - } - ad->m_length = ret; - } while (ad->m_length >= ad->m_datasize); - - err = atf_no_error(); -out: - POST(atf_is_error(err) || ad->m_data != NULL); - return err; -} - -atf_error_t -atf_dynstr_init_fmt(atf_dynstr_t *ad, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = atf_dynstr_init_ap(ad, fmt, ap); - va_end(ap); - - return err; -} - -atf_error_t -atf_dynstr_init_raw(atf_dynstr_t *ad, const void *mem, size_t memlen) -{ - atf_error_t err; - - if (memlen >= SIZE_MAX - 1) { - err = atf_no_memory_error(); - goto out; - } - - ad->m_data = (char *)malloc(memlen + 1); - if (ad->m_data == NULL) { - err = atf_no_memory_error(); - goto out; - } - - ad->m_datasize = memlen + 1; - memcpy(ad->m_data, mem, memlen); - ad->m_data[memlen] = '\0'; - ad->m_length = strlen(ad->m_data); - INV(ad->m_length <= memlen); - err = atf_no_error(); - -out: - return err; -} - -atf_error_t -atf_dynstr_init_rep(atf_dynstr_t *ad, size_t len, char ch) -{ - atf_error_t err; - - if (len == SIZE_MAX) { - err = atf_no_memory_error(); - goto out; - } - - ad->m_datasize = (len + 1) * sizeof(char); - ad->m_data = (char *)malloc(ad->m_datasize); - if (ad->m_data == NULL) { - err = atf_no_memory_error(); - goto out; - } - - memset(ad->m_data, ch, len); - ad->m_data[len] = '\0'; - ad->m_length = len; - err = atf_no_error(); - -out: - return err; -} - -atf_error_t -atf_dynstr_init_substr(atf_dynstr_t *ad, const atf_dynstr_t *src, - size_t beg, size_t end) -{ - if (beg > src->m_length) - beg = src->m_length; - - if (end == atf_dynstr_npos || end > src->m_length) - end = src->m_length; - - return atf_dynstr_init_raw(ad, src->m_data + beg, end - beg); -} - -atf_error_t -atf_dynstr_copy(atf_dynstr_t *dest, const atf_dynstr_t *src) -{ - atf_error_t err; - - dest->m_data = (char *)malloc(src->m_datasize); - if (dest->m_data == NULL) - err = atf_no_memory_error(); - else { - memcpy(dest->m_data, src->m_data, src->m_datasize); - dest->m_datasize = src->m_datasize; - dest->m_length = src->m_length; - err = atf_no_error(); - } - - return err; -} - -void -atf_dynstr_fini(atf_dynstr_t *ad) -{ - INV(ad->m_data != NULL); - free(ad->m_data); -} - -char * -atf_dynstr_fini_disown(atf_dynstr_t *ad) -{ - INV(ad->m_data != NULL); - return ad->m_data; -} - -/* - * Getters. - */ - -const char * -atf_dynstr_cstring(const atf_dynstr_t *ad) -{ - return ad->m_data; -} - -size_t -atf_dynstr_length(const atf_dynstr_t *ad) -{ - return ad->m_length; -} - -size_t -atf_dynstr_rfind_ch(const atf_dynstr_t *ad, char ch) -{ - size_t pos; - - for (pos = ad->m_length; pos > 0 && ad->m_data[pos - 1] != ch; pos--) - ; - - return pos == 0 ? atf_dynstr_npos : pos - 1; -} - -/* - * Modifiers. - */ - -atf_error_t -atf_dynstr_append_ap(atf_dynstr_t *ad, const char *fmt, va_list ap) -{ - atf_error_t err; - va_list ap2; - - va_copy(ap2, ap); - err = prepend_or_append(ad, fmt, ap2, false); - va_end(ap2); - - return err; -} - -atf_error_t -atf_dynstr_append_fmt(atf_dynstr_t *ad, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = prepend_or_append(ad, fmt, ap, false); - va_end(ap); - - return err; -} - -void -atf_dynstr_clear(atf_dynstr_t *ad) -{ - ad->m_data[0] = '\0'; - ad->m_length = 0; -} - -atf_error_t -atf_dynstr_prepend_ap(atf_dynstr_t *ad, const char *fmt, va_list ap) -{ - atf_error_t err; - va_list ap2; - - va_copy(ap2, ap); - err = prepend_or_append(ad, fmt, ap2, true); - va_end(ap2); - - return err; -} - -atf_error_t -atf_dynstr_prepend_fmt(atf_dynstr_t *ad, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = prepend_or_append(ad, fmt, ap, true); - va_end(ap); - - return err; -} - -/* - * Operators. - */ - -bool -atf_equal_dynstr_cstring(const atf_dynstr_t *ad, const char *str) -{ - return strcmp(ad->m_data, str) == 0; -} - -bool -atf_equal_dynstr_dynstr(const atf_dynstr_t *s1, const atf_dynstr_t *s2) -{ - return strcmp(s1->m_data, s2->m_data) == 0; -} diff --git a/unit/atf-src/atf-c/detail/dynstr.h b/unit/atf-src/atf-c/detail/dynstr.h deleted file mode 100644 index 60b8e422ca..0000000000 --- a/unit/atf-src/atf-c/detail/dynstr.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_DYNSTR_H) -#define ATF_C_DETAIL_DYNSTR_H - -#include -#include -#include - -#include - -/* --------------------------------------------------------------------- - * The "atf_dynstr" type. - * --------------------------------------------------------------------- */ - -struct atf_dynstr { - char *m_data; - size_t m_datasize; - size_t m_length; -}; -typedef struct atf_dynstr atf_dynstr_t; - -/* Constants */ -extern const size_t atf_dynstr_npos; - -/* Constructors and destructors */ -atf_error_t atf_dynstr_init(atf_dynstr_t *); -atf_error_t atf_dynstr_init_ap(atf_dynstr_t *, const char *, va_list); -atf_error_t atf_dynstr_init_fmt(atf_dynstr_t *, const char *, ...); -atf_error_t atf_dynstr_init_raw(atf_dynstr_t *, const void *, size_t); -atf_error_t atf_dynstr_init_rep(atf_dynstr_t *, size_t, char); -atf_error_t atf_dynstr_init_substr(atf_dynstr_t *, const atf_dynstr_t *, - size_t, size_t); -atf_error_t atf_dynstr_copy(atf_dynstr_t *, const atf_dynstr_t *); -void atf_dynstr_fini(atf_dynstr_t *); -char *atf_dynstr_fini_disown(atf_dynstr_t *); - -/* Getters */ -const char *atf_dynstr_cstring(const atf_dynstr_t *); -size_t atf_dynstr_length(const atf_dynstr_t *); -size_t atf_dynstr_rfind_ch(const atf_dynstr_t *, char); - -/* Modifiers */ -atf_error_t atf_dynstr_append_ap(atf_dynstr_t *, const char *, va_list); -atf_error_t atf_dynstr_append_fmt(atf_dynstr_t *, const char *, ...); -void atf_dynstr_clear(atf_dynstr_t *); -atf_error_t atf_dynstr_prepend_ap(atf_dynstr_t *, const char *, va_list); -atf_error_t atf_dynstr_prepend_fmt(atf_dynstr_t *, const char *, ...); - -/* Operators */ -bool atf_equal_dynstr_cstring(const atf_dynstr_t *, const char *); -bool atf_equal_dynstr_dynstr(const atf_dynstr_t *, const atf_dynstr_t *); - -#endif /* !defined(ATF_C_DETAIL_DYNSTR_H) */ diff --git a/unit/atf-src/atf-c/detail/dynstr_test.c b/unit/atf-src/atf-c/detail/dynstr_test.c deleted file mode 100644 index 25127529f8..0000000000 --- a/unit/atf-src/atf-c/detail/dynstr_test.c +++ /dev/null @@ -1,634 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/dynstr.h" - -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Tests for the "atf_dynstr" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors and destructors. - */ - -ATF_TC(init); -ATF_TC_HEAD(init, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the empty constructor"); -} -ATF_TC_BODY(init, tc) -{ - atf_dynstr_t str; - - RE(atf_dynstr_init(&str)); - ATF_REQUIRE_EQ(atf_dynstr_length(&str), 0); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "") == 0); - atf_dynstr_fini(&str); -} - -static -void -init_fmt(atf_dynstr_t *str, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - RE(atf_dynstr_init_ap(str, fmt, ap)); - va_end(ap); -} - -ATF_TC(init_ap); -ATF_TC_HEAD(init_ap, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the formatted constructor using " - "a va_list argument"); -} -ATF_TC_BODY(init_ap, tc) -{ - atf_dynstr_t str; - - init_fmt(&str, "String 1"); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 1") == 0); - atf_dynstr_fini(&str); - - init_fmt(&str, "String %d", 2); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 2") == 0); - atf_dynstr_fini(&str); - - init_fmt(&str, "%s %d", "String", 3); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 3") == 0); - atf_dynstr_fini(&str); - - init_fmt(&str, "%s%s%s%s%s%s%s", "This ", "should ", "be ", "a ", - "large ", "string ", "aaaabbbbccccdddd"); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), - "This should be a large string " - "aaaabbbbccccdddd") == 0); - atf_dynstr_fini(&str); -} - -ATF_TC(init_fmt); -ATF_TC_HEAD(init_fmt, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the formatted constructor using " - "a variable list of parameters"); -} -ATF_TC_BODY(init_fmt, tc) -{ - atf_dynstr_t str; - - RE(atf_dynstr_init_fmt(&str, "String 1")); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 1") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_fmt(&str, "String %d", 2)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 2") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_fmt(&str, "%s %d", "String", 3)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 3") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_fmt(&str, "%s%s%s%s%s%s%s", "This ", "should ", - "be ", "a ", "large ", "string ", - "aaaabbbbccccdddd")); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), - "This should be a large string " - "aaaabbbbccccdddd") == 0); - atf_dynstr_fini(&str); -} - -ATF_TC(init_raw); -ATF_TC_HEAD(init_raw, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of a string " - "using a raw memory pointer"); -} -ATF_TC_BODY(init_raw, tc) -{ - const char *src = "String 1, String 2"; - atf_dynstr_t str; - - RE(atf_dynstr_init_raw(&str, src, 0)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_raw(&str, src, 8)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 1") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_raw(&str, src + 10, 8)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String 2") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_raw(&str, "String\0Lost", 11)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "String") == 0); - atf_dynstr_fini(&str); - - { - atf_error_t err = atf_dynstr_init_raw(&str, "NULL", SIZE_MAX - 1); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - atf_error_free(err); - } -} - -ATF_TC(init_rep); -ATF_TC_HEAD(init_rep, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of a string by " - "repeating characters"); -} -ATF_TC_BODY(init_rep, tc) -{ - const size_t maxlen = 8192; - char buf[maxlen + 1]; - size_t i; - - buf[0] = '\0'; - - for (i = 0; i < maxlen; i++) { - atf_dynstr_t str; - - RE(atf_dynstr_init_rep(&str, i, 'a')); - - if (strcmp(atf_dynstr_cstring(&str), buf) != 0) { - fprintf(stderr, "Failed at iteration %zd\n", i); - atf_tc_fail("Failed to construct dynstr by repeating %zd " - "times the '%c' character", i, 'a'); - } - - atf_dynstr_fini(&str); - - strcat(buf, "a"); - } - - { - atf_dynstr_t str; - atf_error_t err; - - err = atf_dynstr_init_rep(&str, SIZE_MAX, 'a'); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - atf_error_free(err); - - err = atf_dynstr_init_rep(&str, SIZE_MAX - 1, 'a'); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - atf_error_free(err); - } -} - -ATF_TC(init_substr); -ATF_TC_HEAD(init_substr, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of a string " - "using a substring of another one"); -} -ATF_TC_BODY(init_substr, tc) -{ - atf_dynstr_t src; - atf_dynstr_t str; - - RE(atf_dynstr_init_fmt(&src, "Str 1, Str 2")); - - RE(atf_dynstr_init_substr(&str, &src, 0, 0)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_substr(&str, &src, 0, atf_dynstr_npos)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "Str 1, Str 2") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_substr(&str, &src, 0, 100)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "Str 1, Str 2") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_substr(&str, &src, 0, 5)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "Str 1") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_substr(&str, &src, 100, atf_dynstr_npos)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_substr(&str, &src, 7, atf_dynstr_npos)); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "Str 2") == 0); - atf_dynstr_fini(&str); - - atf_dynstr_fini(&src); -} - -ATF_TC(copy); -ATF_TC_HEAD(copy, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_dynstr_copy constructor"); -} -ATF_TC_BODY(copy, tc) -{ - atf_dynstr_t str, str2; - - RE(atf_dynstr_init_fmt(&str, "Test string")); - RE(atf_dynstr_copy(&str2, &str)); - - ATF_REQUIRE(atf_equal_dynstr_dynstr(&str, &str2)); - - RE(atf_dynstr_append_fmt(&str2, " non-shared text")); - - ATF_REQUIRE(!atf_equal_dynstr_dynstr(&str, &str2)); - - atf_dynstr_fini(&str2); - atf_dynstr_fini(&str); -} - -ATF_TC(fini_disown); -ATF_TC_HEAD(fini_disown, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks grabbing ownership of the " - "internal plain C string"); -} -ATF_TC_BODY(fini_disown, tc) -{ - const char *cstr; - char *cstr2; - atf_dynstr_t str; - - RE(atf_dynstr_init_fmt(&str, "Test string 1")); - cstr = atf_dynstr_cstring(&str); - cstr2 = atf_dynstr_fini_disown(&str); - - ATF_REQUIRE_EQ(cstr, cstr2); - free(cstr2); -} - -/* - * Getters. - */ - -ATF_TC(cstring); -ATF_TC_HEAD(cstring, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the method to obtain a plain C " - "string"); -} -ATF_TC_BODY(cstring, tc) -{ - const char *cstr; - atf_dynstr_t str; - - RE(atf_dynstr_init_fmt(&str, "Test string 1")); - cstr = atf_dynstr_cstring(&str); - ATF_REQUIRE(cstr != NULL); - ATF_REQUIRE(strcmp(cstr, "Test string 1") == 0); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_fmt(&str, "Test string 2")); - cstr = atf_dynstr_cstring(&str); - ATF_REQUIRE(cstr != NULL); - ATF_REQUIRE(strcmp(cstr, "Test string 2") == 0); - atf_dynstr_fini(&str); -} - -ATF_TC(length); -ATF_TC_HEAD(length, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the method to obtain the length"); -} -ATF_TC_BODY(length, tc) -{ - size_t i; - - for (i = 0; i < 8192; i++) { - atf_dynstr_t str; - RE(atf_dynstr_init_rep(&str, i, 'a')); - ATF_REQUIRE_EQ(atf_dynstr_length(&str), i); - atf_dynstr_fini(&str); - } -} - -ATF_TC(rfind_ch); -ATF_TC_HEAD(rfind_ch, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the method to locate the first " - "occurrence of a character starting from the end"); -} -ATF_TC_BODY(rfind_ch, tc) -{ - atf_dynstr_t str; - - RE(atf_dynstr_init_fmt(&str, "Foo1/Bar2/,.Baz")); - - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, '\0'), atf_dynstr_npos); - - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, '0'), atf_dynstr_npos); - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, 'b'), atf_dynstr_npos); - - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, 'F'), 0); - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, '/'), 9); - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, 'a'), 13); - ATF_REQUIRE_EQ(atf_dynstr_rfind_ch(&str, 'z'), 14); - - atf_dynstr_fini(&str); -} - -/* - * Modifiers. - */ - -static -void -check_append(atf_error_t (*append)(atf_dynstr_t *, const char *, ...)) -{ - const size_t maxlen = 8192; - char buf[maxlen + 1]; - size_t i; - atf_dynstr_t str; - - printf("Appending with plain string\n"); - buf[0] = '\0'; - RE(atf_dynstr_init(&str)); - for (i = 0; i < maxlen; i++) { - if (strcmp(atf_dynstr_cstring(&str), buf) != 0) { - fprintf(stderr, "Failed at iteration %zd\n", i); - atf_tc_fail("Failed to append character at iteration %zd", i); - } - - RE(append(&str, "a")); - strcat(buf, "a"); - } - atf_dynstr_fini(&str); - - printf("Appending with formatted string\n"); - buf[0] = '\0'; - RE(atf_dynstr_init(&str)); - for (i = 0; i < maxlen; i++) { - if (strcmp(atf_dynstr_cstring(&str), buf) != 0) { - fprintf(stderr, "Failed at iteration %zd\n", i); - atf_tc_fail("Failed to append character at iteration %zd", i); - } - - RE(append(&str, "%s", "a")); - strcat(buf, "a"); - } - atf_dynstr_fini(&str); -} - -static -atf_error_t -append_ap_aux(atf_dynstr_t *str, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = atf_dynstr_append_ap(str, fmt, ap); - va_end(ap); - - return err; -} - -ATF_TC(append_ap); -ATF_TC_HEAD(append_ap, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that appending a string to " - "another one works"); -} -ATF_TC_BODY(append_ap, tc) -{ - check_append(append_ap_aux); -} - -ATF_TC(append_fmt); -ATF_TC_HEAD(append_fmt, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that appending a string to " - "another one works"); -} -ATF_TC_BODY(append_fmt, tc) -{ - check_append(atf_dynstr_append_fmt); -} - -ATF_TC(clear); -ATF_TC_HEAD(clear, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks clearing a string"); -} -ATF_TC_BODY(clear, tc) -{ - atf_dynstr_t str; - - printf("Clear an empty string\n"); - RE(atf_dynstr_init(&str)); - atf_dynstr_clear(&str); - ATF_REQUIRE_EQ(atf_dynstr_length(&str), 0); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "") == 0); - atf_dynstr_fini(&str); - - printf("Clear a non-empty string\n"); - RE(atf_dynstr_init_fmt(&str, "Not empty")); - ATF_REQUIRE_EQ(atf_dynstr_length(&str), strlen("Not empty")); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "Not empty") == 0); - atf_dynstr_clear(&str); - ATF_REQUIRE_EQ(atf_dynstr_length(&str), 0); - ATF_REQUIRE(strcmp(atf_dynstr_cstring(&str), "") == 0); - atf_dynstr_fini(&str); -} - -static -void -check_prepend(atf_error_t (*prepend)(atf_dynstr_t *, const char *, ...)) -{ - const size_t maxlen = 8192; - char buf[maxlen + 1]; - size_t i; - atf_dynstr_t str; - - printf("Prepending with plain string\n"); - buf[0] = '\0'; - RE(atf_dynstr_init(&str)); - for (i = 0; i < maxlen; i++) { - if (strcmp(atf_dynstr_cstring(&str), buf) != 0) { - fprintf(stderr, "Failed at iteration %zd\n", i); - atf_tc_fail("Failed to prepend character at iteration %zd", i); - } - - memmove(buf + 1, buf, i + 1); - if (i % 2 == 0) { - RE(prepend(&str, "%s", "a")); - buf[0] = 'a'; - } else { - RE(prepend(&str, "%s", "b")); - buf[0] = 'b'; - } - } - atf_dynstr_fini(&str); - - printf("Prepending with formatted string\n"); - buf[0] = '\0'; - RE(atf_dynstr_init(&str)); - for (i = 0; i < maxlen; i++) { - if (strcmp(atf_dynstr_cstring(&str), buf) != 0) { - fprintf(stderr, "Failed at iteration %zd\n", i); - atf_tc_fail("Failed to prepend character at iteration %zd", i); - } - - memmove(buf + 1, buf, i + 1); - if (i % 2 == 0) { - RE(prepend(&str, "%s", "a")); - buf[0] = 'a'; - } else { - RE(prepend(&str, "%s", "b")); - buf[0] = 'b'; - } - } - atf_dynstr_fini(&str); -} - -static -atf_error_t -prepend_ap_aux(atf_dynstr_t *str, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = atf_dynstr_prepend_ap(str, fmt, ap); - va_end(ap); - - return err; -} - -ATF_TC(prepend_ap); -ATF_TC_HEAD(prepend_ap, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that prepending a string to " - "another one works"); -} -ATF_TC_BODY(prepend_ap, tc) -{ - check_prepend(prepend_ap_aux); -} - -ATF_TC(prepend_fmt); -ATF_TC_HEAD(prepend_fmt, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that prepending a string to " - "another one works"); -} -ATF_TC_BODY(prepend_fmt, tc) -{ - check_prepend(atf_dynstr_prepend_fmt); -} - -/* - * Operators. - */ - -ATF_TC(equal_cstring); -ATF_TC_HEAD(equal_cstring, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_equal_dynstr_cstring " - "function"); -} -ATF_TC_BODY(equal_cstring, tc) -{ - atf_dynstr_t str; - - RE(atf_dynstr_init(&str)); - ATF_REQUIRE( atf_equal_dynstr_cstring(&str, "")); - ATF_REQUIRE(!atf_equal_dynstr_cstring(&str, "Test")); - atf_dynstr_fini(&str); - - RE(atf_dynstr_init_fmt(&str, "Test")); - ATF_REQUIRE( atf_equal_dynstr_cstring(&str, "Test")); - ATF_REQUIRE(!atf_equal_dynstr_cstring(&str, "")); - ATF_REQUIRE(!atf_equal_dynstr_cstring(&str, "Tes")); - ATF_REQUIRE(!atf_equal_dynstr_cstring(&str, "Test ")); - atf_dynstr_fini(&str); -} - -ATF_TC(equal_dynstr); -ATF_TC_HEAD(equal_dynstr, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_equal_dynstr_dynstr " - "function"); -} -ATF_TC_BODY(equal_dynstr, tc) -{ - atf_dynstr_t str, str2; - - RE(atf_dynstr_init(&str)); - RE(atf_dynstr_init_fmt(&str2, "Test")); - ATF_REQUIRE( atf_equal_dynstr_dynstr(&str, &str)); - ATF_REQUIRE(!atf_equal_dynstr_dynstr(&str, &str2)); - atf_dynstr_fini(&str2); - atf_dynstr_fini(&str); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Constructors and destructors. */ - ATF_TP_ADD_TC(tp, init); - ATF_TP_ADD_TC(tp, init_ap); - ATF_TP_ADD_TC(tp, init_fmt); - ATF_TP_ADD_TC(tp, init_raw); - ATF_TP_ADD_TC(tp, init_rep); - ATF_TP_ADD_TC(tp, init_substr); - ATF_TP_ADD_TC(tp, copy); - ATF_TP_ADD_TC(tp, fini_disown); - - /* Getters. */ - ATF_TP_ADD_TC(tp, cstring); - ATF_TP_ADD_TC(tp, length); - ATF_TP_ADD_TC(tp, rfind_ch); - - /* Modifiers. */ - ATF_TP_ADD_TC(tp, append_ap); - ATF_TP_ADD_TC(tp, append_fmt); - ATF_TP_ADD_TC(tp, clear); - ATF_TP_ADD_TC(tp, prepend_ap); - ATF_TP_ADD_TC(tp, prepend_fmt); - - /* Operators. */ - ATF_TP_ADD_TC(tp, equal_cstring); - ATF_TP_ADD_TC(tp, equal_dynstr); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/env.c b/unit/atf-src/atf-c/detail/env.c deleted file mode 100644 index 8ee3d697c2..0000000000 --- a/unit/atf-src/atf-c/detail/env.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/env.h" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include - -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/text.h" -#include "atf-c/error.h" - -const char * -atf_env_get(const char *name) -{ - const char* val = getenv(name); - PRE(val != NULL); - return val; -} - -const char * -atf_env_get_with_default(const char *name, const char *default_value) -{ - const char* val = getenv(name); - if (val == NULL) - return default_value; - else - return val; -} - -bool -atf_env_has(const char *name) -{ - return getenv(name) != NULL; -} - -atf_error_t -atf_env_set(const char *name, const char *val) -{ - atf_error_t err; - -#if defined(HAVE_SETENV) - if (setenv(name, val, 1) == -1) - err = atf_libc_error(errno, "Cannot set environment variable " - "'%s' to '%s'", name, val); - else - err = atf_no_error(); -#elif defined(HAVE_PUTENV) - char *buf; - - err = atf_text_format(&buf, "%s=%s", name, val); - if (!atf_is_error(err)) { - if (putenv(buf) == -1) - err = atf_libc_error(errno, "Cannot set environment variable " - "'%s' to '%s'", name, val); - free(buf); - } -#else -# error "Don't know how to set an environment variable." -#endif - - return err; -} - -atf_error_t -atf_env_unset(const char *name) -{ - atf_error_t err; - -#if defined(HAVE_UNSETENV) - unsetenv(name); - err = atf_no_error(); -#elif defined(HAVE_PUTENV) - char *buf; - - err = atf_text_format(&buf, "%s=", name); - if (!atf_is_error(err)) { - if (putenv(buf) == -1) - err = atf_libc_error(errno, "Cannot unset environment variable" - " '%s'", name); - free(buf); - } -#else -# error "Don't know how to unset an environment variable." -#endif - - return err; -} diff --git a/unit/atf-src/atf-c/detail/env.h b/unit/atf-src/atf-c/detail/env.h deleted file mode 100644 index 5d29440df4..0000000000 --- a/unit/atf-src/atf-c/detail/env.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_ENV_H) -#define ATF_C_DETAIL_ENV_H - -#include - -#include - -const char *atf_env_get(const char *); -const char *atf_env_get_with_default(const char *, const char *); -bool atf_env_has(const char *); -atf_error_t atf_env_set(const char *, const char *); -atf_error_t atf_env_unset(const char *); - -#endif /* !defined(ATF_C_DETAIL_ENV_H) */ diff --git a/unit/atf-src/atf-c/detail/env_test.c b/unit/atf-src/atf-c/detail/env_test.c deleted file mode 100644 index 3909c29fb9..0000000000 --- a/unit/atf-src/atf-c/detail/env_test.c +++ /dev/null @@ -1,133 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/env.h" - -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" -#include "atf-c/detail/text.h" - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(has); -ATF_TC_HEAD(has, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_env_has function"); -} -ATF_TC_BODY(has, tc) -{ - ATF_REQUIRE(atf_env_has("PATH")); - ATF_REQUIRE(!atf_env_has("_UNDEFINED_VARIABLE_")); -} - -ATF_TC(get); -ATF_TC_HEAD(get, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_env_get function"); -} -ATF_TC_BODY(get, tc) -{ - const char *val; - - ATF_REQUIRE(atf_env_has("PATH")); - - val = atf_env_get("PATH"); - ATF_REQUIRE(strlen(val) > 0); - ATF_REQUIRE(strchr(val, ':') != NULL); -} - -ATF_TC(get_with_default); -ATF_TC_HEAD(get_with_default, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_env_get_with_default " - "function"); -} -ATF_TC_BODY(get_with_default, tc) -{ - const char *val; - - ATF_REQUIRE(atf_env_has("PATH")); - - val = atf_env_get_with_default("PATH", "unknown"); - ATF_REQUIRE(strcmp(val, "unknown") != 0); - - val = atf_env_get_with_default("_UNKNOWN_VARIABLE_", "foo bar"); - ATF_REQUIRE(strcmp(val, "foo bar") == 0); -} - -ATF_TC(set); -ATF_TC_HEAD(set, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_env_set function"); -} -ATF_TC_BODY(set, tc) -{ - char *oldval; - - ATF_REQUIRE(atf_env_has("PATH")); - RE(atf_text_format(&oldval, "%s", atf_env_get("PATH"))); - RE(atf_env_set("PATH", "foo-bar")); - ATF_REQUIRE(strcmp(atf_env_get("PATH"), oldval) != 0); - ATF_REQUIRE(strcmp(atf_env_get("PATH"), "foo-bar") == 0); - free(oldval); - - ATF_REQUIRE(!atf_env_has("_UNDEFINED_VARIABLE_")); - RE(atf_env_set("_UNDEFINED_VARIABLE_", "foo2-bar2")); - ATF_REQUIRE(strcmp(atf_env_get("_UNDEFINED_VARIABLE_"), - "foo2-bar2") == 0); -} - -ATF_TC(unset); -ATF_TC_HEAD(unset, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_env_unset function"); -} -ATF_TC_BODY(unset, tc) -{ - ATF_REQUIRE(atf_env_has("PATH")); - RE(atf_env_unset("PATH")); - ATF_REQUIRE(!atf_env_has("PATH")); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, has); - ATF_TP_ADD_TC(tp, get); - ATF_TP_ADD_TC(tp, get_with_default); - ATF_TP_ADD_TC(tp, set); - ATF_TP_ADD_TC(tp, unset); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/fs.c b/unit/atf-src/atf-c/detail/fs.c deleted file mode 100644 index 5ff7648c3c..0000000000 --- a/unit/atf-src/atf-c/detail/fs.c +++ /dev/null @@ -1,884 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/fs.h" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atf-c/defs.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/text.h" -#include "atf-c/detail/user.h" -#include "atf-c/error.h" - -/* --------------------------------------------------------------------- - * Prototypes for auxiliary functions. - * --------------------------------------------------------------------- */ - -static bool check_umask(const mode_t, const mode_t); -static atf_error_t copy_contents(const atf_fs_path_t *, char **); -static mode_t current_umask(void); -static atf_error_t do_mkdtemp(char *); -static atf_error_t normalize(atf_dynstr_t *, char *); -static atf_error_t normalize_ap(atf_dynstr_t *, const char *, va_list); -static void replace_contents(atf_fs_path_t *, const char *); -static const char *stat_type_to_string(const int); - -/* --------------------------------------------------------------------- - * The "invalid_umask" error type. - * --------------------------------------------------------------------- */ - -struct invalid_umask_error_data { - /* One of atf_fs_stat_*_type. */ - int m_type; - - /* The original path causing the error. */ - /* XXX: Ideally this would be an atf_fs_path_t, but if we create it - * from the error constructor, we cannot delete the path later on. - * Can't remember why atf_error_new does not take a hook for - * deletion. */ - char m_path[1024]; - - /* The umask that caused the error. */ - mode_t m_umask; -}; -typedef struct invalid_umask_error_data invalid_umask_error_data_t; - -static -void -invalid_umask_format(const atf_error_t err, char *buf, size_t buflen) -{ - const invalid_umask_error_data_t *data; - - PRE(atf_error_is(err, "invalid_umask")); - - data = atf_error_data(err); - snprintf(buf, buflen, "Could not create the temporary %s %s because " - "it will not have enough access rights due to the current " - "umask %05o", stat_type_to_string(data->m_type), - data->m_path, (unsigned int)data->m_umask); -} - -static -atf_error_t -invalid_umask_error(const atf_fs_path_t *path, const int type, - const mode_t failing_mask) -{ - atf_error_t err; - invalid_umask_error_data_t data; - - data.m_type = type; - - strncpy(data.m_path, atf_fs_path_cstring(path), sizeof(data.m_path)); - data.m_path[sizeof(data.m_path) - 1] = '\0'; - - data.m_umask = failing_mask; - - err = atf_error_new("invalid_umask", &data, sizeof(data), - invalid_umask_format); - - return err; -} - -/* --------------------------------------------------------------------- - * The "unknown_file_type" error type. - * --------------------------------------------------------------------- */ - -struct unknown_type_error_data { - const char *m_path; - int m_type; -}; -typedef struct unknown_type_error_data unknown_type_error_data_t; - -static -void -unknown_type_format(const atf_error_t err, char *buf, size_t buflen) -{ - const unknown_type_error_data_t *data; - - PRE(atf_error_is(err, "unknown_type")); - - data = atf_error_data(err); - snprintf(buf, buflen, "Unknown file type %d of %s", data->m_type, - data->m_path); -} - -static -atf_error_t -unknown_type_error(const char *path, int type) -{ - atf_error_t err; - unknown_type_error_data_t data; - - data.m_path = path; - data.m_type = type; - - err = atf_error_new("unknown_type", &data, sizeof(data), - unknown_type_format); - - return err; -} - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -bool -check_umask(const mode_t exp_mode, const mode_t min_mode) -{ - const mode_t actual_mode = (~current_umask() & exp_mode); - return (actual_mode & min_mode) == min_mode; -} - -static -atf_error_t -copy_contents(const atf_fs_path_t *p, char **buf) -{ - atf_error_t err; - char *str; - - str = (char *)malloc(atf_dynstr_length(&p->m_data) + 1); - if (str == NULL) - err = atf_no_memory_error(); - else { - strcpy(str, atf_dynstr_cstring(&p->m_data)); - *buf = str; - err = atf_no_error(); - } - - return err; -} - -static -mode_t -current_umask(void) -{ - const mode_t current = umask(0); - (void)umask(current); - return current; -} - -static -atf_error_t -do_mkdtemp(char *tmpl) -{ - atf_error_t err; - - PRE(strstr(tmpl, "XXXXXX") != NULL); - - if (mkdtemp(tmpl) == NULL) - err = atf_libc_error(errno, "Cannot create temporary directory " - "with template '%s'", tmpl); - else - err = atf_no_error(); - - return err; -} - -static -atf_error_t -do_mkstemp(char *tmpl, int *fdout) -{ - atf_error_t err; - - PRE(strstr(tmpl, "XXXXXX") != NULL); - - *fdout = mkstemp(tmpl); - if (*fdout == -1) - err = atf_libc_error(errno, "Cannot create temporary file " - "with template '%s'", tmpl); - - else - err = atf_no_error(); - - return err; -} - -static -atf_error_t -normalize(atf_dynstr_t *d, char *p) -{ - const char *ptr; - char *last; - atf_error_t err; - bool first; - - PRE(strlen(p) > 0); - PRE(atf_dynstr_length(d) == 0); - - if (p[0] == '/') - err = atf_dynstr_append_fmt(d, "/"); - else - err = atf_no_error(); - - first = true; - last = NULL; /* Silence GCC warning. */ - ptr = strtok_r(p, "/", &last); - while (!atf_is_error(err) && ptr != NULL) { - if (strlen(ptr) > 0) { - err = atf_dynstr_append_fmt(d, "%s%s", first ? "" : "/", ptr); - first = false; - } - - ptr = strtok_r(NULL, "/", &last); - } - - return err; -} - -static -atf_error_t -normalize_ap(atf_dynstr_t *d, const char *p, va_list ap) -{ - char *str; - atf_error_t err; - va_list ap2; - - err = atf_dynstr_init(d); - if (atf_is_error(err)) - goto out; - - va_copy(ap2, ap); - err = atf_text_format_ap(&str, p, ap2); - va_end(ap2); - if (atf_is_error(err)) - atf_dynstr_fini(d); - else { - err = normalize(d, str); - free(str); - } - -out: - return err; -} - -static -void -replace_contents(atf_fs_path_t *p, const char *buf) -{ - atf_error_t err; - - PRE(atf_dynstr_length(&p->m_data) == strlen(buf)); - - atf_dynstr_clear(&p->m_data); - err = atf_dynstr_append_fmt(&p->m_data, "%s", buf); - - INV(!atf_is_error(err)); -} - -static -const char * -stat_type_to_string(const int type) -{ - const char *str; - - if (type == atf_fs_stat_blk_type) - str = "block device"; - else if (type == atf_fs_stat_chr_type) - str = "character device"; - else if (type == atf_fs_stat_dir_type) - str = "directory"; - else if (type == atf_fs_stat_fifo_type) - str = "named pipe"; - else if (type == atf_fs_stat_lnk_type) - str = "symbolic link"; - else if (type == atf_fs_stat_reg_type) - str = "regular file"; - else if (type == atf_fs_stat_sock_type) - str = "socket"; - else if (type == atf_fs_stat_wht_type) - str = "whiteout"; - else { - UNREACHABLE; - str = NULL; - } - - return str; -} - -/* --------------------------------------------------------------------- - * The "atf_fs_path" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors/destructors. - */ - -atf_error_t -atf_fs_path_init_ap(atf_fs_path_t *p, const char *fmt, va_list ap) -{ - atf_error_t err; - va_list ap2; - - va_copy(ap2, ap); - err = normalize_ap(&p->m_data, fmt, ap2); - va_end(ap2); - - return err; -} - -atf_error_t -atf_fs_path_init_fmt(atf_fs_path_t *p, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = atf_fs_path_init_ap(p, fmt, ap); - va_end(ap); - - return err; -} - -atf_error_t -atf_fs_path_copy(atf_fs_path_t *dest, const atf_fs_path_t *src) -{ - return atf_dynstr_copy(&dest->m_data, &src->m_data); -} - -void -atf_fs_path_fini(atf_fs_path_t *p) -{ - atf_dynstr_fini(&p->m_data); -} - -/* - * Getters. - */ - -atf_error_t -atf_fs_path_branch_path(const atf_fs_path_t *p, atf_fs_path_t *bp) -{ - const size_t endpos = atf_dynstr_rfind_ch(&p->m_data, '/'); - atf_error_t err; - - if (endpos == atf_dynstr_npos) - err = atf_fs_path_init_fmt(bp, "."); - else if (endpos == 0) - err = atf_fs_path_init_fmt(bp, "/"); - else - err = atf_dynstr_init_substr(&bp->m_data, &p->m_data, 0, endpos); - -#if defined(HAVE_CONST_DIRNAME) - INV(atf_equal_dynstr_cstring(&bp->m_data, - dirname(atf_dynstr_cstring(&p->m_data)))); -#endif /* defined(HAVE_CONST_DIRNAME) */ - - return err; -} - -const char * -atf_fs_path_cstring(const atf_fs_path_t *p) -{ - return atf_dynstr_cstring(&p->m_data); -} - -atf_error_t -atf_fs_path_leaf_name(const atf_fs_path_t *p, atf_dynstr_t *ln) -{ - size_t begpos = atf_dynstr_rfind_ch(&p->m_data, '/'); - atf_error_t err; - - if (begpos == atf_dynstr_npos) - begpos = 0; - else - begpos++; - - err = atf_dynstr_init_substr(ln, &p->m_data, begpos, atf_dynstr_npos); - -#if defined(HAVE_CONST_BASENAME) - INV(atf_equal_dynstr_cstring(ln, - basename(atf_dynstr_cstring(&p->m_data)))); -#endif /* defined(HAVE_CONST_BASENAME) */ - - return err; -} - -bool -atf_fs_path_is_absolute(const atf_fs_path_t *p) -{ - return atf_dynstr_cstring(&p->m_data)[0] == '/'; -} - -bool -atf_fs_path_is_root(const atf_fs_path_t *p) -{ - return atf_equal_dynstr_cstring(&p->m_data, "/"); -} - -/* - * Modifiers. - */ - -atf_error_t -atf_fs_path_append_ap(atf_fs_path_t *p, const char *fmt, va_list ap) -{ - atf_dynstr_t aux; - atf_error_t err; - va_list ap2; - - va_copy(ap2, ap); - err = normalize_ap(&aux, fmt, ap2); - va_end(ap2); - if (!atf_is_error(err)) { - const char *auxstr = atf_dynstr_cstring(&aux); - const bool needslash = auxstr[0] != '/'; - - err = atf_dynstr_append_fmt(&p->m_data, "%s%s", - needslash ? "/" : "", auxstr); - - atf_dynstr_fini(&aux); - } - - return err; -} - -atf_error_t -atf_fs_path_append_fmt(atf_fs_path_t *p, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = atf_fs_path_append_ap(p, fmt, ap); - va_end(ap); - - return err; -} - -atf_error_t -atf_fs_path_append_path(atf_fs_path_t *p, const atf_fs_path_t *p2) -{ - return atf_fs_path_append_fmt(p, "%s", atf_dynstr_cstring(&p2->m_data)); -} - -atf_error_t -atf_fs_path_to_absolute(const atf_fs_path_t *p, atf_fs_path_t *pa) -{ - atf_error_t err; - - PRE(!atf_fs_path_is_absolute(p)); - - err = atf_fs_getcwd(pa); - if (atf_is_error(err)) - goto out; - - err = atf_fs_path_append_path(pa, p); - if (atf_is_error(err)) - atf_fs_path_fini(pa); - -out: - return err; -} - -/* - * Operators. - */ - -bool atf_equal_fs_path_fs_path(const atf_fs_path_t *p1, - const atf_fs_path_t *p2) -{ - return atf_equal_dynstr_dynstr(&p1->m_data, &p2->m_data); -} - -/* --------------------------------------------------------------------- - * The "atf_fs_path" type. - * --------------------------------------------------------------------- */ - -/* - * Constants. - */ - -const int atf_fs_stat_blk_type = 1; -const int atf_fs_stat_chr_type = 2; -const int atf_fs_stat_dir_type = 3; -const int atf_fs_stat_fifo_type = 4; -const int atf_fs_stat_lnk_type = 5; -const int atf_fs_stat_reg_type = 6; -const int atf_fs_stat_sock_type = 7; -const int atf_fs_stat_wht_type = 8; - -/* - * Constructors/destructors. - */ - -atf_error_t -atf_fs_stat_init(atf_fs_stat_t *st, const atf_fs_path_t *p) -{ - atf_error_t err; - const char *pstr = atf_fs_path_cstring(p); - - if (lstat(pstr, &st->m_sb) == -1) { - err = atf_libc_error(errno, "Cannot get information of %s; " - "lstat(2) failed", pstr); - } else { - int type = st->m_sb.st_mode & S_IFMT; - err = atf_no_error(); - switch (type) { - case S_IFBLK: st->m_type = atf_fs_stat_blk_type; break; - case S_IFCHR: st->m_type = atf_fs_stat_chr_type; break; - case S_IFDIR: st->m_type = atf_fs_stat_dir_type; break; - case S_IFIFO: st->m_type = atf_fs_stat_fifo_type; break; - case S_IFLNK: st->m_type = atf_fs_stat_lnk_type; break; - case S_IFREG: st->m_type = atf_fs_stat_reg_type; break; - case S_IFSOCK: st->m_type = atf_fs_stat_sock_type; break; -#if defined(S_IFWHT) - case S_IFWHT: st->m_type = atf_fs_stat_wht_type; break; -#endif - default: - err = unknown_type_error(pstr, type); - } - } - - return err; -} - -void -atf_fs_stat_copy(atf_fs_stat_t *dest, const atf_fs_stat_t *src) -{ - dest->m_type = src->m_type; - dest->m_sb = src->m_sb; -} - -void -atf_fs_stat_fini(atf_fs_stat_t *st ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -/* - * Getters. - */ - -dev_t -atf_fs_stat_get_device(const atf_fs_stat_t *st) -{ - return st->m_sb.st_dev; -} - -ino_t -atf_fs_stat_get_inode(const atf_fs_stat_t *st) -{ - return st->m_sb.st_ino; -} - -mode_t -atf_fs_stat_get_mode(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & ~S_IFMT; -} - -off_t -atf_fs_stat_get_size(const atf_fs_stat_t *st) -{ - return st->m_sb.st_size; -} - -int -atf_fs_stat_get_type(const atf_fs_stat_t *st) -{ - return st->m_type; -} - -bool -atf_fs_stat_is_owner_readable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IRUSR; -} - -bool -atf_fs_stat_is_owner_writable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IWUSR; -} - -bool -atf_fs_stat_is_owner_executable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IXUSR; -} - -bool -atf_fs_stat_is_group_readable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IRGRP; -} - -bool -atf_fs_stat_is_group_writable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IWGRP; -} - -bool -atf_fs_stat_is_group_executable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IXGRP; -} - -bool -atf_fs_stat_is_other_readable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IROTH; -} - -bool -atf_fs_stat_is_other_writable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IWOTH; -} - -bool -atf_fs_stat_is_other_executable(const atf_fs_stat_t *st) -{ - return st->m_sb.st_mode & S_IXOTH; -} - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -const int atf_fs_access_f = 1 << 0; -const int atf_fs_access_r = 1 << 1; -const int atf_fs_access_w = 1 << 2; -const int atf_fs_access_x = 1 << 3; - -/* - * An implementation of access(2) but using the effective user value - * instead of the real one. Also avoids false positives for root when - * asking for execute permissions, which appear in SunOS. - */ -atf_error_t -atf_fs_eaccess(const atf_fs_path_t *p, int mode) -{ - atf_error_t err; - struct stat st; - bool ok; - - PRE(mode & atf_fs_access_f || mode & atf_fs_access_r || - mode & atf_fs_access_w || mode & atf_fs_access_x); - - if (lstat(atf_fs_path_cstring(p), &st) == -1) { - err = atf_libc_error(errno, "Cannot get information from file %s", - atf_fs_path_cstring(p)); - goto out; - } - - err = atf_no_error(); - - /* Early return if we are only checking for existence and the file - * exists (stat call returned). */ - if (mode & atf_fs_access_f) - goto out; - - ok = false; - if (atf_user_is_root()) { - if (!ok && !(mode & atf_fs_access_x)) { - /* Allow root to read/write any file. */ - ok = true; - } - - if (!ok && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) { - /* Allow root to execute the file if any of its execution bits - * are set. */ - ok = true; - } - } else { - if (!ok && (atf_user_euid() == st.st_uid)) { - ok = ((mode & atf_fs_access_r) && (st.st_mode & S_IRUSR)) || - ((mode & atf_fs_access_w) && (st.st_mode & S_IWUSR)) || - ((mode & atf_fs_access_x) && (st.st_mode & S_IXUSR)); - } - if (!ok && atf_user_is_member_of_group(st.st_gid)) { - ok = ((mode & atf_fs_access_r) && (st.st_mode & S_IRGRP)) || - ((mode & atf_fs_access_w) && (st.st_mode & S_IWGRP)) || - ((mode & atf_fs_access_x) && (st.st_mode & S_IXGRP)); - } - if (!ok && ((atf_user_euid() != st.st_uid) && - !atf_user_is_member_of_group(st.st_gid))) { - ok = ((mode & atf_fs_access_r) && (st.st_mode & S_IROTH)) || - ((mode & atf_fs_access_w) && (st.st_mode & S_IWOTH)) || - ((mode & atf_fs_access_x) && (st.st_mode & S_IXOTH)); - } - } - - if (!ok) - err = atf_libc_error(EACCES, "Access check failed"); - -out: - return err; -} - -atf_error_t -atf_fs_exists(const atf_fs_path_t *p, bool *b) -{ - atf_error_t err; - - err = atf_fs_eaccess(p, atf_fs_access_f); - if (atf_is_error(err)) { - if (atf_error_is(err, "libc") && atf_libc_error_code(err) == ENOENT) { - atf_error_free(err); - err = atf_no_error(); - *b = false; - } - } else - *b = true; - - return err; -} - -atf_error_t -atf_fs_getcwd(atf_fs_path_t *p) -{ - atf_error_t err; - char *cwd; - -#if defined(HAVE_GETCWD_DYN) - cwd = getcwd(NULL, 0); -#else - cwd = getcwd(NULL, MAXPATHLEN); -#endif - if (cwd == NULL) { - err = atf_libc_error(errno, "Cannot determine current directory"); - goto out; - } - - err = atf_fs_path_init_fmt(p, "%s", cwd); - free(cwd); - -out: - return err; -} - -atf_error_t -atf_fs_mkdtemp(atf_fs_path_t *p) -{ - atf_error_t err; - char *buf; - - if (!check_umask(S_IRWXU, S_IRWXU)) { - err = invalid_umask_error(p, atf_fs_stat_dir_type, current_umask()); - goto out; - } - - err = copy_contents(p, &buf); - if (atf_is_error(err)) - goto out; - - err = do_mkdtemp(buf); - if (atf_is_error(err)) - goto out_buf; - - replace_contents(p, buf); - - INV(!atf_is_error(err)); -out_buf: - free(buf); -out: - return err; -} - -atf_error_t -atf_fs_mkstemp(atf_fs_path_t *p, int *fdout) -{ - atf_error_t err; - char *buf; - int fd; - - if (!check_umask(S_IRWXU, S_IRWXU)) { - err = invalid_umask_error(p, atf_fs_stat_reg_type, current_umask()); - goto out; - } - - err = copy_contents(p, &buf); - if (atf_is_error(err)) - goto out; - - err = do_mkstemp(buf, &fd); - if (atf_is_error(err)) - goto out_buf; - - replace_contents(p, buf); - *fdout = fd; - - INV(!atf_is_error(err)); -out_buf: - free(buf); -out: - return err; -} - -atf_error_t -atf_fs_rmdir(const atf_fs_path_t *p) -{ - atf_error_t err; - - if (rmdir(atf_fs_path_cstring(p))) { - if (errno == EEXIST) { - /* Some operating systems (e.g. OpenSolaris 200906) return - * EEXIST instead of ENOTEMPTY for non-empty directories. - * Homogenize the return value so that callers don't need - * to bother about differences in operating systems. */ - errno = ENOTEMPTY; - } - err = atf_libc_error(errno, "Cannot remove directory"); - } else - err = atf_no_error(); - - return err; -} - -atf_error_t -atf_fs_unlink(const atf_fs_path_t *p) -{ - atf_error_t err; - const char *path; - - path = atf_fs_path_cstring(p); - - if (unlink(path) != 0) - err = atf_libc_error(errno, "Cannot unlink file: '%s'", path); - else - err = atf_no_error(); - - return err; -} diff --git a/unit/atf-src/atf-c/detail/fs.h b/unit/atf-src/atf-c/detail/fs.h deleted file mode 100644 index 1c6c0eba64..0000000000 --- a/unit/atf-src/atf-c/detail/fs.h +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_FS_H) -#define ATF_C_DETAIL_FS_H - -#include -#include - -#include -#include - -#include -#include - -/* --------------------------------------------------------------------- - * The "atf_fs_path" type. - * --------------------------------------------------------------------- */ - -struct atf_fs_path { - atf_dynstr_t m_data; -}; -typedef struct atf_fs_path atf_fs_path_t; - -/* Constructors/destructors. */ -atf_error_t atf_fs_path_init_ap(atf_fs_path_t *, const char *, va_list); -atf_error_t atf_fs_path_init_fmt(atf_fs_path_t *, const char *, ...); -atf_error_t atf_fs_path_copy(atf_fs_path_t *, const atf_fs_path_t *); -void atf_fs_path_fini(atf_fs_path_t *); - -/* Getters. */ -atf_error_t atf_fs_path_branch_path(const atf_fs_path_t *, atf_fs_path_t *); -const char *atf_fs_path_cstring(const atf_fs_path_t *); -atf_error_t atf_fs_path_leaf_name(const atf_fs_path_t *, atf_dynstr_t *); -bool atf_fs_path_is_absolute(const atf_fs_path_t *); -bool atf_fs_path_is_root(const atf_fs_path_t *); - -/* Modifiers. */ -atf_error_t atf_fs_path_append_ap(atf_fs_path_t *, const char *, va_list); -atf_error_t atf_fs_path_append_fmt(atf_fs_path_t *, const char *, ...); -atf_error_t atf_fs_path_append_path(atf_fs_path_t *, const atf_fs_path_t *); -atf_error_t atf_fs_path_to_absolute(const atf_fs_path_t *, atf_fs_path_t *); - -/* Operators. */ -bool atf_equal_fs_path_fs_path(const atf_fs_path_t *, - const atf_fs_path_t *); - -/* --------------------------------------------------------------------- - * The "atf_fs_stat" type. - * --------------------------------------------------------------------- */ - -struct atf_fs_stat { - int m_type; - struct stat m_sb; -}; -typedef struct atf_fs_stat atf_fs_stat_t; - -/* Constants. */ -extern const int atf_fs_stat_blk_type; -extern const int atf_fs_stat_chr_type; -extern const int atf_fs_stat_dir_type; -extern const int atf_fs_stat_fifo_type; -extern const int atf_fs_stat_lnk_type; -extern const int atf_fs_stat_reg_type; -extern const int atf_fs_stat_sock_type; -extern const int atf_fs_stat_wht_type; - -/* Constructors/destructors. */ -atf_error_t atf_fs_stat_init(atf_fs_stat_t *, const atf_fs_path_t *); -void atf_fs_stat_copy(atf_fs_stat_t *, const atf_fs_stat_t *); -void atf_fs_stat_fini(atf_fs_stat_t *); - -/* Getters. */ -dev_t atf_fs_stat_get_device(const atf_fs_stat_t *); -ino_t atf_fs_stat_get_inode(const atf_fs_stat_t *); -mode_t atf_fs_stat_get_mode(const atf_fs_stat_t *); -off_t atf_fs_stat_get_size(const atf_fs_stat_t *); -int atf_fs_stat_get_type(const atf_fs_stat_t *); -bool atf_fs_stat_is_owner_readable(const atf_fs_stat_t *); -bool atf_fs_stat_is_owner_writable(const atf_fs_stat_t *); -bool atf_fs_stat_is_owner_executable(const atf_fs_stat_t *); -bool atf_fs_stat_is_group_readable(const atf_fs_stat_t *); -bool atf_fs_stat_is_group_writable(const atf_fs_stat_t *); -bool atf_fs_stat_is_group_executable(const atf_fs_stat_t *); -bool atf_fs_stat_is_other_readable(const atf_fs_stat_t *); -bool atf_fs_stat_is_other_writable(const atf_fs_stat_t *); -bool atf_fs_stat_is_other_executable(const atf_fs_stat_t *); - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -extern const int atf_fs_access_f; -extern const int atf_fs_access_r; -extern const int atf_fs_access_w; -extern const int atf_fs_access_x; - -atf_error_t atf_fs_eaccess(const atf_fs_path_t *, int); -atf_error_t atf_fs_exists(const atf_fs_path_t *, bool *); -atf_error_t atf_fs_getcwd(atf_fs_path_t *); -atf_error_t atf_fs_mkdtemp(atf_fs_path_t *); -atf_error_t atf_fs_mkstemp(atf_fs_path_t *, int *); -atf_error_t atf_fs_rmdir(const atf_fs_path_t *); -atf_error_t atf_fs_unlink(const atf_fs_path_t *); - -#endif /* !defined(ATF_C_DETAIL_FS_H) */ diff --git a/unit/atf-src/atf-c/detail/fs_test.c b/unit/atf-src/atf-c/detail/fs_test.c deleted file mode 100644 index 3dbc4d3ba7..0000000000 --- a/unit/atf-src/atf-c/detail/fs_test.c +++ /dev/null @@ -1,1079 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/fs.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" -#include "atf-c/detail/user.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -void -create_dir(const char *p, int mode) -{ - int ret; - - ret = mkdir(p, mode); - if (ret == -1) - atf_tc_fail("Could not create helper directory %s", p); -} - -static -void -create_file(const char *p, int mode) -{ - int fd; - - fd = open(p, O_CREAT | O_WRONLY | O_TRUNC, mode); - if (fd == -1) - atf_tc_fail("Could not create helper file %s", p); - close(fd); -} - -static -bool -exists(const atf_fs_path_t *p) -{ - return access(atf_fs_path_cstring(p), F_OK) == 0; -} - -static -atf_error_t -mkstemp_discard_fd(atf_fs_path_t *p) -{ - int fd; - atf_error_t err = atf_fs_mkstemp(p, &fd); - if (!atf_is_error(err)) - close(fd); - return err; -} - -/* --------------------------------------------------------------------- - * Test cases for the "atf_fs_path" type. - * --------------------------------------------------------------------- */ - -ATF_TC(path_normalize); -ATF_TC_HEAD(path_normalize, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the path's normalization"); -} -ATF_TC_BODY(path_normalize, tc) -{ - struct test { - const char *in; - const char *out; - } tests[] = { - { ".", ".", }, - { "..", "..", }, - - { "/", "/", }, - { "//", "/", }, /* NO_CHECK_STYLE */ - { "///", "/", }, /* NO_CHECK_STYLE */ - - { "foo", "foo", }, - { "foo/", "foo", }, - { "foo/bar", "foo/bar", }, - { "foo/bar/", "foo/bar", }, - - { "/foo", "/foo", }, - { "/foo/bar", "/foo/bar", }, - { "/foo/bar/", "/foo/bar", }, - - { "///foo", "/foo", }, /* NO_CHECK_STYLE */ - { "///foo///bar", "/foo/bar", }, /* NO_CHECK_STYLE */ - { "///foo///bar///", "/foo/bar", }, /* NO_CHECK_STYLE */ - - { NULL, NULL } - }; - struct test *t; - - for (t = &tests[0]; t->in != NULL; t++) { - atf_fs_path_t p; - - printf("Input : >%s<\n", t->in); - printf("Expected output: >%s<\n", t->out); - - RE(atf_fs_path_init_fmt(&p, "%s", t->in)); - printf("Output : >%s<\n", atf_fs_path_cstring(&p)); - ATF_REQUIRE(strcmp(atf_fs_path_cstring(&p), t->out) == 0); - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_copy); -ATF_TC_HEAD(path_copy, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_path_copy constructor"); -} -ATF_TC_BODY(path_copy, tc) -{ - atf_fs_path_t str, str2; - - RE(atf_fs_path_init_fmt(&str, "foo")); - RE(atf_fs_path_copy(&str2, &str)); - - ATF_REQUIRE(atf_equal_fs_path_fs_path(&str, &str2)); - - RE(atf_fs_path_append_fmt(&str2, "bar")); - - ATF_REQUIRE(!atf_equal_fs_path_fs_path(&str, &str2)); - - atf_fs_path_fini(&str2); - atf_fs_path_fini(&str); -} - -ATF_TC(path_is_absolute); -ATF_TC_HEAD(path_is_absolute, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the path::is_absolute function"); -} -ATF_TC_BODY(path_is_absolute, tc) -{ - struct test { - const char *in; - bool abs; - } tests[] = { - { "/", true }, - { "////", true }, /* NO_CHECK_STYLE */ - { "////a", true }, /* NO_CHECK_STYLE */ - { "//a//", true }, /* NO_CHECK_STYLE */ - { "a////", false }, /* NO_CHECK_STYLE */ - { "../foo", false }, - { NULL, false }, - }; - struct test *t; - - for (t = &tests[0]; t->in != NULL; t++) { - atf_fs_path_t p; - - printf("Input : %s\n", t->in); - printf("Expected result: %s\n", t->abs ? "true" : "false"); - - RE(atf_fs_path_init_fmt(&p, "%s", t->in)); - printf("Result : %s\n", - atf_fs_path_is_absolute(&p) ? "true" : "false"); - if (t->abs) - ATF_REQUIRE(atf_fs_path_is_absolute(&p)); - else - ATF_REQUIRE(!atf_fs_path_is_absolute(&p)); - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_is_root); -ATF_TC_HEAD(path_is_root, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the path::is_root function"); -} -ATF_TC_BODY(path_is_root, tc) -{ - struct test { - const char *in; - bool root; - } tests[] = { - { "/", true }, - { "////", true }, /* NO_CHECK_STYLE */ - { "////a", false }, /* NO_CHECK_STYLE */ - { "//a//", false }, /* NO_CHECK_STYLE */ - { "a////", false }, /* NO_CHECK_STYLE */ - { "../foo", false }, - { NULL, false }, - }; - struct test *t; - - for (t = &tests[0]; t->in != NULL; t++) { - atf_fs_path_t p; - - printf("Input : %s\n", t->in); - printf("Expected result: %s\n", t->root ? "true" : "false"); - - RE(atf_fs_path_init_fmt(&p, "%s", t->in)); - printf("Result : %s\n", - atf_fs_path_is_root(&p) ? "true" : "false"); - if (t->root) - ATF_REQUIRE(atf_fs_path_is_root(&p)); - else - ATF_REQUIRE(!atf_fs_path_is_root(&p)); - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_branch_path); -ATF_TC_HEAD(path_branch_path, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_path_branch_path " - "function"); -} -ATF_TC_BODY(path_branch_path, tc) -{ - struct test { - const char *in; - const char *branch; - } tests[] = { - { ".", "." }, - { "foo", "." }, - { "foo/bar", "foo" }, - { "/foo", "/" }, - { "/foo/bar", "/foo" }, - { NULL, NULL }, - }; - struct test *t; - - for (t = &tests[0]; t->in != NULL; t++) { - atf_fs_path_t p, bp; - - printf("Input : %s\n", t->in); - printf("Expected output: %s\n", t->branch); - - RE(atf_fs_path_init_fmt(&p, "%s", t->in)); - RE(atf_fs_path_branch_path(&p, &bp)); - printf("Output : %s\n", atf_fs_path_cstring(&bp)); - ATF_REQUIRE(strcmp(atf_fs_path_cstring(&bp), t->branch) == 0); - atf_fs_path_fini(&bp); - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_leaf_name); -ATF_TC_HEAD(path_leaf_name, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_path_leaf_name " - "function"); -} -ATF_TC_BODY(path_leaf_name, tc) -{ - struct test { - const char *in; - const char *leaf; - } tests[] = { - { ".", "." }, - { "foo", "foo" }, - { "foo/bar", "bar" }, - { "/foo", "foo" }, - { "/foo/bar", "bar" }, - { NULL, NULL }, - }; - struct test *t; - - for (t = &tests[0]; t->in != NULL; t++) { - atf_fs_path_t p; - atf_dynstr_t ln; - - printf("Input : %s\n", t->in); - printf("Expected output: %s\n", t->leaf); - - RE(atf_fs_path_init_fmt(&p, "%s", t->in)); - RE(atf_fs_path_leaf_name(&p, &ln)); - printf("Output : %s\n", atf_dynstr_cstring(&ln)); - ATF_REQUIRE(atf_equal_dynstr_cstring(&ln, t->leaf)); - atf_dynstr_fini(&ln); - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_append); -ATF_TC_HEAD(path_append, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the concatenation of multiple " - "paths"); -} -ATF_TC_BODY(path_append, tc) -{ - struct test { - const char *in; - const char *ap; - const char *out; - } tests[] = { - { "foo", "bar", "foo/bar" }, - { "foo/", "/bar", "foo/bar" }, - { "foo/", "/bar/baz", "foo/bar/baz" }, - { "foo/", "///bar///baz", "foo/bar/baz" }, /* NO_CHECK_STYLE */ - - { NULL, NULL, NULL } - }; - struct test *t; - - for (t = &tests[0]; t->in != NULL; t++) { - atf_fs_path_t p; - - printf("Input : >%s<\n", t->in); - printf("Append : >%s<\n", t->ap); - printf("Expected output: >%s<\n", t->out); - - RE(atf_fs_path_init_fmt(&p, "%s", t->in)); - - RE(atf_fs_path_append_fmt(&p, "%s", t->ap)); - - printf("Output : >%s<\n", atf_fs_path_cstring(&p)); - ATF_REQUIRE(strcmp(atf_fs_path_cstring(&p), t->out) == 0); - - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_to_absolute); -ATF_TC_HEAD(path_to_absolute, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_path_to_absolute " - "function"); -} -ATF_TC_BODY(path_to_absolute, tc) -{ - const char *names[] = { ".", "dir", NULL }; - const char **n; - - ATF_REQUIRE(mkdir("dir", 0755) != -1); - - for (n = names; *n != NULL; n++) { - atf_fs_path_t p, p2; - atf_fs_stat_t st1, st2; - - RE(atf_fs_path_init_fmt(&p, "%s", *n)); - RE(atf_fs_stat_init(&st1, &p)); - printf("Relative path: %s\n", atf_fs_path_cstring(&p)); - - RE(atf_fs_path_to_absolute(&p, &p2)); - printf("Absolute path: %s\n", atf_fs_path_cstring(&p2)); - - ATF_REQUIRE(atf_fs_path_is_absolute(&p2)); - RE(atf_fs_stat_init(&st2, &p2)); - - ATF_REQUIRE_EQ(atf_fs_stat_get_device(&st1), - atf_fs_stat_get_device(&st2)); - ATF_REQUIRE_EQ(atf_fs_stat_get_inode(&st1), - atf_fs_stat_get_inode(&st2)); - - atf_fs_stat_fini(&st2); - atf_fs_stat_fini(&st1); - atf_fs_path_fini(&p2); - atf_fs_path_fini(&p); - - printf("\n"); - } -} - -ATF_TC(path_equal); -ATF_TC_HEAD(path_equal, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the equality operators for paths"); -} -ATF_TC_BODY(path_equal, tc) -{ - atf_fs_path_t p1, p2; - - RE(atf_fs_path_init_fmt(&p1, "foo")); - - RE(atf_fs_path_init_fmt(&p2, "foo")); - ATF_REQUIRE(atf_equal_fs_path_fs_path(&p1, &p2)); - atf_fs_path_fini(&p2); - - RE(atf_fs_path_init_fmt(&p2, "bar")); - ATF_REQUIRE(!atf_equal_fs_path_fs_path(&p1, &p2)); - atf_fs_path_fini(&p2); - - atf_fs_path_fini(&p1); -} - -/* --------------------------------------------------------------------- - * Test cases for the "atf_fs_stat" type. - * --------------------------------------------------------------------- */ - -ATF_TC(stat_mode); -ATF_TC_HEAD(stat_mode, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_stat_get_mode function " - "and, indirectly, the constructor"); -} -ATF_TC_BODY(stat_mode, tc) -{ - atf_fs_path_t p; - atf_fs_stat_t st; - - create_file("f1", 0400); - create_file("f2", 0644); - - RE(atf_fs_path_init_fmt(&p, "f1")); - RE(atf_fs_stat_init(&st, &p)); - ATF_CHECK_EQ(0400, atf_fs_stat_get_mode(&st)); - atf_fs_stat_fini(&st); - atf_fs_path_fini(&p); - - RE(atf_fs_path_init_fmt(&p, "f2")); - RE(atf_fs_stat_init(&st, &p)); - ATF_CHECK_EQ(0644, atf_fs_stat_get_mode(&st)); - atf_fs_stat_fini(&st); - atf_fs_path_fini(&p); -} - -ATF_TC(stat_type); -ATF_TC_HEAD(stat_type, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_stat_get_type function " - "and, indirectly, the constructor"); -} -ATF_TC_BODY(stat_type, tc) -{ - atf_fs_path_t p; - atf_fs_stat_t st; - - create_dir("dir", 0755); - create_file("reg", 0644); - - RE(atf_fs_path_init_fmt(&p, "dir")); - RE(atf_fs_stat_init(&st, &p)); - ATF_REQUIRE_EQ(atf_fs_stat_get_type(&st), atf_fs_stat_dir_type); - atf_fs_stat_fini(&st); - atf_fs_path_fini(&p); - - RE(atf_fs_path_init_fmt(&p, "reg")); - RE(atf_fs_stat_init(&st, &p)); - ATF_REQUIRE_EQ(atf_fs_stat_get_type(&st), atf_fs_stat_reg_type); - atf_fs_stat_fini(&st); - atf_fs_path_fini(&p); -} - -ATF_TC(stat_perms); -ATF_TC_HEAD(stat_perms, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_stat_is_* functions"); -} -ATF_TC_BODY(stat_perms, tc) -{ - atf_fs_path_t p; - atf_fs_stat_t st; - - create_file("reg", 0); - - RE(atf_fs_path_init_fmt(&p, "reg")); - -#define perms(ur, uw, ux, gr, gw, gx, othr, othw, othx) \ - { \ - RE(atf_fs_stat_init(&st, &p)); \ - ATF_REQUIRE(atf_fs_stat_is_owner_readable(&st) == ur); \ - ATF_REQUIRE(atf_fs_stat_is_owner_writable(&st) == uw); \ - ATF_REQUIRE(atf_fs_stat_is_owner_executable(&st) == ux); \ - ATF_REQUIRE(atf_fs_stat_is_group_readable(&st) == gr); \ - ATF_REQUIRE(atf_fs_stat_is_group_writable(&st) == gw); \ - ATF_REQUIRE(atf_fs_stat_is_group_executable(&st) == gx); \ - ATF_REQUIRE(atf_fs_stat_is_other_readable(&st) == othr); \ - ATF_REQUIRE(atf_fs_stat_is_other_writable(&st) == othw); \ - ATF_REQUIRE(atf_fs_stat_is_other_executable(&st) == othx); \ - atf_fs_stat_fini(&st); \ - } - - chmod("reg", 0000); - perms(false, false, false, false, false, false, false, false, false); - - chmod("reg", 0001); - perms(false, false, false, false, false, false, false, false, true); - - chmod("reg", 0010); - perms(false, false, false, false, false, true, false, false, false); - - chmod("reg", 0100); - perms(false, false, true, false, false, false, false, false, false); - - chmod("reg", 0002); - perms(false, false, false, false, false, false, false, true, false); - - chmod("reg", 0020); - perms(false, false, false, false, true, false, false, false, false); - - chmod("reg", 0200); - perms(false, true, false, false, false, false, false, false, false); - - chmod("reg", 0004); - perms(false, false, false, false, false, false, true, false, false); - - chmod("reg", 0040); - perms(false, false, false, true, false, false, false, false, false); - - chmod("reg", 0400); - perms(true, false, false, false, false, false, false, false, false); - - chmod("reg", 0644); - perms(true, true, false, true, false, false, true, false, false); - - chmod("reg", 0755); - perms(true, true, true, true, false, true, true, false, true); - - chmod("reg", 0777); - perms(true, true, true, true, true, true, true, true, true); - -#undef perms - - atf_fs_path_fini(&p); -} - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(exists); -ATF_TC_HEAD(exists, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_exists function"); -} -ATF_TC_BODY(exists, tc) -{ - atf_error_t err; - atf_fs_path_t pdir, pfile; - bool b; - - RE(atf_fs_path_init_fmt(&pdir, "dir")); - RE(atf_fs_path_init_fmt(&pfile, "dir/file")); - - create_dir(atf_fs_path_cstring(&pdir), 0755); - create_file(atf_fs_path_cstring(&pfile), 0644); - - printf("Checking existence of a directory\n"); - RE(atf_fs_exists(&pdir, &b)); - ATF_REQUIRE(b); - - printf("Checking existence of a file\n"); - RE(atf_fs_exists(&pfile, &b)); - ATF_REQUIRE(b); - - /* XXX: This should probably be a separate test case to let the user - * be aware that some tests were skipped because privileges were not - * correct. */ - if (!atf_user_is_root()) { - printf("Checking existence of a file inside a directory without " - "permissions\n"); - ATF_REQUIRE(chmod(atf_fs_path_cstring(&pdir), 0000) != -1); - err = atf_fs_exists(&pfile, &b); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE(chmod(atf_fs_path_cstring(&pdir), 0755) != -1); - atf_error_free(err); - } - - printf("Checking existence of a non-existent file\n"); - ATF_REQUIRE(unlink(atf_fs_path_cstring(&pfile)) != -1); - RE(atf_fs_exists(&pfile, &b)); - ATF_REQUIRE(!b); - - atf_fs_path_fini(&pfile); - atf_fs_path_fini(&pdir); -} - -ATF_TC(eaccess); -ATF_TC_HEAD(eaccess, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_eaccess function"); -} -ATF_TC_BODY(eaccess, tc) -{ - const int modes[] = { atf_fs_access_f, atf_fs_access_r, atf_fs_access_w, - atf_fs_access_x, 0 }; - const int *m; - struct tests { - mode_t fmode; - int amode; - int uerror; - int rerror; - } tests[] = { - { 0000, atf_fs_access_r, EACCES, 0 }, - { 0000, atf_fs_access_w, EACCES, 0 }, - { 0000, atf_fs_access_x, EACCES, EACCES }, - - { 0001, atf_fs_access_r, EACCES, 0 }, - { 0001, atf_fs_access_w, EACCES, 0 }, - { 0001, atf_fs_access_x, EACCES, 0 }, - { 0002, atf_fs_access_r, EACCES, 0 }, - { 0002, atf_fs_access_w, EACCES, 0 }, - { 0002, atf_fs_access_x, EACCES, EACCES }, - { 0004, atf_fs_access_r, EACCES, 0 }, - { 0004, atf_fs_access_w, EACCES, 0 }, - { 0004, atf_fs_access_x, EACCES, EACCES }, - - { 0010, atf_fs_access_r, EACCES, 0 }, - { 0010, atf_fs_access_w, EACCES, 0 }, - { 0010, atf_fs_access_x, 0, 0 }, - { 0020, atf_fs_access_r, EACCES, 0 }, - { 0020, atf_fs_access_w, 0, 0 }, - { 0020, atf_fs_access_x, EACCES, EACCES }, - { 0040, atf_fs_access_r, 0, 0 }, - { 0040, atf_fs_access_w, EACCES, 0 }, - { 0040, atf_fs_access_x, EACCES, EACCES }, - - { 0100, atf_fs_access_r, EACCES, 0 }, - { 0100, atf_fs_access_w, EACCES, 0 }, - { 0100, atf_fs_access_x, 0, 0 }, - { 0200, atf_fs_access_r, EACCES, 0 }, - { 0200, atf_fs_access_w, 0, 0 }, - { 0200, atf_fs_access_x, EACCES, EACCES }, - { 0400, atf_fs_access_r, 0, 0 }, - { 0400, atf_fs_access_w, EACCES, 0 }, - { 0400, atf_fs_access_x, EACCES, EACCES }, - - { 0, 0, 0, 0 } - }; - struct tests *t; - atf_fs_path_t p; - atf_error_t err; - - RE(atf_fs_path_init_fmt(&p, "the-file")); - - printf("Non-existent file checks\n"); - for (m = &modes[0]; *m != 0; m++) { - err = atf_fs_eaccess(&p, *m); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE_EQ(atf_libc_error_code(err), ENOENT); - atf_error_free(err); - } - - create_file(atf_fs_path_cstring(&p), 0000); - ATF_REQUIRE(chown(atf_fs_path_cstring(&p), geteuid(), getegid()) != -1); - - for (t = &tests[0]; t->amode != 0; t++) { - const int experr = atf_user_is_root() ? t->rerror : t->uerror; - - printf("\n"); - printf("File mode : %04o\n", (unsigned int)t->fmode); - printf("Access mode : 0x%02x\n", t->amode); - - ATF_REQUIRE(chmod(atf_fs_path_cstring(&p), t->fmode) != -1); - - /* First, existence check. */ - err = atf_fs_eaccess(&p, atf_fs_access_f); - ATF_REQUIRE(!atf_is_error(err)); - - /* Now do the specific test case. */ - printf("Expected error: %d\n", experr); - err = atf_fs_eaccess(&p, t->amode); - if (atf_is_error(err)) { - if (atf_error_is(err, "libc")) - printf("Error : %d\n", atf_libc_error_code(err)); - else - printf("Error : Non-libc error\n"); - } else - printf("Error : None\n"); - if (experr == 0) { - ATF_REQUIRE(!atf_is_error(err)); - } else { - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE_EQ(atf_libc_error_code(err), experr); - atf_error_free(err); - } - } - - atf_fs_path_fini(&p); -} - -ATF_TC(getcwd); -ATF_TC_HEAD(getcwd, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_getcwd function"); -} -ATF_TC_BODY(getcwd, tc) -{ - atf_fs_path_t cwd1, cwd2; - - create_dir ("root", 0755); - - RE(atf_fs_getcwd(&cwd1)); - ATF_REQUIRE(chdir("root") != -1); - RE(atf_fs_getcwd(&cwd2)); - - RE(atf_fs_path_append_fmt(&cwd1, "root")); - - ATF_REQUIRE(atf_equal_fs_path_fs_path(&cwd1, &cwd2)); - - atf_fs_path_fini(&cwd2); - atf_fs_path_fini(&cwd1); -} - -ATF_TC(rmdir_empty); -ATF_TC_HEAD(rmdir_empty, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_rmdir function"); -} -ATF_TC_BODY(rmdir_empty, tc) -{ - atf_fs_path_t p; - - RE(atf_fs_path_init_fmt(&p, "test-dir")); - - ATF_REQUIRE(mkdir("test-dir", 0755) != -1); - ATF_REQUIRE(exists(&p)); - RE(atf_fs_rmdir(&p)); - ATF_REQUIRE(!exists(&p)); - - atf_fs_path_fini(&p); -} - -ATF_TC(rmdir_enotempty); -ATF_TC_HEAD(rmdir_enotempty, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_rmdir function"); -} -ATF_TC_BODY(rmdir_enotempty, tc) -{ - atf_fs_path_t p; - atf_error_t err; - - RE(atf_fs_path_init_fmt(&p, "test-dir")); - - ATF_REQUIRE(mkdir("test-dir", 0755) != -1); - ATF_REQUIRE(exists(&p)); - create_file("test-dir/foo", 0644); - - err = atf_fs_rmdir(&p); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE_EQ(atf_libc_error_code(err), ENOTEMPTY); - atf_error_free(err); - - atf_fs_path_fini(&p); -} - -ATF_TC(rmdir_eperm); -ATF_TC_HEAD(rmdir_eperm, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_rmdir function"); -} -ATF_TC_BODY(rmdir_eperm, tc) -{ - atf_fs_path_t p; - atf_error_t err; - - RE(atf_fs_path_init_fmt(&p, "test-dir/foo")); - - ATF_REQUIRE(mkdir("test-dir", 0755) != -1); - ATF_REQUIRE(mkdir("test-dir/foo", 0755) != -1); - ATF_REQUIRE(chmod("test-dir", 0555) != -1); - ATF_REQUIRE(exists(&p)); - - err = atf_fs_rmdir(&p); - if (atf_user_is_root()) { - ATF_REQUIRE(!atf_is_error(err)); - } else { - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE_EQ(atf_libc_error_code(err), EACCES); - atf_error_free(err); - } - - atf_fs_path_fini(&p); -} - -ATF_TC(mkdtemp_ok); -ATF_TC_HEAD(mkdtemp_ok, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_mkdtemp function, " - "successful execution"); -} -ATF_TC_BODY(mkdtemp_ok, tc) -{ - atf_fs_path_t p1, p2; - atf_fs_stat_t s1, s2; - - RE(atf_fs_path_init_fmt(&p1, "testdir.XXXXXX")); - RE(atf_fs_path_init_fmt(&p2, "testdir.XXXXXX")); - RE(atf_fs_mkdtemp(&p1)); - RE(atf_fs_mkdtemp(&p2)); - ATF_REQUIRE(!atf_equal_fs_path_fs_path(&p1, &p2)); - ATF_REQUIRE(exists(&p1)); - ATF_REQUIRE(exists(&p2)); - - RE(atf_fs_stat_init(&s1, &p1)); - ATF_REQUIRE_EQ(atf_fs_stat_get_type(&s1), atf_fs_stat_dir_type); - ATF_REQUIRE( atf_fs_stat_is_owner_readable(&s1)); - ATF_REQUIRE( atf_fs_stat_is_owner_writable(&s1)); - ATF_REQUIRE( atf_fs_stat_is_owner_executable(&s1)); - ATF_REQUIRE(!atf_fs_stat_is_group_readable(&s1)); - ATF_REQUIRE(!atf_fs_stat_is_group_writable(&s1)); - ATF_REQUIRE(!atf_fs_stat_is_group_executable(&s1)); - ATF_REQUIRE(!atf_fs_stat_is_other_readable(&s1)); - ATF_REQUIRE(!atf_fs_stat_is_other_writable(&s1)); - ATF_REQUIRE(!atf_fs_stat_is_other_executable(&s1)); - - RE(atf_fs_stat_init(&s2, &p2)); - ATF_REQUIRE_EQ(atf_fs_stat_get_type(&s2), atf_fs_stat_dir_type); - ATF_REQUIRE( atf_fs_stat_is_owner_readable(&s2)); - ATF_REQUIRE( atf_fs_stat_is_owner_writable(&s2)); - ATF_REQUIRE( atf_fs_stat_is_owner_executable(&s2)); - ATF_REQUIRE(!atf_fs_stat_is_group_readable(&s2)); - ATF_REQUIRE(!atf_fs_stat_is_group_writable(&s2)); - ATF_REQUIRE(!atf_fs_stat_is_group_executable(&s2)); - ATF_REQUIRE(!atf_fs_stat_is_other_readable(&s2)); - ATF_REQUIRE(!atf_fs_stat_is_other_writable(&s2)); - ATF_REQUIRE(!atf_fs_stat_is_other_executable(&s2)); - - atf_fs_stat_fini(&s2); - atf_fs_stat_fini(&s1); - atf_fs_path_fini(&p2); - atf_fs_path_fini(&p1); -} - -ATF_TC(mkdtemp_err); -ATF_TC_HEAD(mkdtemp_err, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_mkdtemp function, " - "error conditions"); - atf_tc_set_md_var(tc, "require.user", "unprivileged"); -} -ATF_TC_BODY(mkdtemp_err, tc) -{ - atf_error_t err; - atf_fs_path_t p; - - ATF_REQUIRE(mkdir("dir", 0555) != -1); - - RE(atf_fs_path_init_fmt(&p, "dir/testdir.XXXXXX")); - - err = atf_fs_mkdtemp(&p); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_CHECK_EQ(atf_libc_error_code(err), EACCES); - atf_error_free(err); - - ATF_CHECK(!exists(&p)); - ATF_CHECK(strcmp(atf_fs_path_cstring(&p), "dir/testdir.XXXXXX") == 0); - - atf_fs_path_fini(&p); -} - -static -void -do_umask_check(atf_error_t (*const mk_func)(atf_fs_path_t *), - atf_fs_path_t *path, const mode_t test_mask, - const char *str_mask, const char *exp_name) -{ - char buf[1024]; - int old_umask; - atf_error_t err; - - printf("Creating temporary %s with umask %s\n", exp_name, str_mask); - - old_umask = umask(test_mask); - err = mk_func(path); - (void)umask(old_umask); - - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "invalid_umask")); - atf_error_format(err, buf, sizeof(buf)); - ATF_CHECK(strstr(buf, exp_name) != NULL); - ATF_CHECK(strstr(buf, str_mask) != NULL); - atf_error_free(err); -} - -ATF_TC(mkdtemp_umask); -ATF_TC_HEAD(mkdtemp_umask, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_mkdtemp function " - "causing an error due to a too strict umask"); -} -ATF_TC_BODY(mkdtemp_umask, tc) -{ - atf_fs_path_t p; - - RE(atf_fs_path_init_fmt(&p, "testdir.XXXXXX")); - - do_umask_check(atf_fs_mkdtemp, &p, 00100, "00100", "directory"); - do_umask_check(atf_fs_mkdtemp, &p, 00200, "00200", "directory"); - do_umask_check(atf_fs_mkdtemp, &p, 00400, "00400", "directory"); - do_umask_check(atf_fs_mkdtemp, &p, 00500, "00500", "directory"); - do_umask_check(atf_fs_mkdtemp, &p, 00600, "00600", "directory"); - - atf_fs_path_fini(&p); -} - -ATF_TC(mkstemp_ok); -ATF_TC_HEAD(mkstemp_ok, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_mkstemp function, " - "successful execution"); -} -ATF_TC_BODY(mkstemp_ok, tc) -{ - int fd1, fd2; - atf_fs_path_t p1, p2; - atf_fs_stat_t s1, s2; - - RE(atf_fs_path_init_fmt(&p1, "testfile.XXXXXX")); - RE(atf_fs_path_init_fmt(&p2, "testfile.XXXXXX")); - fd1 = fd2 = -1; - RE(atf_fs_mkstemp(&p1, &fd1)); - RE(atf_fs_mkstemp(&p2, &fd2)); - ATF_REQUIRE(!atf_equal_fs_path_fs_path(&p1, &p2)); - ATF_REQUIRE(exists(&p1)); - ATF_REQUIRE(exists(&p2)); - - ATF_CHECK(fd1 != -1); - ATF_CHECK(fd2 != -1); - ATF_CHECK(write(fd1, "foo", 3) == 3); - ATF_CHECK(write(fd2, "bar", 3) == 3); - close(fd1); - close(fd2); - - RE(atf_fs_stat_init(&s1, &p1)); - ATF_CHECK_EQ(atf_fs_stat_get_type(&s1), atf_fs_stat_reg_type); - ATF_CHECK( atf_fs_stat_is_owner_readable(&s1)); - ATF_CHECK( atf_fs_stat_is_owner_writable(&s1)); - ATF_CHECK(!atf_fs_stat_is_owner_executable(&s1)); - ATF_CHECK(!atf_fs_stat_is_group_readable(&s1)); - ATF_CHECK(!atf_fs_stat_is_group_writable(&s1)); - ATF_CHECK(!atf_fs_stat_is_group_executable(&s1)); - ATF_CHECK(!atf_fs_stat_is_other_readable(&s1)); - ATF_CHECK(!atf_fs_stat_is_other_writable(&s1)); - ATF_CHECK(!atf_fs_stat_is_other_executable(&s1)); - - RE(atf_fs_stat_init(&s2, &p2)); - ATF_CHECK_EQ(atf_fs_stat_get_type(&s2), atf_fs_stat_reg_type); - ATF_CHECK( atf_fs_stat_is_owner_readable(&s2)); - ATF_CHECK( atf_fs_stat_is_owner_writable(&s2)); - ATF_CHECK(!atf_fs_stat_is_owner_executable(&s2)); - ATF_CHECK(!atf_fs_stat_is_group_readable(&s2)); - ATF_CHECK(!atf_fs_stat_is_group_writable(&s2)); - ATF_CHECK(!atf_fs_stat_is_group_executable(&s2)); - ATF_CHECK(!atf_fs_stat_is_other_readable(&s2)); - ATF_CHECK(!atf_fs_stat_is_other_writable(&s2)); - ATF_CHECK(!atf_fs_stat_is_other_executable(&s2)); - - atf_fs_stat_fini(&s2); - atf_fs_stat_fini(&s1); - atf_fs_path_fini(&p2); - atf_fs_path_fini(&p1); -} - -ATF_TC(mkstemp_err); -ATF_TC_HEAD(mkstemp_err, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_mkstemp function, " - "error conditions"); - atf_tc_set_md_var(tc, "require.user", "unprivileged"); -} -ATF_TC_BODY(mkstemp_err, tc) -{ - int fd; - atf_error_t err; - atf_fs_path_t p; - - ATF_REQUIRE(mkdir("dir", 0555) != -1); - - RE(atf_fs_path_init_fmt(&p, "dir/testfile.XXXXXX")); - fd = 1234; - - err = atf_fs_mkstemp(&p, &fd); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_CHECK_EQ(atf_libc_error_code(err), EACCES); - atf_error_free(err); - - ATF_CHECK(!exists(&p)); - ATF_CHECK(strcmp(atf_fs_path_cstring(&p), "dir/testfile.XXXXXX") == 0); - ATF_CHECK_EQ(fd, 1234); - - atf_fs_path_fini(&p); -} - -ATF_TC(mkstemp_umask); -ATF_TC_HEAD(mkstemp_umask, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_fs_mkstemp function " - "causing an error due to a too strict umask"); -} -ATF_TC_BODY(mkstemp_umask, tc) -{ - atf_fs_path_t p; - - RE(atf_fs_path_init_fmt(&p, "testfile.XXXXXX")); - - do_umask_check(mkstemp_discard_fd, &p, 00100, "00100", "regular file"); - do_umask_check(mkstemp_discard_fd, &p, 00200, "00200", "regular file"); - do_umask_check(mkstemp_discard_fd, &p, 00400, "00400", "regular file"); - - atf_fs_path_fini(&p); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the tests for the "atf_fs_path" type. */ - ATF_TP_ADD_TC(tp, path_normalize); - ATF_TP_ADD_TC(tp, path_copy); - ATF_TP_ADD_TC(tp, path_is_absolute); - ATF_TP_ADD_TC(tp, path_is_root); - ATF_TP_ADD_TC(tp, path_branch_path); - ATF_TP_ADD_TC(tp, path_leaf_name); - ATF_TP_ADD_TC(tp, path_append); - ATF_TP_ADD_TC(tp, path_to_absolute); - ATF_TP_ADD_TC(tp, path_equal); - - /* Add the tests for the "atf_fs_stat" type. */ - ATF_TP_ADD_TC(tp, stat_mode); - ATF_TP_ADD_TC(tp, stat_type); - ATF_TP_ADD_TC(tp, stat_perms); - - /* Add the tests for the free functions. */ - ATF_TP_ADD_TC(tp, eaccess); - ATF_TP_ADD_TC(tp, exists); - ATF_TP_ADD_TC(tp, getcwd); - ATF_TP_ADD_TC(tp, rmdir_empty); - ATF_TP_ADD_TC(tp, rmdir_enotempty); - ATF_TP_ADD_TC(tp, rmdir_eperm); - ATF_TP_ADD_TC(tp, mkdtemp_ok); - ATF_TP_ADD_TC(tp, mkdtemp_err); - ATF_TP_ADD_TC(tp, mkdtemp_umask); - ATF_TP_ADD_TC(tp, mkstemp_ok); - ATF_TP_ADD_TC(tp, mkstemp_err); - ATF_TP_ADD_TC(tp, mkstemp_umask); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/list.c b/unit/atf-src/atf-c/detail/list.c deleted file mode 100644 index d14216eb40..0000000000 --- a/unit/atf-src/atf-c/detail/list.c +++ /dev/null @@ -1,388 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/list.h" - -#include -#include - -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" -#include "atf-c/utils.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -struct list_entry { - struct list_entry *m_prev; - struct list_entry *m_next; - void *m_object; - bool m_managed; -}; - -static -atf_list_citer_t -entry_to_citer(const atf_list_t *l, const struct list_entry *le) -{ - atf_list_citer_t iter; - iter.m_list = l; - iter.m_entry = le; - return iter; -} - -static -atf_list_iter_t -entry_to_iter(atf_list_t *l, struct list_entry *le) -{ - atf_list_iter_t iter; - iter.m_list = l; - iter.m_entry = le; - return iter; -} - -static -struct list_entry * -new_entry(void *object, bool managed) -{ - struct list_entry *le; - - le = (struct list_entry *)malloc(sizeof(*le)); - if (le != NULL) { - le->m_prev = le->m_next = NULL; - le->m_object = object; - le->m_managed = managed; - } else - free(object); - - return le; -} - -static -void -delete_entry(struct list_entry *le) -{ - if (le->m_managed) - free(le->m_object); - - free(le); -} - -static -struct list_entry * -new_entry_and_link(void *object, bool managed, struct list_entry *prev, - struct list_entry *next) -{ - struct list_entry *le; - - le = new_entry(object, managed); - if (le != NULL) { - le->m_prev = prev; - le->m_next = next; - - prev->m_next = le; - next->m_prev = le; - } - - return le; -} - -/* --------------------------------------------------------------------- - * The "atf_list_citer" type. - * --------------------------------------------------------------------- */ - -/* - * Getters. - */ - -const void * -atf_list_citer_data(const atf_list_citer_t citer) -{ - const struct list_entry *le = citer.m_entry; - PRE(le != NULL); - return le->m_object; -} - -atf_list_citer_t -atf_list_citer_next(const atf_list_citer_t citer) -{ - const struct list_entry *le = citer.m_entry; - atf_list_citer_t newciter; - - PRE(le != NULL); - - newciter = citer; - newciter.m_entry = le->m_next; - - return newciter; -} - -bool -atf_equal_list_citer_list_citer(const atf_list_citer_t i1, - const atf_list_citer_t i2) -{ - return i1.m_list == i2.m_list && i1.m_entry == i2.m_entry; -} - -/* --------------------------------------------------------------------- - * The "atf_list_iter" type. - * --------------------------------------------------------------------- */ - -/* - * Getters. - */ - -void * -atf_list_iter_data(const atf_list_iter_t iter) -{ - const struct list_entry *le = iter.m_entry; - PRE(le != NULL); - return le->m_object; -} - -atf_list_iter_t -atf_list_iter_next(const atf_list_iter_t iter) -{ - const struct list_entry *le = iter.m_entry; - atf_list_iter_t newiter; - - PRE(le != NULL); - - newiter = iter; - newiter.m_entry = le->m_next; - - return newiter; -} - -bool -atf_equal_list_iter_list_iter(const atf_list_iter_t i1, - const atf_list_iter_t i2) -{ - return i1.m_list == i2.m_list && i1.m_entry == i2.m_entry; -} - -/* --------------------------------------------------------------------- - * The "atf_list" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors and destructors. - */ - -atf_error_t -atf_list_init(atf_list_t *l) -{ - struct list_entry *lebeg, *leend; - - lebeg = new_entry(NULL, false); - if (lebeg == NULL) { - return atf_no_memory_error(); - } - - leend = new_entry(NULL, false); - if (leend == NULL) { - free(lebeg); - return atf_no_memory_error(); - } - - lebeg->m_next = leend; - lebeg->m_prev = NULL; - - leend->m_next = NULL; - leend->m_prev = lebeg; - - l->m_size = 0; - l->m_begin = lebeg; - l->m_end = leend; - - return atf_no_error(); -} - -void -atf_list_fini(atf_list_t *l) -{ - struct list_entry *le; - size_t freed; - - le = (struct list_entry *)l->m_begin; - freed = 0; - while (le != NULL) { - struct list_entry *lenext; - - lenext = le->m_next; - delete_entry(le); - le = lenext; - - freed++; - } - INV(freed == l->m_size + 2); -} - -/* - * Getters. - */ - -atf_list_iter_t -atf_list_begin(atf_list_t *l) -{ - struct list_entry *le = l->m_begin; - return entry_to_iter(l, le->m_next); -} - -atf_list_citer_t -atf_list_begin_c(const atf_list_t *l) -{ - const struct list_entry *le = l->m_begin; - return entry_to_citer(l, le->m_next); -} - -atf_list_iter_t -atf_list_end(atf_list_t *l) -{ - return entry_to_iter(l, l->m_end); -} - -atf_list_citer_t -atf_list_end_c(const atf_list_t *l) -{ - return entry_to_citer(l, l->m_end); -} - -void * -atf_list_index(atf_list_t *list, const size_t idx) -{ - atf_list_iter_t iter; - - PRE(idx < atf_list_size(list)); - - iter = atf_list_begin(list); - { - size_t pos = 0; - while (pos < idx && - !atf_equal_list_iter_list_iter((iter), atf_list_end(list))) { - iter = atf_list_iter_next(iter); - pos++; - } - } - return atf_list_iter_data(iter); -} - -const void * -atf_list_index_c(const atf_list_t *list, const size_t idx) -{ - atf_list_citer_t iter; - - PRE(idx < atf_list_size(list)); - - iter = atf_list_begin_c(list); - { - size_t pos = 0; - while (pos < idx && - !atf_equal_list_citer_list_citer((iter), - atf_list_end_c(list))) { - iter = atf_list_citer_next(iter); - pos++; - } - } - return atf_list_citer_data(iter); -} - -size_t -atf_list_size(const atf_list_t *l) -{ - return l->m_size; -} - -char ** -atf_list_to_charpp(const atf_list_t *l) -{ - char **array; - atf_list_citer_t iter; - size_t i; - - array = malloc(sizeof(char *) * (atf_list_size(l) + 1)); - if (array == NULL) - goto out; - - i = 0; - atf_list_for_each_c(iter, l) { - array[i] = strdup((const char *)atf_list_citer_data(iter)); - if (array[i] == NULL) { - atf_utils_free_charpp(array); - array = NULL; - goto out; - } - - i++; - } - array[i] = NULL; - -out: - return array; -} - -/* - * Modifiers. - */ - -atf_error_t -atf_list_append(atf_list_t *l, void *data, bool managed) -{ - struct list_entry *le, *next, *prev; - atf_error_t err; - - next = (struct list_entry *)l->m_end; - prev = next->m_prev; - le = new_entry_and_link(data, managed, prev, next); - if (le == NULL) - err = atf_no_memory_error(); - else { - l->m_size++; - err = atf_no_error(); - } - - return err; -} - -void -atf_list_append_list(atf_list_t *l, atf_list_t *src) -{ - struct list_entry *e1, *e2, *ghost1, *ghost2; - - ghost1 = (struct list_entry *)l->m_end; - ghost2 = (struct list_entry *)src->m_begin; - - e1 = ghost1->m_prev; - e2 = ghost2->m_next; - - delete_entry(ghost1); - delete_entry(ghost2); - - e1->m_next = e2; - e2->m_prev = e1; - - l->m_end = src->m_end; - l->m_size += src->m_size; -} diff --git a/unit/atf-src/atf-c/detail/list.h b/unit/atf-src/atf-c/detail/list.h deleted file mode 100644 index b250066806..0000000000 --- a/unit/atf-src/atf-c/detail/list.h +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_LIST_H) -#define ATF_C_DETAIL_LIST_H - -#include -#include -#include - -#include - -/* --------------------------------------------------------------------- - * The "atf_list_citer" type. - * --------------------------------------------------------------------- */ - -struct atf_list_citer { - const struct atf_list *m_list; - const void *m_entry; -}; -typedef struct atf_list_citer atf_list_citer_t; - -/* Getters. */ -const void *atf_list_citer_data(const atf_list_citer_t); -atf_list_citer_t atf_list_citer_next(const atf_list_citer_t); - -/* Operators. */ -bool atf_equal_list_citer_list_citer(const atf_list_citer_t, - const atf_list_citer_t); - -/* --------------------------------------------------------------------- - * The "atf_list_iter" type. - * --------------------------------------------------------------------- */ - -struct atf_list_iter { - struct atf_list *m_list; - void *m_entry; -}; -typedef struct atf_list_iter atf_list_iter_t; - -/* Getters. */ -void *atf_list_iter_data(const atf_list_iter_t); -atf_list_iter_t atf_list_iter_next(const atf_list_iter_t); - -/* Operators. */ -bool atf_equal_list_iter_list_iter(const atf_list_iter_t, - const atf_list_iter_t); - -/* --------------------------------------------------------------------- - * The "atf_list" type. - * --------------------------------------------------------------------- */ - -struct atf_list { - void *m_begin; - void *m_end; - - size_t m_size; -}; -typedef struct atf_list atf_list_t; - -/* Constructors and destructors */ -atf_error_t atf_list_init(atf_list_t *); -void atf_list_fini(atf_list_t *); - -/* Getters. */ -atf_list_iter_t atf_list_begin(atf_list_t *); -atf_list_citer_t atf_list_begin_c(const atf_list_t *); -atf_list_iter_t atf_list_end(atf_list_t *); -atf_list_citer_t atf_list_end_c(const atf_list_t *); -void *atf_list_index(atf_list_t *, const size_t); -const void *atf_list_index_c(const atf_list_t *, const size_t); -size_t atf_list_size(const atf_list_t *); -char **atf_list_to_charpp(const atf_list_t *); - -/* Modifiers. */ -atf_error_t atf_list_append(atf_list_t *, void *, bool); -void atf_list_append_list(atf_list_t *, atf_list_t *); - -/* Macros. */ -#define atf_list_for_each(iter, list) \ - for (iter = atf_list_begin(list); \ - !atf_equal_list_iter_list_iter((iter), atf_list_end(list)); \ - iter = atf_list_iter_next(iter)) -#define atf_list_for_each_c(iter, list) \ - for (iter = atf_list_begin_c(list); \ - !atf_equal_list_citer_list_citer((iter), atf_list_end_c(list)); \ - iter = atf_list_citer_next(iter)) - -#endif /* !defined(ATF_C_DETAIL_LIST_H) */ diff --git a/unit/atf-src/atf-c/detail/list_test.c b/unit/atf-src/atf-c/detail/list_test.c deleted file mode 100644 index 82a715d28b..0000000000 --- a/unit/atf-src/atf-c/detail/list_test.c +++ /dev/null @@ -1,365 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/list.h" - -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" -#include "atf-c/utils.h" - -/* --------------------------------------------------------------------- - * Tests for the "atf_list" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors and destructors. - */ - -ATF_TC(list_init); -ATF_TC_HEAD(list_init, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_init function"); -} -ATF_TC_BODY(list_init, tc) -{ - atf_list_t list; - - RE(atf_list_init(&list)); - ATF_REQUIRE_EQ(atf_list_size(&list), 0); - atf_list_fini(&list); -} - -/* - * Getters. - */ - -ATF_TC(list_index); -ATF_TC_HEAD(list_index, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_index function"); -} -ATF_TC_BODY(list_index, tc) -{ - atf_list_t list; - int i1 = 1; - int i2 = 5; - int i3 = 9; - - RE(atf_list_init(&list)); - RE(atf_list_append(&list, &i1, false)); - RE(atf_list_append(&list, &i2, false)); - RE(atf_list_append(&list, &i3, false)); - - ATF_CHECK_EQ(*(int *)atf_list_index(&list, 0), 1); - ATF_CHECK_EQ(*(int *)atf_list_index(&list, 1), 5); - ATF_CHECK_EQ(*(int *)atf_list_index(&list, 2), 9); - - atf_list_fini(&list); -} - -ATF_TC(list_index_c); -ATF_TC_HEAD(list_index_c, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_index_c function"); -} -ATF_TC_BODY(list_index_c, tc) -{ - atf_list_t list; - int i1 = 1; - int i2 = 5; - int i3 = 9; - - RE(atf_list_init(&list)); - RE(atf_list_append(&list, &i1, false)); - RE(atf_list_append(&list, &i2, false)); - RE(atf_list_append(&list, &i3, false)); - - ATF_CHECK_EQ(*(const int *)atf_list_index_c(&list, 0), 1); - ATF_CHECK_EQ(*(const int *)atf_list_index_c(&list, 1), 5); - ATF_CHECK_EQ(*(const int *)atf_list_index_c(&list, 2), 9); - - atf_list_fini(&list); -} - -ATF_TC_WITHOUT_HEAD(list_to_charpp_empty); -ATF_TC_BODY(list_to_charpp_empty, tc) -{ - atf_list_t list; - char **array; - - RE(atf_list_init(&list)); - ATF_REQUIRE((array = atf_list_to_charpp(&list)) != NULL); - atf_list_fini(&list); - - ATF_CHECK_EQ(NULL, array[0]); - atf_utils_free_charpp(array); -} - -ATF_TC_WITHOUT_HEAD(list_to_charpp_some); -ATF_TC_BODY(list_to_charpp_some, tc) -{ - atf_list_t list; - char **array; - - char s1[] = "one"; - char s2[] = "two"; - char s3[] = "three"; - - RE(atf_list_init(&list)); - RE(atf_list_append(&list, s1, false)); - RE(atf_list_append(&list, s2, false)); - RE(atf_list_append(&list, s3, false)); - ATF_REQUIRE((array = atf_list_to_charpp(&list)) != NULL); - atf_list_fini(&list); - - ATF_CHECK_STREQ("one", array[0]); - ATF_CHECK_STREQ("two", array[1]); - ATF_CHECK_STREQ("three", array[2]); - ATF_CHECK_EQ(NULL, array[3]); - atf_utils_free_charpp(array); -} - -/* - * Modifiers. - */ - -ATF_TC(list_append); -ATF_TC_HEAD(list_append, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_append function"); -} -ATF_TC_BODY(list_append, tc) -{ - atf_list_t list; - size_t i; - char buf[] = "Test string"; - - RE(atf_list_init(&list)); - for (i = 0; i < 1024; i++) { - ATF_REQUIRE_EQ(atf_list_size(&list), i); - RE(atf_list_append(&list, buf, false)); - } - atf_list_fini(&list); -} - -ATF_TC(list_append_list); -ATF_TC_HEAD(list_append_list, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_append_list " - "function"); -} -ATF_TC_BODY(list_append_list, tc) -{ - { - atf_list_t l1, l2; - - RE(atf_list_init(&l1)); - RE(atf_list_init(&l2)); - - atf_list_append_list(&l1, &l2); - ATF_CHECK_EQ(atf_list_size(&l1), 0); - - atf_list_fini(&l1); - } - - { - atf_list_t l1, l2; - int item = 5; - - RE(atf_list_init(&l1)); - RE(atf_list_append(&l1, &item, false)); - RE(atf_list_init(&l2)); - - atf_list_append_list(&l1, &l2); - ATF_CHECK_EQ(atf_list_size(&l1), 1); - ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 0), item); - - atf_list_fini(&l1); - } - - { - atf_list_t l1, l2; - int item = 5; - - RE(atf_list_init(&l1)); - RE(atf_list_init(&l2)); - RE(atf_list_append(&l2, &item, false)); - - atf_list_append_list(&l1, &l2); - ATF_CHECK_EQ(atf_list_size(&l1), 1); - ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 0), item); - - atf_list_fini(&l1); - } - - { - atf_list_t l1, l2; - int item1 = 5; - int item2 = 9; - - RE(atf_list_init(&l1)); - RE(atf_list_append(&l1, &item1, false)); - RE(atf_list_init(&l2)); - RE(atf_list_append(&l2, &item2, false)); - - atf_list_append_list(&l1, &l2); - ATF_CHECK_EQ(atf_list_size(&l1), 2); - ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 0), item1); - ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 1), item2); - - atf_list_fini(&l1); - } - - { - atf_list_t l1, l2; - atf_list_citer_t end1, end2; - - RE(atf_list_init(&l1)); - RE(atf_list_init(&l2)); - - end1 = atf_list_end_c(&l1); - end2 = atf_list_end_c(&l2); - /* XXX Shouldn't query m_entry here. */ - ATF_CHECK(end1.m_entry != end2.m_entry); - - atf_list_append_list(&l1, &l2); - ATF_CHECK(atf_list_end_c(&l1).m_entry == end2.m_entry); - - atf_list_fini(&l1); - } -} - -/* - * Macros. - */ - -ATF_TC(list_for_each); -ATF_TC_HEAD(list_for_each, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_for_each macro"); -} -ATF_TC_BODY(list_for_each, tc) -{ - atf_list_t list; - atf_list_iter_t iter; - size_t count, i, size; - int nums[10]; - - printf("Iterating over empty list\n"); - RE(atf_list_init(&list)); - count = 0; - atf_list_for_each(iter, &list) { - count++; - printf("Item count is now %zd\n", count); - } - ATF_REQUIRE_EQ(count, 0); - atf_list_fini(&list); - - for (size = 0; size <= 10; size++) { - printf("Iterating over list of %zd elements\n", size); - RE(atf_list_init(&list)); - for (i = 0; i < size; i++) { - nums[i] = i + 1; - RE(atf_list_append(&list, &nums[i], false)); - } - count = 0; - atf_list_for_each(iter, &list) { - printf("Retrieved item: %d\n", *(int *)atf_list_iter_data(iter)); - count++; - } - ATF_REQUIRE_EQ(count, size); - atf_list_fini(&list); - } -} - -ATF_TC(list_for_each_c); -ATF_TC_HEAD(list_for_each_c, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_list_for_each_c macro"); -} -ATF_TC_BODY(list_for_each_c, tc) -{ - atf_list_t list; - atf_list_citer_t iter; - size_t count, i, size; - int nums[10]; - - printf("Iterating over empty list\n"); - RE(atf_list_init(&list)); - count = 0; - atf_list_for_each_c(iter, &list) { - count++; - printf("Item count is now %zd\n", count); - } - ATF_REQUIRE_EQ(count, 0); - atf_list_fini(&list); - - for (size = 0; size <= 10; size++) { - printf("Iterating over list of %zd elements\n", size); - RE(atf_list_init(&list)); - for (i = 0; i < size; i++) { - nums[i] = i + 1; - RE(atf_list_append(&list, &nums[i], false)); - } - count = 0; - atf_list_for_each_c(iter, &list) { - printf("Retrieved item: %d\n", - *(const int *)atf_list_citer_data(iter)); - count++; - } - ATF_REQUIRE_EQ(count, size); - atf_list_fini(&list); - } -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Constructors and destructors. */ - ATF_TP_ADD_TC(tp, list_init); - - /* Getters. */ - ATF_TP_ADD_TC(tp, list_index); - ATF_TP_ADD_TC(tp, list_index_c); - ATF_TP_ADD_TC(tp, list_to_charpp_empty); - ATF_TP_ADD_TC(tp, list_to_charpp_some); - - /* Modifiers. */ - ATF_TP_ADD_TC(tp, list_append); - ATF_TP_ADD_TC(tp, list_append_list); - - /* Macros. */ - ATF_TP_ADD_TC(tp, list_for_each); - ATF_TP_ADD_TC(tp, list_for_each_c); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/map.c b/unit/atf-src/atf-c/detail/map.c deleted file mode 100644 index 45de47f310..0000000000 --- a/unit/atf-src/atf-c/detail/map.c +++ /dev/null @@ -1,380 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/map.h" - -#include -#include -#include - -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" -#include "atf-c/utils.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -struct map_entry { - char *m_key; - void *m_value; - bool m_managed; -}; - -static -struct map_entry * -new_entry(const char *key, void *value, bool managed) -{ - struct map_entry *me; - - me = (struct map_entry *)malloc(sizeof(*me)); - if (me != NULL) { - me->m_key = strdup(key); - if (me->m_key == NULL) { - free(me); - me = NULL; - } else { - me->m_value = value; - me->m_managed = managed; - } - } - - return me; -} - -/* --------------------------------------------------------------------- - * The "atf_map_citer" type. - * --------------------------------------------------------------------- */ - -/* - * Getters. - */ - -const char * -atf_map_citer_key(const atf_map_citer_t citer) -{ - const struct map_entry *me = citer.m_entry; - PRE(me != NULL); - return me->m_key; -} - -const void * -atf_map_citer_data(const atf_map_citer_t citer) -{ - const struct map_entry *me = citer.m_entry; - PRE(me != NULL); - return me->m_value; -} - -atf_map_citer_t -atf_map_citer_next(const atf_map_citer_t citer) -{ - atf_map_citer_t newciter; - - newciter = citer; - newciter.m_listiter = atf_list_citer_next(citer.m_listiter); - newciter.m_entry = ((const struct map_entry *) - atf_list_citer_data(newciter.m_listiter)); - - return newciter; -} - -bool -atf_equal_map_citer_map_citer(const atf_map_citer_t i1, - const atf_map_citer_t i2) -{ - return i1.m_map == i2.m_map && i1.m_entry == i2.m_entry; -} - -/* --------------------------------------------------------------------- - * The "atf_map_iter" type. - * --------------------------------------------------------------------- */ - -/* - * Getters. - */ - -const char * -atf_map_iter_key(const atf_map_iter_t iter) -{ - const struct map_entry *me = iter.m_entry; - PRE(me != NULL); - return me->m_key; -} - -void * -atf_map_iter_data(const atf_map_iter_t iter) -{ - const struct map_entry *me = iter.m_entry; - PRE(me != NULL); - return me->m_value; -} - -atf_map_iter_t -atf_map_iter_next(const atf_map_iter_t iter) -{ - atf_map_iter_t newiter; - - newiter = iter; - newiter.m_listiter = atf_list_iter_next(iter.m_listiter); - newiter.m_entry = ((struct map_entry *) - atf_list_iter_data(newiter.m_listiter)); - - return newiter; -} - -bool -atf_equal_map_iter_map_iter(const atf_map_iter_t i1, - const atf_map_iter_t i2) -{ - return i1.m_map == i2.m_map && i1.m_entry == i2.m_entry; -} - -/* --------------------------------------------------------------------- - * The "atf_map" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors and destructors. - */ - -atf_error_t -atf_map_init(atf_map_t *m) -{ - return atf_list_init(&m->m_list); -} - -atf_error_t -atf_map_init_charpp(atf_map_t *m, const char *const *array) -{ - atf_error_t err; - const char *const *ptr = array; - - err = atf_map_init(m); - if (array != NULL) { - while (!atf_is_error(err) && *ptr != NULL) { - const char *key, *value; - - key = *ptr; - INV(key != NULL); - ptr++; - - if ((value = *ptr) == NULL) { - err = atf_libc_error(EINVAL, "List too short; no value for " - "key '%s' provided", key); /* XXX: Not really libc_error */ - break; - } - ptr++; - - err = atf_map_insert(m, key, strdup(value), true); - } - } - - if (atf_is_error(err)) - atf_map_fini(m); - - return err; -} - -void -atf_map_fini(atf_map_t *m) -{ - atf_list_iter_t iter; - - atf_list_for_each(iter, &m->m_list) { - struct map_entry *me = atf_list_iter_data(iter); - - if (me->m_managed) - free(me->m_value); - free(me->m_key); - free(me); - } - atf_list_fini(&m->m_list); -} - -/* - * Getters. - */ - -atf_map_iter_t -atf_map_begin(atf_map_t *m) -{ - atf_map_iter_t iter; - iter.m_map = m; - iter.m_listiter = atf_list_begin(&m->m_list); - iter.m_entry = atf_list_iter_data(iter.m_listiter); - return iter; -} - -atf_map_citer_t -atf_map_begin_c(const atf_map_t *m) -{ - atf_map_citer_t citer; - citer.m_map = m; - citer.m_listiter = atf_list_begin_c(&m->m_list); - citer.m_entry = atf_list_citer_data(citer.m_listiter); - return citer; -} - -atf_map_iter_t -atf_map_end(atf_map_t *m) -{ - atf_map_iter_t iter; - iter.m_map = m; - iter.m_entry = NULL; - iter.m_listiter = atf_list_end(&m->m_list); - return iter; -} - -atf_map_citer_t -atf_map_end_c(const atf_map_t *m) -{ - atf_map_citer_t iter; - iter.m_map = m; - iter.m_entry = NULL; - iter.m_listiter = atf_list_end_c(&m->m_list); - return iter; -} - -atf_map_iter_t -atf_map_find(atf_map_t *m, const char *key) -{ - atf_list_iter_t iter; - - atf_list_for_each(iter, &m->m_list) { - struct map_entry *me = atf_list_iter_data(iter); - - if (strcmp(me->m_key, key) == 0) { - atf_map_iter_t i; - i.m_map = m; - i.m_entry = me; - i.m_listiter = iter; - return i; - } - } - - return atf_map_end(m); -} - -atf_map_citer_t -atf_map_find_c(const atf_map_t *m, const char *key) -{ - atf_list_citer_t iter; - - atf_list_for_each_c(iter, &m->m_list) { - const struct map_entry *me = atf_list_citer_data(iter); - - if (strcmp(me->m_key, key) == 0) { - atf_map_citer_t i; - i.m_map = m; - i.m_entry = me; - i.m_listiter = iter; - return i; - } - } - - return atf_map_end_c(m); -} - -size_t -atf_map_size(const atf_map_t *m) -{ - return atf_list_size(&m->m_list); -} - -char ** -atf_map_to_charpp(const atf_map_t *l) -{ - char **array; - atf_map_citer_t iter; - size_t i; - - array = malloc(sizeof(char *) * (atf_map_size(l) * 2 + 1)); - if (array == NULL) - goto out; - - i = 0; - atf_map_for_each_c(iter, l) { - array[i] = strdup(atf_map_citer_key(iter)); - if (array[i] == NULL) { - atf_utils_free_charpp(array); - array = NULL; - goto out; - } - - array[i + 1] = strdup((const char *)atf_map_citer_data(iter)); - if (array[i + 1] == NULL) { - atf_utils_free_charpp(array); - array = NULL; - goto out; - } - - i += 2; - } - array[i] = NULL; - -out: - return array; -} - -/* - * Modifiers. - */ - -atf_error_t -atf_map_insert(atf_map_t *m, const char *key, void *value, bool managed) -{ - struct map_entry *me; - atf_error_t err; - atf_map_iter_t iter; - - iter = atf_map_find(m, key); - if (atf_equal_map_iter_map_iter(iter, atf_map_end(m))) { - me = new_entry(key, value, managed); - if (me == NULL) - err = atf_no_memory_error(); - else { - err = atf_list_append(&m->m_list, me, false); - if (atf_is_error(err)) { - if (managed) - free(value); - free(me->m_key); - free(me); - } - } - } else { - me = iter.m_entry; - if (me->m_managed) - free(me->m_value); - - INV(strcmp(me->m_key, key) == 0); - me->m_value = value; - me->m_managed = managed; - - err = atf_no_error(); - } - - return err; -} diff --git a/unit/atf-src/atf-c/detail/map.h b/unit/atf-src/atf-c/detail/map.h deleted file mode 100644 index 7ca8e8ad6c..0000000000 --- a/unit/atf-src/atf-c/detail/map.h +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_MAP_H) -#define ATF_C_DETAIL_MAP_H - -#include -#include - -#include -#include - -/* --------------------------------------------------------------------- - * The "atf_map_citer" type. - * --------------------------------------------------------------------- */ - -struct atf_map_citer { - const struct atf_map *m_map; - const void *m_entry; - atf_list_citer_t m_listiter; -}; -typedef struct atf_map_citer atf_map_citer_t; - -/* Getters. */ -const char *atf_map_citer_key(const atf_map_citer_t); -const void *atf_map_citer_data(const atf_map_citer_t); -atf_map_citer_t atf_map_citer_next(const atf_map_citer_t); - -/* Operators. */ -bool atf_equal_map_citer_map_citer(const atf_map_citer_t, - const atf_map_citer_t); - -/* --------------------------------------------------------------------- - * The "atf_map_iter" type. - * --------------------------------------------------------------------- */ - -struct atf_map_iter { - struct atf_map *m_map; - void *m_entry; - atf_list_iter_t m_listiter; -}; -typedef struct atf_map_iter atf_map_iter_t; - -/* Getters. */ -const char *atf_map_iter_key(const atf_map_iter_t); -void *atf_map_iter_data(const atf_map_iter_t); -atf_map_iter_t atf_map_iter_next(const atf_map_iter_t); - -/* Operators. */ -bool atf_equal_map_iter_map_iter(const atf_map_iter_t, - const atf_map_iter_t); - -/* --------------------------------------------------------------------- - * The "atf_map" type. - * --------------------------------------------------------------------- */ - -/* A list-based map. Typically very inefficient, but our maps are small - * enough. */ -struct atf_map { - atf_list_t m_list; -}; -typedef struct atf_map atf_map_t; - -/* Constructors and destructors */ -atf_error_t atf_map_init(atf_map_t *); -atf_error_t atf_map_init_charpp(atf_map_t *, const char *const *); -void atf_map_fini(atf_map_t *); - -/* Getters. */ -atf_map_iter_t atf_map_begin(atf_map_t *); -atf_map_citer_t atf_map_begin_c(const atf_map_t *); -atf_map_iter_t atf_map_end(atf_map_t *); -atf_map_citer_t atf_map_end_c(const atf_map_t *); -atf_map_iter_t atf_map_find(atf_map_t *, const char *); -atf_map_citer_t atf_map_find_c(const atf_map_t *, const char *); -size_t atf_map_size(const atf_map_t *); -char **atf_map_to_charpp(const atf_map_t *); - -/* Modifiers. */ -atf_error_t atf_map_insert(atf_map_t *, const char *, void *, bool); - -/* Macros. */ -#define atf_map_for_each(iter, map) \ - for (iter = atf_map_begin(map); \ - !atf_equal_map_iter_map_iter((iter), atf_map_end(map)); \ - iter = atf_map_iter_next(iter)) -#define atf_map_for_each_c(iter, map) \ - for (iter = atf_map_begin_c(map); \ - !atf_equal_map_citer_map_citer((iter), atf_map_end_c(map)); \ - iter = atf_map_citer_next(iter)) - -#endif /* !defined(ATF_C_DETAIL_MAP_H) */ diff --git a/unit/atf-src/atf-c/detail/map_test.c b/unit/atf-src/atf-c/detail/map_test.c deleted file mode 100644 index 0982e20f7d..0000000000 --- a/unit/atf-src/atf-c/detail/map_test.c +++ /dev/null @@ -1,421 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/map.h" - -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" -#include "atf-c/utils.h" - -/* --------------------------------------------------------------------- - * Tests for the "atf_map" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors and destructors. - */ - -ATF_TC(map_init); -ATF_TC_HEAD(map_init, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_map_init function"); -} -ATF_TC_BODY(map_init, tc) -{ - atf_map_t map; - - RE(atf_map_init(&map)); - ATF_REQUIRE_EQ(atf_map_size(&map), 0); - atf_map_fini(&map); -} - -ATF_TC_WITHOUT_HEAD(map_init_charpp_null); -ATF_TC_BODY(map_init_charpp_null, tc) -{ - atf_map_t map; - - RE(atf_map_init_charpp(&map, NULL)); - ATF_REQUIRE_EQ(atf_map_size(&map), 0); - atf_map_fini(&map); -} - -ATF_TC_WITHOUT_HEAD(map_init_charpp_empty); -ATF_TC_BODY(map_init_charpp_empty, tc) -{ - const char *const array[] = { NULL }; - atf_map_t map; - - RE(atf_map_init_charpp(&map, array)); - ATF_REQUIRE_EQ(atf_map_size(&map), 0); - atf_map_fini(&map); -} - -ATF_TC_WITHOUT_HEAD(map_init_charpp_some); -ATF_TC_BODY(map_init_charpp_some, tc) -{ - const char *const array[] = { "K1", "V1", "K2", "V2", NULL }; - atf_map_t map; - atf_map_citer_t iter; - - RE(atf_map_init_charpp(&map, array)); - ATF_REQUIRE_EQ(atf_map_size(&map), 2); - - iter = atf_map_find_c(&map, "K1"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - ATF_REQUIRE(strcmp(atf_map_citer_key(iter), "K1") == 0); - ATF_REQUIRE(strcmp(atf_map_citer_data(iter), "V1") == 0); - - iter = atf_map_find_c(&map, "K2"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - ATF_REQUIRE(strcmp(atf_map_citer_key(iter), "K2") == 0); - ATF_REQUIRE(strcmp(atf_map_citer_data(iter), "V2") == 0); - - atf_map_fini(&map); -} - -ATF_TC_WITHOUT_HEAD(map_init_charpp_short); -ATF_TC_BODY(map_init_charpp_short, tc) -{ - const char *const array[] = { "K1", "V1", "K2", NULL }; - atf_map_t map; - - atf_error_t err = atf_map_init_charpp(&map, array); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "libc")); -} - -/* - * Getters. - */ - -ATF_TC(find); -ATF_TC_HEAD(find, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_map_find function"); -} -ATF_TC_BODY(find, tc) -{ - atf_map_t map; - char val1[] = "V1"; - char val2[] = "V2"; - atf_map_iter_t iter; - - RE(atf_map_init(&map)); - RE(atf_map_insert(&map, "K1", val1, false)); - RE(atf_map_insert(&map, "K2", val2, false)); - - iter = atf_map_find(&map, "K0"); - ATF_REQUIRE(atf_equal_map_iter_map_iter(iter, atf_map_end(&map))); - - iter = atf_map_find(&map, "K1"); - ATF_REQUIRE(!atf_equal_map_iter_map_iter(iter, atf_map_end(&map))); - ATF_REQUIRE(strcmp(atf_map_iter_key(iter), "K1") == 0); - ATF_REQUIRE(strcmp(atf_map_iter_data(iter), "V1") == 0); - strcpy(atf_map_iter_data(iter), "Z1"); - - iter = atf_map_find(&map, "K1"); - ATF_REQUIRE(!atf_equal_map_iter_map_iter(iter, atf_map_end(&map))); - ATF_REQUIRE(strcmp(atf_map_iter_key(iter), "K1") == 0); - ATF_REQUIRE(strcmp(atf_map_iter_data(iter), "Z1") == 0); - - iter = atf_map_find(&map, "K2"); - ATF_REQUIRE(!atf_equal_map_iter_map_iter(iter, atf_map_end(&map))); - ATF_REQUIRE(strcmp(atf_map_iter_key(iter), "K2") == 0); - ATF_REQUIRE(strcmp(atf_map_iter_data(iter), "V2") == 0); - - atf_map_fini(&map); -} - -ATF_TC(find_c); -ATF_TC_HEAD(find_c, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_map_find_c function"); -} -ATF_TC_BODY(find_c, tc) -{ - atf_map_t map; - char val1[] = "V1"; - char val2[] = "V2"; - atf_map_citer_t iter; - - RE(atf_map_init(&map)); - RE(atf_map_insert(&map, "K1", val1, false)); - RE(atf_map_insert(&map, "K2", val2, false)); - - iter = atf_map_find_c(&map, "K0"); - ATF_REQUIRE(atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - - iter = atf_map_find_c(&map, "K1"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - ATF_REQUIRE(strcmp(atf_map_citer_key(iter), "K1") == 0); - ATF_REQUIRE(strcmp(atf_map_citer_data(iter), "V1") == 0); - - iter = atf_map_find_c(&map, "K2"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - ATF_REQUIRE(strcmp(atf_map_citer_key(iter), "K2") == 0); - ATF_REQUIRE(strcmp(atf_map_citer_data(iter), "V2") == 0); - - atf_map_fini(&map); -} - -ATF_TC_WITHOUT_HEAD(to_charpp_empty); -ATF_TC_BODY(to_charpp_empty, tc) -{ - atf_map_t map; - char **array; - - RE(atf_map_init(&map)); - ATF_REQUIRE((array = atf_map_to_charpp(&map)) != NULL); - atf_map_fini(&map); - - ATF_CHECK_EQ(NULL, array[0]); - atf_utils_free_charpp(array); -} - -ATF_TC_WITHOUT_HEAD(to_charpp_some); -ATF_TC_BODY(to_charpp_some, tc) -{ - atf_map_t map; - char **array; - - char s1[] = "one"; - char s2[] = "two"; - char s3[] = "three"; - - RE(atf_map_init(&map)); - RE(atf_map_insert(&map, "K1", s1, false)); - RE(atf_map_insert(&map, "K2", s2, false)); - RE(atf_map_insert(&map, "K3", s3, false)); - ATF_REQUIRE((array = atf_map_to_charpp(&map)) != NULL); - atf_map_fini(&map); - - ATF_CHECK_STREQ("K1", array[0]); - ATF_CHECK_STREQ("one", array[1]); - ATF_CHECK_STREQ("K2", array[2]); - ATF_CHECK_STREQ("two", array[3]); - ATF_CHECK_STREQ("K3", array[4]); - ATF_CHECK_STREQ("three", array[5]); - ATF_CHECK_EQ(NULL, array[6]); - atf_utils_free_charpp(array); -} - -/* - * Modifiers. - */ - -ATF_TC(map_insert); -ATF_TC_HEAD(map_insert, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_map_insert function"); -} -ATF_TC_BODY(map_insert, tc) -{ - atf_map_t map; - char buf[] = "1st test string"; - char buf2[] = "2nd test string"; - const char *ptr; - atf_map_citer_t iter; - - RE(atf_map_init(&map)); - - printf("Inserting some values\n"); - ATF_REQUIRE_EQ(atf_map_size(&map), 0); - RE(atf_map_insert(&map, "K1", buf, false)); - ATF_REQUIRE_EQ(atf_map_size(&map), 1); - RE(atf_map_insert(&map, "K2", buf, false)); - ATF_REQUIRE_EQ(atf_map_size(&map), 2); - RE(atf_map_insert(&map, "K3", buf, false)); - ATF_REQUIRE_EQ(atf_map_size(&map), 3); - - printf("Replacing a value\n"); - iter = atf_map_find_c(&map, "K3"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - ptr = atf_map_citer_data(iter); - ATF_REQUIRE_EQ(ptr, buf); - RE(atf_map_insert(&map, "K3", buf2, false)); - ATF_REQUIRE_EQ(atf_map_size(&map), 3); - iter = atf_map_find_c(&map, "K3"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - ptr = atf_map_citer_data(iter); - ATF_REQUIRE_EQ(ptr, buf2); - - atf_map_fini(&map); -} - -/* - * Macros. - */ - -ATF_TC(map_for_each); -ATF_TC_HEAD(map_for_each, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_map_for_each macro"); -} -ATF_TC_BODY(map_for_each, tc) -{ - atf_map_t map; - atf_map_iter_t iter; - size_t count, i, size; - char keys[10][5]; - int nums[10]; - - printf("Iterating over empty map\n"); - RE(atf_map_init(&map)); - count = 0; - atf_map_for_each(iter, &map) { - count++; - printf("Item count is now %zd\n", count); - } - ATF_REQUIRE_EQ(count, 0); - atf_map_fini(&map); - - for (size = 0; size <= 10; size++) { - printf("Iterating over map of %zd elements\n", size); - RE(atf_map_init(&map)); - for (i = 0; i < size; i++) { - nums[i] = i + 1; - snprintf(keys[i], sizeof(keys[i]), "%d", nums[i]); - RE(atf_map_insert(&map, keys[i], &nums[i], false)); - } - count = 0; - atf_map_for_each(iter, &map) { - printf("Retrieved item: %d\n", *(int *)atf_map_iter_data(iter)); - count++; - } - ATF_REQUIRE_EQ(count, size); - atf_map_fini(&map); - } -} - -ATF_TC(map_for_each_c); -ATF_TC_HEAD(map_for_each_c, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_map_for_each_c macro"); -} -ATF_TC_BODY(map_for_each_c, tc) -{ - atf_map_t map; - atf_map_citer_t iter; - size_t count, i, size; - char keys[10][5]; - int nums[10]; - - printf("Iterating over empty map\n"); - RE(atf_map_init(&map)); - count = 0; - atf_map_for_each_c(iter, &map) { - count++; - printf("Item count is now %zd\n", count); - } - ATF_REQUIRE_EQ(count, 0); - atf_map_fini(&map); - - for (size = 0; size <= 10; size++) { - printf("Iterating over map of %zd elements\n", size); - RE(atf_map_init(&map)); - for (i = 0; i < size; i++) { - nums[i] = i + 1; - snprintf(keys[i], sizeof(keys[i]), "%d", nums[i]); - RE(atf_map_insert(&map, keys[i], &nums[i], false)); - } - count = 0; - atf_map_for_each_c(iter, &map) { - printf("Retrieved item: %d\n", - *(const int *)atf_map_citer_data(iter)); - count++; - } - ATF_REQUIRE_EQ(count, size); - atf_map_fini(&map); - } -} - -/* - * Other. - */ - -ATF_TC(stable_keys); -ATF_TC_HEAD(stable_keys, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that the keys do not change " - "even if their original values do"); -} -ATF_TC_BODY(stable_keys, tc) -{ - atf_map_t map; - atf_map_citer_t iter; - char key[] = "K1"; - - RE(atf_map_init(&map)); - - RE(atf_map_insert(&map, key, strdup("test-value"), true)); - iter = atf_map_find_c(&map, "K1"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - iter = atf_map_find_c(&map, "K2"); - ATF_REQUIRE(atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - - strcpy(key, "K2"); - iter = atf_map_find_c(&map, "K1"); - ATF_REQUIRE(!atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - iter = atf_map_find_c(&map, "K2"); - ATF_REQUIRE(atf_equal_map_citer_map_citer(iter, atf_map_end_c(&map))); - - atf_map_fini(&map); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Constructors and destructors. */ - ATF_TP_ADD_TC(tp, map_init); - ATF_TP_ADD_TC(tp, map_init_charpp_null); - ATF_TP_ADD_TC(tp, map_init_charpp_empty); - ATF_TP_ADD_TC(tp, map_init_charpp_some); - ATF_TP_ADD_TC(tp, map_init_charpp_short); - - /* Getters. */ - ATF_TP_ADD_TC(tp, find); - ATF_TP_ADD_TC(tp, find_c); - ATF_TP_ADD_TC(tp, to_charpp_empty); - ATF_TP_ADD_TC(tp, to_charpp_some); - - /* Modifiers. */ - ATF_TP_ADD_TC(tp, map_insert); - - /* Macros. */ - ATF_TP_ADD_TC(tp, map_for_each); - ATF_TP_ADD_TC(tp, map_for_each_c); - - /* Other. */ - ATF_TP_ADD_TC(tp, stable_keys); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/process.c b/unit/atf-src/atf-c/detail/process.c deleted file mode 100644 index 8e08b6c574..0000000000 --- a/unit/atf-src/atf-c/detail/process.c +++ /dev/null @@ -1,670 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/process.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "atf-c/defs.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" - -/* This prototype is not in the header file because this is a private - * function; however, we need to access it during testing. */ -atf_error_t atf_process_status_init(atf_process_status_t *, int); - -/* --------------------------------------------------------------------- - * The "stream_prepare" auxiliary type. - * --------------------------------------------------------------------- */ - -struct stream_prepare { - const atf_process_stream_t *m_sb; - - bool m_pipefds_ok; - int m_pipefds[2]; -}; -typedef struct stream_prepare stream_prepare_t; - -static -atf_error_t -stream_prepare_init(stream_prepare_t *sp, const atf_process_stream_t *sb) -{ - atf_error_t err; - - const int type = atf_process_stream_type(sb); - - sp->m_sb = sb; - sp->m_pipefds_ok = false; - - if (type == atf_process_stream_type_capture) { - if (pipe(sp->m_pipefds) == -1) - err = atf_libc_error(errno, "Failed to create pipe"); - else { - err = atf_no_error(); - sp->m_pipefds_ok = true; - } - } else - err = atf_no_error(); - - return err; -} - -static -void -stream_prepare_fini(stream_prepare_t *sp) -{ - if (sp->m_pipefds_ok) { - close(sp->m_pipefds[0]); - close(sp->m_pipefds[1]); - } -} - -/* --------------------------------------------------------------------- - * The "atf_process_stream" type. - * --------------------------------------------------------------------- */ - -const int atf_process_stream_type_capture = 1; -const int atf_process_stream_type_connect = 2; -const int atf_process_stream_type_inherit = 3; -const int atf_process_stream_type_redirect_fd = 4; -const int atf_process_stream_type_redirect_path = 5; - -static -bool -stream_is_valid(const atf_process_stream_t *sb) -{ - return (sb->m_type == atf_process_stream_type_capture) || - (sb->m_type == atf_process_stream_type_connect) || - (sb->m_type == atf_process_stream_type_inherit) || - (sb->m_type == atf_process_stream_type_redirect_fd) || - (sb->m_type == atf_process_stream_type_redirect_path); -} - -atf_error_t -atf_process_stream_init_capture(atf_process_stream_t *sb) -{ - sb->m_type = atf_process_stream_type_capture; - - POST(stream_is_valid(sb)); - return atf_no_error(); -} - -atf_error_t -atf_process_stream_init_connect(atf_process_stream_t *sb, - const int src_fd, const int tgt_fd) -{ - PRE(src_fd >= 0); - PRE(tgt_fd >= 0); - PRE(src_fd != tgt_fd); - - sb->m_type = atf_process_stream_type_connect; - sb->m_src_fd = src_fd; - sb->m_tgt_fd = tgt_fd; - - POST(stream_is_valid(sb)); - return atf_no_error(); -} - -atf_error_t -atf_process_stream_init_inherit(atf_process_stream_t *sb) -{ - sb->m_type = atf_process_stream_type_inherit; - - POST(stream_is_valid(sb)); - return atf_no_error(); -} - -atf_error_t -atf_process_stream_init_redirect_fd(atf_process_stream_t *sb, - const int fd) -{ - sb->m_type = atf_process_stream_type_redirect_fd; - sb->m_fd = fd; - - POST(stream_is_valid(sb)); - return atf_no_error(); -} - -atf_error_t -atf_process_stream_init_redirect_path(atf_process_stream_t *sb, - const atf_fs_path_t *path) -{ - sb->m_type = atf_process_stream_type_redirect_path; - sb->m_path = path; - - POST(stream_is_valid(sb)); - return atf_no_error(); -} - -void -atf_process_stream_fini(atf_process_stream_t *sb) -{ - PRE(stream_is_valid(sb)); -} - -int -atf_process_stream_type(const atf_process_stream_t *sb) -{ - PRE(stream_is_valid(sb)); - - return sb->m_type; -} - -/* --------------------------------------------------------------------- - * The "atf_process_status" type. - * --------------------------------------------------------------------- */ - -atf_error_t -atf_process_status_init(atf_process_status_t *s, int status) -{ - s->m_status = status; - - return atf_no_error(); -} - -void -atf_process_status_fini(atf_process_status_t *s ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -bool -atf_process_status_exited(const atf_process_status_t *s) -{ - int mutable_status = s->m_status; - return WIFEXITED(mutable_status); -} - -int -atf_process_status_exitstatus(const atf_process_status_t *s) -{ - PRE(atf_process_status_exited(s)); - int mutable_status = s->m_status; - return WEXITSTATUS(mutable_status); -} - -bool -atf_process_status_signaled(const atf_process_status_t *s) -{ - int mutable_status = s->m_status; - return WIFSIGNALED(mutable_status); -} - -int -atf_process_status_termsig(const atf_process_status_t *s) -{ - PRE(atf_process_status_signaled(s)); - int mutable_status = s->m_status; - return WTERMSIG(mutable_status); -} - -bool -atf_process_status_coredump(const atf_process_status_t *s) -{ - PRE(atf_process_status_signaled(s)); -#if defined(WCOREDUMP) - int mutable_status = s->m_status; - return WCOREDUMP(mutable_status); -#else - return false; -#endif -} - -/* --------------------------------------------------------------------- - * The "atf_process_child" type. - * --------------------------------------------------------------------- */ - -static -atf_error_t -atf_process_child_init(atf_process_child_t *c) -{ - c->m_pid = 0; - c->m_stdout = -1; - c->m_stderr = -1; - - return atf_no_error(); -} - -static -void -atf_process_child_fini(atf_process_child_t *c) -{ - if (c->m_stdout != -1) - close(c->m_stdout); - if (c->m_stderr != -1) - close(c->m_stderr); -} - -atf_error_t -atf_process_child_wait(atf_process_child_t *c, atf_process_status_t *s) -{ - atf_error_t err; - int status; - - if (waitpid(c->m_pid, &status, 0) == -1) - err = atf_libc_error(errno, "Failed waiting for process %d", - c->m_pid); - else { - atf_process_child_fini(c); - err = atf_process_status_init(s, status); - } - - return err; -} - -pid_t -atf_process_child_pid(const atf_process_child_t *c) -{ - return c->m_pid; -} - -int -atf_process_child_stdout(atf_process_child_t *c) -{ - PRE(c->m_stdout != -1); - return c->m_stdout; -} - -int -atf_process_child_stderr(atf_process_child_t *c) -{ - PRE(c->m_stderr != -1); - return c->m_stderr; -} - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -static -atf_error_t -safe_dup(const int oldfd, const int newfd) -{ - atf_error_t err; - - if (oldfd != newfd) { - if (dup2(oldfd, newfd) == -1) { - err = atf_libc_error(errno, "Could not allocate file descriptor"); - } else { - close(oldfd); - err = atf_no_error(); - } - } else - err = atf_no_error(); - - return err; -} - -static -atf_error_t -child_connect(const stream_prepare_t *sp, int procfd) -{ - atf_error_t err; - const int type = atf_process_stream_type(sp->m_sb); - - if (type == atf_process_stream_type_capture) { - close(sp->m_pipefds[0]); - err = safe_dup(sp->m_pipefds[1], procfd); - } else if (type == atf_process_stream_type_connect) { - if (dup2(sp->m_sb->m_tgt_fd, sp->m_sb->m_src_fd) == -1) - err = atf_libc_error(errno, "Cannot connect descriptor %d to %d", - sp->m_sb->m_tgt_fd, sp->m_sb->m_src_fd); - else - err = atf_no_error(); - } else if (type == atf_process_stream_type_inherit) { - err = atf_no_error(); - } else if (type == atf_process_stream_type_redirect_fd) { - err = safe_dup(sp->m_sb->m_fd, procfd); - } else if (type == atf_process_stream_type_redirect_path) { - int aux = open(atf_fs_path_cstring(sp->m_sb->m_path), - O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (aux == -1) - err = atf_libc_error(errno, "Could not create %s", - atf_fs_path_cstring(sp->m_sb->m_path)); - else { - err = safe_dup(aux, procfd); - if (atf_is_error(err)) - close(aux); - } - } else { - UNREACHABLE; - err = atf_no_error(); - } - - return err; -} - -static -void -parent_connect(const stream_prepare_t *sp, int *fd) -{ - const int type = atf_process_stream_type(sp->m_sb); - - if (type == atf_process_stream_type_capture) { - close(sp->m_pipefds[1]); - *fd = sp->m_pipefds[0]; - } else if (type == atf_process_stream_type_connect) { - /* Do nothing. */ - } else if (type == atf_process_stream_type_inherit) { - /* Do nothing. */ - } else if (type == atf_process_stream_type_redirect_fd) { - /* Do nothing. */ - } else if (type == atf_process_stream_type_redirect_path) { - /* Do nothing. */ - } else { - UNREACHABLE; - } -} - -static -atf_error_t -do_parent(atf_process_child_t *c, - const pid_t pid, - const stream_prepare_t *outsp, - const stream_prepare_t *errsp) -{ - atf_error_t err; - - err = atf_process_child_init(c); - if (atf_is_error(err)) - goto out; - - c->m_pid = pid; - - parent_connect(outsp, &c->m_stdout); - parent_connect(errsp, &c->m_stderr); - -out: - return err; -} - -static -void -do_child(void (*)(void *), - void *, - const stream_prepare_t *, - const stream_prepare_t *) ATF_DEFS_ATTRIBUTE_NORETURN; - -static -void -do_child(void (*start)(void *), - void *v, - const stream_prepare_t *outsp, - const stream_prepare_t *errsp) -{ - atf_error_t err; - - err = child_connect(outsp, STDOUT_FILENO); - if (atf_is_error(err)) - goto out; - - err = child_connect(errsp, STDERR_FILENO); - if (atf_is_error(err)) - goto out; - - start(v); - UNREACHABLE; - -out: - if (atf_is_error(err)) { - char buf[1024]; - - atf_error_format(err, buf, sizeof(buf)); - fprintf(stderr, "Unhandled error: %s\n", buf); - atf_error_free(err); - - exit(EXIT_FAILURE); - } else - exit(EXIT_SUCCESS); -} - -static -atf_error_t -fork_with_streams(atf_process_child_t *c, - void (*start)(void *), - const atf_process_stream_t *outsb, - const atf_process_stream_t *errsb, - void *v) -{ - atf_error_t err; - stream_prepare_t outsp; - stream_prepare_t errsp; - pid_t pid; - - err = stream_prepare_init(&outsp, outsb); - if (atf_is_error(err)) - goto out; - - err = stream_prepare_init(&errsp, errsb); - if (atf_is_error(err)) - goto err_outpipe; - - pid = fork(); - if (pid == -1) { - err = atf_libc_error(errno, "Failed to fork"); - goto err_errpipe; - } - - if (pid == 0) { - do_child(start, v, &outsp, &errsp); - UNREACHABLE; - abort(); - err = atf_no_error(); - } else { - err = do_parent(c, pid, &outsp, &errsp); - if (atf_is_error(err)) - goto err_errpipe; - } - - goto out; - -err_errpipe: - stream_prepare_fini(&errsp); -err_outpipe: - stream_prepare_fini(&outsp); - -out: - return err; -} - -static -atf_error_t -init_stream_w_default(const atf_process_stream_t *usersb, - atf_process_stream_t *inheritsb, - const atf_process_stream_t **realsb) -{ - atf_error_t err; - - if (usersb == NULL) { - err = atf_process_stream_init_inherit(inheritsb); - if (!atf_is_error(err)) - *realsb = inheritsb; - } else { - err = atf_no_error(); - *realsb = usersb; - } - - return err; -} - -atf_error_t -atf_process_fork(atf_process_child_t *c, - void (*start)(void *), - const atf_process_stream_t *outsb, - const atf_process_stream_t *errsb, - void *v) -{ - atf_error_t err; - atf_process_stream_t inherit_outsb, inherit_errsb; - const atf_process_stream_t *real_outsb, *real_errsb; - - real_outsb = NULL; /* Shut up GCC warning. */ - err = init_stream_w_default(outsb, &inherit_outsb, &real_outsb); - if (atf_is_error(err)) - goto out; - - real_errsb = NULL; /* Shut up GCC warning. */ - err = init_stream_w_default(errsb, &inherit_errsb, &real_errsb); - if (atf_is_error(err)) - goto out_out; - - err = fork_with_streams(c, start, real_outsb, real_errsb, v); - - if (errsb == NULL) - atf_process_stream_fini(&inherit_errsb); -out_out: - if (outsb == NULL) - atf_process_stream_fini(&inherit_outsb); -out: - return err; -} - -static -int -const_execvp(const char *file, const char *const *argv) -{ -#define UNCONST(a) ((void *)(unsigned long)(const void *)(a)) - return execvp(file, UNCONST(argv)); -#undef UNCONST -} - -static -atf_error_t -list_to_array(const atf_list_t *l, const char ***ap) -{ - atf_error_t err; - const char **a; - - a = (const char **)malloc((atf_list_size(l) + 1) * sizeof(const char *)); - if (a == NULL) - err = atf_no_memory_error(); - else { - const char **aiter; - atf_list_citer_t liter; - - aiter = a; - atf_list_for_each_c(liter, l) { - *aiter = (const char *)atf_list_citer_data(liter); - aiter++; - } - *aiter = NULL; - - err = atf_no_error(); - *ap = a; - } - - return err; -} - -struct exec_args { - const atf_fs_path_t *m_prog; - const char *const *m_argv; - void (*m_prehook)(void); -}; - -static -void -do_exec(void *v) -{ - struct exec_args *ea = v; - - if (ea->m_prehook != NULL) - ea->m_prehook(); - - const int ret = const_execvp(atf_fs_path_cstring(ea->m_prog), ea->m_argv); - const int errnocopy = errno; - INV(ret == -1); - fprintf(stderr, "exec(%s) failed: %s\n", - atf_fs_path_cstring(ea->m_prog), strerror(errnocopy)); - exit(EXIT_FAILURE); -} - -atf_error_t -atf_process_exec_array(atf_process_status_t *s, - const atf_fs_path_t *prog, - const char *const *argv, - const atf_process_stream_t *outsb, - const atf_process_stream_t *errsb, - void (*prehook)(void)) -{ - atf_error_t err; - atf_process_child_t c; - struct exec_args ea = { prog, argv, prehook }; - - PRE(outsb == NULL || - atf_process_stream_type(outsb) != atf_process_stream_type_capture); - PRE(errsb == NULL || - atf_process_stream_type(errsb) != atf_process_stream_type_capture); - - err = atf_process_fork(&c, do_exec, outsb, errsb, &ea); - if (atf_is_error(err)) - goto out; - -again: - err = atf_process_child_wait(&c, s); - if (atf_is_error(err)) { - INV(atf_error_is(err, "libc") && atf_libc_error_code(err) == EINTR); - atf_error_free(err); - goto again; - } - -out: - return err; -} - -atf_error_t -atf_process_exec_list(atf_process_status_t *s, - const atf_fs_path_t *prog, - const atf_list_t *argv, - const atf_process_stream_t *outsb, - const atf_process_stream_t *errsb, - void (*prehook)(void)) -{ - atf_error_t err; - const char **argv2; - - PRE(outsb == NULL || - atf_process_stream_type(outsb) != atf_process_stream_type_capture); - PRE(errsb == NULL || - atf_process_stream_type(errsb) != atf_process_stream_type_capture); - - argv2 = NULL; /* Silence GCC warning. */ - err = list_to_array(argv, &argv2); - if (atf_is_error(err)) - goto out; - - err = atf_process_exec_array(s, prog, argv2, outsb, errsb, prehook); - - free(argv2); -out: - return err; -} diff --git a/unit/atf-src/atf-c/detail/process.h b/unit/atf-src/atf-c/detail/process.h deleted file mode 100644 index 81158d0a5a..0000000000 --- a/unit/atf-src/atf-c/detail/process.h +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_PROCESS_H) -#define ATF_C_DETAIL_PROCESS_H - -#include - -#include - -#include -#include -#include - -/* --------------------------------------------------------------------- - * The "atf_process_stream" type. - * --------------------------------------------------------------------- */ - -struct atf_process_stream { - int m_type; - - /* Valid if m_type == connect. */ - int m_src_fd; - int m_tgt_fd; - - /* Valid if m_type == redirect_fd. */ - int m_fd; - - /* Valid if m_type == redirect_path. */ - const atf_fs_path_t *m_path; -}; -typedef struct atf_process_stream atf_process_stream_t; - -extern const int atf_process_stream_type_capture; -extern const int atf_process_stream_type_connect; -extern const int atf_process_stream_type_inherit; -extern const int atf_process_stream_type_redirect_fd; -extern const int atf_process_stream_type_redirect_path; - -atf_error_t atf_process_stream_init_capture(atf_process_stream_t *); -atf_error_t atf_process_stream_init_connect(atf_process_stream_t *, - const int, const int); -atf_error_t atf_process_stream_init_inherit(atf_process_stream_t *); -atf_error_t atf_process_stream_init_redirect_fd(atf_process_stream_t *, - const int fd); -atf_error_t atf_process_stream_init_redirect_path(atf_process_stream_t *, - const atf_fs_path_t *); -void atf_process_stream_fini(atf_process_stream_t *); - -int atf_process_stream_type(const atf_process_stream_t *); - -/* --------------------------------------------------------------------- - * The "atf_process_status" type. - * --------------------------------------------------------------------- */ - -struct atf_process_status { - int m_status; -}; -typedef struct atf_process_status atf_process_status_t; - -void atf_process_status_fini(atf_process_status_t *); - -bool atf_process_status_exited(const atf_process_status_t *); -int atf_process_status_exitstatus(const atf_process_status_t *); -bool atf_process_status_signaled(const atf_process_status_t *); -int atf_process_status_termsig(const atf_process_status_t *); -bool atf_process_status_coredump(const atf_process_status_t *); - -/* --------------------------------------------------------------------- - * The "atf_process_child" type. - * --------------------------------------------------------------------- */ - -struct atf_process_child { - pid_t m_pid; - - int m_stdout; - int m_stderr; -}; -typedef struct atf_process_child atf_process_child_t; - -atf_error_t atf_process_child_wait(atf_process_child_t *, - atf_process_status_t *); -pid_t atf_process_child_pid(const atf_process_child_t *); -int atf_process_child_stdout(atf_process_child_t *); -int atf_process_child_stderr(atf_process_child_t *); - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -atf_error_t atf_process_fork(atf_process_child_t *, - void (*)(void *), - const atf_process_stream_t *, - const atf_process_stream_t *, - void *); -atf_error_t atf_process_exec_array(atf_process_status_t *, - const atf_fs_path_t *, - const char *const *, - const atf_process_stream_t *, - const atf_process_stream_t *, - void (*)(void)); -atf_error_t atf_process_exec_list(atf_process_status_t *, - const atf_fs_path_t *, - const atf_list_t *, - const atf_process_stream_t *, - const atf_process_stream_t *, - void (*)(void)); - -#endif /* !defined(ATF_C_DETAIL_PROCESS_H) */ diff --git a/unit/atf-src/atf-c/detail/process_helpers.c b/unit/atf-src/atf-c/detail/process_helpers.c deleted file mode 100644 index 47b90bccf8..0000000000 --- a/unit/atf-src/atf-c/detail/process_helpers.c +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include - -#include /* NO_CHECK_STYLE */ -#include -#include -#include -#include -#include - -static -int -h_echo(const char *msg) -{ - printf("%s\n", msg); - return EXIT_SUCCESS; -} - -static -int -h_exit_failure(void) -{ - return EXIT_FAILURE; -} - -static -int -h_exit_signal(void) -{ - kill(getpid(), SIGKILL); - assert(0); /* NO_CHECK_STYLE */ - return EXIT_FAILURE; -} - -static -int -h_exit_success(void) -{ - return EXIT_SUCCESS; -} - -static -int -h_stdout_stderr(const char *id) -{ - fprintf(stdout, "Line 1 to stdout for %s\n", id); - fprintf(stdout, "Line 2 to stdout for %s\n", id); - fprintf(stderr, "Line 1 to stderr for %s\n", id); - fprintf(stderr, "Line 2 to stderr for %s\n", id); - - return EXIT_SUCCESS; -} - -static -void -check_args(const int argc, const char *const argv[], const int required) -{ - if (argc < required) { - fprintf(stderr, "Usage: %s helper-name [args]\n", argv[0]); - exit(EXIT_FAILURE); - } -} - -int -main(int argc, const char *const argv[]) -{ - int exitcode; - - check_args(argc, argv, 2); - - if (strcmp(argv[1], "echo") == 0) { - check_args(argc, argv, 3); - exitcode = h_echo(argv[2]); - } else if (strcmp(argv[1], "exit-failure") == 0) - exitcode = h_exit_failure(); - else if (strcmp(argv[1], "exit-signal") == 0) - exitcode = h_exit_signal(); - else if (strcmp(argv[1], "exit-success") == 0) - exitcode = h_exit_success(); - else if (strcmp(argv[1], "stdout-stderr") == 0) { - check_args(argc, argv, 3); - exitcode = h_stdout_stderr(argv[2]); - } else { - fprintf(stderr, "%s: Unknown helper %s\n", argv[0], argv[1]); - exitcode = EXIT_FAILURE; - } - - return exitcode; -} diff --git a/unit/atf-src/atf-c/detail/process_test.c b/unit/atf-src/atf-c/detail/process_test.c deleted file mode 100644 index 5ae5565b6a..0000000000 --- a/unit/atf-src/atf-c/detail/process_test.c +++ /dev/null @@ -1,1159 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/process.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c/defs.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/test_helpers.h" - -atf_error_t atf_process_status_init(atf_process_status_t *, int); - -/* --------------------------------------------------------------------- - * Auxiliary functions for testing of 'atf_process_fork'. - * --------------------------------------------------------------------- */ - -/* - * Testing of atf_process_fork is quite messy. We want to be able to test - * all the possible combinations of stdout and stderr behavior to ensure - * that the streams are manipulated correctly. - * - * To do this, the do_fork function is a wrapper for atf_process_fork that - * issues stream-specific hooks before fork, while the child is running and - * after the child terminates. We then provide test cases that just call - * do_fork with different hooks. - * - * The hooks are described by base_stream, and we then have one *_stream - * type for ever possible stream behavior. - */ - -enum out_type { stdout_type, stderr_type }; - -struct base_stream { - void (*init)(void *); - void (*process)(void *, atf_process_child_t *); - void (*fini)(void *); - - /* m_sb is initialized by subclasses that need it, but all consumers - * must use m_sb_ptr, which may or may not point to m_sb. This allows - * us to test the interface with a NULL value, which triggers a - * default behavior. */ - atf_process_stream_t m_sb; - atf_process_stream_t *m_sb_ptr; - enum out_type m_type; -}; -#define BASE_STREAM(ihook, phook, fhook, type) \ - { .init = ihook, \ - .process = phook, \ - .fini = fhook, \ - .m_type = type } - -static -void -check_file(const enum out_type type) -{ - switch (type) { - case stdout_type: - ATF_CHECK(atf_utils_grep_file("stdout: msg", "stdout")); - ATF_CHECK(!atf_utils_grep_file("stderr: msg", "stdout")); - break; - case stderr_type: - ATF_CHECK(atf_utils_grep_file("stderr: msg", "stderr")); - ATF_CHECK(!atf_utils_grep_file("stdout: msg", "stderr")); - break; - default: - UNREACHABLE; - } -} - -struct capture_stream { - struct base_stream m_base; - - char *m_msg; -}; -#define CAPTURE_STREAM(type) \ - { .m_base = BASE_STREAM(capture_stream_init, \ - capture_stream_process, \ - capture_stream_fini, \ - type) } - -static -void -capture_stream_init(void *v) -{ - struct capture_stream *s = v; - - s->m_base.m_sb_ptr = &s->m_base.m_sb; - RE(atf_process_stream_init_capture(&s->m_base.m_sb)); - s->m_msg = NULL; -} - -static -void -capture_stream_process(void *v, atf_process_child_t *c) -{ - struct capture_stream *s = v; - - switch (s->m_base.m_type) { - case stdout_type: - s->m_msg = atf_utils_readline(atf_process_child_stdout(c)); - break; - case stderr_type: - s->m_msg = atf_utils_readline(atf_process_child_stderr(c)); - break; - default: - UNREACHABLE; - } -} - -static -void -capture_stream_fini(void *v) -{ - struct capture_stream *s = v; - - switch (s->m_base.m_type) { - case stdout_type: - ATF_CHECK(atf_utils_grep_string("stdout: msg", s->m_msg)); - ATF_CHECK(!atf_utils_grep_string("stderr: msg", s->m_msg)); - break; - case stderr_type: - ATF_CHECK(!atf_utils_grep_string("stdout: msg", s->m_msg)); - ATF_CHECK(atf_utils_grep_string("stderr: msg", s->m_msg)); - break; - default: - UNREACHABLE; - } - - free(s->m_msg); - atf_process_stream_fini(&s->m_base.m_sb); -} - -struct connect_stream { - struct base_stream m_base; - - int m_fd; -}; -#define CONNECT_STREAM(type) \ - { .m_base = BASE_STREAM(connect_stream_init, \ - NULL, \ - connect_stream_fini, \ - type) } - -static -void -connect_stream_init(void *v) -{ - struct connect_stream *s = v; - int src_fd; - - switch (s->m_base.m_type) { - case stdout_type: - src_fd = STDOUT_FILENO; - s->m_fd = open("stdout", O_WRONLY | O_CREAT | O_TRUNC, 0644); - break; - case stderr_type: - src_fd = STDERR_FILENO; - s->m_fd = open("stderr", O_WRONLY | O_CREAT | O_TRUNC, 0644); - break; - default: - UNREACHABLE; - src_fd = -1; - } - ATF_REQUIRE(s->m_fd != -1); - - s->m_base.m_sb_ptr = &s->m_base.m_sb; - RE(atf_process_stream_init_connect(&s->m_base.m_sb, src_fd, s->m_fd)); -} - -static -void -connect_stream_fini(void *v) -{ - struct connect_stream *s = v; - - ATF_REQUIRE(close(s->m_fd) != -1); - - atf_process_stream_fini(&s->m_base.m_sb); - - check_file(s->m_base.m_type); -} - -struct inherit_stream { - struct base_stream m_base; - int m_fd; - - int m_old_fd; -}; -#define INHERIT_STREAM(type) \ - { .m_base = BASE_STREAM(inherit_stream_init, \ - NULL, \ - inherit_stream_fini, \ - type) } - -static -void -inherit_stream_init(void *v) -{ - struct inherit_stream *s = v; - const char *name; - - s->m_base.m_sb_ptr = &s->m_base.m_sb; - RE(atf_process_stream_init_inherit(&s->m_base.m_sb)); - - switch (s->m_base.m_type) { - case stdout_type: - s->m_fd = STDOUT_FILENO; - name = "stdout"; - break; - case stderr_type: - s->m_fd = STDERR_FILENO; - name = "stderr"; - break; - default: - UNREACHABLE; - name = NULL; - } - - s->m_old_fd = dup(s->m_fd); - ATF_REQUIRE(s->m_old_fd != -1); - ATF_REQUIRE(close(s->m_fd) != -1); - ATF_REQUIRE_EQ(open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644), - s->m_fd); -} - -static -void -inherit_stream_fini(void *v) -{ - struct inherit_stream *s = v; - - ATF_REQUIRE(dup2(s->m_old_fd, s->m_fd) != -1); - ATF_REQUIRE(close(s->m_old_fd) != -1); - - atf_process_stream_fini(&s->m_base.m_sb); - - check_file(s->m_base.m_type); -} - -#define default_stream inherit_stream -#define DEFAULT_STREAM(type) \ - { .m_base = BASE_STREAM(default_stream_init, \ - NULL, \ - default_stream_fini, \ - type) } - -static -void -default_stream_init(void *v) -{ - struct inherit_stream *s = v; - - inherit_stream_init(v); - s->m_base.m_sb_ptr = NULL; -} - -static -void -default_stream_fini(void *v) -{ - inherit_stream_fini(v); -} - -struct redirect_fd_stream { - struct base_stream m_base; - - int m_fd; -}; -#define REDIRECT_FD_STREAM(type) \ - { .m_base = BASE_STREAM(redirect_fd_stream_init, \ - NULL, \ - redirect_fd_stream_fini, \ - type) } - -static -void -redirect_fd_stream_init(void *v) -{ - struct redirect_fd_stream *s = v; - - switch (s->m_base.m_type) { - case stdout_type: - s->m_fd = open("stdout", O_WRONLY | O_CREAT | O_TRUNC, 0644); - break; - case stderr_type: - s->m_fd = open("stderr", O_WRONLY | O_CREAT | O_TRUNC, 0644); - break; - default: - UNREACHABLE; - } - ATF_REQUIRE(s->m_fd != -1); - - s->m_base.m_sb_ptr = &s->m_base.m_sb; - RE(atf_process_stream_init_redirect_fd(&s->m_base.m_sb, s->m_fd)); -} - -static -void -redirect_fd_stream_fini(void *v) -{ - struct redirect_fd_stream *s = v; - - ATF_REQUIRE(close(s->m_fd) != -1); - - atf_process_stream_fini(&s->m_base.m_sb); - - check_file(s->m_base.m_type); -} - -struct redirect_path_stream { - struct base_stream m_base; - - atf_fs_path_t m_path; -}; -#define REDIRECT_PATH_STREAM(type) \ - { .m_base = BASE_STREAM(redirect_path_stream_init, \ - NULL, \ - redirect_path_stream_fini, \ - type) } - -static -void -redirect_path_stream_init(void *v) -{ - struct redirect_path_stream *s = v; - - switch (s->m_base.m_type) { - case stdout_type: - RE(atf_fs_path_init_fmt(&s->m_path, "stdout")); - break; - case stderr_type: - RE(atf_fs_path_init_fmt(&s->m_path, "stderr")); - break; - default: - UNREACHABLE; - } - - s->m_base.m_sb_ptr = &s->m_base.m_sb; - RE(atf_process_stream_init_redirect_path(&s->m_base.m_sb, &s->m_path)); -} - -static -void -redirect_path_stream_fini(void *v) -{ - struct redirect_path_stream *s = v; - - atf_process_stream_fini(&s->m_base.m_sb); - - atf_fs_path_fini(&s->m_path); - - check_file(s->m_base.m_type); -} - -static void child_print(void *) ATF_DEFS_ATTRIBUTE_NORETURN; - -struct child_print_data { - const char *m_msg; -}; - -static -void -child_print(void *v) -{ - struct child_print_data *cpd = v; - - fprintf(stdout, "stdout: %s\n", cpd->m_msg); - fprintf(stderr, "stderr: %s\n", cpd->m_msg); - - exit(EXIT_SUCCESS); -} - -static -void -do_fork(const struct base_stream *outfs, void *out, - const struct base_stream *errfs, void *err) -{ - atf_process_child_t child; - atf_process_status_t status; - struct child_print_data cpd = { "msg" }; - - outfs->init(out); - errfs->init(err); - - RE(atf_process_fork(&child, child_print, outfs->m_sb_ptr, - errfs->m_sb_ptr, &cpd)); - if (outfs->process != NULL) - outfs->process(out, &child); - if (errfs->process != NULL) - errfs->process(err, &child); - RE(atf_process_child_wait(&child, &status)); - - outfs->fini(out); - errfs->fini(err); - - atf_process_status_fini(&status); -} - -/* --------------------------------------------------------------------- - * Test cases for the "stream" type. - * --------------------------------------------------------------------- */ - -ATF_TC(stream_init_capture); -ATF_TC_HEAD(stream_init_capture, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the " - "atf_process_stream_init_capture function"); -} -ATF_TC_BODY(stream_init_capture, tc) -{ - atf_process_stream_t sb; - - RE(atf_process_stream_init_capture(&sb)); - - ATF_CHECK_EQ(atf_process_stream_type(&sb), - atf_process_stream_type_capture); - - atf_process_stream_fini(&sb); -} - -ATF_TC(stream_init_connect); -ATF_TC_HEAD(stream_init_connect, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the " - "atf_process_stream_init_connect function"); -} -ATF_TC_BODY(stream_init_connect, tc) -{ - atf_process_stream_t sb; - - RE(atf_process_stream_init_connect(&sb, 1, 2)); - - ATF_CHECK_EQ(atf_process_stream_type(&sb), - atf_process_stream_type_connect); - - atf_process_stream_fini(&sb); -} - -ATF_TC(stream_init_inherit); -ATF_TC_HEAD(stream_init_inherit, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the " - "atf_process_stream_init_inherit function"); -} -ATF_TC_BODY(stream_init_inherit, tc) -{ - atf_process_stream_t sb; - - RE(atf_process_stream_init_inherit(&sb)); - - ATF_CHECK_EQ(atf_process_stream_type(&sb), - atf_process_stream_type_inherit); - - atf_process_stream_fini(&sb); -} - -ATF_TC(stream_init_redirect_fd); -ATF_TC_HEAD(stream_init_redirect_fd, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the " - "atf_process_stream_init_redirect_fd function"); -} -ATF_TC_BODY(stream_init_redirect_fd, tc) -{ - atf_process_stream_t sb; - - RE(atf_process_stream_init_redirect_fd(&sb, 1)); - - ATF_CHECK_EQ(atf_process_stream_type(&sb), - atf_process_stream_type_redirect_fd); - - atf_process_stream_fini(&sb); -} - -ATF_TC(stream_init_redirect_path); -ATF_TC_HEAD(stream_init_redirect_path, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the " - "atf_process_stream_init_redirect_path function"); -} -ATF_TC_BODY(stream_init_redirect_path, tc) -{ - atf_process_stream_t sb; - atf_fs_path_t path; - - RE(atf_fs_path_init_fmt(&path, "foo")); - RE(atf_process_stream_init_redirect_path(&sb, &path)); - - ATF_CHECK_EQ(atf_process_stream_type(&sb), - atf_process_stream_type_redirect_path); - - atf_process_stream_fini(&sb); - atf_fs_path_fini(&path); -} - -/* --------------------------------------------------------------------- - * Test cases for the "status" type. - * --------------------------------------------------------------------- */ - -static void child_exit_success(void) ATF_DEFS_ATTRIBUTE_NORETURN; -static void child_exit_failure(void) ATF_DEFS_ATTRIBUTE_NORETURN; -static void child_sigkill(void) ATF_DEFS_ATTRIBUTE_NORETURN; -static void child_sigquit(void) ATF_DEFS_ATTRIBUTE_NORETURN; -static void child_sigterm(void) ATF_DEFS_ATTRIBUTE_NORETURN; - -void -child_exit_success(void) -{ - exit(EXIT_SUCCESS); -} - -void -child_exit_failure(void) -{ - exit(EXIT_FAILURE); -} - -void -child_sigkill(void) -{ - kill(getpid(), SIGKILL); - abort(); -} - -void -child_sigquit(void) -{ - kill(getpid(), SIGQUIT); - abort(); -} - -void -child_sigterm(void) -{ - kill(getpid(), SIGTERM); - abort(); -} - -static -int -fork_and_wait_child(void (*child_func)(void)) -{ - pid_t pid; - int status; - - pid = fork(); - ATF_REQUIRE(pid != -1); - if (pid == 0) { - status = 0; /* Silence compiler warnings */ - child_func(); - UNREACHABLE; - } else { - ATF_REQUIRE(waitpid(pid, &status, 0) != 0); - } - - return status; -} - -ATF_TC(status_exited); -ATF_TC_HEAD(status_exited, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the status type for processes " - "that exit cleanly"); -} -ATF_TC_BODY(status_exited, tc) -{ - { - const int rawstatus = fork_and_wait_child(child_exit_success); - atf_process_status_t s; - RE(atf_process_status_init(&s, rawstatus)); - ATF_CHECK(atf_process_status_exited(&s)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&s), EXIT_SUCCESS); - ATF_CHECK(!atf_process_status_signaled(&s)); - atf_process_status_fini(&s); - } - - { - const int rawstatus = fork_and_wait_child(child_exit_failure); - atf_process_status_t s; - RE(atf_process_status_init(&s, rawstatus)); - ATF_CHECK(atf_process_status_exited(&s)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&s), EXIT_FAILURE); - ATF_CHECK(!atf_process_status_signaled(&s)); - atf_process_status_fini(&s); - } -} - -ATF_TC(status_signaled); -ATF_TC_HEAD(status_signaled, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the status type for processes " - "that end due to a signal"); -} -ATF_TC_BODY(status_signaled, tc) -{ - { - const int rawstatus = fork_and_wait_child(child_sigkill); - atf_process_status_t s; - RE(atf_process_status_init(&s, rawstatus)); - ATF_CHECK(!atf_process_status_exited(&s)); - ATF_CHECK(atf_process_status_signaled(&s)); - ATF_CHECK_EQ(atf_process_status_termsig(&s), SIGKILL); - ATF_CHECK(!atf_process_status_coredump(&s)); - atf_process_status_fini(&s); - } - - { - const int rawstatus = fork_and_wait_child(child_sigterm); - atf_process_status_t s; - RE(atf_process_status_init(&s, rawstatus)); - ATF_CHECK(!atf_process_status_exited(&s)); - ATF_CHECK(atf_process_status_signaled(&s)); - ATF_CHECK_EQ(atf_process_status_termsig(&s), SIGTERM); - ATF_CHECK(!atf_process_status_coredump(&s)); - atf_process_status_fini(&s); - } -} - -ATF_TC(status_coredump); -ATF_TC_HEAD(status_coredump, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the status type for processes " - "that crash"); -} -ATF_TC_BODY(status_coredump, tc) -{ - struct rlimit rl; - rl.rlim_cur = RLIM_INFINITY; - rl.rlim_max = RLIM_INFINITY; - if (setrlimit(RLIMIT_CORE, &rl) == -1) - atf_tc_skip("Cannot unlimit the core file size; check limits " - "manually"); - - const int rawstatus = fork_and_wait_child(child_sigquit); - atf_process_status_t s; - RE(atf_process_status_init(&s, rawstatus)); - ATF_CHECK(!atf_process_status_exited(&s)); - ATF_CHECK(atf_process_status_signaled(&s)); - ATF_CHECK_EQ(atf_process_status_termsig(&s), SIGQUIT); - ATF_CHECK(atf_process_status_coredump(&s)); - atf_process_status_fini(&s); -} - -/* --------------------------------------------------------------------- - * Test cases for the "child" type. - * --------------------------------------------------------------------- */ - -static void child_report_pid(void *) ATF_DEFS_ATTRIBUTE_NORETURN; - -static -void -child_report_pid(void *v ATF_DEFS_ATTRIBUTE_UNUSED) -{ - const pid_t pid = getpid(); - if (write(STDOUT_FILENO, &pid, sizeof(pid)) != sizeof(pid)) - abort(); - fprintf(stderr, "Reporting %d to parent\n", (int)getpid()); - exit(EXIT_SUCCESS); -} - -ATF_TC(child_pid); -ATF_TC_HEAD(child_pid, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the correctness of the pid " - "stored in the child type"); -} -ATF_TC_BODY(child_pid, tc) -{ - atf_process_stream_t outsb, errsb; - atf_process_child_t child; - atf_process_status_t status; - pid_t pid; - - RE(atf_process_stream_init_capture(&outsb)); - RE(atf_process_stream_init_inherit(&errsb)); - - RE(atf_process_fork(&child, child_report_pid, &outsb, &errsb, NULL)); - ATF_CHECK_EQ(read(atf_process_child_stdout(&child), &pid, sizeof(pid)), - sizeof(pid)); - printf("Expected PID: %d\n", (int)atf_process_child_pid(&child)); - printf("Actual PID: %d\n", (int)pid); - ATF_CHECK_EQ(atf_process_child_pid(&child), pid); - - RE(atf_process_child_wait(&child, &status)); - atf_process_status_fini(&status); - - atf_process_stream_fini(&outsb); - atf_process_stream_fini(&errsb); -} - -static -void -child_loop(void *v ATF_DEFS_ATTRIBUTE_UNUSED) -{ - for (;;) - sleep(1); -} - -static -void -nop_signal(int sig ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -static -void -child_spawn_loop_and_wait_eintr(void *v ATF_DEFS_ATTRIBUTE_UNUSED) -{ - atf_process_child_t child; - atf_process_status_t status; - struct sigaction sighup, old_sighup; - -#define RE_ABORT(expr) \ - do { \ - atf_error_t _aux_err = expr; \ - if (atf_is_error(_aux_err)) { \ - atf_error_free(_aux_err); \ - abort(); \ - } \ - } while (0) - - { - atf_process_stream_t outsb, errsb; - - RE_ABORT(atf_process_stream_init_capture(&outsb)); - RE_ABORT(atf_process_stream_init_inherit(&errsb)); - RE_ABORT(atf_process_fork(&child, child_loop, &outsb, &errsb, NULL)); - atf_process_stream_fini(&outsb); - atf_process_stream_fini(&errsb); - } - - sighup.sa_handler = nop_signal; - sigemptyset(&sighup.sa_mask); - sighup.sa_flags = 0; - if (sigaction(SIGHUP, &sighup, &old_sighup) == -1) - abort(); - - printf("waiting\n"); - fflush(stdout); - - fprintf(stderr, "Child entering wait(2)\n"); - atf_error_t err = atf_process_child_wait(&child, &status); - fprintf(stderr, "Child's wait(2) terminated\n"); - if (!atf_is_error(err)) { - fprintf(stderr, "wait completed successfully (not interrupted)\n"); - abort(); - } - if (!atf_error_is(err, "libc")) { - fprintf(stderr, "wait did not raise libc_error\n"); - abort(); - } - if (atf_libc_error_code(err) != EINTR) { - fprintf(stderr, "libc_error is not EINTR\n"); - abort(); - } - atf_error_free(err); - - sigaction(SIGHUP, &old_sighup, NULL); - - fprintf(stderr, "Child is killing subchild\n"); - kill(atf_process_child_pid(&child), SIGTERM); - - RE_ABORT(atf_process_child_wait(&child, &status)); - atf_process_status_fini(&status); - -#undef RE_ABORT - - exit(EXIT_SUCCESS); -} - -ATF_TC(child_wait_eintr); -ATF_TC_HEAD(child_wait_eintr, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the interruption of the wait " - "method by an external signal, and the return of " - "an EINTR error"); - atf_tc_set_md_var(tc, "timeout", "30"); -} -ATF_TC_BODY(child_wait_eintr, tc) -{ - atf_process_child_t child; - atf_process_status_t status; - - { - atf_process_stream_t outsb, errsb; - - RE(atf_process_stream_init_capture(&outsb)); - RE(atf_process_stream_init_inherit(&errsb)); - RE(atf_process_fork(&child, child_spawn_loop_and_wait_eintr, - &outsb, &errsb, NULL)); - atf_process_stream_fini(&outsb); - atf_process_stream_fini(&errsb); - } - - { - /* Wait until the child process performs the wait call. This is - * racy, because the message we get from it is sent *before* - * doing the real system call... but I can't figure any other way - * to do this. */ - char buf[16]; - printf("Waiting for child to issue wait(2)\n"); - ATF_REQUIRE(read(atf_process_child_stdout(&child), buf, - sizeof(buf)) > 0); - sleep(1); - } - - printf("Interrupting child's wait(2) call\n"); - kill(atf_process_child_pid(&child), SIGHUP); - - printf("Waiting for child's completion\n"); - RE(atf_process_child_wait(&child, &status)); - ATF_REQUIRE(atf_process_status_exited(&status)); - ATF_REQUIRE_EQ(atf_process_status_exitstatus(&status), EXIT_SUCCESS); - atf_process_status_fini(&status); -} - -/* --------------------------------------------------------------------- - * Tests cases for the free functions. - * --------------------------------------------------------------------- */ - -static -void -do_exec(const atf_tc_t *tc, const char *helper_name, atf_process_status_t *s, - void (*prehook)(void)) -{ - atf_fs_path_t process_helpers; - const char *argv[3]; - - get_process_helpers_path(tc, true, &process_helpers); - - argv[0] = atf_fs_path_cstring(&process_helpers); - argv[1] = helper_name; - argv[2] = NULL; - printf("Executing %s %s\n", argv[0], argv[1]); - - RE(atf_process_exec_array(s, &process_helpers, argv, NULL, NULL, prehook)); - atf_fs_path_fini(&process_helpers); -} - -static -void -check_line(int fd, const char *exp) -{ - char *line = atf_utils_readline(fd); - ATF_CHECK(line != NULL); - ATF_CHECK_STREQ_MSG(exp, line, "read: '%s', expected: '%s'", line, exp); - free(line); -} - -ATF_TC(exec_failure); -ATF_TC_HEAD(exec_failure, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests execing a command"); -} -ATF_TC_BODY(exec_failure, tc) -{ - atf_process_status_t status; - - do_exec(tc, "exit-failure", &status, NULL); - ATF_CHECK(atf_process_status_exited(&status)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&status), EXIT_FAILURE); - atf_process_status_fini(&status); -} - -ATF_TC(exec_list); -ATF_TC_HEAD(exec_list, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests execing a command"); -} -ATF_TC_BODY(exec_list, tc) -{ - atf_fs_path_t process_helpers; - atf_list_t argv; - atf_process_status_t status; - - RE(atf_list_init(&argv)); - - get_process_helpers_path(tc, true, &process_helpers); - atf_list_append(&argv, strdup(atf_fs_path_cstring(&process_helpers)), true); - atf_list_append(&argv, strdup("echo"), true); - atf_list_append(&argv, strdup("test-message"), true); - { - atf_fs_path_t outpath; - atf_process_stream_t outsb; - - RE(atf_fs_path_init_fmt(&outpath, "stdout")); - RE(atf_process_stream_init_redirect_path(&outsb, &outpath)); - RE(atf_process_exec_list(&status, &process_helpers, &argv, &outsb, - NULL, NULL)); - atf_process_stream_fini(&outsb); - atf_fs_path_fini(&outpath); - } - atf_list_fini(&argv); - - ATF_CHECK(atf_process_status_exited(&status)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&status), EXIT_SUCCESS); - - { - int fd = open("stdout", O_RDONLY); - ATF_CHECK(fd != -1); - check_line(fd, "test-message"); - close(fd); - } - - atf_process_status_fini(&status); - atf_fs_path_fini(&process_helpers); -} - -static void -exit_early(void) -{ - exit(80); -} - -ATF_TC(exec_prehook); -ATF_TC_HEAD(exec_prehook, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests execing a command with a prehook"); -} -ATF_TC_BODY(exec_prehook, tc) -{ - atf_process_status_t status; - - do_exec(tc, "exit-success", &status, exit_early); - ATF_CHECK(atf_process_status_exited(&status)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&status), 80); - atf_process_status_fini(&status); -} - -ATF_TC(exec_success); -ATF_TC_HEAD(exec_success, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests execing a command"); -} -ATF_TC_BODY(exec_success, tc) -{ - atf_process_status_t status; - - do_exec(tc, "exit-success", &status, NULL); - ATF_CHECK(atf_process_status_exited(&status)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&status), EXIT_SUCCESS); - atf_process_status_fini(&status); -} - -static const int exit_v_null = 1; -static const int exit_v_notnull = 2; - -static -void -child_cookie(void *v) -{ - if (v == NULL) - exit(exit_v_null); - else - exit(exit_v_notnull); - - UNREACHABLE; -} - -ATF_TC(fork_cookie); -ATF_TC_HEAD(fork_cookie, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests forking a child, with " - "a null and non-null data cookie"); -} -ATF_TC_BODY(fork_cookie, tc) -{ - atf_process_stream_t outsb, errsb; - - RE(atf_process_stream_init_inherit(&outsb)); - RE(atf_process_stream_init_inherit(&errsb)); - - { - atf_process_child_t child; - atf_process_status_t status; - - RE(atf_process_fork(&child, child_cookie, &outsb, &errsb, NULL)); - RE(atf_process_child_wait(&child, &status)); - - ATF_CHECK(atf_process_status_exited(&status)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&status), exit_v_null); - - atf_process_status_fini(&status); - } - - { - atf_process_child_t child; - atf_process_status_t status; - int dummy_int; - - RE(atf_process_fork(&child, child_cookie, &outsb, &errsb, &dummy_int)); - RE(atf_process_child_wait(&child, &status)); - - ATF_CHECK(atf_process_status_exited(&status)); - ATF_CHECK_EQ(atf_process_status_exitstatus(&status), exit_v_notnull); - - atf_process_status_fini(&status); - } - - atf_process_stream_fini(&errsb); - atf_process_stream_fini(&outsb); -} - -#define TC_FORK_STREAMS(outlc, outuc, errlc, erruc) \ - ATF_TC(fork_out_ ## outlc ## _err_ ## errlc); \ - ATF_TC_HEAD(fork_out_ ## outlc ## _err_ ## errlc, tc) \ - { \ - atf_tc_set_md_var(tc, "descr", "Tests forking a child, with " \ - "stdout " #outlc " and stderr " #errlc); \ - } \ - ATF_TC_BODY(fork_out_ ## outlc ## _err_ ## errlc, tc) \ - { \ - struct outlc ## _stream out = outuc ## _STREAM(stdout_type); \ - struct errlc ## _stream err = erruc ## _STREAM(stderr_type); \ - do_fork(&out.m_base, &out, &err.m_base, &err); \ - } - -TC_FORK_STREAMS(capture, CAPTURE, capture, CAPTURE); -TC_FORK_STREAMS(capture, CAPTURE, connect, CONNECT); -TC_FORK_STREAMS(capture, CAPTURE, default, DEFAULT); -TC_FORK_STREAMS(capture, CAPTURE, inherit, INHERIT); -TC_FORK_STREAMS(capture, CAPTURE, redirect_fd, REDIRECT_FD); -TC_FORK_STREAMS(capture, CAPTURE, redirect_path, REDIRECT_PATH); -TC_FORK_STREAMS(connect, CONNECT, capture, CAPTURE); -TC_FORK_STREAMS(connect, CONNECT, connect, CONNECT); -TC_FORK_STREAMS(connect, CONNECT, default, DEFAULT); -TC_FORK_STREAMS(connect, CONNECT, inherit, INHERIT); -TC_FORK_STREAMS(connect, CONNECT, redirect_fd, REDIRECT_FD); -TC_FORK_STREAMS(connect, CONNECT, redirect_path, REDIRECT_PATH); -TC_FORK_STREAMS(default, DEFAULT, capture, CAPTURE); -TC_FORK_STREAMS(default, DEFAULT, connect, CONNECT); -TC_FORK_STREAMS(default, DEFAULT, default, DEFAULT); -TC_FORK_STREAMS(default, DEFAULT, inherit, INHERIT); -TC_FORK_STREAMS(default, DEFAULT, redirect_fd, REDIRECT_FD); -TC_FORK_STREAMS(default, DEFAULT, redirect_path, REDIRECT_PATH); -TC_FORK_STREAMS(inherit, INHERIT, capture, CAPTURE); -TC_FORK_STREAMS(inherit, INHERIT, connect, CONNECT); -TC_FORK_STREAMS(inherit, INHERIT, default, DEFAULT); -TC_FORK_STREAMS(inherit, INHERIT, inherit, INHERIT); -TC_FORK_STREAMS(inherit, INHERIT, redirect_fd, REDIRECT_FD); -TC_FORK_STREAMS(inherit, INHERIT, redirect_path, REDIRECT_PATH); -TC_FORK_STREAMS(redirect_fd, REDIRECT_FD, capture, CAPTURE); -TC_FORK_STREAMS(redirect_fd, REDIRECT_FD, connect, CONNECT); -TC_FORK_STREAMS(redirect_fd, REDIRECT_FD, default, DEFAULT); -TC_FORK_STREAMS(redirect_fd, REDIRECT_FD, inherit, INHERIT); -TC_FORK_STREAMS(redirect_fd, REDIRECT_FD, redirect_fd, REDIRECT_FD); -TC_FORK_STREAMS(redirect_fd, REDIRECT_FD, redirect_path, REDIRECT_PATH); -TC_FORK_STREAMS(redirect_path, REDIRECT_PATH, capture, CAPTURE); -TC_FORK_STREAMS(redirect_path, REDIRECT_PATH, connect, CONNECT); -TC_FORK_STREAMS(redirect_path, REDIRECT_PATH, default, DEFAULT); -TC_FORK_STREAMS(redirect_path, REDIRECT_PATH, inherit, INHERIT); -TC_FORK_STREAMS(redirect_path, REDIRECT_PATH, redirect_fd, REDIRECT_FD); -TC_FORK_STREAMS(redirect_path, REDIRECT_PATH, redirect_path, REDIRECT_PATH); - -#undef TC_FORK_STREAMS - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the tests for the "stream" type. */ - ATF_TP_ADD_TC(tp, stream_init_capture); - ATF_TP_ADD_TC(tp, stream_init_connect); - ATF_TP_ADD_TC(tp, stream_init_inherit); - ATF_TP_ADD_TC(tp, stream_init_redirect_fd); - ATF_TP_ADD_TC(tp, stream_init_redirect_path); - - /* Add the tests for the "status" type. */ - ATF_TP_ADD_TC(tp, status_exited); - ATF_TP_ADD_TC(tp, status_signaled); - ATF_TP_ADD_TC(tp, status_coredump); - - /* Add the tests for the "child" type. */ - ATF_TP_ADD_TC(tp, child_pid); - ATF_TP_ADD_TC(tp, child_wait_eintr); - - /* Add the tests for the free functions. */ - ATF_TP_ADD_TC(tp, exec_failure); - ATF_TP_ADD_TC(tp, exec_list); - ATF_TP_ADD_TC(tp, exec_prehook); - ATF_TP_ADD_TC(tp, exec_success); - ATF_TP_ADD_TC(tp, fork_cookie); - ATF_TP_ADD_TC(tp, fork_out_capture_err_capture); - ATF_TP_ADD_TC(tp, fork_out_capture_err_connect); - ATF_TP_ADD_TC(tp, fork_out_capture_err_default); - ATF_TP_ADD_TC(tp, fork_out_capture_err_inherit); - ATF_TP_ADD_TC(tp, fork_out_capture_err_redirect_fd); - ATF_TP_ADD_TC(tp, fork_out_capture_err_redirect_path); - ATF_TP_ADD_TC(tp, fork_out_connect_err_capture); - ATF_TP_ADD_TC(tp, fork_out_connect_err_connect); - ATF_TP_ADD_TC(tp, fork_out_connect_err_default); - ATF_TP_ADD_TC(tp, fork_out_connect_err_inherit); - ATF_TP_ADD_TC(tp, fork_out_connect_err_redirect_fd); - ATF_TP_ADD_TC(tp, fork_out_connect_err_redirect_path); - ATF_TP_ADD_TC(tp, fork_out_default_err_capture); - ATF_TP_ADD_TC(tp, fork_out_default_err_connect); - ATF_TP_ADD_TC(tp, fork_out_default_err_default); - ATF_TP_ADD_TC(tp, fork_out_default_err_inherit); - ATF_TP_ADD_TC(tp, fork_out_default_err_redirect_fd); - ATF_TP_ADD_TC(tp, fork_out_default_err_redirect_path); - ATF_TP_ADD_TC(tp, fork_out_inherit_err_capture); - ATF_TP_ADD_TC(tp, fork_out_inherit_err_connect); - ATF_TP_ADD_TC(tp, fork_out_inherit_err_default); - ATF_TP_ADD_TC(tp, fork_out_inherit_err_inherit); - ATF_TP_ADD_TC(tp, fork_out_inherit_err_redirect_fd); - ATF_TP_ADD_TC(tp, fork_out_inherit_err_redirect_path); - ATF_TP_ADD_TC(tp, fork_out_redirect_fd_err_capture); - ATF_TP_ADD_TC(tp, fork_out_redirect_fd_err_connect); - ATF_TP_ADD_TC(tp, fork_out_redirect_fd_err_default); - ATF_TP_ADD_TC(tp, fork_out_redirect_fd_err_inherit); - ATF_TP_ADD_TC(tp, fork_out_redirect_fd_err_redirect_fd); - ATF_TP_ADD_TC(tp, fork_out_redirect_fd_err_redirect_path); - ATF_TP_ADD_TC(tp, fork_out_redirect_path_err_capture); - ATF_TP_ADD_TC(tp, fork_out_redirect_path_err_connect); - ATF_TP_ADD_TC(tp, fork_out_redirect_path_err_default); - ATF_TP_ADD_TC(tp, fork_out_redirect_path_err_inherit); - ATF_TP_ADD_TC(tp, fork_out_redirect_path_err_redirect_fd); - ATF_TP_ADD_TC(tp, fork_out_redirect_path_err_redirect_path); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/sanity.c b/unit/atf-src/atf-c/detail/sanity.c deleted file mode 100644 index cfc8676beb..0000000000 --- a/unit/atf-src/atf-c/detail/sanity.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/sanity.h" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include -#include -#include - -static -void -fail(const char *fmt, ...) -{ - va_list ap; - char buf[4096]; - - va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - warnx("%s", buf); - warnx("%s", ""); - warnx("This is probably a bug in this application or one of the " - "libraries it uses. If you believe this problem is caused " - "by, or is related to " PACKAGE_STRING ", please report it " - "to " PACKAGE_BUGREPORT " and provide as many details as " - "possible describing how you got to this condition."); - - abort(); -} - -void -atf_sanity_inv(const char *file, int line, const char *cond) -{ - fail("Invariant check failed at %s:%d: %s", file, line, cond); -} - -void -atf_sanity_pre(const char *file, int line, const char *cond) -{ - fail("Precondition check failed at %s:%d: %s", file, line, cond); -} - -void -atf_sanity_post(const char *file, int line, const char *cond) -{ - fail("Postcondition check failed at %s:%d: %s", file, line, cond); -} diff --git a/unit/atf-src/atf-c/detail/sanity.h b/unit/atf-src/atf-c/detail/sanity.h deleted file mode 100644 index 33b5528e14..0000000000 --- a/unit/atf-src/atf-c/detail/sanity.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_SANITY_H) -#define ATF_C_DETAIL_SANITY_H - -void atf_sanity_inv(const char *, int, const char *); -void atf_sanity_pre(const char *, int, const char *); -void atf_sanity_post(const char *, int, const char *); - -#if !defined(NDEBUG) - -#define INV(x) \ - do { \ - if (!(x)) \ - atf_sanity_inv(__FILE__, __LINE__, #x); \ - } while (0) -#define PRE(x) \ - do { \ - if (!(x)) \ - atf_sanity_pre(__FILE__, __LINE__, #x); \ - } while (0) -#define POST(x) \ - do { \ - if (!(x)) \ - atf_sanity_post(__FILE__, __LINE__, #x); \ - } while (0) - -#else /* defined(NDEBUG) */ - -#define INV(x) \ - do { \ - (void)(x); \ - } while (0) - -#define PRE(x) \ - do { \ - (void)(x); \ - } while (0) - -#define POST(x) \ - do { \ - (void)(x); \ - } while (0) - -#endif /* !defined(NDEBUG) */ - -#define UNREACHABLE INV(0) - -#endif /* !defined(ATF_C_DETAIL_SANITY_H) */ diff --git a/unit/atf-src/atf-c/detail/sanity_test.c b/unit/atf-src/atf-c/detail/sanity_test.c deleted file mode 100644 index a986c32ae3..0000000000 --- a/unit/atf-src/atf-c/detail/sanity_test.c +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/sanity.h" - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/dynstr.h" -#include "atf-c/detail/process.h" -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -enum type { inv, pre, post, unreachable }; - -struct test_data { - enum type m_type; - bool m_cond; -}; - -static void do_test_child(void *) ATF_DEFS_ATTRIBUTE_NORETURN; - -static -void -do_test_child(void *v) -{ - struct test_data *td = v; - - switch (td->m_type) { - case inv: - INV(td->m_cond); - break; - - case pre: - PRE(td->m_cond); - break; - - case post: - POST(td->m_cond); - break; - - case unreachable: - if (!td->m_cond) - UNREACHABLE; - break; - } - - exit(EXIT_SUCCESS); -} - -static -void -do_test(enum type t, bool cond) -{ - atf_process_child_t child; - atf_process_status_t status; - int nlines; - char *lines[3]; - - { - atf_process_stream_t outsb, errsb; - struct test_data td = { t, cond }; - - RE(atf_process_stream_init_inherit(&outsb)); - RE(atf_process_stream_init_capture(&errsb)); - RE(atf_process_fork(&child, do_test_child, &outsb, &errsb, &td)); - atf_process_stream_fini(&errsb); - atf_process_stream_fini(&outsb); - } - - nlines = 0; - while (nlines < 3 && (lines[nlines] = - atf_utils_readline(atf_process_child_stderr(&child))) != NULL) - nlines++; - ATF_REQUIRE(nlines == 0 || nlines == 3); - - RE(atf_process_child_wait(&child, &status)); - if (!cond) { - ATF_REQUIRE(atf_process_status_signaled(&status)); - ATF_REQUIRE(atf_process_status_termsig(&status) == SIGABRT); - } else { - ATF_REQUIRE(atf_process_status_exited(&status)); - ATF_REQUIRE(atf_process_status_exitstatus(&status) == EXIT_SUCCESS); - } - atf_process_status_fini(&status); - - if (!cond) { - switch (t) { - case inv: - ATF_REQUIRE(atf_utils_grep_string("Invariant", lines[0])); - break; - - case pre: - ATF_REQUIRE(atf_utils_grep_string("Precondition", lines[0])); - break; - - case post: - ATF_REQUIRE(atf_utils_grep_string("Postcondition", lines[0])); - break; - - case unreachable: - ATF_REQUIRE(atf_utils_grep_string("Invariant", lines[0])); - break; - } - - ATF_REQUIRE(atf_utils_grep_string(__FILE__, lines[0])); - ATF_REQUIRE(atf_utils_grep_string(PACKAGE_BUGREPORT, lines[2])); - } - - while (nlines > 0) { - nlines--; - free(lines[nlines]); - } -} - -static -void -require_ndebug(void) -{ -#if defined(NDEBUG) - atf_tc_skip("Sanity checks not available; code built with -DNDEBUG"); -#endif -} - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(inv); -ATF_TC_HEAD(inv, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the INV macro"); -} -ATF_TC_BODY(inv, tc) -{ - require_ndebug(); - - do_test(inv, false); - do_test(inv, true); -} - -ATF_TC(pre); -ATF_TC_HEAD(pre, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the PRE macro"); -} -ATF_TC_BODY(pre, tc) -{ - require_ndebug(); - - do_test(pre, false); - do_test(pre, true); -} - -ATF_TC(post); -ATF_TC_HEAD(post, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the POST macro"); -} -ATF_TC_BODY(post, tc) -{ - require_ndebug(); - - do_test(post, false); - do_test(post, true); -} - -ATF_TC(unreachable); -ATF_TC_HEAD(unreachable, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the UNREACHABLE macro"); -} -ATF_TC_BODY(unreachable, tc) -{ - require_ndebug(); - - do_test(unreachable, false); - do_test(unreachable, true); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, inv); - ATF_TP_ADD_TC(tp, pre); - ATF_TP_ADD_TC(tp, post); - ATF_TP_ADD_TC(tp, unreachable); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/test_helpers.c b/unit/atf-src/atf-c/detail/test_helpers.c deleted file mode 100644 index 827d46eeb8..0000000000 --- a/unit/atf-src/atf-c/detail/test_helpers.c +++ /dev/null @@ -1,147 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/test_helpers.h" - -#include -#include -#include -#include - -#include - -#include "atf-c/build.h" -#include "atf-c/check.h" -#include "atf-c/detail/dynstr.h" -#include "atf-c/detail/env.h" -#include "atf-c/detail/fs.h" -#include "atf-c/detail/process.h" -#include "atf-c/error.h" - -bool -build_check_c_o(const char *path) -{ - bool success; - atf_dynstr_t iflag; - const char *optargs[4]; - - RE(atf_dynstr_init_fmt(&iflag, "-I%s", atf_env_get_with_default( - "ATF_INCLUDEDIR", ATF_INCLUDEDIR))); - - optargs[0] = atf_dynstr_cstring(&iflag); - optargs[1] = "-Wall"; - optargs[2] = "-Werror"; - optargs[3] = NULL; - - RE(atf_check_build_c_o(path, "test.o", optargs, &success)); - - atf_dynstr_fini(&iflag); - - return success; -} - -bool -build_check_c_o_srcdir(const atf_tc_t *tc, const char *sfile) -{ - atf_fs_path_t path; - - RE(atf_fs_path_init_fmt(&path, "%s/%s", - atf_tc_get_config_var(tc, "srcdir"), sfile)); - const bool result = build_check_c_o(atf_fs_path_cstring(&path)); - atf_fs_path_fini(&path); - return result; -} - -void -header_check(const char *hdrname) -{ - FILE *srcfile; - char failmsg[128]; - - srcfile = fopen("test.c", "w"); - ATF_REQUIRE(srcfile != NULL); - fprintf(srcfile, "#include <%s>\n", hdrname); - fclose(srcfile); - - snprintf(failmsg, sizeof(failmsg), - "Header check failed; %s is not self-contained", hdrname); - - if (!build_check_c_o("test.c")) - atf_tc_fail("%s", failmsg); -} - -void -get_process_helpers_path(const atf_tc_t *tc, const bool is_detail, - atf_fs_path_t *path) -{ - RE(atf_fs_path_init_fmt(path, "%s/%sprocess_helpers", - atf_tc_get_config_var(tc, "srcdir"), - is_detail ? "" : "detail/")); -} - -struct run_h_tc_data { - atf_tc_t *m_tc; - const char *m_resname; -}; - -static -void -run_h_tc_child(void *v) -{ - struct run_h_tc_data *data = (struct run_h_tc_data *)v; - - RE(atf_tc_run(data->m_tc, data->m_resname)); -} - -/* TODO: Investigate if it's worth to add this functionality as part of - * the public API. I.e. a function to easily run a test case body in a - * subprocess. */ -void -run_h_tc(atf_tc_t *tc, const char *outname, const char *errname, - const char *resname) -{ - atf_fs_path_t outpath, errpath; - atf_process_stream_t outb, errb; - atf_process_child_t child; - atf_process_status_t status; - - RE(atf_fs_path_init_fmt(&outpath, outname)); - RE(atf_fs_path_init_fmt(&errpath, errname)); - - struct run_h_tc_data data = { tc, resname }; - - RE(atf_process_stream_init_redirect_path(&outb, &outpath)); - RE(atf_process_stream_init_redirect_path(&errb, &errpath)); - RE(atf_process_fork(&child, run_h_tc_child, &outb, &errb, &data)); - atf_process_stream_fini(&errb); - atf_process_stream_fini(&outb); - - RE(atf_process_child_wait(&child, &status)); - ATF_CHECK(atf_process_status_exited(&status)); - atf_process_status_fini(&status); - - atf_fs_path_fini(&errpath); - atf_fs_path_fini(&outpath); -} diff --git a/unit/atf-src/atf-c/detail/test_helpers.h b/unit/atf-src/atf-c/detail/test_helpers.h deleted file mode 100644 index a601c293ff..0000000000 --- a/unit/atf-src/atf-c/detail/test_helpers.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if defined(ATF_C_DETAIL_TEST_HELPERS_H) -# error "Cannot include test_helpers.h more than once." -#else -# define ATF_C_DETAIL_TEST_HELPERS_H -#endif - -#include - -#include - -#include -#include - -struct atf_dynstr; -struct atf_fs_path; - -#define CE(stm) ATF_CHECK(!atf_is_error(stm)) -#define RE(stm) ATF_REQUIRE(!atf_is_error(stm)) - -#define HEADER_TC(name, hdrname) \ - ATF_TC(name); \ - ATF_TC_HEAD(name, tc) \ - { \ - atf_tc_set_md_var(tc, "descr", "Tests that the " hdrname " file can " \ - "be included on its own, without any prerequisites"); \ - } \ - ATF_TC_BODY(name, tc) \ - { \ - header_check(hdrname); \ - } - -#define BUILD_TC(name, sfile, descr, failmsg) \ - ATF_TC(name); \ - ATF_TC_HEAD(name, tc) \ - { \ - atf_tc_set_md_var(tc, "descr", descr); \ - } \ - ATF_TC_BODY(name, tc) \ - { \ - if (!build_check_c_o_srcdir(tc, sfile)) \ - atf_tc_fail("%s", failmsg); \ - } - -bool build_check_c_o(const char *); -bool build_check_c_o_srcdir(const atf_tc_t *, const char *); -void header_check(const char *); -void get_process_helpers_path(const atf_tc_t *, const bool, - struct atf_fs_path *); -bool read_line(int, struct atf_dynstr *); -void run_h_tc(atf_tc_t *, const char *, const char *, const char *); diff --git a/unit/atf-src/atf-c/detail/text.c b/unit/atf-src/atf-c/detail/text.c deleted file mode 100644 index 3b1d7e7fe2..0000000000 --- a/unit/atf-src/atf-c/detail/text.c +++ /dev/null @@ -1,180 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/text.h" - -#include -#include -#include -#include - -#include "atf-c/detail/dynstr.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" - -atf_error_t -atf_text_for_each_word(const char *instr, const char *sep, - atf_error_t (*func)(const char *, void *), - void *data) -{ - atf_error_t err; - char *str, *str2, *last; - - str = strdup(instr); - if (str == NULL) { - err = atf_no_memory_error(); - goto out; - } - - err = atf_no_error(); - str2 = strtok_r(str, sep, &last); - while (str2 != NULL && !atf_is_error(err)) { - err = func(str2, data); - str2 = strtok_r(NULL, sep, &last); - } - - free(str); -out: - return err; -} - -atf_error_t -atf_text_format(char **dest, const char *fmt, ...) -{ - atf_error_t err; - va_list ap; - - va_start(ap, fmt); - err = atf_text_format_ap(dest, fmt, ap); - va_end(ap); - - return err; -} - -atf_error_t -atf_text_format_ap(char **dest, const char *fmt, va_list ap) -{ - atf_error_t err; - atf_dynstr_t tmp; - va_list ap2; - - va_copy(ap2, ap); - err = atf_dynstr_init_ap(&tmp, fmt, ap2); - va_end(ap2); - if (!atf_is_error(err)) - *dest = atf_dynstr_fini_disown(&tmp); - - return err; -} - -atf_error_t -atf_text_split(const char *str, const char *delim, atf_list_t *words) -{ - atf_error_t err; - const char *end; - const char *iter; - - err = atf_list_init(words); - if (atf_is_error(err)) - goto err; - - end = str + strlen(str); - INV(*end == '\0'); - iter = str; - while (iter < end) { - const char *ptr; - - INV(iter != NULL); - ptr = strstr(iter, delim); - if (ptr == NULL) - ptr = end; - - INV(ptr >= iter); - if (ptr > iter) { - atf_dynstr_t word; - - err = atf_dynstr_init_raw(&word, iter, ptr - iter); - if (atf_is_error(err)) - goto err_list; - - err = atf_list_append(words, atf_dynstr_fini_disown(&word), true); - if (atf_is_error(err)) - goto err_list; - } - - iter = ptr + strlen(delim); - } - - INV(!atf_is_error(err)); - return err; - -err_list: - atf_list_fini(words); -err: - return err; -} - -atf_error_t -atf_text_to_bool(const char *str, bool *b) -{ - atf_error_t err; - - if (strcasecmp(str, "yes") == 0 || - strcasecmp(str, "true") == 0) { - *b = true; - err = atf_no_error(); - } else if (strcasecmp(str, "no") == 0 || - strcasecmp(str, "false") == 0) { - *b = false; - err = atf_no_error(); - } else { - /* XXX Not really a libc error. */ - err = atf_libc_error(EINVAL, "Cannot convert string '%s' " - "to boolean", str); - } - - return err; -} - -atf_error_t -atf_text_to_long(const char *str, long *l) -{ - atf_error_t err; - char *endptr; - long tmp; - - errno = 0; - tmp = strtol(str, &endptr, 10); - if (str[0] == '\0' || *endptr != '\0') - err = atf_libc_error(EINVAL, "'%s' is not a number", str); - else if (errno == ERANGE || (tmp == LONG_MAX || tmp == LONG_MIN)) - err = atf_libc_error(ERANGE, "'%s' is out of range", str); - else { - *l = tmp; - err = atf_no_error(); - } - - return err; -} diff --git a/unit/atf-src/atf-c/detail/text.h b/unit/atf-src/atf-c/detail/text.h deleted file mode 100644 index b2820b6b7c..0000000000 --- a/unit/atf-src/atf-c/detail/text.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_TEXT_H) -#define ATF_C_DETAIL_TEXT_H - -#include -#include - -#include -#include - -atf_error_t atf_text_for_each_word(const char *, const char *, - atf_error_t (*)(const char *, void *), - void *); -atf_error_t atf_text_format(char **, const char *, ...); -atf_error_t atf_text_format_ap(char **, const char *, va_list); -atf_error_t atf_text_split(const char *, const char *, atf_list_t *); -atf_error_t atf_text_to_bool(const char *, bool *); -atf_error_t atf_text_to_long(const char *, long *); - -#endif /* !defined(ATF_C_DETAIL_TEXT_H) */ diff --git a/unit/atf-src/atf-c/detail/text_test.c b/unit/atf-src/atf-c/detail/text_test.c deleted file mode 100644 index 5d6c8e56f4..0000000000 --- a/unit/atf-src/atf-c/detail/text_test.c +++ /dev/null @@ -1,421 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/text.h" - -#include -#include -#include - -#include - -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -#define REQUIRE_ERROR(exp) \ - do { \ - atf_error_t err = exp; \ - ATF_REQUIRE(atf_is_error(err)); \ - atf_error_free(err); \ - } while (0) - -static -size_t -array_size(const char *words[]) -{ - size_t count; - const char **word; - - count = 0; - for (word = words; *word != NULL; word++) - count++; - - return count; -} - -static -void -check_split(const char *str, const char *delim, const char *words[]) -{ - atf_list_t list; - const char **word; - size_t i; - - printf("Splitting '%s' with delimiter '%s'\n", str, delim); - CE(atf_text_split(str, delim, &list)); - - printf("Expecting %zd words\n", array_size(words)); - ATF_CHECK_EQ(atf_list_size(&list), array_size(words)); - - for (word = words, i = 0; *word != NULL; word++, i++) { - printf("Word at position %zd should be '%s'\n", i, words[i]); - ATF_CHECK_STREQ((const char *)atf_list_index_c(&list, i), words[i]); - } - - atf_list_fini(&list); -} - -static -atf_error_t -word_acum(const char *word, void *data) -{ - char *acum = data; - - strcat(acum, word); - - return atf_no_error(); -} - -static -atf_error_t -word_count(const char *word ATF_DEFS_ATTRIBUTE_UNUSED, void *data) -{ - size_t *counter = data; - - (*counter)++; - - return atf_no_error(); -} - -struct fail_at { - int failpos; - int curpos; -}; - -static -atf_error_t -word_fail_at(const char *word ATF_DEFS_ATTRIBUTE_UNUSED, void *data) -{ - struct fail_at *fa = data; - atf_error_t err; - - if (fa->failpos == fa->curpos) - err = atf_no_memory_error(); /* Just a random error. */ - else { - fa->curpos++; - err = atf_no_error(); - } - - return err; -} - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(for_each_word); -ATF_TC_HEAD(for_each_word, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_text_for_each_word" - "function"); -} -ATF_TC_BODY(for_each_word, tc) -{ - size_t cnt; - char acum[1024]; - - cnt = 0; - strcpy(acum, ""); - RE(atf_text_for_each_word("1 2 3", " ", word_count, &cnt)); - RE(atf_text_for_each_word("1 2 3", " ", word_acum, acum)); - ATF_REQUIRE(cnt == 3); - ATF_REQUIRE(strcmp(acum, "123") == 0); - - cnt = 0; - strcpy(acum, ""); - RE(atf_text_for_each_word("1 2 3", ".", word_count, &cnt)); - RE(atf_text_for_each_word("1 2 3", ".", word_acum, acum)); - ATF_REQUIRE(cnt == 1); - ATF_REQUIRE(strcmp(acum, "1 2 3") == 0); - - cnt = 0; - strcpy(acum, ""); - RE(atf_text_for_each_word("1 2 3 4 5", " ", word_count, &cnt)); - RE(atf_text_for_each_word("1 2 3 4 5", " ", word_acum, acum)); - ATF_REQUIRE(cnt == 5); - ATF_REQUIRE(strcmp(acum, "12345") == 0); - - cnt = 0; - strcpy(acum, ""); - RE(atf_text_for_each_word("1 2.3.4 5", " .", word_count, &cnt)); - RE(atf_text_for_each_word("1 2.3.4 5", " .", word_acum, acum)); - ATF_REQUIRE(cnt == 5); - ATF_REQUIRE(strcmp(acum, "12345") == 0); - - { - struct fail_at fa; - fa.failpos = 3; - fa.curpos = 0; - atf_error_t err = atf_text_for_each_word("a b c d e", " ", - word_fail_at, &fa); - ATF_REQUIRE(atf_is_error(err)); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - ATF_REQUIRE(fa.curpos == 3); - atf_error_free(err); - } -} - -ATF_TC(format); -ATF_TC_HEAD(format, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of free-form " - "strings using a variable parameters list"); -} -ATF_TC_BODY(format, tc) -{ - char *str; - atf_error_t err; - - err = atf_text_format(&str, "%s %s %d", "Test", "string", 1); - ATF_REQUIRE(!atf_is_error(err)); - ATF_REQUIRE(strcmp(str, "Test string 1") == 0); - free(str); -} - -static -void -format_ap(char **dest, const char *fmt, ...) -{ - va_list ap; - atf_error_t err; - - va_start(ap, fmt); - err = atf_text_format_ap(dest, fmt, ap); - va_end(ap); - - ATF_REQUIRE(!atf_is_error(err)); -} - -ATF_TC(format_ap); -ATF_TC_HEAD(format_ap, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of free-form " - "strings using a va_list argument"); -} -ATF_TC_BODY(format_ap, tc) -{ - char *str; - - format_ap(&str, "%s %s %d", "Test", "string", 1); - ATF_REQUIRE(strcmp(str, "Test string 1") == 0); - free(str); -} - -ATF_TC(split); -ATF_TC_HEAD(split, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the split function"); -} -ATF_TC_BODY(split, tc) -{ - { - const char *words[] = { NULL }; - check_split("", " ", words); - } - - { - const char *words[] = { NULL }; - check_split(" ", " ", words); - } - - { - const char *words[] = { NULL }; - check_split(" ", " ", words); - } - - { - const char *words[] = { "a", "b", NULL }; - check_split("a b", " ", words); - } - - { - const char *words[] = { "a", "b", "c", "d", NULL }; - check_split("a b c d", " ", words); - } - - { - const char *words[] = { "foo", "bar", NULL }; - check_split("foo bar", " ", words); - } - - { - const char *words[] = { "foo", "bar", "baz", "foobar", NULL }; - check_split("foo bar baz foobar", " ", words); - } - - { - const char *words[] = { "foo", "bar", NULL }; - check_split(" foo bar", " ", words); - } - - { - const char *words[] = { "foo", "bar", NULL }; - check_split("foo bar", " ", words); - } - - { - const char *words[] = { "foo", "bar", NULL }; - check_split("foo bar ", " ", words); - } - - { - const char *words[] = { "foo", "bar", NULL }; - check_split(" foo bar ", " ", words); - } -} - -ATF_TC(split_delims); -ATF_TC_HEAD(split_delims, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the split function using " - "different delimiters"); -} -ATF_TC_BODY(split_delims, tc) -{ - - { - const char *words[] = { NULL }; - check_split("", "/", words); - } - - { - const char *words[] = { " ", NULL }; - check_split(" ", "/", words); - } - - { - const char *words[] = { " ", NULL }; - check_split(" ", "/", words); - } - - { - const char *words[] = { "a", "b", NULL }; - check_split("a/b", "/", words); - } - - { - const char *words[] = { "a", "bcd", "ef", NULL }; - check_split("aLONGDELIMbcdLONGDELIMef", "LONGDELIM", words); - } -} - -ATF_TC(to_bool); -ATF_TC_HEAD(to_bool, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_text_to_bool function"); -} -ATF_TC_BODY(to_bool, tc) -{ - bool b; - - RE(atf_text_to_bool("true", &b)); ATF_REQUIRE(b); - RE(atf_text_to_bool("TRUE", &b)); ATF_REQUIRE(b); - RE(atf_text_to_bool("yes", &b)); ATF_REQUIRE(b); - RE(atf_text_to_bool("YES", &b)); ATF_REQUIRE(b); - - RE(atf_text_to_bool("false", &b)); ATF_REQUIRE(!b); - RE(atf_text_to_bool("FALSE", &b)); ATF_REQUIRE(!b); - RE(atf_text_to_bool("no", &b)); ATF_REQUIRE(!b); - RE(atf_text_to_bool("NO", &b)); ATF_REQUIRE(!b); - - b = false; - REQUIRE_ERROR(atf_text_to_bool("", &b)); - ATF_REQUIRE(!b); - b = true; - REQUIRE_ERROR(atf_text_to_bool("", &b)); - ATF_REQUIRE(b); - - b = false; - REQUIRE_ERROR(atf_text_to_bool("tru", &b)); - ATF_REQUIRE(!b); - b = true; - REQUIRE_ERROR(atf_text_to_bool("tru", &b)); - ATF_REQUIRE(b); - - b = false; - REQUIRE_ERROR(atf_text_to_bool("true2", &b)); - ATF_REQUIRE(!b); - b = true; - REQUIRE_ERROR(atf_text_to_bool("true2", &b)); - ATF_REQUIRE(b); - - b = false; - REQUIRE_ERROR(atf_text_to_bool("fals", &b)); - ATF_REQUIRE(!b); - b = true; - REQUIRE_ERROR(atf_text_to_bool("fals", &b)); - ATF_REQUIRE(b); - - b = false; - REQUIRE_ERROR(atf_text_to_bool("false2", &b)); - ATF_REQUIRE(!b); - b = true; - REQUIRE_ERROR(atf_text_to_bool("false2", &b)); - ATF_REQUIRE(b); -} - -ATF_TC(to_long); -ATF_TC_HEAD(to_long, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the atf_text_to_long function"); -} -ATF_TC_BODY(to_long, tc) -{ - long l; - - RE(atf_text_to_long("0", &l)); ATF_REQUIRE_EQ(l, 0); - RE(atf_text_to_long("-5", &l)); ATF_REQUIRE_EQ(l, -5); - RE(atf_text_to_long("5", &l)); ATF_REQUIRE_EQ(l, 5); - RE(atf_text_to_long("123456789", &l)); ATF_REQUIRE_EQ(l, 123456789); - - l = 1212; - REQUIRE_ERROR(atf_text_to_long("", &l)); - ATF_REQUIRE_EQ(l, 1212); - REQUIRE_ERROR(atf_text_to_long("foo", &l)); - ATF_REQUIRE_EQ(l, 1212); - REQUIRE_ERROR(atf_text_to_long("1234x", &l)); - ATF_REQUIRE_EQ(l, 1212); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, for_each_word); - ATF_TP_ADD_TC(tp, format); - ATF_TP_ADD_TC(tp, format_ap); - ATF_TP_ADD_TC(tp, split); - ATF_TP_ADD_TC(tp, split_delims); - ATF_TP_ADD_TC(tp, to_bool); - ATF_TP_ADD_TC(tp, to_long); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/tp_main.c b/unit/atf-src/atf-c/detail/tp_main.c deleted file mode 100644 index 229615b481..0000000000 --- a/unit/atf-src/atf-c/detail/tp_main.c +++ /dev/null @@ -1,615 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include -#include -#include -#include -#include - -#include "atf-c/detail/dynstr.h" -#include "atf-c/detail/env.h" -#include "atf-c/detail/fs.h" -#include "atf-c/detail/map.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" -#include "atf-c/tc.h" -#include "atf-c/tp.h" -#include "atf-c/utils.h" - -#if defined(HAVE_GNU_GETOPT) -# define GETOPT_POSIX "+" -#else -# define GETOPT_POSIX "" -#endif - -static const char *progname = NULL; - -/* This prototype is provided by macros.h during instantiation of the test - * program, so it can be kept private. Don't know if that's the best idea - * though. */ -int atf_tp_main(int, char **, atf_error_t (*)(atf_tp_t *)); - -enum tc_part { - BODY, - CLEANUP, -}; - -/* --------------------------------------------------------------------- - * The "usage" and "user" error types. - * --------------------------------------------------------------------- */ - -#define FREE_FORM_ERROR(name) \ - struct name ## _error_data { \ - char m_what[2048]; \ - }; \ - \ - static \ - void \ - name ## _format(const atf_error_t err, char *buf, size_t buflen) \ - { \ - const struct name ## _error_data *data; \ - \ - PRE(atf_error_is(err, #name)); \ - \ - data = atf_error_data(err); \ - snprintf(buf, buflen, "%s", data->m_what); \ - } \ - \ - static \ - atf_error_t \ - name ## _error(const char *fmt, ...) \ - { \ - atf_error_t err; \ - struct name ## _error_data data; \ - va_list ap; \ - \ - va_start(ap, fmt); \ - vsnprintf(data.m_what, sizeof(data.m_what), fmt, ap); \ - va_end(ap); \ - \ - err = atf_error_new(#name, &data, sizeof(data), name ## _format); \ - \ - return err; \ - } - -FREE_FORM_ERROR(usage); -FREE_FORM_ERROR(user); - -/* --------------------------------------------------------------------- - * Printing functions. - * --------------------------------------------------------------------- */ - -static -void -print_error(const atf_error_t err) -{ - char buf[4096]; - - PRE(atf_is_error(err)); - - atf_error_format(err, buf, sizeof(buf)); - fprintf(stderr, "%s: ERROR: %s\n", progname, buf); - - if (atf_error_is(err, "usage")) - fprintf(stderr, "%s: See atf-test-program(1) for usage details.\n", - progname); -} - -static -void -print_warning(const char *message) -{ - fprintf(stderr, "%s: WARNING: %s\n", progname, message); -} - -/* --------------------------------------------------------------------- - * Options handling. - * --------------------------------------------------------------------- */ - -struct params { - bool m_do_list; - atf_fs_path_t m_srcdir; - char *m_tcname; - enum tc_part m_tcpart; - atf_fs_path_t m_resfile; - atf_map_t m_config; -}; - -static -atf_error_t -argv0_to_dir(const char *argv0, atf_fs_path_t *dir) -{ - atf_error_t err; - atf_fs_path_t temp; - - err = atf_fs_path_init_fmt(&temp, "%s", argv0); - if (atf_is_error(err)) - goto out; - - err = atf_fs_path_branch_path(&temp, dir); - - atf_fs_path_fini(&temp); -out: - return err; -} - -static -atf_error_t -params_init(struct params *p, const char *argv0) -{ - atf_error_t err; - - p->m_do_list = false; - p->m_tcname = NULL; - p->m_tcpart = BODY; - - err = argv0_to_dir(argv0, &p->m_srcdir); - if (atf_is_error(err)) - return err; - - err = atf_fs_path_init_fmt(&p->m_resfile, "/dev/stdout"); - if (atf_is_error(err)) { - atf_fs_path_fini(&p->m_srcdir); - return err; - } - - err = atf_map_init(&p->m_config); - if (atf_is_error(err)) { - atf_fs_path_fini(&p->m_resfile); - atf_fs_path_fini(&p->m_srcdir); - return err; - } - - return err; -} - -static -void -params_fini(struct params *p) -{ - atf_map_fini(&p->m_config); - atf_fs_path_fini(&p->m_resfile); - atf_fs_path_fini(&p->m_srcdir); - if (p->m_tcname != NULL) - free(p->m_tcname); -} - -static -atf_error_t -parse_vflag(char *arg, atf_map_t *config) -{ - atf_error_t err; - char *split; - - split = strchr(arg, '='); - if (split == NULL) { - err = usage_error("-v requires an argument of the form var=value"); - goto out; - } - - *split = '\0'; - split++; - - err = atf_map_insert(config, arg, split, false); - -out: - return err; -} - -static -atf_error_t -replace_path_param(atf_fs_path_t *param, const char *value) -{ - atf_error_t err; - atf_fs_path_t temp; - - err = atf_fs_path_init_fmt(&temp, "%s", value); - if (!atf_is_error(err)) { - atf_fs_path_fini(param); - *param = temp; - } - - return err; -} - -/* --------------------------------------------------------------------- - * Test case listing. - * --------------------------------------------------------------------- */ - -static -void -list_tcs(const atf_tp_t *tp) -{ - const atf_tc_t *const *tcs; - const atf_tc_t *const *tcsptr; - - printf("Content-Type: application/X-atf-tp; version=\"1\"\n\n"); - - tcs = atf_tp_get_tcs(tp); - INV(tcs != NULL); /* Should be checked. */ - for (tcsptr = tcs; *tcsptr != NULL; tcsptr++) { - const atf_tc_t *tc = *tcsptr; - char **vars = atf_tc_get_md_vars(tc); - char **ptr; - - INV(vars != NULL); /* Should be checked. */ - - if (tcsptr != tcs) /* Not first. */ - printf("\n"); - - for (ptr = vars; *ptr != NULL; ptr += 2) { - if (strcmp(*ptr, "ident") == 0) { - printf("ident: %s\n", *(ptr + 1)); - break; - } - } - - for (ptr = vars; *ptr != NULL; ptr += 2) { - if (strcmp(*ptr, "ident") != 0) { - printf("%s: %s\n", *ptr, *(ptr + 1)); - } - } - - atf_utils_free_charpp(vars); - } -#define UNCONST(a) ((void *)(unsigned long)(const void *)(a)) - free(UNCONST(tcs)); -#undef UNCONST -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -static -atf_error_t -handle_tcarg(const char *tcarg, char **tcname, enum tc_part *tcpart) -{ - atf_error_t err; - - err = atf_no_error(); - - *tcname = strdup(tcarg); - if (*tcname == NULL) { - err = atf_no_memory_error(); - goto out; - } - - char *delim = strchr(*tcname, ':'); - if (delim != NULL) { - *delim = '\0'; - - delim++; - if (strcmp(delim, "body") == 0) { - *tcpart = BODY; - } else if (strcmp(delim, "cleanup") == 0) { - *tcpart = CLEANUP; - } else { - err = usage_error("Invalid test case part `%s'", delim); - goto out; - } - } - -out: - return err; -} - -static -atf_error_t -process_params(int argc, char **argv, struct params *p) -{ - atf_error_t err; - int ch; - int old_opterr; - - err = params_init(p, argv[0]); - if (atf_is_error(err)) - goto out; - - old_opterr = opterr; - opterr = 0; - while (!atf_is_error(err) && - (ch = getopt(argc, argv, GETOPT_POSIX ":lr:s:v:")) != -1) { - switch (ch) { - case 'l': - p->m_do_list = true; - break; - - case 'r': - err = replace_path_param(&p->m_resfile, optarg); - break; - - case 's': - err = replace_path_param(&p->m_srcdir, optarg); - break; - - case 'v': - err = parse_vflag(optarg, &p->m_config); - break; - - case ':': - err = usage_error("Option -%c requires an argument.", optopt); - break; - - case '?': - default: - err = usage_error("Unknown option -%c.", optopt); - } - } - argc -= optind; - argv += optind; - - /* Clear getopt state just in case the test wants to use it. */ - opterr = old_opterr; - optind = 1; -#if defined(HAVE_OPTRESET) - optreset = 1; -#endif - - if (!atf_is_error(err)) { - if (p->m_do_list) { - if (argc > 0) - err = usage_error("Cannot provide test case names with -l"); - } else { - if (argc == 0) - err = usage_error("Must provide a test case name"); - else if (argc == 1) - err = handle_tcarg(argv[0], &p->m_tcname, &p->m_tcpart); - else if (argc > 1) { - err = usage_error("Cannot provide more than one test case " - "name"); - } - } - } - - if (atf_is_error(err)) - params_fini(p); - -out: - return err; -} - -static -atf_error_t -srcdir_strip_libtool(atf_fs_path_t *srcdir) -{ - atf_error_t err; - atf_fs_path_t parent; - - err = atf_fs_path_branch_path(srcdir, &parent); - if (atf_is_error(err)) - goto out; - - atf_fs_path_fini(srcdir); - *srcdir = parent; - - INV(!atf_is_error(err)); -out: - return err; -} - -static -atf_error_t -handle_srcdir(struct params *p) -{ - atf_error_t err; - atf_dynstr_t leafname; - atf_fs_path_t exe, srcdir; - bool b; - - err = atf_fs_path_copy(&srcdir, &p->m_srcdir); - if (atf_is_error(err)) - goto out; - - if (!atf_fs_path_is_absolute(&srcdir)) { - atf_fs_path_t srcdirabs; - - err = atf_fs_path_to_absolute(&srcdir, &srcdirabs); - if (atf_is_error(err)) - goto out_srcdir; - - atf_fs_path_fini(&srcdir); - srcdir = srcdirabs; - } - - err = atf_fs_path_leaf_name(&srcdir, &leafname); - if (atf_is_error(err)) - goto out_srcdir; - else { - const bool libs = atf_equal_dynstr_cstring(&leafname, ".libs"); - atf_dynstr_fini(&leafname); - - if (libs) { - err = srcdir_strip_libtool(&srcdir); - if (atf_is_error(err)) - goto out; - } - } - - err = atf_fs_path_copy(&exe, &srcdir); - if (atf_is_error(err)) - goto out_srcdir; - - err = atf_fs_path_append_fmt(&exe, "%s", progname); - if (atf_is_error(err)) - goto out_exe; - - err = atf_fs_exists(&exe, &b); - if (!atf_is_error(err)) { - if (b) { - err = atf_map_insert(&p->m_config, "srcdir", - strdup(atf_fs_path_cstring(&srcdir)), true); - } else { - err = user_error("Cannot find the test program in the source " - "directory `%s'", atf_fs_path_cstring(&srcdir)); - } - } - -out_exe: - atf_fs_path_fini(&exe); -out_srcdir: - atf_fs_path_fini(&srcdir); -out: - return err; -} - -static -atf_error_t -run_tc(const atf_tp_t *tp, struct params *p, int *exitcode) -{ - atf_error_t err; - - err = atf_no_error(); - - if (!atf_tp_has_tc(tp, p->m_tcname)) { - err = usage_error("Unknown test case `%s'", p->m_tcname); - goto out; - } - - if (!atf_env_has("__RUNNING_INSIDE_ATF_RUN") || strcmp(atf_env_get( - "__RUNNING_INSIDE_ATF_RUN"), "internal-yes-value") != 0) - { - print_warning("Running test cases outside of kyua(1) is unsupported"); - print_warning("No isolation nor timeout control is being applied; you " - "may get unexpected failures; see atf-test-case(4)"); - } - - switch (p->m_tcpart) { - case BODY: - err = atf_tp_run(tp, p->m_tcname, atf_fs_path_cstring(&p->m_resfile)); - if (atf_is_error(err)) { - /* TODO: Handle error */ - *exitcode = EXIT_FAILURE; - atf_error_free(err); - } else { - *exitcode = EXIT_SUCCESS; - } - - break; - - case CLEANUP: - err = atf_tp_cleanup(tp, p->m_tcname); - if (atf_is_error(err)) { - /* TODO: Handle error */ - *exitcode = EXIT_FAILURE; - atf_error_free(err); - } else { - *exitcode = EXIT_SUCCESS; - } - - break; - - default: - UNREACHABLE; - } - - INV(!atf_is_error(err)); -out: - return err; -} - -static -atf_error_t -controlled_main(int argc, char **argv, - atf_error_t (*add_tcs_hook)(atf_tp_t *), - int *exitcode) -{ - atf_error_t err; - struct params p; - atf_tp_t tp; - char **raw_config; - - err = process_params(argc, argv, &p); - if (atf_is_error(err)) - goto out; - - err = handle_srcdir(&p); - if (atf_is_error(err)) - goto out_p; - - raw_config = atf_map_to_charpp(&p.m_config); - if (raw_config == NULL) { - err = atf_no_memory_error(); - goto out_p; - } - err = atf_tp_init(&tp, (const char* const*)raw_config); - atf_utils_free_charpp(raw_config); - if (atf_is_error(err)) - goto out_p; - - err = add_tcs_hook(&tp); - if (atf_is_error(err)) - goto out_tp; - - if (p.m_do_list) { - list_tcs(&tp); - INV(!atf_is_error(err)); - *exitcode = EXIT_SUCCESS; - } else { - err = run_tc(&tp, &p, exitcode); - } - -out_tp: - atf_tp_fini(&tp); -out_p: - params_fini(&p); -out: - return err; -} - -int -atf_tp_main(int argc, char **argv, atf_error_t (*add_tcs_hook)(atf_tp_t *)) -{ - atf_error_t err; - int exitcode; - - progname = strrchr(argv[0], '/'); - if (progname == NULL) - progname = argv[0]; - else - progname++; - - /* Libtool workaround: if running from within the source tree (binaries - * that are not installed yet), skip the "lt-" prefix added to files in - * the ".libs" directory to show the real (not temporary) name. */ - if (strncmp(progname, "lt-", 3) == 0) - progname += 3; - - exitcode = EXIT_FAILURE; /* Silence GCC warning. */ - err = controlled_main(argc, argv, add_tcs_hook, &exitcode); - if (atf_is_error(err)) { - print_error(err); - atf_error_free(err); - exitcode = EXIT_FAILURE; - } - - return exitcode; -} diff --git a/unit/atf-src/atf-c/detail/user.c b/unit/atf-src/atf-c/detail/user.c deleted file mode 100644 index bbb4ded5e8..0000000000 --- a/unit/atf-src/atf-c/detail/user.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/user.h" - -#include -#include -#include -#include - -#include "atf-c/detail/sanity.h" - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -uid_t -atf_user_euid(void) -{ - return geteuid(); -} - -bool -atf_user_is_member_of_group(gid_t gid) -{ - static gid_t groups[NGROUPS_MAX]; - static int ngroups = -1; - bool found; - int i; - - if (ngroups == -1) { - ngroups = getgroups(NGROUPS_MAX, groups); - INV(ngroups >= 0); - } - - found = false; - for (i = 0; !found && i < ngroups; i++) - if (groups[i] == gid) - found = true; - return found; -} - -bool -atf_user_is_root(void) -{ - return geteuid() == 0; -} - -bool -atf_user_is_unprivileged(void) -{ - return geteuid() != 0; -} diff --git a/unit/atf-src/atf-c/detail/user.h b/unit/atf-src/atf-c/detail/user.h deleted file mode 100644 index 14a3e96cec..0000000000 --- a/unit/atf-src/atf-c/detail/user.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_DETAIL_USER_H) -#define ATF_C_DETAIL_USER_H - -#include - -#include - -/* TODO: Would be nice to have an atf_user_t type and transform all of - * the functions below to methods. */ - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -uid_t atf_user_euid(void); -bool atf_user_is_member_of_group(gid_t); -bool atf_user_is_root(void); -bool atf_user_is_unprivileged(void); - -#endif /* !defined(ATF_C_DETAIL_USER_H) */ diff --git a/unit/atf-src/atf-c/detail/user_test.c b/unit/atf-src/atf-c/detail/user_test.c deleted file mode 100644 index 6a0f6e158d..0000000000 --- a/unit/atf-src/atf-c/detail/user_test.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/detail/user.h" - -#include -#include - -#include -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -ATF_TC(euid); -ATF_TC_HEAD(euid, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_user_euid function"); -} -ATF_TC_BODY(euid, tc) -{ - ATF_REQUIRE_EQ(atf_user_euid(), geteuid()); -} - -ATF_TC(is_member_of_group); -ATF_TC_HEAD(is_member_of_group, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_user_is_member_of_group " - "function"); -} -ATF_TC_BODY(is_member_of_group, tc) -{ - gid_t gids[NGROUPS_MAX]; - gid_t g, maxgid; - int ngids; - const gid_t maxgid_limit = 1 << 16; - - { - int i; - - ngids = getgroups(NGROUPS_MAX, gids); - if (ngids == -1) - atf_tc_fail("Call to getgroups failed"); - maxgid = 0; - for (i = 0; i < ngids; i++) { - printf("User group %d is %u\n", i, gids[i]); - if (maxgid < gids[i]) - maxgid = gids[i]; - } - printf("User belongs to %d groups\n", ngids); - printf("Last GID is %u\n", maxgid); - } - - if (maxgid > maxgid_limit) { - printf("Test truncated from %u groups to %u to keep the run time " - "reasonable enough\n", maxgid, maxgid_limit); - maxgid = maxgid_limit; - } - - for (g = 0; g < maxgid; g++) { - bool found = false; - int i; - - for (i = 0; !found && i < ngids; i++) { - if (gids[i] == g) - found = true; - } - - if (found) { - printf("Checking if user belongs to group %d\n", g); - ATF_REQUIRE(atf_user_is_member_of_group(g)); - } else { - printf("Checking if user does not belong to group %d\n", g); - ATF_REQUIRE(!atf_user_is_member_of_group(g)); - } - } -} - -ATF_TC(is_root); -ATF_TC_HEAD(is_root, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_user_is_root function"); -} -ATF_TC_BODY(is_root, tc) -{ - if (geteuid() == 0) - ATF_REQUIRE(atf_user_is_root()); - else - ATF_REQUIRE(!atf_user_is_root()); -} - -ATF_TC(is_unprivileged); -ATF_TC_HEAD(is_unprivileged, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_user_is_unprivileged " - "function"); -} -ATF_TC_BODY(is_unprivileged, tc) -{ - if (geteuid() != 0) - ATF_REQUIRE(atf_user_is_unprivileged()); - else - ATF_REQUIRE(!atf_user_is_unprivileged()); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, euid); - ATF_TP_ADD_TC(tp, is_member_of_group); - ATF_TP_ADD_TC(tp, is_root); - ATF_TP_ADD_TC(tp, is_unprivileged); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/detail/version_helper.c b/unit/atf-src/atf-c/detail/version_helper.c deleted file mode 100644 index fd48466de0..0000000000 --- a/unit/atf-src/atf-c/detail/version_helper.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2014 Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include - -int -main(void) -{ - printf("%s\n", PACKAGE_VERSION); - return EXIT_SUCCESS; -} diff --git a/unit/atf-src/atf-c/error.c b/unit/atf-src/atf-c/error.c deleted file mode 100644 index 071daf6d24..0000000000 --- a/unit/atf-src/atf-c/error.c +++ /dev/null @@ -1,263 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/error.h" - -#include -#include -#include -#include - -#include "atf-c/detail/sanity.h" - -/* Theoretically, there can only be a single error intance at any given - * point in time, because errors are raised at one point and must be - * handled immediately. If another error has to be raised during the - * handling process, something else has to be done with the previous - * error. - * - * This is per-thread information and will break threaded tests, but we - * currently do not have any threading support; therefore, this is fine. */ -static bool error_on_flight = false; - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -void -error_format(const atf_error_t err, char *buf, size_t buflen) -{ - PRE(err != NULL); - snprintf(buf, buflen, "Error '%s'", err->m_type); -} - -static -bool -error_init(atf_error_t err, const char *type, void *data, size_t datalen, - void (*format)(const atf_error_t, char *, size_t)) -{ - bool ok; - - PRE(data != NULL || datalen == 0); - PRE(datalen != 0 || data == NULL); - - err->m_free = false; - err->m_type = type; - err->m_format = (format == NULL) ? error_format : format; - - ok = true; - if (data == NULL) { - err->m_data = NULL; - } else { - err->m_data = malloc(datalen); - if (err->m_data == NULL) { - ok = false; - } else - memcpy(err->m_data, data, datalen); - } - - return ok; -} - -/* --------------------------------------------------------------------- - * The "atf_error" type. - * --------------------------------------------------------------------- */ - -atf_error_t -atf_error_new(const char *type, void *data, size_t datalen, - void (*format)(const atf_error_t, char *, size_t)) -{ - atf_error_t err; - - PRE(!error_on_flight); - PRE(data != NULL || datalen == 0); - PRE(datalen != 0 || data == NULL); - - err = malloc(sizeof(*err)); - if (err == NULL) - err = atf_no_memory_error(); - else { - if (!error_init(err, type, data, datalen, format)) { - free(err); - err = atf_no_memory_error(); - } else { - err->m_free = true; - error_on_flight = true; - } - } - - INV(err != NULL); - POST(error_on_flight); - return err; -} - -void -atf_error_free(atf_error_t err) -{ - bool freeit; - - PRE(error_on_flight); - PRE(err != NULL); - - freeit = err->m_free; - - if (err->m_data != NULL) - free(err->m_data); - - if (freeit) - free(err); - - error_on_flight = false; -} - -atf_error_t -atf_no_error(void) -{ - return NULL; -} - -bool -atf_is_error(const atf_error_t err) -{ - return err != NULL; -} - -bool -atf_error_is(const atf_error_t err, const char *type) -{ - PRE(err != NULL); - - return strcmp(err->m_type, type) == 0; -} - -const void * -atf_error_data(const atf_error_t err) -{ - PRE(err != NULL); - - return err->m_data; -} - -void -atf_error_format(const atf_error_t err, char *buf, size_t buflen) -{ - PRE(err != NULL); - err->m_format(err, buf, buflen); -} - -/* --------------------------------------------------------------------- - * Common error types. - * --------------------------------------------------------------------- */ - -/* - * The "libc" error. - */ - -struct atf_libc_error_data { - int m_errno; - char m_what[4096]; -}; -typedef struct atf_libc_error_data atf_libc_error_data_t; - -static -void -libc_format(const atf_error_t err, char *buf, size_t buflen) -{ - const atf_libc_error_data_t *data; - - PRE(atf_error_is(err, "libc")); - - data = atf_error_data(err); - snprintf(buf, buflen, "%s: %s", data->m_what, strerror(data->m_errno)); -} - -atf_error_t -atf_libc_error(int syserrno, const char *fmt, ...) -{ - atf_error_t err; - atf_libc_error_data_t data; - va_list ap; - - data.m_errno = syserrno; - va_start(ap, fmt); - vsnprintf(data.m_what, sizeof(data.m_what), fmt, ap); - va_end(ap); - - err = atf_error_new("libc", &data, sizeof(data), libc_format); - - return err; -} - -int -atf_libc_error_code(const atf_error_t err) -{ - const struct atf_libc_error_data *data; - - PRE(atf_error_is(err, "libc")); - - data = atf_error_data(err); - - return data->m_errno; -} - -const char * -atf_libc_error_msg(const atf_error_t err) -{ - const struct atf_libc_error_data *data; - - PRE(atf_error_is(err, "libc")); - - data = atf_error_data(err); - - return data->m_what; -} - -/* - * The "no_memory" error. - */ - -static struct atf_error no_memory_error; - -static -void -no_memory_format(const atf_error_t err, char *buf, size_t buflen) -{ - PRE(atf_error_is(err, "no_memory")); - - snprintf(buf, buflen, "Not enough memory"); -} - -atf_error_t -atf_no_memory_error(void) -{ - PRE(!error_on_flight); - - error_init(&no_memory_error, "no_memory", NULL, 0, - no_memory_format); - - error_on_flight = true; - return &no_memory_error; -} diff --git a/unit/atf-src/atf-c/error.h b/unit/atf-src/atf-c/error.h deleted file mode 100644 index 260c0d07bf..0000000000 --- a/unit/atf-src/atf-c/error.h +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_ERROR_H) -#define ATF_C_ERROR_H - -#include - -#include -#include - -/* --------------------------------------------------------------------- - * The "atf_error" type. - * --------------------------------------------------------------------- */ - -struct atf_error { - bool m_free; - const char *m_type; - void *m_data; - - void (*m_format)(struct atf_error *, char *, size_t); -}; - -atf_error_t atf_error_new(const char *, void *, size_t, - void (*)(const atf_error_t, char *, size_t)); -void atf_error_free(atf_error_t); - -atf_error_t atf_no_error(void); -bool atf_is_error(const atf_error_t); - -bool atf_error_is(const atf_error_t, const char *); -const void *atf_error_data(const atf_error_t); -void atf_error_format(const atf_error_t, char *, size_t); - -/* --------------------------------------------------------------------- - * Common error types. - * --------------------------------------------------------------------- */ - -atf_error_t atf_libc_error(int, const char *, ...); -int atf_libc_error_code(const atf_error_t); -const char *atf_libc_error_msg(const atf_error_t); - -atf_error_t atf_no_memory_error(void); - -#endif /* !defined(ATF_C_ERROR_H) */ diff --git a/unit/atf-src/atf-c/error_fwd.h b/unit/atf-src/atf-c/error_fwd.h deleted file mode 100644 index d73e164b5c..0000000000 --- a/unit/atf-src/atf-c/error_fwd.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_ERROR_FWD_H) -#define ATF_C_ERROR_FWD_H - -/* --------------------------------------------------------------------- - * The "atf_error" type. - * --------------------------------------------------------------------- */ - -struct atf_error; -typedef struct atf_error *atf_error_t; - -#endif /* !defined(ATF_C_ERROR_FWD_H) */ diff --git a/unit/atf-src/atf-c/error_test.c b/unit/atf-src/atf-c/error_test.c deleted file mode 100644 index 8bfa1249b3..0000000000 --- a/unit/atf-src/atf-c/error_test.c +++ /dev/null @@ -1,297 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/error.h" - -#include -#include -#include -#include - -#include - -#include "atf-c/defs.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -void -test_format(const atf_error_t err ATF_DEFS_ATTRIBUTE_UNUSED, - char *buf, size_t buflen) -{ - snprintf(buf, buflen, "Test formatting function"); -} - -/* --------------------------------------------------------------------- - * Tests for the "atf_error" type. - * --------------------------------------------------------------------- */ - -ATF_TC(error_new); -ATF_TC_HEAD(error_new, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of an error " - "object"); -} -ATF_TC_BODY(error_new, tc) -{ - atf_error_t err; - int data; - - err = atf_error_new("test_error", NULL, 0, NULL); - ATF_REQUIRE(atf_error_is(err, "test_error")); - ATF_REQUIRE(!atf_error_is(err, "unknown_error")); - ATF_REQUIRE(atf_error_data(err) == NULL); - atf_error_free(err); - - data = 5; - err = atf_error_new("test_data_error", &data, sizeof(data), NULL); - ATF_REQUIRE(atf_error_is(err, "test_data_error")); - ATF_REQUIRE(!atf_error_is(err, "unknown_error")); - ATF_REQUIRE(atf_error_data(err) != NULL); - ATF_REQUIRE_EQ(*((const int *)atf_error_data(err)), 5); - atf_error_free(err); -} - -ATF_TC(error_new_wo_memory); -ATF_TC_HEAD(error_new_wo_memory, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that an unavailable memory error " - "raised when constructing an error object " - "is properly converted to the no_memory " - "static error type"); -} -ATF_TC_BODY(error_new_wo_memory, tc) -{ - atf_error_t err; - void *invalid; - - invalid = (void *)1; - - err = atf_error_new("test_error", invalid, SIZE_MAX, NULL); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - ATF_REQUIRE(atf_error_data(err) == NULL); - atf_error_free(err); -} - -ATF_TC(no_error); -ATF_TC_HEAD(no_error, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks that constructing a non-error " - "object works"); -} -ATF_TC_BODY(no_error, tc) -{ - atf_error_t err; - - err = atf_no_error(); - ATF_REQUIRE(!atf_is_error(err)); -} - -ATF_TC(is_error); -ATF_TC_HEAD(is_error, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the is_error method to determine " - "if an error object holds success or an error"); -} -ATF_TC_BODY(is_error, tc) -{ - atf_error_t err; - - err = atf_no_error(); - ATF_REQUIRE(!atf_is_error(err)); - - err = atf_error_new("test_error", NULL, 0, NULL); - ATF_REQUIRE(atf_is_error(err)); - atf_error_free(err); -} - -ATF_TC(format); -ATF_TC_HEAD(format, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the default formatting function " - "and the ability to change it"); -} -ATF_TC_BODY(format, tc) -{ - atf_error_t err; - char buf[1024]; - - printf("Testing default formatting function\n"); - err = atf_error_new("test_error", NULL, 0, NULL); - atf_error_format(err, buf, sizeof(buf)); - printf("Error string is: %s\n", buf); - ATF_REQUIRE(strcmp(buf, "Error 'test_error'") == 0); - atf_error_free(err); - - printf("Testing custom formatting function\n"); - err = atf_error_new("test_error", NULL, 0, test_format); - atf_error_format(err, buf, sizeof(buf)); - printf("Error string is: %s\n", buf); - ATF_REQUIRE(strcmp(buf, "Test formatting function") == 0); - atf_error_free(err); -} - -/* --------------------------------------------------------------------- - * Tests for the "libc" error. - * --------------------------------------------------------------------- */ - -ATF_TC(libc_new); -ATF_TC_HEAD(libc_new, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of libc errors"); -} -ATF_TC_BODY(libc_new, tc) -{ - atf_error_t err; - - err = atf_libc_error(ENOMEM, "Test message 1"); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE_EQ(atf_libc_error_code(err), ENOMEM); - ATF_REQUIRE(strcmp(atf_libc_error_msg(err), "Test message 1") == 0); - atf_error_free(err); - - err = atf_libc_error(EPERM, "%s message %d", "Test", 2); - ATF_REQUIRE(atf_error_is(err, "libc")); - ATF_REQUIRE_EQ(atf_libc_error_code(err), EPERM); - ATF_REQUIRE(strcmp(atf_libc_error_msg(err), "Test message 2") == 0); - atf_error_free(err); -} - -ATF_TC(libc_format); -ATF_TC_HEAD(libc_format, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the formatting of libc errors"); -} -ATF_TC_BODY(libc_format, tc) -{ - atf_error_t err; - char buf[1024]; - - err = atf_libc_error(ENOMEM, "Test message 1"); - atf_error_format(err, buf, sizeof(buf)); - ATF_REQUIRE(strstr(buf, strerror(ENOMEM)) != NULL); - ATF_REQUIRE(strstr(buf, "Test message 1") != NULL); - atf_error_free(err); - - err = atf_libc_error(EPERM, "Test message 2"); - atf_error_format(err, buf, sizeof(buf)); - ATF_REQUIRE(strstr(buf, strerror(EPERM)) != NULL); - ATF_REQUIRE(strstr(buf, "Test message 2") != NULL); - atf_error_free(err); - - err = atf_libc_error(EPERM, "%s message %d", "Test", 3); - atf_error_format(err, buf, sizeof(buf)); - ATF_REQUIRE(strstr(buf, strerror(EPERM)) != NULL); - ATF_REQUIRE(strstr(buf, "Test message 3") != NULL); - atf_error_free(err); -} - -/* --------------------------------------------------------------------- - * Tests for the "no_memory" error. - * --------------------------------------------------------------------- */ - -ATF_TC(no_memory_new); -ATF_TC_HEAD(no_memory_new, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of no_memory " - "errors"); -} -ATF_TC_BODY(no_memory_new, tc) -{ - atf_error_t err; - - err = atf_no_memory_error(); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - ATF_REQUIRE(atf_error_data(err) == NULL); - atf_error_free(err); -} - -ATF_TC(no_memory_format); -ATF_TC_HEAD(no_memory_format, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the formatting of no_memory " - "errors"); -} -ATF_TC_BODY(no_memory_format, tc) -{ - atf_error_t err; - char buf[1024]; - - err = atf_no_memory_error(); - atf_error_format(err, buf, sizeof(buf)); - ATF_REQUIRE(strcmp(buf, "Not enough memory") == 0); - atf_error_free(err); -} - -ATF_TC(no_memory_twice); -ATF_TC_HEAD(no_memory_twice, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks the construction of no_memory " - "errors multiple times, as this error is initialized " - "statically"); -} -ATF_TC_BODY(no_memory_twice, tc) -{ - { - atf_error_t err = atf_no_memory_error(); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - ATF_REQUIRE(atf_error_data(err) == NULL); - atf_error_free(err); - } - - { - atf_error_t err = atf_no_memory_error(); - ATF_REQUIRE(atf_error_is(err, "no_memory")); - ATF_REQUIRE(atf_error_data(err) == NULL); - atf_error_free(err); - } -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the tests for the "atf_error" type. */ - ATF_TP_ADD_TC(tp, error_new); - ATF_TP_ADD_TC(tp, error_new_wo_memory); - ATF_TP_ADD_TC(tp, no_error); - ATF_TP_ADD_TC(tp, is_error); - ATF_TP_ADD_TC(tp, format); - - /* Add the tests for the "libc" error. */ - ATF_TP_ADD_TC(tp, libc_new); - ATF_TP_ADD_TC(tp, libc_format); - - /* Add the tests for the "no_memory" error. */ - ATF_TP_ADD_TC(tp, no_memory_new); - ATF_TP_ADD_TC(tp, no_memory_format); - ATF_TP_ADD_TC(tp, no_memory_twice); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/h_build.h b/unit/atf-src/atf-c/h_build.h deleted file mode 100644 index c5ad1c75ef..0000000000 --- a/unit/atf-src/atf-c/h_build.h +++ /dev/null @@ -1,410 +0,0 @@ -/* Copyright (c) 2009 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if defined(ATF_C_H_BUILD_H) -# error "Cannot include h_build.h more than once." -#else -# define ATF_C_H_BUILD_H -#endif - -/* --------------------------------------------------------------------- - * Test case data. - * --------------------------------------------------------------------- */ - -static struct c_o_test { - const char *msg; - const char *cc; - const char *cflags; - const char *cppflags; - const char *sfile; - const char *ofile; - bool hasoptargs; - const char *const optargs[16]; - const char *const expargv[16]; -} c_o_tests[] = { - { - "No flags", - "cc", - "", - "", - "test.c", - "test.o", - false, - { - NULL - }, - { - "cc", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Multi-word program name", - "cc -foo", - "", - "", - "test.c", - "test.o", - false, - { - NULL - }, - { - "cc", "-foo", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Some cflags", - "cc", - "-f1 -f2 -f3 -f4-f5", - "", - "test.c", - "test.o", - false, - { - NULL - }, - { - "cc", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o", - "-c", "test.c", NULL - }, - }, - - { - "Some cppflags", - "cc", - "", - "-f1 -f2 -f3 -f4-f5", - "test.c", - "test.o", - false, - { - NULL - }, - { - "cc", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o", - "-c", "test.c", NULL - }, - }, - - { - "Some cflags and cppflags", - "cc", - "-f2", - "-f1", - "test.c", - "test.o", - false, - { - NULL - }, - { - "cc", "-f1", "-f2", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Some optional arguments", - "cc", - "", - "", - "test.c", - "test.o", - true, - { - "-o1", "-o2", NULL - }, - { - "cc", "-o1", "-o2", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Some cflags, cppflags and optional arguments", - "cc", - "-f2", - "-f1", - "test.c", - "test.o", - true, - { - "-o1", "-o2", NULL - }, - { - "cc", "-f1", "-f2", "-o1", "-o2", "-o", "test.o", - "-c", "test.c", NULL - }, - }, - - { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - false, - { NULL }, - { NULL }, - }, -}; - -static struct cpp_test { - const char *msg; - const char *cpp; - const char *cppflags; - const char *sfile; - const char *ofile; - bool hasoptargs; - const char *const optargs[16]; - const char *const expargv[16]; -} cpp_tests[] = { - { - "No flags", - "cpp", - "", - "test.c", - "test.out", - false, - { - NULL - }, - { - "cpp", "-o", "test.out", "test.c", NULL - }, - }, - - { - "Multi-word program name", - "cpp -foo", - "", - "test.c", - "test.out", - false, - { - NULL - }, - { - "cpp", "-foo", "-o", "test.out", "test.c", NULL - }, - }, - - { - "Some cppflags", - "cpp", - "-f1 -f2 -f3 -f4-f5", - "test.c", - "test.out", - false, - { - NULL - }, - { - "cpp", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.out", - "test.c", NULL - }, - }, - - { - "Some optional arguments", - "cpp", - "", - "test.c", - "test.out", - true, - { - "-o1", "-o2", NULL - }, - { - "cpp", "-o1", "-o2", "-o", "test.out", "test.c", NULL - }, - }, - - { - "Some cppflags and optional arguments", - "cpp", - "-f1", - "test.c", - "test.out", - true, - { - "-o1", "-o2", NULL - }, - { - "cpp", "-f1", "-o1", "-o2", "-o", "test.out", "test.c", NULL - }, - }, - - { - NULL, - NULL, - NULL, - NULL, - NULL, - false, - { NULL }, - { NULL }, - }, -}; - -static struct cxx_o_test { - const char *msg; - const char *cxx; - const char *cxxflags; - const char *cppflags; - const char *sfile; - const char *ofile; - bool hasoptargs; - const char *const optargs[16]; - const char *const expargv[16]; -} cxx_o_tests[] = { - { - "No flags", - "c++", - "", - "", - "test.c", - "test.o", - false, - { - NULL - }, - { - "c++", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Multi-word program name", - "c++ -foo", - "", - "", - "test.c", - "test.o", - false, - { - NULL - }, - { - "c++", "-foo", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Some cxxflags", - "c++", - "-f1 -f2 -f3 -f4-f5", - "", - "test.c", - "test.o", - false, - { - NULL - }, - { - "c++", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o", - "-c", "test.c", NULL - }, - }, - - { - "Some cppflags", - "c++", - "", - "-f1 -f2 -f3 -f4-f5", - "test.c", - "test.o", - false, - { - NULL - }, - { - "c++", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o", - "-c", "test.c", NULL - }, - }, - - { - "Some cxxflags and cppflags", - "c++", - "-f2", - "-f1", - "test.c", - "test.o", - false, - { - NULL - }, - { - "c++", "-f1", "-f2", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Some optional arguments", - "c++", - "", - "", - "test.c", - "test.o", - true, - { - "-o1", "-o2", NULL - }, - { - "c++", "-o1", "-o2", "-o", "test.o", "-c", "test.c", NULL - }, - }, - - { - "Some cxxflags, cppflags and optional arguments", - "c++", - "-f2", - "-f1", - "test.c", - "test.o", - true, - { - "-o1", "-o2", NULL - }, - { - "c++", "-f1", "-f2", "-o1", "-o2", "-o", "test.o", - "-c", "test.c", NULL - }, - }, - - { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - false, - { NULL }, - { NULL }, - }, -}; diff --git a/unit/atf-src/atf-c/macros.h b/unit/atf-src/atf-c/macros.h deleted file mode 100644 index 485a159ace..0000000000 --- a/unit/atf-src/atf-c/macros.h +++ /dev/null @@ -1,212 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_MACROS_H) -#define ATF_C_MACROS_H - -#include - -#include -#include -#include -#include -#include - -#define ATF_TC_NAME(tc) \ - (atfu_ ## tc ## _tc) - -#define ATF_TC_PACK_NAME(tc) \ - (atfu_ ## tc ## _tc_pack) - -#define ATF_TC_WITHOUT_HEAD(tc) \ - static void atfu_ ## tc ## _body(const atf_tc_t *); \ - static atf_tc_t atfu_ ## tc ## _tc; \ - static atf_tc_pack_t atfu_ ## tc ## _tc_pack = { \ - .m_ident = #tc, \ - .m_head = NULL, \ - .m_body = atfu_ ## tc ## _body, \ - .m_cleanup = NULL, \ - } - -#define ATF_TC(tc) \ - static void atfu_ ## tc ## _head(atf_tc_t *); \ - static void atfu_ ## tc ## _body(const atf_tc_t *); \ - static atf_tc_t atfu_ ## tc ## _tc; \ - static atf_tc_pack_t atfu_ ## tc ## _tc_pack = { \ - .m_ident = #tc, \ - .m_head = atfu_ ## tc ## _head, \ - .m_body = atfu_ ## tc ## _body, \ - .m_cleanup = NULL, \ - } - -#define ATF_TC_WITH_CLEANUP(tc) \ - static void atfu_ ## tc ## _head(atf_tc_t *); \ - static void atfu_ ## tc ## _body(const atf_tc_t *); \ - static void atfu_ ## tc ## _cleanup(const atf_tc_t *); \ - static atf_tc_t atfu_ ## tc ## _tc; \ - static atf_tc_pack_t atfu_ ## tc ## _tc_pack = { \ - .m_ident = #tc, \ - .m_head = atfu_ ## tc ## _head, \ - .m_body = atfu_ ## tc ## _body, \ - .m_cleanup = atfu_ ## tc ## _cleanup, \ - } - -#define ATF_TC_HEAD(tc, tcptr) \ - static \ - void \ - atfu_ ## tc ## _head(atf_tc_t *tcptr ATF_DEFS_ATTRIBUTE_UNUSED) - -#define ATF_TC_HEAD_NAME(tc) \ - (atfu_ ## tc ## _head) - -#define ATF_TC_BODY(tc, tcptr) \ - static \ - void \ - atfu_ ## tc ## _body(const atf_tc_t *tcptr ATF_DEFS_ATTRIBUTE_UNUSED) - -#define ATF_TC_BODY_NAME(tc) \ - (atfu_ ## tc ## _body) - -#define ATF_TC_CLEANUP(tc, tcptr) \ - static \ - void \ - atfu_ ## tc ## _cleanup(const atf_tc_t *tcptr ATF_DEFS_ATTRIBUTE_UNUSED) - -#define ATF_TC_CLEANUP_NAME(tc) \ - (atfu_ ## tc ## _cleanup) - -#define ATF_TP_ADD_TCS(tps) \ - static atf_error_t atfu_tp_add_tcs(atf_tp_t *); \ - int atf_tp_main(int, char **, atf_error_t (*)(atf_tp_t *)); \ - \ - int \ - main(int argc, char **argv) \ - { \ - return atf_tp_main(argc, argv, atfu_tp_add_tcs); \ - } \ - static \ - atf_error_t \ - atfu_tp_add_tcs(atf_tp_t *tps) - -#define ATF_TP_ADD_TC(tp, tc) \ - do { \ - atf_error_t atfu_err; \ - char **atfu_config = atf_tp_get_config(tp); \ - if (atfu_config == NULL) \ - return atf_no_memory_error(); \ - atfu_err = atf_tc_init_pack(&atfu_ ## tc ## _tc, \ - &atfu_ ## tc ## _tc_pack, \ - (const char *const *)atfu_config); \ - atf_utils_free_charpp(atfu_config); \ - if (atf_is_error(atfu_err)) \ - return atfu_err; \ - atfu_err = atf_tp_add_tc(tp, &atfu_ ## tc ## _tc); \ - if (atf_is_error(atfu_err)) \ - return atfu_err; \ - } while (0) - -#define ATF_REQUIRE_MSG(expression, fmt, ...) \ - do { \ - if (!(expression)) \ - atf_tc_fail_requirement(__FILE__, __LINE__, fmt, ##__VA_ARGS__); \ - } while(0) - -#define ATF_CHECK_MSG(expression, fmt, ...) \ - do { \ - if (!(expression)) \ - atf_tc_fail_check(__FILE__, __LINE__, fmt, ##__VA_ARGS__); \ - } while(0) - -#define ATF_REQUIRE(expression) \ - do { \ - if (!(expression)) \ - atf_tc_fail_requirement(__FILE__, __LINE__, "%s", \ - #expression " not met"); \ - } while(0) - -#define ATF_CHECK(expression) \ - do { \ - if (!(expression)) \ - atf_tc_fail_check(__FILE__, __LINE__, "%s", \ - #expression " not met"); \ - } while(0) - -#define ATF_REQUIRE_EQ(expected, actual) \ - ATF_REQUIRE_MSG((expected) == (actual), "%s != %s", #expected, #actual) - -#define ATF_CHECK_EQ(expected, actual) \ - ATF_CHECK_MSG((expected) == (actual), "%s != %s", #expected, #actual) - -#define ATF_REQUIRE_EQ_MSG(expected, actual, fmt, ...) \ - ATF_REQUIRE_MSG((expected) == (actual), "%s != %s: " fmt, \ - #expected, #actual, ##__VA_ARGS__) - -#define ATF_CHECK_EQ_MSG(expected, actual, fmt, ...) \ - ATF_CHECK_MSG((expected) == (actual), "%s != %s: " fmt, \ - #expected, #actual, ##__VA_ARGS__) - -#define ATF_REQUIRE_STREQ(expected, actual) \ - ATF_REQUIRE_MSG(strcmp(expected, actual) == 0, "%s != %s (%s != %s)", \ - #expected, #actual, expected, actual) - -#define ATF_CHECK_STREQ(expected, actual) \ - ATF_CHECK_MSG(strcmp(expected, actual) == 0, "%s != %s (%s != %s)", \ - #expected, #actual, expected, actual) - -#define ATF_REQUIRE_STREQ_MSG(expected, actual, fmt, ...) \ - ATF_REQUIRE_MSG(strcmp(expected, actual) == 0, \ - "%s != %s (%s != %s): " fmt, \ - #expected, #actual, expected, actual, ##__VA_ARGS__) - -#define ATF_CHECK_STREQ_MSG(expected, actual, fmt, ...) \ - ATF_CHECK_MSG(strcmp(expected, actual) == 0, \ - "%s != %s (%s != %s): " fmt, \ - #expected, #actual, expected, actual, ##__VA_ARGS__) - -#define ATF_REQUIRE_MATCH(regexp, string) \ - ATF_REQUIRE_MSG(atf_utils_grep_string("%s", string, regexp), \ - "'%s' not matched in '%s'", regexp, string); - -#define ATF_CHECK_MATCH(regexp, string) \ - ATF_CHECK_MSG(atf_utils_grep_string("%s", string, regexp), \ - "'%s' not matched in '%s'", regexp, string); - -#define ATF_REQUIRE_MATCH_MSG(regexp, string, fmt, ...) \ - ATF_REQUIRE_MSG(atf_utils_grep_string("%s", string, regexp), \ - "'%s' not matched in '%s': " fmt, regexp, string, \ - ##__VA_ARGS__); - -#define ATF_CHECK_MATCH_MSG(regexp, string, fmt, ...) \ - ATF_CHECK_MSG(atf_utils_grep_string("%s", string, regexp), \ - "'%s' not matched in '%s': " fmt, regexp, string, \ - ##__VA_ARGS__); - -#define ATF_CHECK_ERRNO(exp_errno, bool_expr) \ - atf_tc_check_errno(__FILE__, __LINE__, exp_errno, #bool_expr, bool_expr) - -#define ATF_REQUIRE_ERRNO(exp_errno, bool_expr) \ - atf_tc_require_errno(__FILE__, __LINE__, exp_errno, #bool_expr, bool_expr) - -#endif /* !defined(ATF_C_MACROS_H) */ diff --git a/unit/atf-src/atf-c/macros_h_test.c b/unit/atf-src/atf-c/macros_h_test.c deleted file mode 100644 index 9525fcaae2..0000000000 --- a/unit/atf-src/atf-c/macros_h_test.c +++ /dev/null @@ -1,102 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include - -void atf_require_inside_if(void); -void atf_require_equal_inside_if(void); -void atf_check_errno_semicolons(void); -void atf_require_errno_semicolons(void); - -void -atf_require_inside_if(void) -{ - /* Make sure that ATF_REQUIRE can be used inside an if statement that - * does not have braces. Earlier versions of it generated an error - * if there was an else clause because they confused the compiler - * by defining an unprotected nested if. */ - if (true) - ATF_REQUIRE(true); - else - ATF_REQUIRE(true); -} - -void -atf_require_equal_inside_if(void) -{ - /* Make sure that ATF_REQUIRE_EQUAL can be used inside an if statement - * that does not have braces. Earlier versions of it generated an - * error if there was an else clause because they confused the - * compiler by defining an unprotected nested if. */ - if (true) - ATF_REQUIRE_EQ(true, true); - else - ATF_REQUIRE_EQ(true, true); -} - -void -atf_check_errno_semicolons(void) -{ - /* Check that ATF_CHECK_ERRNO does not contain a semicolon that would - * cause an empty-statement that confuses some compilers. */ - ATF_CHECK_ERRNO(1, 1 == 1); - ATF_CHECK_ERRNO(2, 2 == 2); -} - -void -atf_require_errno_semicolons(void) -{ - /* Check that ATF_REQUIRE_ERRNO does not contain a semicolon that would - * cause an empty-statement that confuses some compilers. */ - ATF_REQUIRE_ERRNO(1, 1 == 1); - ATF_REQUIRE_ERRNO(2, 2 == 2); -} - -/* Test case names should not be expanded during instatiation so that they - * can have the exact same name as macros. */ -#define TEST_MACRO_1 invalid + name -#define TEST_MACRO_2 invalid + name -#define TEST_MACRO_3 invalid + name -ATF_TC(TEST_MACRO_1); -ATF_TC_HEAD(TEST_MACRO_1, tc) { if (tc != NULL) {} } -ATF_TC_BODY(TEST_MACRO_1, tc) { if (tc != NULL) {} } -atf_tc_t *test_name_1 = &ATF_TC_NAME(TEST_MACRO_1); -atf_tc_pack_t *test_pack_1 = &ATF_TC_PACK_NAME(TEST_MACRO_1); -void (*head_1)(atf_tc_t *) = ATF_TC_HEAD_NAME(TEST_MACRO_1); -void (*body_1)(const atf_tc_t *) = ATF_TC_BODY_NAME(TEST_MACRO_1); -ATF_TC_WITH_CLEANUP(TEST_MACRO_2); -ATF_TC_HEAD(TEST_MACRO_2, tc) { if (tc != NULL) {} } -ATF_TC_BODY(TEST_MACRO_2, tc) { if (tc != NULL) {} } -ATF_TC_CLEANUP(TEST_MACRO_2, tc) { if (tc != NULL) {} } -atf_tc_t *test_name_2 = &ATF_TC_NAME(TEST_MACRO_2); -atf_tc_pack_t *test_pack_2 = &ATF_TC_PACK_NAME(TEST_MACRO_2); -void (*head_2)(atf_tc_t *) = ATF_TC_HEAD_NAME(TEST_MACRO_2); -void (*body_2)(const atf_tc_t *) = ATF_TC_BODY_NAME(TEST_MACRO_2); -void (*cleanup_2)(const atf_tc_t *) = ATF_TC_CLEANUP_NAME(TEST_MACRO_2); -ATF_TC_WITHOUT_HEAD(TEST_MACRO_3); -ATF_TC_BODY(TEST_MACRO_3, tc) { if (tc != NULL) {} } -atf_tc_t *test_name_3 = &ATF_TC_NAME(TEST_MACRO_3); -atf_tc_pack_t *test_pack_3 = &ATF_TC_PACK_NAME(TEST_MACRO_3); -void (*body_3)(const atf_tc_t *) = ATF_TC_BODY_NAME(TEST_MACRO_3); diff --git a/unit/atf-src/atf-c/macros_test.c b/unit/atf-src/atf-c/macros_test.c deleted file mode 100644 index 83578cda59..0000000000 --- a/unit/atf-src/atf-c/macros_test.c +++ /dev/null @@ -1,893 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/macros.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/fs.h" -#include "atf-c/detail/process.h" -#include "atf-c/detail/test_helpers.h" -#include "atf-c/detail/text.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -void -create_ctl_file(const char *name) -{ - atf_fs_path_t p; - - RE(atf_fs_path_init_fmt(&p, "%s", name)); - ATF_REQUIRE(open(atf_fs_path_cstring(&p), - O_CREAT | O_WRONLY | O_TRUNC, 0644) != -1); - atf_fs_path_fini(&p); -} - -static -bool -exists(const char *p) -{ - bool b; - atf_fs_path_t pp; - - RE(atf_fs_path_init_fmt(&pp, "%s", p)); - RE(atf_fs_exists(&pp, &b)); - atf_fs_path_fini(&pp); - - return b; -} - -static -void -init_and_run_h_tc(const char *name, void (*head)(atf_tc_t *), - void (*body)(const atf_tc_t *)) -{ - atf_tc_t tc; - const char *const config[] = { NULL }; - - RE(atf_tc_init(&tc, name, head, body, NULL, config)); - run_h_tc(&tc, "output", "error", "result"); - atf_tc_fini(&tc); -} - -/* --------------------------------------------------------------------- - * Helper test cases. - * --------------------------------------------------------------------- */ - -#define H_DEF(id, macro) \ - ATF_TC_HEAD(h_ ## id, tc) \ - { \ - atf_tc_set_md_var(tc, "descr", "Helper test case"); \ - } \ - ATF_TC_BODY(h_ ## id, tc) \ - { \ - create_ctl_file("before"); \ - macro; \ - create_ctl_file("after"); \ - } - -#define H_CHECK_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_check_ ## id) -#define H_CHECK_BODY_NAME(id) ATF_TC_BODY_NAME(h_check_ ## id) -#define H_CHECK(id, condition) \ - H_DEF(check_ ## id, ATF_CHECK(condition)) - -#define H_CHECK_MSG_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_check_msg_ ## id) -#define H_CHECK_MSG_BODY_NAME(id) ATF_TC_BODY_NAME(h_check_msg_ ## id) -#define H_CHECK_MSG(id, condition, msg) \ - H_DEF(check_msg_ ## id, ATF_CHECK_MSG(condition, msg)) - -#define H_CHECK_EQ_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_check_eq_ ## id) -#define H_CHECK_EQ_BODY_NAME(id) ATF_TC_BODY_NAME(h_check_eq_ ## id) -#define H_CHECK_EQ(id, v1, v2) \ - H_DEF(check_eq_ ## id, ATF_CHECK_EQ(v1, v2)) - -#define H_CHECK_STREQ_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_check_streq_ ## id) -#define H_CHECK_STREQ_BODY_NAME(id) ATF_TC_BODY_NAME(h_check_streq_ ## id) -#define H_CHECK_STREQ(id, v1, v2) \ - H_DEF(check_streq_ ## id, ATF_CHECK_STREQ(v1, v2)) - -#define H_CHECK_MATCH_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_check_match_ ## id) -#define H_CHECK_MATCH_BODY_NAME(id) ATF_TC_BODY_NAME(h_check_match_ ## id) -#define H_CHECK_MATCH(id, v1, v2) \ - H_DEF(check_match_ ## id, ATF_CHECK_MATCH(v1, v2)) - -#define H_CHECK_EQ_MSG_HEAD_NAME(id) \ - ATF_TC_HEAD_NAME(h_check_eq_msg_ ## id) -#define H_CHECK_EQ_MSG_BODY_NAME(id) \ - ATF_TC_BODY_NAME(h_check_eq_msg_ ## id) -#define H_CHECK_EQ_MSG(id, v1, v2, msg) \ - H_DEF(check_eq_msg_ ## id, ATF_CHECK_EQ_MSG(v1, v2, msg)) - -#define H_CHECK_STREQ_MSG_HEAD_NAME(id) \ - ATF_TC_HEAD_NAME(h_check_streq_msg_ ## id) -#define H_CHECK_STREQ_MSG_BODY_NAME(id) \ - ATF_TC_BODY_NAME(h_check_streq_msg_ ## id) -#define H_CHECK_STREQ_MSG(id, v1, v2, msg) \ - H_DEF(check_streq_msg_ ## id, ATF_CHECK_STREQ_MSG(v1, v2, msg)) - -#define H_CHECK_MATCH_MSG_HEAD_NAME(id) \ - ATF_TC_HEAD_NAME(h_check_match_msg_ ## id) -#define H_CHECK_MATCH_MSG_BODY_NAME(id) \ - ATF_TC_BODY_NAME(h_check_match_msg_ ## id) -#define H_CHECK_MATCH_MSG(id, v1, v2, msg) \ - H_DEF(check_match_msg_ ## id, ATF_CHECK_MATCH_MSG(v1, v2, msg)) - -#define H_CHECK_ERRNO_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_check_errno_ ## id) -#define H_CHECK_ERRNO_BODY_NAME(id) ATF_TC_BODY_NAME(h_check_errno_ ## id) -#define H_CHECK_ERRNO(id, exp_errno, bool_expr) \ - H_DEF(check_errno_ ## id, ATF_CHECK_ERRNO(exp_errno, bool_expr)) - -#define H_REQUIRE_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_require_ ## id) -#define H_REQUIRE_BODY_NAME(id) ATF_TC_BODY_NAME(h_require_ ## id) -#define H_REQUIRE(id, condition) \ - H_DEF(require_ ## id, ATF_REQUIRE(condition)) - -#define H_REQUIRE_MSG_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_require_msg_ ## id) -#define H_REQUIRE_MSG_BODY_NAME(id) ATF_TC_BODY_NAME(h_require_msg_ ## id) -#define H_REQUIRE_MSG(id, condition, msg) \ - H_DEF(require_msg_ ## id, ATF_REQUIRE_MSG(condition, msg)) - -#define H_REQUIRE_EQ_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_require_eq_ ## id) -#define H_REQUIRE_EQ_BODY_NAME(id) ATF_TC_BODY_NAME(h_require_eq_ ## id) -#define H_REQUIRE_EQ(id, v1, v2) \ - H_DEF(require_eq_ ## id, ATF_REQUIRE_EQ(v1, v2)) - -#define H_REQUIRE_STREQ_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_require_streq_ ## id) -#define H_REQUIRE_STREQ_BODY_NAME(id) ATF_TC_BODY_NAME(h_require_streq_ ## id) -#define H_REQUIRE_STREQ(id, v1, v2) \ - H_DEF(require_streq_ ## id, ATF_REQUIRE_STREQ(v1, v2)) - -#define H_REQUIRE_MATCH_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_require_match_ ## id) -#define H_REQUIRE_MATCH_BODY_NAME(id) ATF_TC_BODY_NAME(h_require_match_ ## id) -#define H_REQUIRE_MATCH(id, v1, v2) \ - H_DEF(require_match_ ## id, ATF_REQUIRE_MATCH(v1, v2)) - -#define H_REQUIRE_EQ_MSG_HEAD_NAME(id) \ - ATF_TC_HEAD_NAME(h_require_eq_msg_ ## id) -#define H_REQUIRE_EQ_MSG_BODY_NAME(id) \ - ATF_TC_BODY_NAME(h_require_eq_msg_ ## id) -#define H_REQUIRE_EQ_MSG(id, v1, v2, msg) \ - H_DEF(require_eq_msg_ ## id, ATF_REQUIRE_EQ_MSG(v1, v2, msg)) - -#define H_REQUIRE_STREQ_MSG_HEAD_NAME(id) \ - ATF_TC_HEAD_NAME(h_require_streq_msg_ ## id) -#define H_REQUIRE_STREQ_MSG_BODY_NAME(id) \ - ATF_TC_BODY_NAME(h_require_streq_msg_ ## id) -#define H_REQUIRE_STREQ_MSG(id, v1, v2, msg) \ - H_DEF(require_streq_msg_ ## id, ATF_REQUIRE_STREQ_MSG(v1, v2, msg)) - -#define H_REQUIRE_MATCH_MSG_HEAD_NAME(id) \ - ATF_TC_HEAD_NAME(h_require_match_msg_ ## id) -#define H_REQUIRE_MATCH_MSG_BODY_NAME(id) \ - ATF_TC_BODY_NAME(h_require_match_msg_ ## id) -#define H_REQUIRE_MATCH_MSG(id, v1, v2, msg) \ - H_DEF(require_match_msg_ ## id, ATF_REQUIRE_MATCH_MSG(v1, v2, msg)) - -#define H_REQUIRE_ERRNO_HEAD_NAME(id) ATF_TC_HEAD_NAME(h_require_errno_ ## id) -#define H_REQUIRE_ERRNO_BODY_NAME(id) ATF_TC_BODY_NAME(h_require_errno_ ## id) -#define H_REQUIRE_ERRNO(id, exp_errno, bool_expr) \ - H_DEF(require_errno_ ## id, ATF_REQUIRE_ERRNO(exp_errno, bool_expr)) - -/* --------------------------------------------------------------------- - * Test cases for the ATF_{CHECK,REQUIRE}_ERRNO macros. - * --------------------------------------------------------------------- */ - -static int -errno_fail_stub(const int raised_errno) -{ - errno = raised_errno; - return -1; -} - -static int -errno_ok_stub(void) -{ - return 0; -} - -H_CHECK_ERRNO(no_error, -1, errno_ok_stub() == -1); -H_CHECK_ERRNO(errno_ok, 2, errno_fail_stub(2) == -1); -H_CHECK_ERRNO(errno_fail, 3, errno_fail_stub(4) == -1); - -H_REQUIRE_ERRNO(no_error, -1, errno_ok_stub() == -1); -H_REQUIRE_ERRNO(errno_ok, 2, errno_fail_stub(2) == -1); -H_REQUIRE_ERRNO(errno_fail, 3, errno_fail_stub(4) == -1); - -ATF_TC(check_errno); -ATF_TC_HEAD(check_errno, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_CHECK_ERRNO macro"); -} -ATF_TC_BODY(check_errno, tc) -{ - struct test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - bool ok; - const char *exp_regex; - } *t, tests[] = { - { H_CHECK_ERRNO_HEAD_NAME(no_error), - H_CHECK_ERRNO_BODY_NAME(no_error), - false, "Expected true value in errno_ok_stub\\(\\) == -1" }, - { H_CHECK_ERRNO_HEAD_NAME(errno_ok), - H_CHECK_ERRNO_BODY_NAME(errno_ok), - true, NULL }, - { H_CHECK_ERRNO_HEAD_NAME(errno_fail), - H_CHECK_ERRNO_BODY_NAME(errno_fail), - false, "Expected errno 3, got 4, in errno_fail_stub\\(4\\) == -1" }, - { NULL, NULL, false, NULL } - }; - - for (t = &tests[0]; t->head != NULL; t++) { - init_and_run_h_tc("h_check_errno", t->head, t->body); - - ATF_REQUIRE(exists("before")); - ATF_REQUIRE(exists("after")); - - if (t->ok) { - ATF_REQUIRE(atf_utils_grep_file("^passed", "result")); - } else { - ATF_REQUIRE(atf_utils_grep_file("^failed", "result")); - ATF_REQUIRE(atf_utils_grep_file( - "macros_test.c:[0-9]+: %s$", "error", t->exp_regex)); - } - - ATF_REQUIRE(unlink("before") != -1); - ATF_REQUIRE(unlink("after") != -1); - } -} - -ATF_TC(require_errno); -ATF_TC_HEAD(require_errno, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_REQUIRE_ERRNO macro"); -} -ATF_TC_BODY(require_errno, tc) -{ - struct test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - bool ok; - const char *exp_regex; - } *t, tests[] = { - { H_REQUIRE_ERRNO_HEAD_NAME(no_error), - H_REQUIRE_ERRNO_BODY_NAME(no_error), - false, "Expected true value in errno_ok_stub\\(\\) == -1" }, - { H_REQUIRE_ERRNO_HEAD_NAME(errno_ok), - H_REQUIRE_ERRNO_BODY_NAME(errno_ok), - true, NULL }, - { H_REQUIRE_ERRNO_HEAD_NAME(errno_fail), - H_REQUIRE_ERRNO_BODY_NAME(errno_fail), - false, "Expected errno 3, got 4, in errno_fail_stub\\(4\\) == -1" }, - { NULL, NULL, false, NULL } - }; - - for (t = &tests[0]; t->head != NULL; t++) { - init_and_run_h_tc("h_require_errno", t->head, t->body); - - ATF_REQUIRE(exists("before")); - if (t->ok) { - ATF_REQUIRE(atf_utils_grep_file("^passed", "result")); - ATF_REQUIRE(exists("after")); - } else { - ATF_REQUIRE(atf_utils_grep_file( - "^failed: .*macros_test.c:[0-9]+: %s$", "result", - t->exp_regex)); - ATF_REQUIRE(!exists("after")); - } - - ATF_REQUIRE(unlink("before") != -1); - if (t->ok) - ATF_REQUIRE(unlink("after") != -1); - } -} - -/* --------------------------------------------------------------------- - * Test cases for the ATF_CHECK and ATF_CHECK_MSG macros. - * --------------------------------------------------------------------- */ - -H_CHECK(0, 0); -H_CHECK(1, 1); -H_CHECK_MSG(0, 0, "expected a false value"); -H_CHECK_MSG(1, 1, "expected a true value"); - -ATF_TC(check); -ATF_TC_HEAD(check, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_CHECK and " - "ATF_CHECK_MSG macros"); -} -ATF_TC_BODY(check, tc) -{ - struct test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - bool value; - const char *msg; - bool ok; - } *t, tests[] = { - { H_CHECK_HEAD_NAME(0), H_CHECK_BODY_NAME(0), 0, - "0 not met", false }, - { H_CHECK_HEAD_NAME(1), H_CHECK_BODY_NAME(1), 1, - "1 not met", true }, - { H_CHECK_MSG_HEAD_NAME(0), H_CHECK_MSG_BODY_NAME(0), 0, - "expected a false value", false }, - { H_CHECK_MSG_HEAD_NAME(1), H_CHECK_MSG_BODY_NAME(1), 1, - "expected a true value", true }, - { NULL, NULL, false, NULL, false } - }; - - for (t = &tests[0]; t->head != NULL; t++) { - printf("Checking with a %d value\n", t->value); - - init_and_run_h_tc("h_check", t->head, t->body); - - ATF_REQUIRE(exists("before")); - ATF_REQUIRE(exists("after")); - - if (t->ok) { - ATF_REQUIRE(atf_utils_grep_file("^passed", "result")); - } else { - ATF_REQUIRE(atf_utils_grep_file("^failed", "result")); - ATF_REQUIRE(atf_utils_grep_file("Check failed: .*" - "macros_test.c:[0-9]+: %s$", "error", t->msg)); - } - - ATF_REQUIRE(unlink("before") != -1); - ATF_REQUIRE(unlink("after") != -1); - } -} - -/* --------------------------------------------------------------------- - * Test cases for the ATF_CHECK_*EQ_ macros. - * --------------------------------------------------------------------- */ - -struct check_eq_test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - const char *v1; - const char *v2; - const char *msg; - bool ok; -}; - -static -void -do_check_eq_tests(const struct check_eq_test *tests) -{ - const struct check_eq_test *t; - - for (t = &tests[0]; t->head != NULL; t++) { - printf("Checking with %s, %s and expecting %s\n", t->v1, t->v2, - t->ok ? "true" : "false"); - - init_and_run_h_tc("h_check", t->head, t->body); - - ATF_CHECK(exists("before")); - ATF_CHECK(exists("after")); - - if (t->ok) { - ATF_REQUIRE(atf_utils_grep_file("^passed", "result")); - } else { - ATF_REQUIRE(atf_utils_grep_file("^failed", "result")); - ATF_CHECK(atf_utils_grep_file("Check failed: .*" - "macros_test.c:[0-9]+: %s$", "error", t->msg)); - } - - ATF_CHECK(unlink("before") != -1); - ATF_CHECK(unlink("after") != -1); - } -} - -H_CHECK_EQ(1_1, 1, 1); -H_CHECK_EQ(1_2, 1, 2); -H_CHECK_EQ(2_1, 2, 1); -H_CHECK_EQ(2_2, 2, 2); -H_CHECK_EQ_MSG(1_1, 1, 1, "1 does not match 1"); -H_CHECK_EQ_MSG(1_2, 1, 2, "1 does not match 2"); -H_CHECK_EQ_MSG(2_1, 2, 1, "2 does not match 1"); -H_CHECK_EQ_MSG(2_2, 2, 2, "2 does not match 2"); - -ATF_TC(check_eq); -ATF_TC_HEAD(check_eq, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_CHECK_EQ and " - "ATF_CHECK_EQ_MSG macros"); -} -ATF_TC_BODY(check_eq, tc) -{ - struct check_eq_test tests[] = { - { H_CHECK_EQ_HEAD_NAME(1_1), H_CHECK_EQ_BODY_NAME(1_1), - "1", "1", "1 != 1", true }, - { H_CHECK_EQ_HEAD_NAME(1_2), H_CHECK_EQ_BODY_NAME(1_2), - "1", "2", "1 != 2", false }, - { H_CHECK_EQ_HEAD_NAME(2_1), H_CHECK_EQ_BODY_NAME(2_1), - "2", "1", "2 != 1", false }, - { H_CHECK_EQ_HEAD_NAME(2_2), H_CHECK_EQ_BODY_NAME(2_2), - "2", "2", "2 != 2", true }, - { H_CHECK_EQ_MSG_HEAD_NAME(1_1), H_CHECK_EQ_MSG_BODY_NAME(1_1), - "1", "1", "1 != 1: 1 does not match 1", true }, - { H_CHECK_EQ_MSG_HEAD_NAME(1_2), H_CHECK_EQ_MSG_BODY_NAME(1_2), - "1", "2", "1 != 2: 1 does not match 2", false }, - { H_CHECK_EQ_MSG_HEAD_NAME(2_1), H_CHECK_EQ_MSG_BODY_NAME(2_1), - "2", "1", "2 != 1: 2 does not match 1", false }, - { H_CHECK_EQ_MSG_HEAD_NAME(2_2), H_CHECK_EQ_MSG_BODY_NAME(2_2), - "2", "2", "2 != 2: 2 does not match 2", true }, - { NULL, NULL, 0, 0, "", false } - }; - do_check_eq_tests(tests); -} - -H_CHECK_STREQ(1_1, "1", "1"); -H_CHECK_STREQ(1_2, "1", "2"); -H_CHECK_STREQ(2_1, "2", "1"); -H_CHECK_STREQ(2_2, "2", "2"); -H_CHECK_STREQ_MSG(1_1, "1", "1", "1 does not match 1"); -H_CHECK_STREQ_MSG(1_2, "1", "2", "1 does not match 2"); -H_CHECK_STREQ_MSG(2_1, "2", "1", "2 does not match 1"); -H_CHECK_STREQ_MSG(2_2, "2", "2", "2 does not match 2"); -#define CHECK_STREQ_VAR1 "5" -#define CHECK_STREQ_VAR2 "9" -const char *check_streq_var1 = CHECK_STREQ_VAR1; -const char *check_streq_var2 = CHECK_STREQ_VAR2; -H_CHECK_STREQ(vars, check_streq_var1, check_streq_var2); - -ATF_TC(check_streq); -ATF_TC_HEAD(check_streq, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_CHECK_STREQ and " - "ATF_CHECK_STREQ_MSG macros"); -} -ATF_TC_BODY(check_streq, tc) -{ - struct check_eq_test tests[] = { - { H_CHECK_STREQ_HEAD_NAME(1_1), H_CHECK_STREQ_BODY_NAME(1_1), - "1", "1", "\"1\" != \"1\" \\(1 != 1\\)", true }, - { H_CHECK_STREQ_HEAD_NAME(1_2), H_CHECK_STREQ_BODY_NAME(1_2), - "1", "2", "\"1\" != \"2\" \\(1 != 2\\)", false }, - { H_CHECK_STREQ_HEAD_NAME(2_1), H_CHECK_STREQ_BODY_NAME(2_1), - "2", "1", "\"2\" != \"1\" \\(2 != 1\\)", false }, - { H_CHECK_STREQ_HEAD_NAME(2_2), H_CHECK_STREQ_BODY_NAME(2_2), - "2", "2", "\"2\" != \"2\" \\(2 != 2\\)", true }, - { H_CHECK_STREQ_MSG_HEAD_NAME(1_1), - H_CHECK_STREQ_MSG_BODY_NAME(1_1), - "1", "1", "\"1\" != \"1\" \\(1 != 1\\): 1 does not match 1", true }, - { H_CHECK_STREQ_MSG_HEAD_NAME(1_2), - H_CHECK_STREQ_MSG_BODY_NAME(1_2), - "1", "2", "\"1\" != \"2\" \\(1 != 2\\): 1 does not match 2", false }, - { H_CHECK_STREQ_MSG_HEAD_NAME(2_1), - H_CHECK_STREQ_MSG_BODY_NAME(2_1), - "2", "1", "\"2\" != \"1\" \\(2 != 1\\): 2 does not match 1", false }, - { H_CHECK_STREQ_MSG_HEAD_NAME(2_2), - H_CHECK_STREQ_MSG_BODY_NAME(2_2), - "2", "2", "\"2\" != \"2\" \\(2 != 2\\): 2 does not match 2", true }, - { H_CHECK_STREQ_HEAD_NAME(vars), H_CHECK_STREQ_BODY_NAME(vars), - check_streq_var1, check_streq_var2, - "check_streq_var1 != check_streq_var2 \\(" - CHECK_STREQ_VAR1 " != " CHECK_STREQ_VAR2 "\\)", false }, - { NULL, NULL, 0, 0, "", false } - }; - do_check_eq_tests(tests); -} - -/* --------------------------------------------------------------------- - * Test cases for the ATF_CHECK_MATCH and ATF_CHECK_MATCH_MSG macros. - * --------------------------------------------------------------------- */ - -H_CHECK_MATCH(yes, "hello [a-z]+", "abc hello world"); -H_CHECK_MATCH(no, "hello [a-z]+", "abc hello WORLD"); -H_CHECK_MATCH_MSG(yes, "hello [a-z]+", "abc hello world", "lowercase"); -H_CHECK_MATCH_MSG(no, "hello [a-z]+", "abc hello WORLD", "uppercase"); - -ATF_TC(check_match); -ATF_TC_HEAD(check_match, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_CHECK_MATCH and " - "ATF_CHECK_MATCH_MSG macros"); -} -ATF_TC_BODY(check_match, tc) -{ - struct check_eq_test tests[] = { - { H_CHECK_MATCH_HEAD_NAME(yes), H_CHECK_MATCH_BODY_NAME(yes), - "hello [a-z]+", "abc hello world", "", true }, - { H_CHECK_MATCH_HEAD_NAME(no), H_CHECK_MATCH_BODY_NAME(no), - "hello [a-z]+", "abc hello WORLD", - "'hello \\[a-z\\]\\+' not matched in 'abc hello WORLD'", false }, - { H_CHECK_MATCH_MSG_HEAD_NAME(yes), H_CHECK_MATCH_MSG_BODY_NAME(yes), - "hello [a-z]+", "abc hello world", "", true }, - { H_CHECK_MATCH_MSG_HEAD_NAME(no), H_CHECK_MATCH_MSG_BODY_NAME(no), - "hello [a-z]+", "abc hello WORLD", - "'hello \\[a-z\\]\\+' not matched in 'abc hello WORLD': uppercase", - false }, - { NULL, NULL, 0, 0, "", false } - }; - do_check_eq_tests(tests); -} - -/* --------------------------------------------------------------------- - * Test cases for the ATF_REQUIRE and ATF_REQUIRE_MSG macros. - * --------------------------------------------------------------------- */ - -H_REQUIRE(0, 0); -H_REQUIRE(1, 1); -H_REQUIRE_MSG(0, 0, "expected a false value"); -H_REQUIRE_MSG(1, 1, "expected a true value"); - -ATF_TC(require); -ATF_TC_HEAD(require, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_REQUIRE and " - "ATF_REQUIRE_MSG macros"); -} -ATF_TC_BODY(require, tc) -{ - struct test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - bool value; - const char *msg; - bool ok; - } *t, tests[] = { - { H_REQUIRE_HEAD_NAME(0), H_REQUIRE_BODY_NAME(0), 0, - "0 not met", false }, - { H_REQUIRE_HEAD_NAME(1), H_REQUIRE_BODY_NAME(1), 1, - "1 not met", true }, - { H_REQUIRE_MSG_HEAD_NAME(0), H_REQUIRE_MSG_BODY_NAME(0), 0, - "expected a false value", false }, - { H_REQUIRE_MSG_HEAD_NAME(1), H_REQUIRE_MSG_BODY_NAME(1), 1, - "expected a true value", true }, - { NULL, NULL, false, NULL, false } - }; - - for (t = &tests[0]; t->head != NULL; t++) { - printf("Checking with a %d value\n", t->value); - - init_and_run_h_tc("h_require", t->head, t->body); - - ATF_REQUIRE(exists("before")); - if (t->ok) { - ATF_REQUIRE(atf_utils_grep_file("^passed", "result")); - ATF_REQUIRE(exists("after")); - } else { - ATF_REQUIRE(atf_utils_grep_file( - "^failed: .*macros_test.c:[0-9]+: %s$", "result", t->msg)); - ATF_REQUIRE(!exists("after")); - } - - ATF_REQUIRE(unlink("before") != -1); - if (t->ok) - ATF_REQUIRE(unlink("after") != -1); - } -} - -/* --------------------------------------------------------------------- - * Test cases for the ATF_REQUIRE_*EQ_ macros. - * --------------------------------------------------------------------- */ - -struct require_eq_test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - const char *v1; - const char *v2; - const char *msg; - bool ok; -}; - -static -void -do_require_eq_tests(const struct require_eq_test *tests) -{ - const struct require_eq_test *t; - - for (t = &tests[0]; t->head != NULL; t++) { - printf("Checking with %s, %s and expecting %s\n", t->v1, t->v2, - t->ok ? "true" : "false"); - - init_and_run_h_tc("h_require", t->head, t->body); - - ATF_REQUIRE(exists("before")); - if (t->ok) { - ATF_REQUIRE(atf_utils_grep_file("^passed", "result")); - ATF_REQUIRE(exists("after")); - } else { - ATF_REQUIRE(atf_utils_grep_file("^failed: .*macros_test.c" - ":[0-9]+: %s$", "result", t->msg)); - ATF_REQUIRE(!exists("after")); - } - - ATF_REQUIRE(unlink("before") != -1); - if (t->ok) - ATF_REQUIRE(unlink("after") != -1); - } -} - -H_REQUIRE_EQ(1_1, 1, 1); -H_REQUIRE_EQ(1_2, 1, 2); -H_REQUIRE_EQ(2_1, 2, 1); -H_REQUIRE_EQ(2_2, 2, 2); -H_REQUIRE_EQ_MSG(1_1, 1, 1, "1 does not match 1"); -H_REQUIRE_EQ_MSG(1_2, 1, 2, "1 does not match 2"); -H_REQUIRE_EQ_MSG(2_1, 2, 1, "2 does not match 1"); -H_REQUIRE_EQ_MSG(2_2, 2, 2, "2 does not match 2"); - -ATF_TC(require_eq); -ATF_TC_HEAD(require_eq, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_REQUIRE_EQ and " - "ATF_REQUIRE_EQ_MSG macros"); -} -ATF_TC_BODY(require_eq, tc) -{ - struct require_eq_test tests[] = { - { H_REQUIRE_EQ_HEAD_NAME(1_1), H_REQUIRE_EQ_BODY_NAME(1_1), - "1", "1", "1 != 1", true }, - { H_REQUIRE_EQ_HEAD_NAME(1_2), H_REQUIRE_EQ_BODY_NAME(1_2), - "1", "2", "1 != 2", false }, - { H_REQUIRE_EQ_HEAD_NAME(2_1), H_REQUIRE_EQ_BODY_NAME(2_1), - "2", "1", "2 != 1", false }, - { H_REQUIRE_EQ_HEAD_NAME(2_2), H_REQUIRE_EQ_BODY_NAME(2_2), - "2", "2", "2 != 2", true }, - { H_REQUIRE_EQ_MSG_HEAD_NAME(1_1), H_REQUIRE_EQ_MSG_BODY_NAME(1_1), - "1", "1", "1 != 1: 1 does not match 1", true }, - { H_REQUIRE_EQ_MSG_HEAD_NAME(1_2), H_REQUIRE_EQ_MSG_BODY_NAME(1_2), - "1", "2", "1 != 2: 1 does not match 2", false }, - { H_REQUIRE_EQ_MSG_HEAD_NAME(2_1), H_REQUIRE_EQ_MSG_BODY_NAME(2_1), - "2", "1", "2 != 1: 2 does not match 1", false }, - { H_REQUIRE_EQ_MSG_HEAD_NAME(2_2), H_REQUIRE_EQ_MSG_BODY_NAME(2_2), - "2", "2", "2 != 2: 2 does not match 2", true }, - { NULL, NULL, 0, 0, "", false } - }; - do_require_eq_tests(tests); -} - -H_REQUIRE_STREQ(1_1, "1", "1"); -H_REQUIRE_STREQ(1_2, "1", "2"); -H_REQUIRE_STREQ(2_1, "2", "1"); -H_REQUIRE_STREQ(2_2, "2", "2"); -H_REQUIRE_STREQ_MSG(1_1, "1", "1", "1 does not match 1"); -H_REQUIRE_STREQ_MSG(1_2, "1", "2", "1 does not match 2"); -H_REQUIRE_STREQ_MSG(2_1, "2", "1", "2 does not match 1"); -H_REQUIRE_STREQ_MSG(2_2, "2", "2", "2 does not match 2"); -#define REQUIRE_STREQ_VAR1 "5" -#define REQUIRE_STREQ_VAR2 "9" -const char *require_streq_var1 = REQUIRE_STREQ_VAR1; -const char *require_streq_var2 = REQUIRE_STREQ_VAR2; -H_REQUIRE_STREQ(vars, require_streq_var1, require_streq_var2); - -ATF_TC(require_streq); -ATF_TC_HEAD(require_streq, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_REQUIRE_STREQ and " - "ATF_REQUIRE_STREQ_MSG macros"); -} -ATF_TC_BODY(require_streq, tc) -{ - struct require_eq_test tests[] = { - { H_REQUIRE_STREQ_HEAD_NAME(1_1), H_REQUIRE_STREQ_BODY_NAME(1_1), - "1", "1", "\"1\" != \"1\" \\(1 != 1\\)", true }, - { H_REQUIRE_STREQ_HEAD_NAME(1_2), H_REQUIRE_STREQ_BODY_NAME(1_2), - "1", "2", "\"1\" != \"2\" \\(1 != 2\\)", false }, - { H_REQUIRE_STREQ_HEAD_NAME(2_1), H_REQUIRE_STREQ_BODY_NAME(2_1), - "2", "1", "\"2\" != \"1\" \\(2 != 1\\)", false }, - { H_REQUIRE_STREQ_HEAD_NAME(2_2), H_REQUIRE_STREQ_BODY_NAME(2_2), - "2", "2", "\"2\" != \"2\" \\(2 != 2\\)", true }, - { H_REQUIRE_STREQ_MSG_HEAD_NAME(1_1), - H_REQUIRE_STREQ_MSG_BODY_NAME(1_1), - "1", "1", "\"1\" != \"1\" \\(1 != 1\\): 1 does not match 1", true }, - { H_REQUIRE_STREQ_MSG_HEAD_NAME(1_2), - H_REQUIRE_STREQ_MSG_BODY_NAME(1_2), - "1", "2", "\"1\" != \"2\" \\(1 != 2\\): 1 does not match 2", false }, - { H_REQUIRE_STREQ_MSG_HEAD_NAME(2_1), - H_REQUIRE_STREQ_MSG_BODY_NAME(2_1), - "2", "1", "\"2\" != \"1\" \\(2 != 1\\): 2 does not match 1", false }, - { H_REQUIRE_STREQ_MSG_HEAD_NAME(2_2), - H_REQUIRE_STREQ_MSG_BODY_NAME(2_2), - "2", "2", "\"2\" != \"2\" \\(2 != 2\\): 2 does not match 2", true }, - { H_REQUIRE_STREQ_HEAD_NAME(vars), H_REQUIRE_STREQ_BODY_NAME(vars), - require_streq_var1, require_streq_var2, - "require_streq_var1 != require_streq_var2 \\(" - REQUIRE_STREQ_VAR1 " != " REQUIRE_STREQ_VAR2 "\\)", false }, - { NULL, NULL, 0, 0, "", false } - }; - do_require_eq_tests(tests); -} - -/* --------------------------------------------------------------------- - * Test cases for the ATF_REQUIRE_MATCH and ATF_REQUIRE_MATCH_MSG macros. - * --------------------------------------------------------------------- */ - -H_REQUIRE_MATCH(yes, "hello [a-z]+", "abc hello world"); -H_REQUIRE_MATCH(no, "hello [a-z]+", "abc hello WORLD"); -H_REQUIRE_MATCH_MSG(yes, "hello [a-z]+", "abc hello world", "lowercase"); -H_REQUIRE_MATCH_MSG(no, "hello [a-z]+", "abc hello WORLD", "uppercase"); - -ATF_TC(require_match); -ATF_TC_HEAD(require_match, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the ATF_REQUIRE_MATCH and " - "ATF_REQUIRE_MATCH_MSG macros"); -} -ATF_TC_BODY(require_match, tc) -{ - struct require_eq_test tests[] = { - { H_REQUIRE_MATCH_HEAD_NAME(yes), H_REQUIRE_MATCH_BODY_NAME(yes), - "hello [a-z]+", "abc hello world", "", true }, - { H_REQUIRE_MATCH_HEAD_NAME(no), H_REQUIRE_MATCH_BODY_NAME(no), - "hello [a-z]+", "abc hello WORLD", - "'hello \\[a-z\\]\\+' not matched in 'abc hello WORLD'", false }, - { H_REQUIRE_MATCH_MSG_HEAD_NAME(yes), - H_REQUIRE_MATCH_MSG_BODY_NAME(yes), - "hello [a-z]+", "abc hello world", "", true }, - { H_REQUIRE_MATCH_MSG_HEAD_NAME(no), H_REQUIRE_MATCH_MSG_BODY_NAME(no), - "hello [a-z]+", "abc hello WORLD", - "'hello \\[a-z\\]\\+' not matched in 'abc hello WORLD': uppercase", - false }, - { NULL, NULL, 0, 0, "", false } - }; - do_require_eq_tests(tests); -} - -/* --------------------------------------------------------------------- - * Miscellaneous test cases covering several macros. - * --------------------------------------------------------------------- */ - -static -bool -aux_bool(const char *fmt ATF_DEFS_ATTRIBUTE_UNUSED) -{ - return false; -} - -static -const char * -aux_str(const char *fmt ATF_DEFS_ATTRIBUTE_UNUSED) -{ - return "foo"; -} - -H_CHECK(msg, aux_bool("%d")); -H_REQUIRE(msg, aux_bool("%d")); -H_CHECK_STREQ(msg, aux_str("%d"), ""); -H_REQUIRE_STREQ(msg, aux_str("%d"), ""); - -ATF_TC(msg_embedded_fmt); -ATF_TC_HEAD(msg_embedded_fmt, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests that format strings passed " - "as part of the automatically-generated messages " - "do not get expanded"); -} -ATF_TC_BODY(msg_embedded_fmt, tc) -{ - struct test { - void (*head)(atf_tc_t *); - void (*body)(const atf_tc_t *); - bool fatal; - const char *msg; - } *t, tests[] = { - { H_CHECK_HEAD_NAME(msg), H_CHECK_BODY_NAME(msg), false, - "aux_bool\\(\"%d\"\\) not met" }, - { H_REQUIRE_HEAD_NAME(msg), H_REQUIRE_BODY_NAME(msg), true, - "aux_bool\\(\"%d\"\\) not met" }, - { H_CHECK_STREQ_HEAD_NAME(msg), H_CHECK_STREQ_BODY_NAME(msg), false, - "aux_str\\(\"%d\"\\) != \"\" \\(foo != \\)" }, - { H_REQUIRE_STREQ_HEAD_NAME(msg), H_REQUIRE_STREQ_BODY_NAME(msg), true, - "aux_str\\(\"%d\"\\) != \"\" \\(foo != \\)" }, - { NULL, NULL, false, NULL } - }; - - for (t = &tests[0]; t->head != NULL; t++) { - printf("Checking with an expected '%s' message\n", t->msg); - - init_and_run_h_tc("h_check", t->head, t->body); - - if (t->fatal) { - bool matched = - atf_utils_grep_file( - "^failed: .*macros_test.c:[0-9]+: %s$", "result", t->msg); - ATF_CHECK_MSG(matched, "couldn't find error string in result"); - } else { - bool matched = atf_utils_grep_file("Check failed: .*" - "macros_test.c:[0-9]+: %s$", "error", t->msg); - ATF_CHECK_MSG(matched, "couldn't find error string in output"); - } - } -} - -/* --------------------------------------------------------------------- - * Tests cases for the header file. - * --------------------------------------------------------------------- */ - -BUILD_TC(use, "macros_h_test.c", - "Tests that the macros provided by the atf-c/macros.h file " - "do not cause syntax errors when used", - "Build of macros_h_test.c failed; some macros in atf-c/macros.h " - "are broken"); - -ATF_TC(detect_unused_tests); -ATF_TC_HEAD(detect_unused_tests, tc) -{ - atf_tc_set_md_var(tc, "descr", - "Tests that defining an unused test case raises a " - "warning (and thus an error)"); -} -ATF_TC_BODY(detect_unused_tests, tc) -{ - const char* validate_compiler = - "struct test_struct { int dummy; };\n" - "#define define_unused static struct test_struct unused\n" - "define_unused;\n"; - - atf_utils_create_file("compiler_test.c", "%s", validate_compiler); - if (build_check_c_o("compiler_test.c")) - atf_tc_expect_fail("Compiler does not raise a warning on an unused " - "static global variable declared by a macro"); - - if (build_check_c_o_srcdir(tc, "unused_test.c")) - atf_tc_fail("Build of unused_test.c passed; unused test cases are " - "not properly detected"); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, check); - ATF_TP_ADD_TC(tp, check_eq); - ATF_TP_ADD_TC(tp, check_streq); - ATF_TP_ADD_TC(tp, check_errno); - ATF_TP_ADD_TC(tp, check_match); - - ATF_TP_ADD_TC(tp, require); - ATF_TP_ADD_TC(tp, require_eq); - ATF_TP_ADD_TC(tp, require_streq); - ATF_TP_ADD_TC(tp, require_errno); - ATF_TP_ADD_TC(tp, require_match); - - ATF_TP_ADD_TC(tp, msg_embedded_fmt); - - /* Add the test cases for the header file. */ - ATF_TP_ADD_TC(tp, use); - ATF_TP_ADD_TC(tp, detect_unused_tests); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/pkg_config_test.sh b/unit/atf-src/atf-c/pkg_config_test.sh deleted file mode 100644 index ddffdb0ca1..0000000000 --- a/unit/atf-src/atf-c/pkg_config_test.sh +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright (c) 2008 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The following tests assume that the atf-c.pc file is installed in a -# directory that is known by pkg-config. Otherwise they will fail, -# and you will be required to adjust PKG_CONFIG_PATH accordingly. -# -# It would be possible to bypass this requirement by setting the path -# explicitly during the tests, but then this would not do a real check -# to ensure that the installation is working. - -require_pc() -{ - pkg-config ${1} || atf_fail "pkg-config could not locate ${1}.pc;" \ - "maybe need to set PKG_CONFIG_PATH?" -} - -check_version() -{ - ver1=$($(atf_get_srcdir)/detail/version_helper) - echo "Version reported by builtin PACKAGE_VERSION: ${ver1}" - - atf_check -s eq:0 -o save:stdout -e empty pkg-config --modversion "${1}" - ver2=$(cat stdout) - echo "Version reported by pkg-config: ${ver2}" - - atf_check_equal ${ver1} ${ver2} -} - -atf_test_case version -version_head() -{ - atf_set "descr" "Checks that the version in atf-c is correct" - atf_set "require.progs" "pkg-config" -} -version_body() -{ - require_pc "atf-c" - - check_version "atf-c" -} - -atf_test_case build -build_head() -{ - atf_set "descr" "Checks that a test program can be built against" \ - "the C library based on the pkg-config information" - atf_set "require.progs" "pkg-config" -} -build_body() -{ - require_pc "atf-c" - - atf_check -s eq:0 -o save:stdout -e empty pkg-config --variable=cc atf-c - cc=$(cat stdout) - echo "Compiler is: ${cxx}" - atf_require_prog ${cxx} - - cat >tp.c < - -#include - -ATF_TC(tc); -ATF_TC_HEAD(tc, tc) { - atf_tc_set_md_var(tc, "descr", "A test case"); -} -ATF_TC_BODY(tc, tc) { - printf("Running\n"); -} - -ATF_TP_ADD_TCS(tp) { - ATF_TP_ADD_TC(tp, tc); - - return atf_no_error(); -} -EOF - - atf_check -s eq:0 -o save:stdout -e empty pkg-config --cflags atf-c - cflags=$(cat stdout) - echo "CFLAGS are: ${cflags}" - - atf_check -s eq:0 -o save:stdout -e empty \ - pkg-config --libs-only-L --libs-only-other atf-c - ldflags=$(cat stdout) - atf_check -s eq:0 -o save:stdout -e empty pkg-config --libs-only-l atf-c - libs=$(cat stdout) - echo "LDFLAGS are: ${ldflags}" - echo "LIBS are: ${libs}" - - atf_check -s eq:0 -o empty -e empty ${cc} ${cflags} -o tp.o -c tp.c - atf_check -s eq:0 -o empty -e empty ${cc} ${ldflags} -o tp tp.o ${libs} - - libpath= - for f in ${ldflags}; do - case ${f} in - -L*) - dir=$(echo ${f} | sed -e 's,^-L,,') - if [ -z "${libpath}" ]; then - libpath="${dir}" - else - libpath="${libpath}:${dir}" - fi - ;; - *) - ;; - esac - done - - atf_check -s eq:0 -o empty -e empty test -x tp - atf_check -s eq:0 -o match:'Running' -e empty -x \ - "LD_LIBRARY_PATH=${libpath} ./tp tc" -} - -atf_init_test_cases() -{ - atf_add_test_case version - atf_add_test_case build -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-c/tc.c b/unit/atf-src/atf-c/tc.c deleted file mode 100644 index f75d059871..0000000000 --- a/unit/atf-src/atf-c/tc.c +++ /dev/null @@ -1,1219 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/tc.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atf-c/defs.h" -#include "atf-c/detail/env.h" -#include "atf-c/detail/fs.h" -#include "atf-c/detail/map.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/detail/text.h" -#include "atf-c/error.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -enum expect_type { - EXPECT_PASS, - EXPECT_FAIL, - EXPECT_EXIT, - EXPECT_SIGNAL, - EXPECT_DEATH, - EXPECT_TIMEOUT, -}; - -struct context { - const atf_tc_t *tc; - const char *resfile; - size_t fail_count; - - enum expect_type expect; - atf_dynstr_t expect_reason; - size_t expect_previous_fail_count; - size_t expect_fail_count; - int expect_exitcode; - int expect_signo; -}; - -static void context_init(struct context *, const atf_tc_t *, const char *); -static void check_fatal_error(atf_error_t); -static void report_fatal_error(const char *, ...) - ATF_DEFS_ATTRIBUTE_NORETURN; -static atf_error_t write_resfile(const int, const char *, const int, - const atf_dynstr_t *); -static void create_resfile(const char *, const char *, const int, - atf_dynstr_t *); -static void error_in_expect(struct context *, const char *, ...) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void validate_expect(struct context *); -static void expected_failure(struct context *, atf_dynstr_t *) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void fail_requirement(struct context *, atf_dynstr_t *) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void fail_check(struct context *, atf_dynstr_t *); -static void pass(struct context *) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void skip(struct context *, atf_dynstr_t *) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void format_reason_ap(atf_dynstr_t *, const char *, const size_t, - const char *, va_list); -static void format_reason_fmt(atf_dynstr_t *, const char *, const size_t, - const char *, ...); -static void errno_test(struct context *, const char *, const size_t, - const int, const char *, const bool, - void (*)(struct context *, atf_dynstr_t *)); -static atf_error_t check_prog_in_dir(const char *, void *); -static atf_error_t check_prog(struct context *, const char *); - -static void -context_init(struct context *ctx, const atf_tc_t *tc, const char *resfile) -{ - ctx->tc = tc; - ctx->resfile = resfile; - ctx->fail_count = 0; - ctx->expect = EXPECT_PASS; - check_fatal_error(atf_dynstr_init(&ctx->expect_reason)); - ctx->expect_previous_fail_count = 0; - ctx->expect_fail_count = 0; - ctx->expect_exitcode = 0; - ctx->expect_signo = 0; -} - -static void -check_fatal_error(atf_error_t err) -{ - if (atf_is_error(err)) { - char buf[1024]; - atf_error_format(err, buf, sizeof(buf)); - fprintf(stderr, "FATAL ERROR: %s\n", buf); - atf_error_free(err); - abort(); - } -} - -static void -report_fatal_error(const char *msg, ...) -{ - va_list ap; - fprintf(stderr, "FATAL ERROR: "); - - va_start(ap, msg); - vfprintf(stderr, msg, ap); - va_end(ap); - - fprintf(stderr, "\n"); - abort(); -} - -/** Writes to a results file. - * - * The results file is supposed to be already open. - * - * This function returns an error code instead of exiting in case of error - * because the caller needs to clean up the reason object before terminating. - */ -static atf_error_t -write_resfile(const int fd, const char *result, const int arg, - const atf_dynstr_t *reason) -{ - static char NL[] = "\n", CS[] = ": "; - char buf[64]; - const char *r; - struct iovec iov[5]; - ssize_t ret; - int count = 0; - - INV(arg == -1 || reason != NULL); - -#define UNCONST(a) ((void *)(unsigned long)(const void *)(a)) - iov[count].iov_base = UNCONST(result); - iov[count++].iov_len = strlen(result); - - if (reason != NULL) { - if (arg != -1) { - iov[count].iov_base = buf; - iov[count++].iov_len = snprintf(buf, sizeof(buf), "(%d)", arg); - } - - iov[count].iov_base = CS; - iov[count++].iov_len = sizeof(CS) - 1; - - r = atf_dynstr_cstring(reason); - iov[count].iov_base = UNCONST(r); - iov[count++].iov_len = strlen(r); - } -#undef UNCONST - - iov[count].iov_base = NL; - iov[count++].iov_len = sizeof(NL) - 1; - - while ((ret = writev(fd, iov, count)) == -1 && errno == EINTR) - continue; /* Retry. */ - if (ret != -1) - return atf_no_error(); - - return atf_libc_error( - errno, "Failed to write results file; result %s, reason %s", result, - reason == NULL ? "null" : atf_dynstr_cstring(reason)); -} - -/** Creates a results file. - * - * The input reason is released in all cases. - * - * An error in this function is considered to be fatal, hence why it does - * not return any error code. - */ -static void -create_resfile(const char *resfile, const char *result, const int arg, - atf_dynstr_t *reason) -{ - atf_error_t err; - - if (strcmp("/dev/stdout", resfile) == 0) { - err = write_resfile(STDOUT_FILENO, result, arg, reason); - } else if (strcmp("/dev/stderr", resfile) == 0) { - err = write_resfile(STDERR_FILENO, result, arg, reason); - } else { - const int fd = open(resfile, O_WRONLY | O_CREAT | O_TRUNC, - S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - if (fd == -1) { - err = atf_libc_error(errno, "Cannot create results file '%s'", - resfile); - } else { - err = write_resfile(fd, result, arg, reason); - close(fd); - } - } - - if (reason != NULL) - atf_dynstr_fini(reason); - - check_fatal_error(err); -} - -/** Fails a test case if validate_expect fails. */ -static void -error_in_expect(struct context *ctx, const char *fmt, ...) -{ - atf_dynstr_t reason; - va_list ap; - - va_start(ap, fmt); - format_reason_ap(&reason, NULL, 0, fmt, ap); - va_end(ap); - - ctx->expect = EXPECT_PASS; /* Ensure fail_requirement really fails. */ - fail_requirement(ctx, &reason); -} - -/** Ensures that the "expect" state is correct. - * - * Call this function before modifying the current value of expect. - */ -static void -validate_expect(struct context *ctx) -{ - if (ctx->expect == EXPECT_DEATH) { - error_in_expect(ctx, "Test case was expected to terminate abruptly " - "but it continued execution"); - } else if (ctx->expect == EXPECT_EXIT) { - error_in_expect(ctx, "Test case was expected to exit cleanly but it " - "continued execution"); - } else if (ctx->expect == EXPECT_FAIL) { - if (ctx->expect_fail_count == ctx->expect_previous_fail_count) - error_in_expect(ctx, "Test case was expecting a failure but none " - "were raised"); - else - INV(ctx->expect_fail_count > ctx->expect_previous_fail_count); - } else if (ctx->expect == EXPECT_PASS) { - /* Nothing to validate. */ - } else if (ctx->expect == EXPECT_SIGNAL) { - error_in_expect(ctx, "Test case was expected to receive a termination " - "signal but it continued execution"); - } else if (ctx->expect == EXPECT_TIMEOUT) { - error_in_expect(ctx, "Test case was expected to hang but it continued " - "execution"); - } else - UNREACHABLE; -} - -static void -expected_failure(struct context *ctx, atf_dynstr_t *reason) -{ - check_fatal_error(atf_dynstr_prepend_fmt(reason, "%s: ", - atf_dynstr_cstring(&ctx->expect_reason))); - create_resfile(ctx->resfile, "expected_failure", -1, reason); - exit(EXIT_SUCCESS); -} - -static void -fail_requirement(struct context *ctx, atf_dynstr_t *reason) -{ - if (ctx->expect == EXPECT_FAIL) { - expected_failure(ctx, reason); - } else if (ctx->expect == EXPECT_PASS) { - create_resfile(ctx->resfile, "failed", -1, reason); - exit(EXIT_FAILURE); - } else { - error_in_expect(ctx, "Test case raised a failure but was not " - "expecting one; reason was %s", atf_dynstr_cstring(reason)); - } - UNREACHABLE; -} - -static void -fail_check(struct context *ctx, atf_dynstr_t *reason) -{ - if (ctx->expect == EXPECT_FAIL) { - fprintf(stderr, "*** Expected check failure: %s: %s\n", - atf_dynstr_cstring(&ctx->expect_reason), - atf_dynstr_cstring(reason)); - ctx->expect_fail_count++; - } else if (ctx->expect == EXPECT_PASS) { - fprintf(stderr, "*** Check failed: %s\n", atf_dynstr_cstring(reason)); - ctx->fail_count++; - } else { - error_in_expect(ctx, "Test case raised a failure but was not " - "expecting one; reason was %s", atf_dynstr_cstring(reason)); - } - - atf_dynstr_fini(reason); -} - -static void -pass(struct context *ctx) -{ - if (ctx->expect == EXPECT_FAIL) { - error_in_expect(ctx, "Test case was expecting a failure but got " - "a pass instead"); - } else if (ctx->expect == EXPECT_PASS) { - create_resfile(ctx->resfile, "passed", -1, NULL); - exit(EXIT_SUCCESS); - } else { - error_in_expect(ctx, "Test case asked to explicitly pass but was " - "not expecting such condition"); - } - UNREACHABLE; -} - -static void -skip(struct context *ctx, atf_dynstr_t *reason) -{ - if (ctx->expect == EXPECT_PASS) { - create_resfile(ctx->resfile, "skipped", -1, reason); - exit(EXIT_SUCCESS); - } else { - error_in_expect(ctx, "Can only skip a test case when running in " - "expect pass mode"); - } - UNREACHABLE; -} - -/** Formats a failure/skip reason message. - * - * The formatted reason is stored in out_reason. out_reason is initialized - * in this function and is supposed to be released by the caller. In general, - * the reason will eventually be fed to create_resfile, which will release - * it. - * - * Errors in this function are fatal. Rationale being: reasons are used to - * create results files; if we can't format the reason correctly, the result - * of the test program will be bogus. So it's better to just exit with a - * fatal error. - */ -static void -format_reason_ap(atf_dynstr_t *out_reason, - const char *source_file, const size_t source_line, - const char *reason, va_list ap) -{ - atf_error_t err; - - if (source_file != NULL) { - err = atf_dynstr_init_fmt(out_reason, "%s:%zd: ", source_file, - source_line); - } else { - PRE(source_line == 0); - err = atf_dynstr_init(out_reason); - } - - if (!atf_is_error(err)) { - va_list ap2; - va_copy(ap2, ap); - err = atf_dynstr_append_ap(out_reason, reason, ap2); - va_end(ap2); - } - - check_fatal_error(err); -} - -static void -format_reason_fmt(atf_dynstr_t *out_reason, - const char *source_file, const size_t source_line, - const char *reason, ...) -{ - va_list ap; - - va_start(ap, reason); - format_reason_ap(out_reason, source_file, source_line, reason, ap); - va_end(ap); -} - -static void -errno_test(struct context *ctx, const char *file, const size_t line, - const int exp_errno, const char *expr_str, - const bool expr_result, - void (*fail_func)(struct context *, atf_dynstr_t *)) -{ - const int actual_errno = errno; - - if (expr_result) { - if (exp_errno != actual_errno) { - atf_dynstr_t reason; - - format_reason_fmt(&reason, file, line, "Expected errno %d, got %d, " - "in %s", exp_errno, actual_errno, expr_str); - fail_func(ctx, &reason); - } - } else { - atf_dynstr_t reason; - - format_reason_fmt(&reason, file, line, "Expected true value in %s", - expr_str); - fail_func(ctx, &reason); - } -} - -struct prog_found_pair { - const char *prog; - bool found; -}; - -static atf_error_t -check_prog_in_dir(const char *dir, void *data) -{ - struct prog_found_pair *pf = data; - atf_error_t err; - - if (pf->found) - err = atf_no_error(); - else { - atf_fs_path_t p; - - err = atf_fs_path_init_fmt(&p, "%s/%s", dir, pf->prog); - if (atf_is_error(err)) - goto out_p; - - err = atf_fs_eaccess(&p, atf_fs_access_x); - if (!atf_is_error(err)) - pf->found = true; - else { - atf_error_free(err); - INV(!pf->found); - err = atf_no_error(); - } - -out_p: - atf_fs_path_fini(&p); - } - - return err; -} - -static atf_error_t -check_prog(struct context *ctx, const char *prog) -{ - atf_error_t err; - atf_fs_path_t p; - - err = atf_fs_path_init_fmt(&p, "%s", prog); - if (atf_is_error(err)) - goto out; - - if (atf_fs_path_is_absolute(&p)) { - err = atf_fs_eaccess(&p, atf_fs_access_x); - if (atf_is_error(err)) { - atf_dynstr_t reason; - - atf_error_free(err); - atf_fs_path_fini(&p); - format_reason_fmt(&reason, NULL, 0, "The required program %s could " - "not be found", prog); - skip(ctx, &reason); - } - } else { - const char *path = atf_env_get("PATH"); - struct prog_found_pair pf; - atf_fs_path_t bp; - - err = atf_fs_path_branch_path(&p, &bp); - if (atf_is_error(err)) - goto out_p; - - if (strcmp(atf_fs_path_cstring(&bp), ".") != 0) { - atf_fs_path_fini(&bp); - atf_fs_path_fini(&p); - - report_fatal_error("Relative paths are not allowed when searching " - "for a program (%s)", prog); - UNREACHABLE; - } - - pf.prog = prog; - pf.found = false; - err = atf_text_for_each_word(path, ":", check_prog_in_dir, &pf); - if (atf_is_error(err)) - goto out_bp; - - if (!pf.found) { - atf_dynstr_t reason; - - atf_fs_path_fini(&bp); - atf_fs_path_fini(&p); - format_reason_fmt(&reason, NULL, 0, "The required program %s could " - "not be found in the PATH", prog); - fail_requirement(ctx, &reason); - } - -out_bp: - atf_fs_path_fini(&bp); - } - -out_p: - atf_fs_path_fini(&p); -out: - return err; -} - -/* --------------------------------------------------------------------- - * The "atf_tc" type. - * --------------------------------------------------------------------- */ - -struct atf_tc_impl { - const char *m_ident; - - atf_map_t m_vars; - atf_map_t m_config; - - atf_tc_head_t m_head; - atf_tc_body_t m_body; - atf_tc_cleanup_t m_cleanup; -}; - -/* - * Constructors/destructors. - */ - -atf_error_t -atf_tc_init(atf_tc_t *tc, const char *ident, atf_tc_head_t head, - atf_tc_body_t body, atf_tc_cleanup_t cleanup, - const char *const *config) -{ - atf_error_t err; - - tc->pimpl = malloc(sizeof(struct atf_tc_impl)); - if (tc->pimpl == NULL) { - err = atf_no_memory_error(); - goto err; - } - - tc->pimpl->m_ident = ident; - tc->pimpl->m_head = head; - tc->pimpl->m_body = body; - tc->pimpl->m_cleanup = cleanup; - - err = atf_map_init_charpp(&tc->pimpl->m_config, config); - if (atf_is_error(err)) - goto err; - - err = atf_map_init(&tc->pimpl->m_vars); - if (atf_is_error(err)) - goto err_vars; - - err = atf_tc_set_md_var(tc, "ident", ident); - if (atf_is_error(err)) - goto err_map; - - if (cleanup != NULL) { - err = atf_tc_set_md_var(tc, "has.cleanup", "true"); - if (atf_is_error(err)) - goto err_map; - } - - /* XXX Should the head be able to return error codes? */ - if (tc->pimpl->m_head != NULL) - tc->pimpl->m_head(tc); - - if (strcmp(atf_tc_get_md_var(tc, "ident"), ident) != 0) { - report_fatal_error("Test case head modified the read-only 'ident' " - "property"); - UNREACHABLE; - } - - INV(!atf_is_error(err)); - return err; - -err_map: - atf_map_fini(&tc->pimpl->m_vars); -err_vars: - atf_map_fini(&tc->pimpl->m_config); -err: - return err; -} - -atf_error_t -atf_tc_init_pack(atf_tc_t *tc, const atf_tc_pack_t *pack, - const char *const *config) -{ - return atf_tc_init(tc, pack->m_ident, pack->m_head, pack->m_body, - pack->m_cleanup, config); -} - -void -atf_tc_fini(atf_tc_t *tc) -{ - atf_map_fini(&tc->pimpl->m_vars); - atf_map_fini(&tc->pimpl->m_config); - free(tc->pimpl); - tc->pimpl = NULL; -} - -/* - * Getters. - */ - -const char * -atf_tc_get_ident(const atf_tc_t *tc) -{ - return tc->pimpl->m_ident; -} - -const char * -atf_tc_get_config_var(const atf_tc_t *tc, const char *name) -{ - const char *val; - atf_map_citer_t iter; - - PRE(atf_tc_has_config_var(tc, name)); - iter = atf_map_find_c(&tc->pimpl->m_config, name); - val = atf_map_citer_data(iter); - INV(val != NULL); - - return val; -} - -const char * -atf_tc_get_config_var_wd(const atf_tc_t *tc, const char *name, - const char *defval) -{ - const char *val; - - if (!atf_tc_has_config_var(tc, name)) - val = defval; - else - val = atf_tc_get_config_var(tc, name); - - return val; -} - -bool -atf_tc_get_config_var_as_bool(const atf_tc_t *tc, const char *name) -{ - bool val; - const char *strval; - atf_error_t err; - - strval = atf_tc_get_config_var(tc, name); - err = atf_text_to_bool(strval, &val); - if (atf_is_error(err)) { - atf_error_free(err); - atf_tc_fail("Configuration variable %s does not have a valid " - "boolean value; found %s", name, strval); - } - - return val; -} - -bool -atf_tc_get_config_var_as_bool_wd(const atf_tc_t *tc, const char *name, - const bool defval) -{ - bool val; - - if (!atf_tc_has_config_var(tc, name)) - val = defval; - else - val = atf_tc_get_config_var_as_bool(tc, name); - - return val; -} - -long -atf_tc_get_config_var_as_long(const atf_tc_t *tc, const char *name) -{ - long val; - const char *strval; - atf_error_t err; - - strval = atf_tc_get_config_var(tc, name); - err = atf_text_to_long(strval, &val); - if (atf_is_error(err)) { - atf_error_free(err); - atf_tc_fail("Configuration variable %s does not have a valid " - "long value; found %s", name, strval); - } - - return val; -} - -long -atf_tc_get_config_var_as_long_wd(const atf_tc_t *tc, const char *name, - const long defval) -{ - long val; - - if (!atf_tc_has_config_var(tc, name)) - val = defval; - else - val = atf_tc_get_config_var_as_long(tc, name); - - return val; -} - -const char * -atf_tc_get_md_var(const atf_tc_t *tc, const char *name) -{ - const char *val; - atf_map_citer_t iter; - - PRE(atf_tc_has_md_var(tc, name)); - iter = atf_map_find_c(&tc->pimpl->m_vars, name); - val = atf_map_citer_data(iter); - INV(val != NULL); - - return val; -} - -char ** -atf_tc_get_md_vars(const atf_tc_t *tc) -{ - return atf_map_to_charpp(&tc->pimpl->m_vars); -} - -bool -atf_tc_has_config_var(const atf_tc_t *tc, const char *name) -{ - atf_map_citer_t end, iter; - - iter = atf_map_find_c(&tc->pimpl->m_config, name); - end = atf_map_end_c(&tc->pimpl->m_config); - return !atf_equal_map_citer_map_citer(iter, end); -} - -bool -atf_tc_has_md_var(const atf_tc_t *tc, const char *name) -{ - atf_map_citer_t end, iter; - - iter = atf_map_find_c(&tc->pimpl->m_vars, name); - end = atf_map_end_c(&tc->pimpl->m_vars); - return !atf_equal_map_citer_map_citer(iter, end); -} - -/* - * Modifiers. - */ - -atf_error_t -atf_tc_set_md_var(atf_tc_t *tc, const char *name, const char *fmt, ...) -{ - atf_error_t err; - char *value; - va_list ap; - - va_start(ap, fmt); - err = atf_text_format_ap(&value, fmt, ap); - va_end(ap); - - if (!atf_is_error(err)) - err = atf_map_insert(&tc->pimpl->m_vars, name, value, true); - else - free(value); - - return err; -} - -/* --------------------------------------------------------------------- - * Free functions, as they should be publicly but they can't. - * --------------------------------------------------------------------- */ - -static void _atf_tc_fail(struct context *, const char *, va_list) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void _atf_tc_fail_nonfatal(struct context *, const char *, va_list); -static void _atf_tc_fail_check(struct context *, const char *, const size_t, - const char *, va_list); -static void _atf_tc_fail_requirement(struct context *, const char *, - const size_t, const char *, va_list) ATF_DEFS_ATTRIBUTE_NORETURN; -static void _atf_tc_pass(struct context *) ATF_DEFS_ATTRIBUTE_NORETURN; -static void _atf_tc_require_prog(struct context *, const char *); -static void _atf_tc_skip(struct context *, const char *, va_list) - ATF_DEFS_ATTRIBUTE_NORETURN; -static void _atf_tc_check_errno(struct context *, const char *, const size_t, - const int, const char *, const bool); -static void _atf_tc_require_errno(struct context *, const char *, const size_t, - const int, const char *, const bool); -static void _atf_tc_expect_pass(struct context *); -static void _atf_tc_expect_fail(struct context *, const char *, va_list); -static void _atf_tc_expect_exit(struct context *, const int, const char *, - va_list); -static void _atf_tc_expect_signal(struct context *, const int, const char *, - va_list); -static void _atf_tc_expect_death(struct context *, const char *, - va_list); - -static void -_atf_tc_fail(struct context *ctx, const char *fmt, va_list ap) -{ - va_list ap2; - atf_dynstr_t reason; - - va_copy(ap2, ap); - format_reason_ap(&reason, NULL, 0, fmt, ap2); - va_end(ap2); - - fail_requirement(ctx, &reason); - UNREACHABLE; -} - -static void -_atf_tc_fail_nonfatal(struct context *ctx, const char *fmt, va_list ap) -{ - va_list ap2; - atf_dynstr_t reason; - - va_copy(ap2, ap); - format_reason_ap(&reason, NULL, 0, fmt, ap2); - va_end(ap2); - - fail_check(ctx, &reason); -} - -static void -_atf_tc_fail_check(struct context *ctx, const char *file, const size_t line, - const char *fmt, va_list ap) -{ - va_list ap2; - atf_dynstr_t reason; - - va_copy(ap2, ap); - format_reason_ap(&reason, file, line, fmt, ap2); - va_end(ap2); - - fail_check(ctx, &reason); -} - -static void -_atf_tc_fail_requirement(struct context *ctx, const char *file, - const size_t line, const char *fmt, va_list ap) -{ - va_list ap2; - atf_dynstr_t reason; - - va_copy(ap2, ap); - format_reason_ap(&reason, file, line, fmt, ap2); - va_end(ap2); - - fail_requirement(ctx, &reason); - UNREACHABLE; -} - -static void -_atf_tc_pass(struct context *ctx) -{ - pass(ctx); - UNREACHABLE; -} - -static void -_atf_tc_require_prog(struct context *ctx, const char *prog) -{ - check_fatal_error(check_prog(ctx, prog)); -} - -static void -_atf_tc_skip(struct context *ctx, const char *fmt, va_list ap) -{ - atf_dynstr_t reason; - va_list ap2; - - va_copy(ap2, ap); - format_reason_ap(&reason, NULL, 0, fmt, ap2); - va_end(ap2); - - skip(ctx, &reason); -} - -static void -_atf_tc_check_errno(struct context *ctx, const char *file, const size_t line, - const int exp_errno, const char *expr_str, - const bool expr_result) -{ - errno_test(ctx, file, line, exp_errno, expr_str, expr_result, fail_check); -} - -static void -_atf_tc_require_errno(struct context *ctx, const char *file, const size_t line, - const int exp_errno, const char *expr_str, - const bool expr_result) -{ - errno_test(ctx, file, line, exp_errno, expr_str, expr_result, - fail_requirement); -} - -static void -_atf_tc_expect_pass(struct context *ctx) -{ - validate_expect(ctx); - - ctx->expect = EXPECT_PASS; -} - -static void -_atf_tc_expect_fail(struct context *ctx, const char *reason, va_list ap) -{ - va_list ap2; - - validate_expect(ctx); - - ctx->expect = EXPECT_FAIL; - atf_dynstr_fini(&ctx->expect_reason); - va_copy(ap2, ap); - check_fatal_error(atf_dynstr_init_ap(&ctx->expect_reason, reason, ap2)); - va_end(ap2); - ctx->expect_previous_fail_count = ctx->expect_fail_count; -} - -static void -_atf_tc_expect_exit(struct context *ctx, const int exitcode, const char *reason, - va_list ap) -{ - va_list ap2; - atf_dynstr_t formatted; - - validate_expect(ctx); - - ctx->expect = EXPECT_EXIT; - va_copy(ap2, ap); - check_fatal_error(atf_dynstr_init_ap(&formatted, reason, ap2)); - va_end(ap2); - - create_resfile(ctx->resfile, "expected_exit", exitcode, &formatted); -} - -static void -_atf_tc_expect_signal(struct context *ctx, const int signo, const char *reason, - va_list ap) -{ - va_list ap2; - atf_dynstr_t formatted; - - validate_expect(ctx); - - ctx->expect = EXPECT_SIGNAL; - va_copy(ap2, ap); - check_fatal_error(atf_dynstr_init_ap(&formatted, reason, ap2)); - va_end(ap2); - - create_resfile(ctx->resfile, "expected_signal", signo, &formatted); -} - -static void -_atf_tc_expect_death(struct context *ctx, const char *reason, va_list ap) -{ - va_list ap2; - atf_dynstr_t formatted; - - validate_expect(ctx); - - ctx->expect = EXPECT_DEATH; - va_copy(ap2, ap); - check_fatal_error(atf_dynstr_init_ap(&formatted, reason, ap2)); - va_end(ap2); - - create_resfile(ctx->resfile, "expected_death", -1, &formatted); -} - -static void -_atf_tc_expect_timeout(struct context *ctx, const char *reason, va_list ap) -{ - va_list ap2; - atf_dynstr_t formatted; - - validate_expect(ctx); - - ctx->expect = EXPECT_TIMEOUT; - va_copy(ap2, ap); - check_fatal_error(atf_dynstr_init_ap(&formatted, reason, ap2)); - va_end(ap2); - - create_resfile(ctx->resfile, "expected_timeout", -1, &formatted); -} - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -static struct context Current; - -atf_error_t -atf_tc_run(const atf_tc_t *tc, const char *resfile) -{ - context_init(&Current, tc, resfile); - - tc->pimpl->m_body(tc); - - validate_expect(&Current); - - if (Current.fail_count > 0) { - atf_dynstr_t reason; - - format_reason_fmt(&reason, NULL, 0, "%d checks failed; see output for " - "more details", Current.fail_count); - fail_requirement(&Current, &reason); - } else if (Current.expect_fail_count > 0) { - atf_dynstr_t reason; - - format_reason_fmt(&reason, NULL, 0, "%d checks failed as expected; " - "see output for more details", Current.expect_fail_count); - expected_failure(&Current, &reason); - } else { - pass(&Current); - } - UNREACHABLE; - return atf_no_error(); -} - -atf_error_t -atf_tc_cleanup(const atf_tc_t *tc) -{ - if (tc->pimpl->m_cleanup != NULL) - tc->pimpl->m_cleanup(tc); - return atf_no_error(); /* XXX */ -} - -/* --------------------------------------------------------------------- - * Free functions that depend on Current. - * --------------------------------------------------------------------- */ - -/* - * All the functions below provide delegates to other internal functions - * (prefixed by _) that take the current test case as an argument to - * prevent them from accessing global state. This is to keep the side- - * effects of the internal functions clearer and easier to understand. - * - * The public API should never have hid the fact that it needs access to - * the current test case (other than maybe in the macros), but changing it - * is hard. TODO: Revisit in the future. - */ - -void -atf_tc_fail(const char *fmt, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, fmt); - _atf_tc_fail(&Current, fmt, ap); - va_end(ap); -} - -void -atf_tc_fail_nonfatal(const char *fmt, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, fmt); - _atf_tc_fail_nonfatal(&Current, fmt, ap); - va_end(ap); -} - -void -atf_tc_fail_check(const char *file, const size_t line, const char *fmt, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, fmt); - _atf_tc_fail_check(&Current, file, line, fmt, ap); - va_end(ap); -} - -void -atf_tc_fail_requirement(const char *file, const size_t line, - const char *fmt, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, fmt); - _atf_tc_fail_requirement(&Current, file, line, fmt, ap); - va_end(ap); -} - -void -atf_tc_pass(void) -{ - PRE(Current.tc != NULL); - - _atf_tc_pass(&Current); -} - -void -atf_tc_require_prog(const char *prog) -{ - PRE(Current.tc != NULL); - - _atf_tc_require_prog(&Current, prog); -} - -void -atf_tc_skip(const char *fmt, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, fmt); - _atf_tc_skip(&Current, fmt, ap); - va_end(ap); -} - -void -atf_tc_check_errno(const char *file, const size_t line, const int exp_errno, - const char *expr_str, const bool expr_result) -{ - PRE(Current.tc != NULL); - - _atf_tc_check_errno(&Current, file, line, exp_errno, expr_str, - expr_result); -} - -void -atf_tc_require_errno(const char *file, const size_t line, const int exp_errno, - const char *expr_str, const bool expr_result) -{ - PRE(Current.tc != NULL); - - _atf_tc_require_errno(&Current, file, line, exp_errno, expr_str, - expr_result); -} - -void -atf_tc_expect_pass(void) -{ - PRE(Current.tc != NULL); - - _atf_tc_expect_pass(&Current); -} - -void -atf_tc_expect_fail(const char *reason, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, reason); - _atf_tc_expect_fail(&Current, reason, ap); - va_end(ap); -} - -void -atf_tc_expect_exit(const int exitcode, const char *reason, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, reason); - _atf_tc_expect_exit(&Current, exitcode, reason, ap); - va_end(ap); -} - -void -atf_tc_expect_signal(const int signo, const char *reason, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, reason); - _atf_tc_expect_signal(&Current, signo, reason, ap); - va_end(ap); -} - -void -atf_tc_expect_death(const char *reason, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, reason); - _atf_tc_expect_death(&Current, reason, ap); - va_end(ap); -} - -void -atf_tc_expect_timeout(const char *reason, ...) -{ - va_list ap; - - PRE(Current.tc != NULL); - - va_start(ap, reason); - _atf_tc_expect_timeout(&Current, reason, ap); - va_end(ap); -} diff --git a/unit/atf-src/atf-c/tc.h b/unit/atf-src/atf-c/tc.h deleted file mode 100644 index 3fb695562a..0000000000 --- a/unit/atf-src/atf-c/tc.h +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_TC_H) -#define ATF_C_TC_H - -#include -#include - -#include -#include - -struct atf_tc; - -typedef void (*atf_tc_head_t)(struct atf_tc *); -typedef void (*atf_tc_body_t)(const struct atf_tc *); -typedef void (*atf_tc_cleanup_t)(const struct atf_tc *); - -/* --------------------------------------------------------------------- - * The "atf_tc_pack" type. - * --------------------------------------------------------------------- */ - -/* For static initialization only. */ -struct atf_tc_pack { - const char *m_ident; - - const char *const *m_config; - - atf_tc_head_t m_head; - atf_tc_body_t m_body; - atf_tc_cleanup_t m_cleanup; -}; -typedef const struct atf_tc_pack atf_tc_pack_t; - -/* --------------------------------------------------------------------- - * The "atf_tc" type. - * --------------------------------------------------------------------- */ - -struct atf_tc_impl; -struct atf_tc { - struct atf_tc_impl *pimpl; -}; -typedef struct atf_tc atf_tc_t; - -/* Constructors/destructors. */ -atf_error_t atf_tc_init(atf_tc_t *, const char *, atf_tc_head_t, - atf_tc_body_t, atf_tc_cleanup_t, - const char *const *); -atf_error_t atf_tc_init_pack(atf_tc_t *, atf_tc_pack_t *, - const char *const *); -void atf_tc_fini(atf_tc_t *); - -/* Getters. */ -const char *atf_tc_get_ident(const atf_tc_t *); -const char *atf_tc_get_config_var(const atf_tc_t *, const char *); -const char *atf_tc_get_config_var_wd(const atf_tc_t *, const char *, - const char *); -bool atf_tc_get_config_var_as_bool(const atf_tc_t *, const char *); -bool atf_tc_get_config_var_as_bool_wd(const atf_tc_t *, const char *, - const bool); -long atf_tc_get_config_var_as_long(const atf_tc_t *, const char *); -long atf_tc_get_config_var_as_long_wd(const atf_tc_t *, const char *, - const long); -const char *atf_tc_get_md_var(const atf_tc_t *, const char *); -char **atf_tc_get_md_vars(const atf_tc_t *); -bool atf_tc_has_config_var(const atf_tc_t *, const char *); -bool atf_tc_has_md_var(const atf_tc_t *, const char *); - -/* Modifiers. */ -atf_error_t atf_tc_set_md_var(atf_tc_t *, const char *, const char *, ...); - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -atf_error_t atf_tc_run(const atf_tc_t *, const char *); -atf_error_t atf_tc_cleanup(const atf_tc_t *); - -/* To be run from test case bodies only. */ -void atf_tc_fail(const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2) - ATF_DEFS_ATTRIBUTE_NORETURN; -void atf_tc_fail_nonfatal(const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2); -void atf_tc_pass(void) - ATF_DEFS_ATTRIBUTE_NORETURN; -void atf_tc_require_prog(const char *); -void atf_tc_skip(const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2) - ATF_DEFS_ATTRIBUTE_NORETURN; -void atf_tc_expect_pass(void); -void atf_tc_expect_fail(const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2); -void atf_tc_expect_exit(const int, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(2, 3); -void atf_tc_expect_signal(const int, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(2, 3); -void atf_tc_expect_death(const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2); -void atf_tc_expect_timeout(const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2); - -/* To be run from test case bodies only; internal to macros.h. */ -void atf_tc_fail_check(const char *, const size_t, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(3, 4); -void atf_tc_fail_requirement(const char *, const size_t, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(3, 4) - ATF_DEFS_ATTRIBUTE_NORETURN; -void atf_tc_check_errno(const char *, const size_t, const int, - const char *, const bool); -void atf_tc_require_errno(const char *, const size_t, const int, - const char *, const bool); - -#endif /* !defined(ATF_C_TC_H) */ diff --git a/unit/atf-src/atf-c/tc_test.c b/unit/atf-src/atf-c/tc_test.c deleted file mode 100644 index 616c37e94e..0000000000 --- a/unit/atf-src/atf-c/tc_test.c +++ /dev/null @@ -1,183 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/tc.h" - -#include -#include - -#include - -#include "atf-c/detail/test_helpers.h" - -/* --------------------------------------------------------------------- - * Auxiliary test cases. - * --------------------------------------------------------------------- */ - -ATF_TC_HEAD(empty, tc) -{ - if (tc != NULL) {} -} -ATF_TC_BODY(empty, tc) -{ -} - -ATF_TC_HEAD(test_var, tc) -{ - atf_tc_set_md_var(tc, "test-var", "Test text"); -} - -/* --------------------------------------------------------------------- - * Test cases for the "atf_tc_t" type. - * --------------------------------------------------------------------- */ - -ATF_TC(init); -ATF_TC_HEAD(init, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_init function"); -} -ATF_TC_BODY(init, tcin) -{ - atf_tc_t tc; - - RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), - ATF_TC_BODY_NAME(empty), NULL, NULL)); - ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test1") == 0); - ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); - atf_tc_fini(&tc); - - RE(atf_tc_init(&tc, "test2", ATF_TC_HEAD_NAME(test_var), - ATF_TC_BODY_NAME(empty), NULL, NULL)); - ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test2") == 0); - ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var")); - atf_tc_fini(&tc); -} - -ATF_TC(init_pack); -ATF_TC_HEAD(init_pack, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_init_pack function"); -} -ATF_TC_BODY(init_pack, tcin) -{ - atf_tc_t tc; - atf_tc_pack_t tcp1 = { - .m_ident = "test1", - .m_head = ATF_TC_HEAD_NAME(empty), - .m_body = ATF_TC_BODY_NAME(empty), - .m_cleanup = NULL, - }; - atf_tc_pack_t tcp2 = { - .m_ident = "test2", - .m_head = ATF_TC_HEAD_NAME(test_var), - .m_body = ATF_TC_BODY_NAME(empty), - .m_cleanup = NULL, - }; - - RE(atf_tc_init_pack(&tc, &tcp1, NULL)); - ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test1") == 0); - ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); - atf_tc_fini(&tc); - - RE(atf_tc_init_pack(&tc, &tcp2, NULL)); - ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test2") == 0); - ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var")); - atf_tc_fini(&tc); -} - -ATF_TC(vars); -ATF_TC_HEAD(vars, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_get_md_var, " - "atf_tc_has_md_var and atf_tc_set_md_var functions"); -} -ATF_TC_BODY(vars, tcin) -{ - atf_tc_t tc; - - RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), - ATF_TC_BODY_NAME(empty), NULL, NULL)); - ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); - RE(atf_tc_set_md_var(&tc, "test-var", "Test value")); - ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var")); - ATF_REQUIRE(strcmp(atf_tc_get_md_var(&tc, "test-var"), "Test value") == 0); - atf_tc_fini(&tc); -} - -ATF_TC(config); -ATF_TC_HEAD(config, tc) -{ - atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_get_config_var, " - "atf_tc_get_config_var_wd and atf_tc_has_config_var " - "functions"); -} -ATF_TC_BODY(config, tcin) -{ - atf_tc_t tc; - const char *const config[] = { "test-var", "test-value", NULL }; - - RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), - ATF_TC_BODY_NAME(empty), NULL, NULL)); - ATF_REQUIRE(!atf_tc_has_config_var(&tc, "test-var")); - ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); - atf_tc_fini(&tc); - - RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), - ATF_TC_BODY_NAME(empty), NULL, config)); - ATF_REQUIRE(atf_tc_has_config_var(&tc, "test-var")); - ATF_REQUIRE(strcmp(atf_tc_get_config_var(&tc, "test-var"), - "test-value") == 0); - ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); - ATF_REQUIRE(!atf_tc_has_config_var(&tc, "test-var2")); - ATF_REQUIRE(strcmp(atf_tc_get_config_var_wd(&tc, "test-var2", "def-value"), - "def-value") == 0); - atf_tc_fini(&tc); -} - -/* --------------------------------------------------------------------- - * Test cases for the free functions. - * --------------------------------------------------------------------- */ - -/* TODO: Add test cases for atf_tc_run. This is going to be very tough, - * but good tests here could allow us to avoid much of the indirect - * testing done later on. */ - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add the test cases for the "atf_tcr_t" type. */ - ATF_TP_ADD_TC(tp, init); - ATF_TP_ADD_TC(tp, init_pack); - ATF_TP_ADD_TC(tp, vars); - ATF_TP_ADD_TC(tp, config); - - /* Add the test cases for the free functions. */ - /* TODO */ - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/tp.c b/unit/atf-src/atf-c/tp.c deleted file mode 100644 index f4f225772c..0000000000 --- a/unit/atf-src/atf-c/tp.c +++ /dev/null @@ -1,213 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/tp.h" - -#include -#include -#include -#include - -#include "atf-c/detail/fs.h" -#include "atf-c/detail/map.h" -#include "atf-c/detail/sanity.h" -#include "atf-c/error.h" -#include "atf-c/tc.h" - -struct atf_tp_impl { - atf_list_t m_tcs; - atf_map_t m_config; -}; - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -const atf_tc_t * -find_tc(const atf_tp_t *tp, const char *ident) -{ - const atf_tc_t *tc; - atf_list_citer_t iter; - - tc = NULL; - atf_list_for_each_c(iter, &tp->pimpl->m_tcs) { - const atf_tc_t *tc2; - tc2 = atf_list_citer_data(iter); - if (strcmp(atf_tc_get_ident(tc2), ident) == 0) { - tc = tc2; - break; - } - } - return tc; -} - -/* --------------------------------------------------------------------- - * The "atf_tp" type. - * --------------------------------------------------------------------- */ - -/* - * Constructors/destructors. - */ - -atf_error_t -atf_tp_init(atf_tp_t *tp, const char *const *config) -{ - atf_error_t err; - - PRE(config != NULL); - - tp->pimpl = malloc(sizeof(struct atf_tp_impl)); - if (tp->pimpl == NULL) - return atf_no_memory_error(); - - err = atf_list_init(&tp->pimpl->m_tcs); - if (atf_is_error(err)) - goto out; - - err = atf_map_init_charpp(&tp->pimpl->m_config, config); - if (atf_is_error(err)) { - atf_list_fini(&tp->pimpl->m_tcs); - goto out; - } - - INV(!atf_is_error(err)); -out: - return err; -} - -void -atf_tp_fini(atf_tp_t *tp) -{ - atf_list_iter_t iter; - - atf_map_fini(&tp->pimpl->m_config); - - atf_list_for_each(iter, &tp->pimpl->m_tcs) { - atf_tc_t *tc = atf_list_iter_data(iter); - atf_tc_fini(tc); - } - atf_list_fini(&tp->pimpl->m_tcs); - - free(tp->pimpl); -} - -/* - * Getters. - */ - -char ** -atf_tp_get_config(const atf_tp_t *tp) -{ - return atf_map_to_charpp(&tp->pimpl->m_config); -} - -bool -atf_tp_has_tc(const atf_tp_t *tp, const char *id) -{ - const atf_tc_t *tc = find_tc(tp, id); - return tc != NULL; -} - -const atf_tc_t * -atf_tp_get_tc(const atf_tp_t *tp, const char *id) -{ - const atf_tc_t *tc = find_tc(tp, id); - PRE(tc != NULL); - return tc; -} - -const atf_tc_t *const * -atf_tp_get_tcs(const atf_tp_t *tp) -{ - const atf_tc_t **array; - atf_list_citer_t iter; - size_t i; - - array = malloc(sizeof(atf_tc_t *) * - (atf_list_size(&tp->pimpl->m_tcs) + 1)); - if (array == NULL) - goto out; - - i = 0; - atf_list_for_each_c(iter, &tp->pimpl->m_tcs) { - array[i] = atf_list_citer_data(iter); - if (array[i] == NULL) { - free(array); - array = NULL; - goto out; - } - - i++; - } - array[i] = NULL; - -out: - return array; -} - -/* - * Modifiers. - */ - -atf_error_t -atf_tp_add_tc(atf_tp_t *tp, atf_tc_t *tc) -{ - atf_error_t err; - - PRE(find_tc(tp, atf_tc_get_ident(tc)) == NULL); - - err = atf_list_append(&tp->pimpl->m_tcs, tc, false); - - POST(find_tc(tp, atf_tc_get_ident(tc)) != NULL); - - return err; -} - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -atf_error_t -atf_tp_run(const atf_tp_t *tp, const char *tcname, const char *resfile) -{ - const atf_tc_t *tc; - - tc = find_tc(tp, tcname); - PRE(tc != NULL); - - return atf_tc_run(tc, resfile); -} - -atf_error_t -atf_tp_cleanup(const atf_tp_t *tp, const char *tcname) -{ - const atf_tc_t *tc; - - tc = find_tc(tp, tcname); - PRE(tc != NULL); - - return atf_tc_cleanup(tc); -} diff --git a/unit/atf-src/atf-c/tp.h b/unit/atf-src/atf-c/tp.h deleted file mode 100644 index c176f7d96f..0000000000 --- a/unit/atf-src/atf-c/tp.h +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_TP_H) -#define ATF_C_TP_H - -#include - -#include - -struct atf_tc; - -/* --------------------------------------------------------------------- - * The "atf_tp" type. - * --------------------------------------------------------------------- */ - -struct atf_tp_impl; -struct atf_tp { - struct atf_tp_impl *pimpl; -}; -typedef struct atf_tp atf_tp_t; - -/* Constructors/destructors. */ -atf_error_t atf_tp_init(atf_tp_t *, const char *const *); -void atf_tp_fini(atf_tp_t *); - -/* Getters. */ -char **atf_tp_get_config(const atf_tp_t *); -bool atf_tp_has_tc(const atf_tp_t *, const char *); -const struct atf_tc *atf_tp_get_tc(const atf_tp_t *, const char *); -const struct atf_tc *const *atf_tp_get_tcs(const atf_tp_t *); - -/* Modifiers. */ -atf_error_t atf_tp_add_tc(atf_tp_t *, struct atf_tc *); - -/* --------------------------------------------------------------------- - * Free functions. - * --------------------------------------------------------------------- */ - -atf_error_t atf_tp_run(const atf_tp_t *, const char *, const char *); -atf_error_t atf_tp_cleanup(const atf_tp_t *, const char *); - -#endif /* !defined(ATF_C_TP_H) */ diff --git a/unit/atf-src/atf-c/tp_test.c b/unit/atf-src/atf-c/tp_test.c deleted file mode 100644 index de334a9748..0000000000 --- a/unit/atf-src/atf-c/tp_test.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/tp.h" - -#include -#include - -#include - -ATF_TC(getopt); -ATF_TC_HEAD(getopt, tc) -{ - atf_tc_set_md_var(tc, "descr", "Checks if getopt(3) global state is " - "reset by the test program driver so that test cases can use " - "getopt(3) again"); -} -ATF_TC_BODY(getopt, tc) -{ - /* Provide an option that is unknown to the test program driver and - * one that is, together with an argument that would be swallowed by - * the test program option if it were recognized. */ - int argc = 4; - char arg1[] = "progname"; - char arg2[] = "-Z"; - char arg3[] = "-s"; - char arg4[] = "foo"; - char *const argv[] = { arg1, arg2, arg3, arg4, NULL }; - - int ch; - bool zflag; - - /* Given that this obviously is a test program, and that we used the - * same driver to start, we can test getopt(3) right here without doing - * any fancy stuff. */ - zflag = false; - while ((ch = getopt(argc, argv, ":Z")) != -1) { - switch (ch) { - case 'Z': - zflag = true; - break; - - case '?': - default: - if (optopt != 's') - atf_tc_fail("Unexpected unknown option -%c found", optopt); - } - } - - ATF_REQUIRE(zflag); - ATF_REQUIRE_EQ_MSG(1, argc - optind, "Invalid number of arguments left " - "after the call to getopt(3)"); - ATF_CHECK_STREQ_MSG("foo", argv[optind], "The non-option argument is " - "invalid"); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, getopt); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/unused_test.c b/unit/atf-src/atf-c/unused_test.c deleted file mode 100644 index 1c5fda9323..0000000000 --- a/unit/atf-src/atf-c/unused_test.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (c) 2012 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include - -ATF_TC(this_is_used); -ATF_TC_HEAD(this_is_used, tc) -{ - atf_tc_set_md_var(tc, "descr", "A test case that is not referenced"); -} -ATF_TC_BODY(this_is_used, tc) -{ -} - -ATF_TC(this_is_unused); -ATF_TC_HEAD(this_is_unused, tc) -{ - atf_tc_set_md_var(tc, "descr", "A test case that is referenced"); -} -ATF_TC_BODY(this_is_unused, tc) -{ -} - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, this_is_used); - /* ATF_TP_ADD_TC(tp, this_is_unused); */ - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-c/utils.c b/unit/atf-src/atf-c/utils.c deleted file mode 100644 index 1e2aac1ed3..0000000000 --- a/unit/atf-src/atf-c/utils.c +++ /dev/null @@ -1,456 +0,0 @@ -/* Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/utils.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/dynstr.h" - -/** Allocate a filename to be used by atf_utils_{fork,wait}. - * - * In case of a failure, marks the calling test as failed when in_parent is - * true, else terminates execution. - * - * \param [out] name String to contain the generated file. - * \param pid PID of the process that will write to the file. - * \param suffix Either "out" or "err". - * \param in_parent If true, fail with atf_tc_fail; else use err(3). */ -static void -init_out_filename(atf_dynstr_t *name, const pid_t pid, const char *suffix, - const bool in_parent) -{ - atf_error_t error; - - error = atf_dynstr_init_fmt(name, "atf_utils_fork_%d_%s.txt", - (int)pid, suffix); - if (atf_is_error(error)) { - char buffer[1024]; - atf_error_format(error, buffer, sizeof(buffer)); - if (in_parent) { - atf_tc_fail("Failed to create output file: %s", buffer); - } else { - err(EXIT_FAILURE, "Failed to create output file: %s", buffer); - } - } -} - -/** Searches for a regexp in a string. - * - * \param regex The regexp to look for. - * \param str The string in which to look for the expression. - * - * \return True if there is a match; false otherwise. */ -static -bool -grep_string(const char *regex, const char *str) -{ - int res; - regex_t preg; - - printf("Looking for '%s' in '%s'\n", regex, str); - ATF_REQUIRE(regcomp(&preg, regex, REG_EXTENDED) == 0); - - res = regexec(&preg, str, 0, NULL, 0); - ATF_REQUIRE(res == 0 || res == REG_NOMATCH); - - regfree(&preg); - - return res == 0; -} - -/** Prints the contents of a file to stdout. - * - * \param name The name of the file to be printed. - * \param prefix An string to be prepended to every line of the printed - * file. */ -void -atf_utils_cat_file(const char *name, const char *prefix) -{ - const int fd = open(name, O_RDONLY); - ATF_REQUIRE_MSG(fd != -1, "Cannot open %s", name); - - char buffer[1024]; - ssize_t count; - bool continued = false; - while ((count = read(fd, buffer, sizeof(buffer) - 1)) > 0) { - buffer[count] = '\0'; - - if (!continued) - printf("%s", prefix); - - char *iter = buffer; - char *end; - while ((end = strchr(iter, '\n')) != NULL) { - *end = '\0'; - printf("%s\n", iter); - - iter = end + 1; - if (iter != buffer + count) - printf("%s", prefix); - else - continued = false; - } - if (iter < buffer + count) { - printf("%s", iter); - continued = true; - } - } - ATF_REQUIRE(count == 0); -} - -/** Compares a file against the given golden contents. - * - * \param name Name of the file to be compared. - * \param contents Expected contents of the file. - * - * \return True if the file matches the contents; false otherwise. */ -bool -atf_utils_compare_file(const char *name, const char *contents) -{ - const int fd = open(name, O_RDONLY); - ATF_REQUIRE_MSG(fd != -1, "Cannot open %s", name); - - const char *pos = contents; - ssize_t remaining = strlen(contents); - - char buffer[1024]; - ssize_t count; - while ((count = read(fd, buffer, sizeof(buffer))) > 0 && - count <= remaining) { - if (memcmp(pos, buffer, count) != 0) { - close(fd); - return false; - } - remaining -= count; - pos += count; - } - close(fd); - return count == 0 && remaining == 0; -} - -/** Copies a file. - * - * \param source Path to the source file. - * \param destination Path to the destination file. */ -void -atf_utils_copy_file(const char *source, const char *destination) -{ - const int input = open(source, O_RDONLY); - ATF_REQUIRE_MSG(input != -1, "Failed to open source file during " - "copy (%s)", source); - - const int output = open(destination, O_WRONLY | O_CREAT | O_TRUNC, 0777); - ATF_REQUIRE_MSG(output != -1, "Failed to open destination file during " - "copy (%s)", destination); - - char buffer[1024]; - ssize_t length; - while ((length = read(input, buffer, sizeof(buffer))) > 0) - ATF_REQUIRE_MSG(write(output, buffer, length) == length, - "Failed to write to %s during copy", destination); - ATF_REQUIRE_MSG(length != -1, "Failed to read from %s during copy", source); - - struct stat sb; - ATF_REQUIRE_MSG(fstat(input, &sb) != -1, - "Failed to stat source file %s during copy", source); - ATF_REQUIRE_MSG(fchmod(output, sb.st_mode) != -1, - "Failed to chmod destination file %s during copy", - destination); - - close(output); - close(input); -} - -/** Creates a file. - * - * \param name Name of the file to create. - * \param contents Text to write into the created file. - * \param ... Positional parameters to the contents. */ -void -atf_utils_create_file(const char *name, const char *contents, ...) -{ - va_list ap; - atf_dynstr_t formatted; - atf_error_t error; - - va_start(ap, contents); - error = atf_dynstr_init_ap(&formatted, contents, ap); - va_end(ap); - ATF_REQUIRE(!atf_is_error(error)); - - const int fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644); - ATF_REQUIRE_MSG(fd != -1, "Cannot create file %s", name); - ATF_REQUIRE(write(fd, atf_dynstr_cstring(&formatted), - atf_dynstr_length(&formatted)) != -1); - close(fd); - - atf_dynstr_fini(&formatted); -} - -/** Checks if a file exists. - * - * \param path Location of the file to check for. - * - * \return True if the file exists, false otherwise. */ -bool -atf_utils_file_exists(const char *path) -{ - const int ret = access(path, F_OK); - if (ret == -1) { - if (errno != ENOENT) - atf_tc_fail("Failed to check the existence of %s: %s", path, - strerror(errno)); - else - return false; - } else - return true; -} - -/** Spawns a subprocess and redirects its output to files. - * - * Use the atf_utils_wait() function to wait for the completion of the spawned - * subprocess and validate its exit conditions. - * - * \return 0 in the new child; the PID of the new child in the parent. Does - * not return in error conditions. */ -pid_t -atf_utils_fork(void) -{ - const pid_t pid = fork(); - if (pid == -1) - atf_tc_fail("fork failed"); - - if (pid == 0) { - atf_dynstr_t out_name; - init_out_filename(&out_name, getpid(), "out", false); - - atf_dynstr_t err_name; - init_out_filename(&err_name, getpid(), "err", false); - - atf_utils_redirect(STDOUT_FILENO, atf_dynstr_cstring(&out_name)); - atf_utils_redirect(STDERR_FILENO, atf_dynstr_cstring(&err_name)); - - atf_dynstr_fini(&err_name); - atf_dynstr_fini(&out_name); - } - return pid; -} - -/** Frees an dynamically-allocated "argv" array. - * - * \param argv A dynamically-allocated array of dynamically-allocated - * strings. */ -void -atf_utils_free_charpp(char **argv) -{ - char **ptr; - - for (ptr = argv; *ptr != NULL; ptr++) - free(*ptr); - - free(argv); -} - -/** Searches for a regexp in a file. - * - * \param regex The regexp to look for. - * \param file The file in which to look for the expression. - * \param ... Positional parameters to the regex. - * - * \return True if there is a match; false otherwise. */ -bool -atf_utils_grep_file(const char *regex, const char *file, ...) -{ - int fd; - va_list ap; - atf_dynstr_t formatted; - atf_error_t error; - - va_start(ap, file); - error = atf_dynstr_init_ap(&formatted, regex, ap); - va_end(ap); - ATF_REQUIRE(!atf_is_error(error)); - - ATF_REQUIRE((fd = open(file, O_RDONLY)) != -1); - bool found = false; - char *line = NULL; - while (!found && (line = atf_utils_readline(fd)) != NULL) { - found = grep_string(atf_dynstr_cstring(&formatted), line); - free(line); - } - close(fd); - - atf_dynstr_fini(&formatted); - - return found; -} - -/** Searches for a regexp in a string. - * - * \param regex The regexp to look for. - * \param str The string in which to look for the expression. - * \param ... Positional parameters to the regex. - * - * \return True if there is a match; false otherwise. */ -bool -atf_utils_grep_string(const char *regex, const char *str, ...) -{ - bool res; - va_list ap; - atf_dynstr_t formatted; - atf_error_t error; - - va_start(ap, str); - error = atf_dynstr_init_ap(&formatted, regex, ap); - va_end(ap); - ATF_REQUIRE(!atf_is_error(error)); - - res = grep_string(atf_dynstr_cstring(&formatted), str); - - atf_dynstr_fini(&formatted); - - return res; -} - -/** Reads a line of arbitrary length. - * - * \param fd The descriptor from which to read the line. - * - * \return A pointer to the read line, which must be released with free(), or - * NULL if there was nothing to read from the file. */ -char * -atf_utils_readline(const int fd) -{ - char ch; - ssize_t cnt; - atf_dynstr_t temp; - atf_error_t error; - - error = atf_dynstr_init(&temp); - ATF_REQUIRE(!atf_is_error(error)); - - while ((cnt = read(fd, &ch, sizeof(ch))) == sizeof(ch) && - ch != '\n') { - error = atf_dynstr_append_fmt(&temp, "%c", ch); - ATF_REQUIRE(!atf_is_error(error)); - } - ATF_REQUIRE(cnt != -1); - - if (cnt == 0 && atf_dynstr_length(&temp) == 0) { - atf_dynstr_fini(&temp); - return NULL; - } else - return atf_dynstr_fini_disown(&temp); -} - -/** Redirects a file descriptor to a file. - * - * \param target_fd The file descriptor to be replaced. - * \param name The name of the file to direct the descriptor to. - * - * \pre Should only be called from the process spawned by fork_for_testing - * because this exits uncontrolledly. - * \post Terminates execution if the redirection fails. */ -void -atf_utils_redirect(const int target_fd, const char *name) -{ - if (target_fd == STDOUT_FILENO) - fflush(stdout); - else if (target_fd == STDERR_FILENO) - fflush(stderr); - - const int new_fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (new_fd == -1) - err(EXIT_FAILURE, "Cannot create %s", name); - if (new_fd != target_fd) { - if (dup2(new_fd, target_fd) == -1) - err(EXIT_FAILURE, "Cannot redirect to fd %d", target_fd); - } - close(new_fd); -} - -/** Waits for a subprocess and validates its exit condition. - * - * \param pid The process to be waited for. Must have been started by - * testutils_fork(). - * \param exitstatus Expected exit status. - * \param expout Expected contents of stdout. - * \param experr Expected contents of stderr. */ -void -atf_utils_wait(const pid_t pid, const int exitstatus, const char *expout, - const char *experr) -{ - int status; - ATF_REQUIRE(waitpid(pid, &status, 0) != -1); - - atf_dynstr_t out_name; - init_out_filename(&out_name, pid, "out", true); - - atf_dynstr_t err_name; - init_out_filename(&err_name, pid, "err", true); - - atf_utils_cat_file(atf_dynstr_cstring(&out_name), "subprocess stdout: "); - atf_utils_cat_file(atf_dynstr_cstring(&err_name), "subprocess stderr: "); - - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(exitstatus, WEXITSTATUS(status)); - - const char *save_prefix = "save:"; - const size_t save_prefix_length = strlen(save_prefix); - - if (strlen(expout) > save_prefix_length && - strncmp(expout, save_prefix, save_prefix_length) == 0) { - atf_utils_copy_file(atf_dynstr_cstring(&out_name), - expout + save_prefix_length); - } else { - ATF_REQUIRE(atf_utils_compare_file(atf_dynstr_cstring(&out_name), - expout)); - } - - if (strlen(experr) > save_prefix_length && - strncmp(experr, save_prefix, save_prefix_length) == 0) { - atf_utils_copy_file(atf_dynstr_cstring(&err_name), - experr + save_prefix_length); - } else { - ATF_REQUIRE(atf_utils_compare_file(atf_dynstr_cstring(&err_name), - experr)); - } - - ATF_REQUIRE(unlink(atf_dynstr_cstring(&out_name)) != -1); - ATF_REQUIRE(unlink(atf_dynstr_cstring(&err_name)) != -1); -} diff --git a/unit/atf-src/atf-c/utils.h b/unit/atf-src/atf-c/utils.h deleted file mode 100644 index e4162b215f..0000000000 --- a/unit/atf-src/atf-c/utils.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#if !defined(ATF_C_UTILS_H) -#define ATF_C_UTILS_H - -#include -#include - -#include - -void atf_utils_cat_file(const char *, const char *); -bool atf_utils_compare_file(const char *, const char *); -void atf_utils_copy_file(const char *, const char *); -void atf_utils_create_file(const char *, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(2, 3); -bool atf_utils_file_exists(const char *); -pid_t atf_utils_fork(void); -void atf_utils_free_charpp(char **); -bool atf_utils_grep_file(const char *, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 3); -bool atf_utils_grep_string(const char *, const char *, ...) - ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 3); -char *atf_utils_readline(int); -void atf_utils_redirect(const int, const char *); -void atf_utils_wait(const pid_t, const int, const char *, const char *); - -#endif /* !defined(ATF_C_UTILS_H) */ diff --git a/unit/atf-src/atf-c/utils_test.c b/unit/atf-src/atf-c/utils_test.c deleted file mode 100644 index fb81cd3a1d..0000000000 --- a/unit/atf-src/atf-c/utils_test.c +++ /dev/null @@ -1,570 +0,0 @@ -/* Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include "atf-c/utils.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include "atf-c/detail/dynstr.h" -#include "atf-c/detail/test_helpers.h" - -/** Reads the contents of a file into a buffer. - * - * Up to buflen-1 characters are read into buffer. If this function returns, - * the contents read into the buffer are guaranteed to be nul-terminated. - * Note, however, that if the file contains any nul characters itself, - * comparing it "as a string" will not work. - * - * \param path The file to be read, which must exist. - * \param buffer Buffer into which to store the file contents. - * \param buflen Size of the target buffer. - * - * \return The count of bytes read. */ -static ssize_t -read_file(const char *path, void *const buffer, const size_t buflen) -{ - const int fd = open(path, O_RDONLY); - ATF_REQUIRE_MSG(fd != -1, "Cannot open %s", path); - const ssize_t length = read(fd, buffer, buflen - 1); - close(fd); - ATF_REQUIRE(length != -1); - ((char *)buffer)[length] = '\0'; - return length; -} - -ATF_TC_WITHOUT_HEAD(cat_file__empty); -ATF_TC_BODY(cat_file__empty, tc) -{ - atf_utils_create_file("file.txt", "%s", ""); - atf_utils_redirect(STDOUT_FILENO, "captured.txt"); - atf_utils_cat_file("file.txt", "PREFIX"); - fflush(stdout); - close(STDOUT_FILENO); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("", buffer); -} - -ATF_TC_WITHOUT_HEAD(cat_file__one_line); -ATF_TC_BODY(cat_file__one_line, tc) -{ - atf_utils_create_file("file.txt", "This is a single line\n"); - atf_utils_redirect(STDOUT_FILENO, "captured.txt"); - atf_utils_cat_file("file.txt", "PREFIX"); - fflush(stdout); - close(STDOUT_FILENO); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("PREFIXThis is a single line\n", buffer); -} - -ATF_TC_WITHOUT_HEAD(cat_file__several_lines); -ATF_TC_BODY(cat_file__several_lines, tc) -{ - atf_utils_create_file("file.txt", "First\nSecond line\nAnd third\n"); - atf_utils_redirect(STDOUT_FILENO, "captured.txt"); - atf_utils_cat_file("file.txt", ">"); - fflush(stdout); - close(STDOUT_FILENO); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ(">First\n>Second line\n>And third\n", buffer); -} - -ATF_TC_WITHOUT_HEAD(cat_file__no_newline_eof); -ATF_TC_BODY(cat_file__no_newline_eof, tc) -{ - atf_utils_create_file("file.txt", "Foo\n bar baz"); - atf_utils_redirect(STDOUT_FILENO, "captured.txt"); - atf_utils_cat_file("file.txt", "PREFIX"); - fflush(stdout); - close(STDOUT_FILENO); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("PREFIXFoo\nPREFIX bar baz", buffer); -} - -ATF_TC_WITHOUT_HEAD(compare_file__empty__match); -ATF_TC_BODY(compare_file__empty__match, tc) -{ - atf_utils_create_file("test.txt", "%s", ""); - ATF_REQUIRE(atf_utils_compare_file("test.txt", "")); -} - -ATF_TC_WITHOUT_HEAD(compare_file__empty__not_match); -ATF_TC_BODY(compare_file__empty__not_match, tc) -{ - atf_utils_create_file("test.txt", "%s", ""); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "\n")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "foo")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", " ")); -} - -ATF_TC_WITHOUT_HEAD(compare_file__short__match); -ATF_TC_BODY(compare_file__short__match, tc) -{ - atf_utils_create_file("test.txt", "this is a short file"); - ATF_REQUIRE(atf_utils_compare_file("test.txt", "this is a short file")); -} - -ATF_TC_WITHOUT_HEAD(compare_file__short__not_match); -ATF_TC_BODY(compare_file__short__not_match, tc) -{ - atf_utils_create_file("test.txt", "this is a short file"); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "\n")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "this is a Short file")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "this is a short fil")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "this is a short file ")); -} - -ATF_TC_WITHOUT_HEAD(compare_file__long__match); -ATF_TC_BODY(compare_file__long__match, tc) -{ - char long_contents[3456]; - size_t i = 0; - for (; i < sizeof(long_contents) - 1; i++) - long_contents[i] = '0' + (i % 10); - long_contents[i] = '\0'; - atf_utils_create_file("test.txt", "%s", long_contents); - - ATF_REQUIRE(atf_utils_compare_file("test.txt", long_contents)); -} - -ATF_TC_WITHOUT_HEAD(compare_file__long__not_match); -ATF_TC_BODY(compare_file__long__not_match, tc) -{ - char long_contents[3456]; - size_t i = 0; - for (; i < sizeof(long_contents) - 1; i++) - long_contents[i] = '0' + (i % 10); - long_contents[i] = '\0'; - atf_utils_create_file("test.txt", "%s", long_contents); - - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "\n")); - ATF_REQUIRE(!atf_utils_compare_file("test.txt", "0123456789")); - long_contents[i - 1] = 'Z'; - ATF_REQUIRE(!atf_utils_compare_file("test.txt", long_contents)); -} - -ATF_TC_WITHOUT_HEAD(copy_file__empty); -ATF_TC_BODY(copy_file__empty, tc) -{ - atf_utils_create_file("src.txt", "%s", ""); - ATF_REQUIRE(chmod("src.txt", 0520) != -1); - - atf_utils_copy_file("src.txt", "dest.txt"); - ATF_REQUIRE(atf_utils_compare_file("dest.txt", "")); - struct stat sb; - ATF_REQUIRE(stat("dest.txt", &sb) != -1); - ATF_REQUIRE_EQ(0520, sb.st_mode & 0xfff); -} - -ATF_TC_WITHOUT_HEAD(copy_file__some_contents); -ATF_TC_BODY(copy_file__some_contents, tc) -{ - atf_utils_create_file("src.txt", "This is a\ntest file\n"); - atf_utils_copy_file("src.txt", "dest.txt"); - ATF_REQUIRE(atf_utils_compare_file("dest.txt", "This is a\ntest file\n")); -} - -ATF_TC_WITHOUT_HEAD(create_file); -ATF_TC_BODY(create_file, tc) -{ - atf_utils_create_file("test.txt", "This is a test with %d", 12345); - - char buffer[128]; - read_file("test.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("This is a test with 12345", buffer); -} - -ATF_TC_WITHOUT_HEAD(file_exists); -ATF_TC_BODY(file_exists, tc) -{ - atf_utils_create_file("test.txt", "foo"); - - ATF_REQUIRE( atf_utils_file_exists("test.txt")); - ATF_REQUIRE( atf_utils_file_exists("./test.txt")); - ATF_REQUIRE(!atf_utils_file_exists("./test.tx")); - ATF_REQUIRE(!atf_utils_file_exists("test.txt2")); -} - -ATF_TC_WITHOUT_HEAD(fork); -ATF_TC_BODY(fork, tc) -{ - fprintf(stdout, "Should not get into child\n"); - fprintf(stderr, "Should not get into child\n"); - pid_t pid = atf_utils_fork(); - if (pid == 0) { - fprintf(stdout, "Child stdout\n"); - fprintf(stderr, "Child stderr\n"); - exit(EXIT_SUCCESS); - } - - int status; - ATF_REQUIRE(waitpid(pid, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - - atf_dynstr_t out_name; - RE(atf_dynstr_init_fmt(&out_name, "atf_utils_fork_%d_out.txt", (int)pid)); - atf_dynstr_t err_name; - RE(atf_dynstr_init_fmt(&err_name, "atf_utils_fork_%d_err.txt", (int)pid)); - - char buffer[1024]; - read_file(atf_dynstr_cstring(&out_name), buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("Child stdout\n", buffer); - read_file(atf_dynstr_cstring(&err_name), buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("Child stderr\n", buffer); - - atf_dynstr_fini(&err_name); - atf_dynstr_fini(&out_name); -} - -ATF_TC_WITHOUT_HEAD(free_charpp__empty); -ATF_TC_BODY(free_charpp__empty, tc) -{ - char **array = malloc(sizeof(char *) * 1); - array[0] = NULL; - - atf_utils_free_charpp(array); -} - -ATF_TC_WITHOUT_HEAD(free_charpp__some); -ATF_TC_BODY(free_charpp__some, tc) -{ - char **array = malloc(sizeof(char *) * 4); - array[0] = strdup("first"); - array[1] = strdup("second"); - array[2] = strdup("third"); - array[3] = NULL; - - atf_utils_free_charpp(array); -} - -ATF_TC_WITHOUT_HEAD(grep_file); -ATF_TC_BODY(grep_file, tc) -{ - atf_utils_create_file("test.txt", "line1\nthe second line\naaaabbbb\n"); - - ATF_CHECK(atf_utils_grep_file("line1", "test.txt")); - ATF_CHECK(atf_utils_grep_file("line%d", "test.txt", 1)); - ATF_CHECK(atf_utils_grep_file("second line", "test.txt")); - ATF_CHECK(atf_utils_grep_file("aa.*bb", "test.txt")); - ATF_CHECK(!atf_utils_grep_file("foo", "test.txt")); - ATF_CHECK(!atf_utils_grep_file("bar", "test.txt")); - ATF_CHECK(!atf_utils_grep_file("aaaaa", "test.txt")); -} - -ATF_TC_WITHOUT_HEAD(grep_string); -ATF_TC_BODY(grep_string, tc) -{ - const char *str = "a string - aaaabbbb"; - ATF_CHECK(atf_utils_grep_string("a string", str)); - ATF_CHECK(atf_utils_grep_string("^a string", str)); - ATF_CHECK(atf_utils_grep_string("aaaabbbb$", str)); - ATF_CHECK(atf_utils_grep_string("a%s*bb", str, "a.")); - ATF_CHECK(!atf_utils_grep_string("foo", str)); - ATF_CHECK(!atf_utils_grep_string("bar", str)); - ATF_CHECK(!atf_utils_grep_string("aaaaa", str)); -} - -ATF_TC_WITHOUT_HEAD(readline__none); -ATF_TC_BODY(readline__none, tc) -{ - atf_utils_create_file("empty.txt", "%s", ""); - - const int fd = open("empty.txt", O_RDONLY); - ATF_REQUIRE(fd != -1); - ATF_REQUIRE(atf_utils_readline(fd) == NULL); - close(fd); -} - -ATF_TC_WITHOUT_HEAD(readline__some); -ATF_TC_BODY(readline__some, tc) -{ - const char *l1 = "First line with % formatting % characters %"; - const char *l2 = "Second line; much longer than the first one"; - const char *l3 = "Last line, without terminator"; - - atf_utils_create_file("test.txt", "%s\n%s\n%s", l1, l2, l3); - - const int fd = open("test.txt", O_RDONLY); - ATF_REQUIRE(fd != -1); - - char *line; - - line = atf_utils_readline(fd); - ATF_REQUIRE_STREQ(l1, line); - free(line); - - line = atf_utils_readline(fd); - ATF_REQUIRE_STREQ(l2, line); - free(line); - - line = atf_utils_readline(fd); - ATF_REQUIRE_STREQ(l3, line); - free(line); - - close(fd); -} - -ATF_TC_WITHOUT_HEAD(redirect__stdout); -ATF_TC_BODY(redirect__stdout, tc) -{ - printf("Buffer this"); - atf_utils_redirect(STDOUT_FILENO, "captured.txt"); - printf("The printed message"); - fflush(stdout); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("The printed message", buffer); -} - -ATF_TC_WITHOUT_HEAD(redirect__stderr); -ATF_TC_BODY(redirect__stderr, tc) -{ - fprintf(stderr, "Buffer this"); - atf_utils_redirect(STDERR_FILENO, "captured.txt"); - fprintf(stderr, "The printed message"); - fflush(stderr); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ("The printed message", buffer); -} - -ATF_TC_WITHOUT_HEAD(redirect__other); -ATF_TC_BODY(redirect__other, tc) -{ - const char *message = "Foo bar\nbaz\n"; - atf_utils_redirect(15, "captured.txt"); - ATF_REQUIRE(write(15, message, strlen(message)) != -1); - close(15); - - char buffer[1024]; - read_file("captured.txt", buffer, sizeof(buffer)); - ATF_REQUIRE_STREQ(message, buffer); -} - -static void -fork_and_wait(const int exitstatus, const char* expout, const char* experr) -{ - const pid_t pid = atf_utils_fork(); - ATF_REQUIRE(pid != -1); - if (pid == 0) { - fprintf(stdout, "Some output\n"); - fprintf(stderr, "Some error\n"); - exit(123); - } - atf_utils_wait(pid, exitstatus, expout, experr); - exit(EXIT_SUCCESS); -} - -ATF_TC_WITHOUT_HEAD(wait__ok); -ATF_TC_BODY(wait__ok, tc) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output\n", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - } -} - -ATF_TC_WITHOUT_HEAD(wait__ok_nested); -ATF_TC_BODY(wait__ok_nested, tc) -{ - const pid_t parent = atf_utils_fork(); - ATF_REQUIRE(parent != -1); - if (parent == 0) { - const pid_t child = atf_utils_fork(); - ATF_REQUIRE(child != -1); - if (child == 0) { - fflush(stderr); - fprintf(stdout, "Child output\n"); - fflush(stdout); - fprintf(stderr, "Child error\n"); - exit(50); - } else { - fprintf(stdout, "Parent output\n"); - fprintf(stderr, "Parent error\n"); - atf_utils_wait(child, 50, "Child output\n", "Child error\n"); - exit(40); - } - } else { - atf_utils_wait(parent, 40, - "Parent output\n" - "subprocess stdout: Child output\n" - "subprocess stderr: Child error\n", - "Parent error\n"); - } -} - -ATF_TC_WITHOUT_HEAD(wait__invalid_exitstatus); -ATF_TC_BODY(wait__invalid_exitstatus, tc) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(120, "Some output\n", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_FAILURE, WEXITSTATUS(status)); - } -} - -ATF_TC_WITHOUT_HEAD(wait__invalid_stdout); -ATF_TC_BODY(wait__invalid_stdout, tc) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output foo\n", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_FAILURE, WEXITSTATUS(status)); - } -} - -ATF_TC_WITHOUT_HEAD(wait__invalid_stderr); -ATF_TC_BODY(wait__invalid_stderr, tc) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output\n", "Some error foo\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_FAILURE, WEXITSTATUS(status)); - } -} - -ATF_TC_WITHOUT_HEAD(wait__save_stdout); -ATF_TC_BODY(wait__save_stdout, tc) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "save:my-output.txt", "Some error\n"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - - ATF_REQUIRE(atf_utils_compare_file("my-output.txt", "Some output\n")); - } -} - -ATF_TC_WITHOUT_HEAD(wait__save_stderr); -ATF_TC_BODY(wait__save_stderr, tc) -{ - const pid_t control = fork(); - ATF_REQUIRE(control != -1); - if (control == 0) - fork_and_wait(123, "Some output\n", "save:my-output.txt"); - else { - int status; - ATF_REQUIRE(waitpid(control, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE_EQ(EXIT_SUCCESS, WEXITSTATUS(status)); - - ATF_REQUIRE(atf_utils_compare_file("my-output.txt", "Some error\n")); - } -} - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, cat_file__empty); - ATF_TP_ADD_TC(tp, cat_file__one_line); - ATF_TP_ADD_TC(tp, cat_file__several_lines); - ATF_TP_ADD_TC(tp, cat_file__no_newline_eof); - - ATF_TP_ADD_TC(tp, compare_file__empty__match); - ATF_TP_ADD_TC(tp, compare_file__empty__not_match); - ATF_TP_ADD_TC(tp, compare_file__short__match); - ATF_TP_ADD_TC(tp, compare_file__short__not_match); - ATF_TP_ADD_TC(tp, compare_file__long__match); - ATF_TP_ADD_TC(tp, compare_file__long__not_match); - - ATF_TP_ADD_TC(tp, copy_file__empty); - ATF_TP_ADD_TC(tp, copy_file__some_contents); - - ATF_TP_ADD_TC(tp, create_file); - - ATF_TP_ADD_TC(tp, file_exists); - - ATF_TP_ADD_TC(tp, fork); - - ATF_TP_ADD_TC(tp, free_charpp__empty); - ATF_TP_ADD_TC(tp, free_charpp__some); - - ATF_TP_ADD_TC(tp, grep_file); - ATF_TP_ADD_TC(tp, grep_string); - - ATF_TP_ADD_TC(tp, readline__none); - ATF_TP_ADD_TC(tp, readline__some); - - ATF_TP_ADD_TC(tp, redirect__stdout); - ATF_TP_ADD_TC(tp, redirect__stderr); - ATF_TP_ADD_TC(tp, redirect__other); - - ATF_TP_ADD_TC(tp, wait__ok); - ATF_TP_ADD_TC(tp, wait__ok_nested); - ATF_TP_ADD_TC(tp, wait__save_stdout); - ATF_TP_ADD_TC(tp, wait__save_stderr); - ATF_TP_ADD_TC(tp, wait__invalid_exitstatus); - ATF_TP_ADD_TC(tp, wait__invalid_stdout); - ATF_TP_ADD_TC(tp, wait__invalid_stderr); - - return atf_no_error(); -} diff --git a/unit/atf-src/atf-sh/.gitignore b/unit/atf-src/atf-sh/.gitignore deleted file mode 100644 index 147cf1d3b6..0000000000 --- a/unit/atf-src/atf-sh/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/atf-sh.pc diff --git a/unit/atf-src/atf-sh/Atffile b/unit/atf-src/atf-sh/Atffile deleted file mode 100644 index f1735c3088..0000000000 --- a/unit/atf-src/atf-sh/Atffile +++ /dev/null @@ -1,11 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: tc_test -tp: tp_test -tp: normalize_test -tp: config_test -tp: atf-check_test -tp: atf_check_test -tp: integration_test diff --git a/unit/atf-src/atf-sh/Kyuafile b/unit/atf-src/atf-sh/Kyuafile deleted file mode 100644 index 01a9253e7e..0000000000 --- a/unit/atf-src/atf-sh/Kyuafile +++ /dev/null @@ -1,11 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="tc_test"} -atf_test_program{name="tp_test"} -atf_test_program{name="normalize_test"} -atf_test_program{name="config_test"} -atf_test_program{name="atf-check_test"} -atf_test_program{name="atf_check_test"} -atf_test_program{name="integration_test"} diff --git a/unit/atf-src/atf-sh/Makefile.am.inc b/unit/atf-src/atf-sh/Makefile.am.inc deleted file mode 100644 index 59d09113af..0000000000 --- a/unit/atf-src/atf-sh/Makefile.am.inc +++ /dev/null @@ -1,122 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -libexec_PROGRAMS += atf-sh/atf-check -atf_sh_atf_check_SOURCES = atf-sh/atf-check.cpp -atf_sh_atf_check_LDADD = $(ATF_CXX_LIBS) -atf_sh_atf_check_CPPFLAGS = -DATF_SHELL=\"$(ATF_SHELL)\" -dist_man_MANS += atf-sh/atf-check.1 - -bin_PROGRAMS += atf-sh/atf-sh -atf_sh_atf_sh_SOURCES = atf-sh/atf-sh.cpp -atf_sh_atf_sh_CPPFLAGS = -DATF_LIBEXECDIR=\"$(libexecdir)\" \ - -DATF_PKGDATADIR=\"$(pkgdatadir)\" \ - -DATF_SHELL=\"$(ATF_SHELL)\" -atf_sh_atf_sh_LDADD = $(ATF_CXX_LIBS) -dist_man_MANS += atf-sh/atf-sh.1 - -atf_sh_DATA = atf-sh/libatf-sh.subr -atf_shdir = $(pkgdatadir) -EXTRA_DIST += $(atf_sh_DATA) - -dist_man_MANS += atf-sh/atf-sh.3 - -atf_aclocal_DATA += atf-sh/atf-sh.m4 -EXTRA_DIST += atf-sh/atf-sh.m4 - -atf_shpkgconfigdir = $(atf_pkgconfigdir) -atf_shpkgconfig_DATA = atf-sh/atf-sh.pc -CLEANFILES += atf-sh/atf-sh.pc -EXTRA_DIST += atf-sh/atf-sh.pc.in -atf-sh/atf-sh.pc: $(srcdir)/atf-sh/atf-sh.pc.in Makefile - $(AM_V_GEN)test -d atf-sh || mkdir -p atf-sh; \ - sed -e 's#__ATF_VERSION__#$(PACKAGE_VERSION)#g' \ - -e 's#__EXEC_PREFIX__#$(exec_prefix)#g' \ - <$(srcdir)/atf-sh/atf-sh.pc.in >atf-sh/atf-sh.pc.tmp; \ - mv atf-sh/atf-sh.pc.tmp atf-sh/atf-sh.pc - -tests_atf_sh_DATA = atf-sh/Atffile \ - atf-sh/Kyuafile -tests_atf_shdir = $(pkgtestsdir)/atf-sh -EXTRA_DIST += $(tests_atf_sh_DATA) - -tests_atf_sh_SCRIPTS = atf-sh/misc_helpers -CLEANFILES += atf-sh/misc_helpers -EXTRA_DIST += atf-sh/misc_helpers.sh -atf-sh/misc_helpers: $(srcdir)/atf-sh/misc_helpers.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/misc_helpers.sh"; \ - dst="atf-sh/misc_helpers"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/atf_check_test -CLEANFILES += atf-sh/atf_check_test -EXTRA_DIST += atf-sh/atf_check_test.sh -atf-sh/atf_check_test: $(srcdir)/atf-sh/atf_check_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/atf_check_test.sh"; \ - dst="atf-sh/atf_check_test"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/atf-check_test -CLEANFILES += atf-sh/atf-check_test -EXTRA_DIST += atf-sh/atf-check_test.sh -atf-sh/atf-check_test: $(srcdir)/atf-sh/atf-check_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/atf-check_test.sh"; \ - dst="atf-sh/atf-check_test"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/config_test -CLEANFILES += atf-sh/config_test -EXTRA_DIST += atf-sh/config_test.sh -atf-sh/config_test: $(srcdir)/atf-sh/config_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/config_test.sh"; \ - dst="atf-sh/config_test"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/integration_test -CLEANFILES += atf-sh/integration_test -EXTRA_DIST += atf-sh/integration_test.sh -atf-sh/integration_test: $(srcdir)/atf-sh/integration_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/integration_test.sh"; \ - dst="atf-sh/integration_test"; \ - substs="s,__ATF_SH__,$(exec_prefix)/bin/atf-sh,g"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/normalize_test -CLEANFILES += atf-sh/normalize_test -EXTRA_DIST += atf-sh/normalize_test.sh -atf-sh/normalize_test: $(srcdir)/atf-sh/normalize_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/normalize_test.sh"; \ - dst="atf-sh/normalize_test"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/tc_test -CLEANFILES += atf-sh/tc_test -EXTRA_DIST += atf-sh/tc_test.sh -atf-sh/tc_test: $(srcdir)/atf-sh/tc_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/tc_test.sh"; \ - dst="atf-sh/tc_test"; $(BUILD_SH_TP) - -tests_atf_sh_SCRIPTS += atf-sh/tp_test -CLEANFILES += atf-sh/tp_test -EXTRA_DIST += atf-sh/tp_test.sh -atf-sh/tp_test: $(srcdir)/atf-sh/tp_test.sh - $(AM_V_GEN)src="$(srcdir)/atf-sh/tp_test.sh"; \ - dst="atf-sh/tp_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/atf-sh/atf-check.1 b/unit/atf-src/atf-sh/atf-check.1 deleted file mode 100644 index a3bd379c74..0000000000 --- a/unit/atf-src/atf-sh/atf-check.1 +++ /dev/null @@ -1,160 +0,0 @@ -.\" Copyright (c) 2008 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd October 5, 2014 -.Dt ATF-CHECK 1 -.Os -.Sh NAME -.Nm atf-check -.Nd executes a command and analyzes its results -.Sh SYNOPSIS -.Nm -.Op Fl s Ar qual:value -.Op Fl o Ar action:arg ... -.Op Fl e Ar action:arg ... -.Op Fl x -.Ar command -.Sh DESCRIPTION -.Nm -executes a given command and analyzes its results, including -exit code, stdout and stderr. -.Pp -.Em Test cases must use -.Em Xr atf-sh 3 Ns ' Ns s -.Em Nm atf_check -.Em builtin function instead of calling this utility directly. -.Pp -In the first synopsis form, -.Nm -will execute the provided command and apply checks specified -by arguments. -By default it will act as if it was run with -.Fl s -.Ar exit:0 -.Fl o -.Ar empty -.Fl e -.Ar empty . -Multiple checks for the same output channel are allowed and, if specified, -their results will be combined as a logical and (meaning that the output must -match all the provided checks). -.Pp -In the second synopsis form, -.Nm -will print information about all supported options and their purpose. -.Pp -The following options are available: -.Bl -tag -width XqualXvalueXX -.It Fl s Ar qual:value -Analyzes termination status. -Must be one of: -.Bl -tag -width signal: -compact -.It Ar exit: -checks that the program exited cleanly and that its exit status is equal to -.Va value . -The exit code can be omitted altogether, in which case any clean exit is -accepted. -.It Ar ignore -ignores the exit check. -.It Ar signal: -checks that the program exited due to a signal and that the signal that -terminated it is -.Va value . -The signal can be specified both as a number or as a name, or it can also -be omitted altogether, in which case any signal is accepted. -.El -.Pp -Most of these checkers can be prefixed by the -.Sq not- -string, which effectively reverses the check. -.It Fl o Ar action:arg -Analyzes standard output. -Must be one of: -.Bl -tag -width inline: -compact -.It Ar empty -checks that stdout is empty -.It Ar ignore -ignores stdout -.It Ar file: -compares stdout with given file -.It Ar inline: -compares stdout with inline value -.It Ar match: -looks for a regular expression in stdout -.It Ar save: -saves stdout to given file -.El -.Pp -Most of these checkers can be prefixed by the -.Sq not- -string, which effectively reverses the check. -.It Fl e Ar action:arg -Analyzes standard error (syntax identical to above) -.It Fl x -Executes -.Ar command -as a shell command line, executing it with the system shell defined by -.Va ATF_SHELL . -You should avoid using this flag if at all possible to prevent shell quoting -issues. -.El -.Sh EXIT STATUS -.Nm -exits 0 on success, and other (unspecified) value on failure. -.Sh ENVIRONMENT -.Bl -tag -width ATFXSHELLXX -compact -.It Va ATF_SHELL -Path to the system shell to be used when the -.Fl x -is given to run commands. -.El -.Sh EXAMPLES -The following are sample invocations from within a test case. -Note that we use the -.Nm atf_check -function provided by -.Xr atf-sh 3 -instead of executing -.Nm -directly: -.Bd -literal -offset indent -# Exit code 0, nothing on stdout/stderr -atf_check 'true' - -# Typical usage if failure is expected -atf_check -s not-exit:0 'false' - -# Checking stdout/stderr -echo foobar >expout -atf_check -o file:expout -e inline:"xx\etyy\en" \e - 'echo foobar ; printf "xx\etyy\en" >&2' - -# Checking for a crash -atf_check -s signal:sigsegv my_program - -# Combined checks -atf_check -o match:foo -o not-match:bar echo foo baz -.Ed -.Sh SEE ALSO -.Xr atf-sh 1 diff --git a/unit/atf-src/atf-sh/atf-check.cpp b/unit/atf-src/atf-sh/atf-check.cpp deleted file mode 100644 index 866b7bb483..0000000000 --- a/unit/atf-src/atf-sh/atf-check.cpp +++ /dev/null @@ -1,834 +0,0 @@ -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -extern "C" { -#include -#include - -#include -#include -#include -} - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "atf-c++/check.hpp" -#include "atf-c++/detail/application.hpp" -#include "atf-c++/detail/auto_array.hpp" -#include "atf-c++/detail/env.hpp" -#include "atf-c++/detail/exceptions.hpp" -#include "atf-c++/detail/fs.hpp" -#include "atf-c++/detail/process.hpp" -#include "atf-c++/detail/sanity.hpp" -#include "atf-c++/detail/text.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -namespace { - -enum status_check_t { - sc_exit, - sc_ignore, - sc_signal, -}; - -struct status_check { - status_check_t type; - bool negated; - int value; - - status_check(const status_check_t& p_type, const bool p_negated, - const int p_value) : - type(p_type), - negated(p_negated), - value(p_value) - { - } -}; - -enum output_check_t { - oc_ignore, - oc_inline, - oc_file, - oc_empty, - oc_match, - oc_save -}; - -struct output_check { - output_check_t type; - bool negated; - std::string value; - - output_check(const output_check_t& p_type, const bool p_negated, - const std::string& p_value) : - type(p_type), - negated(p_negated), - value(p_value) - { - } -}; - -class temp_file : public std::ostream { - std::auto_ptr< atf::fs::path > m_path; - int m_fd; - -public: - temp_file(const char* pattern) : - std::ostream(NULL), - m_fd(-1) - { - const atf::fs::path file = atf::fs::path( - atf::env::get("TMPDIR", "/tmp")) / pattern; - - atf::auto_array< char > buf(new char[file.str().length() + 1]); - std::strcpy(buf.get(), file.c_str()); - - m_fd = ::mkstemp(buf.get()); - if (m_fd == -1) - throw atf::system_error("atf_check::temp_file::temp_file(" + - file.str() + ")", "mkstemp(3) failed", - errno); - - m_path.reset(new atf::fs::path(buf.get())); - } - - ~temp_file(void) - { - close(); - try { - remove(*m_path); - } catch (const atf::system_error&) { - // Ignore deletion errors. - } - } - - const atf::fs::path& - get_path(void) const - { - return *m_path; - } - - void - write(const std::string& text) - { - if (::write(m_fd, text.c_str(), text.size()) == -1) - throw atf::system_error("atf_check", "write(2) failed", errno); - } - - void - close(void) - { - if (m_fd != -1) { - flush(); - ::close(m_fd); - m_fd = -1; - } - } -}; - -} // anonymous namespace - -static int -parse_exit_code(const std::string& str) -{ - try { - const int value = atf::text::to_type< int >(str); - if (value < 0 || value > 255) - throw std::runtime_error("Unused reason"); - return value; - } catch (const std::runtime_error&) { - throw atf::application::usage_error("Invalid exit code for -s option; " - "must be an integer in range 0-255"); - } -} - -static struct name_number { - const char *name; - int signo; -} signal_names_to_numbers[] = { - { "hup", SIGHUP }, - { "int", SIGINT }, - { "quit", SIGQUIT }, - { "trap", SIGTRAP }, - { "abrt", SIGABRT }, - { "kill", SIGKILL }, - { "segv", SIGSEGV }, - { "pipe", SIGPIPE }, - { "alrm", SIGALRM }, - { "term", SIGTERM }, - { "usr1", SIGUSR1 }, - { "usr2", SIGUSR2 }, - { NULL, INT_MIN }, -}; - -static int -signal_name_to_number(const std::string& str) -{ - struct name_number* iter = signal_names_to_numbers; - int signo = INT_MIN; - while (signo == INT_MIN && iter->name != NULL) { - if (str == iter->name || str == std::string("sig") + iter->name) - signo = iter->signo; - else - iter++; - } - return signo; -} - -static int -parse_signal(const std::string& str) -{ - const int signo = signal_name_to_number(str); - if (signo == INT_MIN) { - try { - return atf::text::to_type< int >(str); - } catch (std::runtime_error) { - throw atf::application::usage_error("Invalid signal name or number " - "in -s option"); - } - } - INV(signo != INT_MIN); - return signo; -} - -static status_check -parse_status_check_arg(const std::string& arg) -{ - const std::string::size_type delimiter = arg.find(':'); - bool negated = (arg.compare(0, 4, "not-") == 0); - const std::string action_str = arg.substr(0, delimiter); - const std::string action = negated ? action_str.substr(4) : action_str; - const std::string value_str = ( - delimiter == std::string::npos ? "" : arg.substr(delimiter + 1)); - int value; - - status_check_t type; - if (action == "eq") { - // Deprecated; use exit instead. TODO: Remove after 0.10. - type = sc_exit; - if (negated) - throw atf::application::usage_error("Cannot negate eq checker"); - negated = false; - value = parse_exit_code(value_str); - } else if (action == "exit") { - type = sc_exit; - if (value_str.empty()) - value = INT_MIN; - else - value = parse_exit_code(value_str); - } else if (action == "ignore") { - if (negated) - throw atf::application::usage_error("Cannot negate ignore checker"); - type = sc_ignore; - value = INT_MIN; - } else if (action == "ne") { - // Deprecated; use not-exit instead. TODO: Remove after 0.10. - type = sc_exit; - if (negated) - throw atf::application::usage_error("Cannot negate ne checker"); - negated = true; - value = parse_exit_code(value_str); - } else if (action == "signal") { - type = sc_signal; - if (value_str.empty()) - value = INT_MIN; - else - value = parse_signal(value_str); - } else - throw atf::application::usage_error("Invalid status checker"); - - return status_check(type, negated, value); -} - -static -output_check -parse_output_check_arg(const std::string& arg) -{ - const std::string::size_type delimiter = arg.find(':'); - const bool negated = (arg.compare(0, 4, "not-") == 0); - const std::string action_str = arg.substr(0, delimiter); - const std::string action = negated ? action_str.substr(4) : action_str; - - output_check_t type; - if (action == "empty") - type = oc_empty; - else if (action == "file") - type = oc_file; - else if (action == "ignore") { - if (negated) - throw atf::application::usage_error("Cannot negate ignore checker"); - type = oc_ignore; - } else if (action == "inline") - type = oc_inline; - else if (action == "match") - type = oc_match; - else if (action == "save") { - if (negated) - throw atf::application::usage_error("Cannot negate save checker"); - type = oc_save; - } else - throw atf::application::usage_error("Invalid output checker"); - - return output_check(type, negated, arg.substr(delimiter + 1)); -} - -static -std::string -flatten_argv(char* const* argv) -{ - std::string cmdline; - - char* const* arg = &argv[0]; - while (*arg != NULL) { - if (arg != &argv[0]) - cmdline += ' '; - - cmdline += *arg; - - arg++; - } - - return cmdline; -} - -static -std::auto_ptr< atf::check::check_result > -execute(const char* const* argv) -{ - // TODO: This should go to stderr... but fixing it now may be hard as test - // cases out there might be relying on stderr being silent. - std::cout << "Executing command [ "; - for (int i = 0; argv[i] != NULL; ++i) - std::cout << argv[i] << " "; - std::cout << "]\n"; - std::cout.flush(); - - atf::process::argv_array argva(argv); - return atf::check::exec(argva); -} - -static -std::auto_ptr< atf::check::check_result > -execute_with_shell(char* const* argv) -{ - const std::string cmd = flatten_argv(argv); - - const char* sh_argv[4]; - sh_argv[0] = atf::env::get("ATF_SHELL", ATF_SHELL).c_str(); - sh_argv[1] = "-c"; - sh_argv[2] = cmd.c_str(); - sh_argv[3] = NULL; - return execute(sh_argv); -} - -static -void -cat_file(const atf::fs::path& path) -{ - std::ifstream stream(path.c_str()); - if (!stream) - throw std::runtime_error("Failed to open " + path.str()); - - stream >> std::noskipws; - std::istream_iterator< char > begin(stream), end; - std::ostream_iterator< char > out(std::cerr); - std::copy(begin, end, out); - - stream.close(); -} - -static -bool -grep_file(const atf::fs::path& path, const std::string& regexp) -{ - std::ifstream stream(path.c_str()); - if (!stream) - throw std::runtime_error("Failed to open " + path.str()); - - bool found = false; - - std::string line; - while (!found && !std::getline(stream, line).fail()) { - if (atf::text::match(line, regexp)) - found = true; - } - - stream.close(); - - return found; -} - -static -bool -file_empty(const atf::fs::path& p) -{ - atf::fs::file_info f(p); - - return (f.get_size() == 0); -} - -static bool -compare_files(const atf::fs::path& p1, const atf::fs::path& p2) -{ - bool equal = false; - - std::ifstream f1(p1.c_str()); - if (!f1) - throw std::runtime_error("Failed to open " + p1.str()); - - std::ifstream f2(p2.c_str()); - if (!f2) - throw std::runtime_error("Failed to open " + p1.str()); - - for (;;) { - char buf1[512], buf2[512]; - - f1.read(buf1, sizeof(buf1)); - if (f1.bad()) - throw std::runtime_error("Failed to read from " + p1.str()); - - f2.read(buf2, sizeof(buf2)); - if (f2.bad()) - throw std::runtime_error("Failed to read from " + p1.str()); - - if ((f1.gcount() == 0) && (f2.gcount() == 0)) { - equal = true; - break; - } - - if ((f1.gcount() != f2.gcount()) || - (std::memcmp(buf1, buf2, f1.gcount()) != 0)) { - break; - } - } - - return equal; -} - -static -void -print_diff(const atf::fs::path& p1, const atf::fs::path& p2) -{ - const atf::process::status s = - atf::process::exec(atf::fs::path("diff"), - atf::process::argv_array("diff", "-u", p1.c_str(), - p2.c_str(), NULL), - atf::process::stream_connect(STDOUT_FILENO, - STDERR_FILENO), - atf::process::stream_inherit()); - - if (!s.exited()) - std::cerr << "Failed to run diff(3)\n"; - - if (s.exitstatus() != 1) - std::cerr << "Error while running diff(3)\n"; -} - -static -std::string -decode(const std::string& s) -{ - size_t i; - std::string res; - - res.reserve(s.length()); - - i = 0; - while (i < s.length()) { - char c = s[i++]; - - if (c == '\\') { - switch (s[i++]) { - case 'a': c = '\a'; break; - case 'b': c = '\b'; break; - case 'c': break; - case 'e': c = 033; break; - case 'f': c = '\f'; break; - case 'n': c = '\n'; break; - case 'r': c = '\r'; break; - case 't': c = '\t'; break; - case 'v': c = '\v'; break; - case '\\': break; - case '0': - { - int count = 3; - c = 0; - while (--count >= 0 && (unsigned)(s[i] - '0') < 8) - c = (c << 3) + (s[i++] - '0'); - break; - } - default: - --i; - break; - } - } - - res.push_back(c); - } - - return res; -} - -static -bool -run_status_check(const status_check& sc, const atf::check::check_result& cr) -{ - bool result; - - if (sc.type == sc_exit) { - if (cr.exited() && sc.value != INT_MIN) { - const int status = cr.exitcode(); - - if (!sc.negated && sc.value != status) { - std::cerr << "Fail: incorrect exit status: " - << status << ", expected: " - << sc.value << "\n"; - result = false; - } else if (sc.negated && sc.value == status) { - std::cerr << "Fail: incorrect exit status: " - << status << ", expected: " - << "anything else\n"; - result = false; - } else - result = true; - } else if (cr.exited() && sc.value == INT_MIN) { - result = true; - } else { - std::cerr << "Fail: program did not exit cleanly\n"; - result = false; - } - } else if (sc.type == sc_ignore) { - result = true; - } else if (sc.type == sc_signal) { - if (cr.signaled() && sc.value != INT_MIN) { - const int status = cr.termsig(); - - if (!sc.negated && sc.value != status) { - std::cerr << "Fail: incorrect signal received: " - << status << ", expected: " << sc.value << "\n"; - result = false; - } else if (sc.negated && sc.value == status) { - std::cerr << "Fail: incorrect signal received: " - << status << ", expected: " - << "anything else\n"; - result = false; - } else - result = true; - } else if (cr.signaled() && sc.value == INT_MIN) { - result = true; - } else { - std::cerr << "Fail: program did not receive a signal\n"; - result = false; - } - } else { - UNREACHABLE; - result = false; - } - - if (result == false) { - std::cerr << "stdout:\n"; - cat_file(atf::fs::path(cr.stdout_path())); - std::cerr << "\n"; - - std::cerr << "stderr:\n"; - cat_file(atf::fs::path(cr.stderr_path())); - std::cerr << "\n"; - } - - return result; -} - -static -bool -run_status_checks(const std::vector< status_check >& checks, - const atf::check::check_result& result) -{ - bool ok = false; - - for (std::vector< status_check >::const_iterator iter = checks.begin(); - !ok && iter != checks.end(); iter++) { - ok |= run_status_check(*iter, result); - } - - return ok; -} - -static -bool -run_output_check(const output_check oc, const atf::fs::path& path, - const std::string& stdxxx) -{ - bool result; - - if (oc.type == oc_empty) { - const bool is_empty = file_empty(path); - if (!oc.negated && !is_empty) { - std::cerr << "Fail: " << stdxxx << " not empty\n"; - print_diff(atf::fs::path("/dev/null"), path); - result = false; - } else if (oc.negated && is_empty) { - std::cerr << "Fail: " << stdxxx << " is empty\n"; - result = false; - } else - result = true; - } else if (oc.type == oc_file) { - const bool equals = compare_files(path, atf::fs::path(oc.value)); - if (!oc.negated && !equals) { - std::cerr << "Fail: " << stdxxx << " does not match golden " - "output\n"; - print_diff(atf::fs::path(oc.value), path); - result = false; - } else if (oc.negated && equals) { - std::cerr << "Fail: " << stdxxx << " matches golden output\n"; - cat_file(atf::fs::path(oc.value)); - result = false; - } else - result = true; - } else if (oc.type == oc_ignore) { - result = true; - } else if (oc.type == oc_inline) { - temp_file temp("atf-check.XXXXXX"); - temp.write(decode(oc.value)); - temp.close(); - - const bool equals = compare_files(path, temp.get_path()); - if (!oc.negated && !equals) { - std::cerr << "Fail: " << stdxxx << " does not match expected " - "value\n"; - print_diff(temp.get_path(), path); - result = false; - } else if (oc.negated && equals) { - std::cerr << "Fail: " << stdxxx << " matches expected value\n"; - cat_file(temp.get_path()); - result = false; - } else - result = true; - } else if (oc.type == oc_match) { - const bool matches = grep_file(path, oc.value); - if (!oc.negated && !matches) { - std::cerr << "Fail: regexp " + oc.value + " not in " << stdxxx - << "\n"; - cat_file(path); - result = false; - } else if (oc.negated && matches) { - std::cerr << "Fail: regexp " + oc.value + " is in " << stdxxx - << "\n"; - cat_file(path); - result = false; - } else - result = true; - } else if (oc.type == oc_save) { - INV(!oc.negated); - std::ifstream ifs(path.c_str(), std::fstream::binary); - ifs >> std::noskipws; - std::istream_iterator< char > begin(ifs), end; - - std::ofstream ofs(oc.value.c_str(), std::fstream::binary - | std::fstream::trunc); - std::ostream_iterator obegin(ofs); - - std::copy(begin, end, obegin); - result = true; - } else { - UNREACHABLE; - result = false; - } - - return result; -} - -static -bool -run_output_checks(const std::vector< output_check >& checks, - const atf::fs::path& path, const std::string& stdxxx) -{ - bool ok = true; - - for (std::vector< output_check >::const_iterator iter = checks.begin(); - iter != checks.end(); iter++) { - ok &= run_output_check(*iter, path, stdxxx); - } - - return ok; -} - -// ------------------------------------------------------------------------ -// The "atf_check" application. -// ------------------------------------------------------------------------ - -namespace { - -class atf_check : public atf::application::app { - bool m_xflag; - - std::vector< status_check > m_status_checks; - std::vector< output_check > m_stdout_checks; - std::vector< output_check > m_stderr_checks; - - static const char* m_description; - - bool run_output_checks(const atf::check::check_result&, - const std::string&) const; - - std::string specific_args(void) const; - options_set specific_options(void) const; - void process_option(int, const char*); - void process_option_s(const std::string&); - -public: - atf_check(void); - int main(void); -}; - -} // anonymous namespace - -const char* atf_check::m_description = - "atf-check executes given command and analyzes its results."; - -atf_check::atf_check(void) : - app(m_description, "atf-check(1)"), - m_xflag(false) -{ -} - -bool -atf_check::run_output_checks(const atf::check::check_result& r, - const std::string& stdxxx) - const -{ - if (stdxxx == "stdout") { - return ::run_output_checks(m_stdout_checks, - atf::fs::path(r.stdout_path()), "stdout"); - } else if (stdxxx == "stderr") { - return ::run_output_checks(m_stderr_checks, - atf::fs::path(r.stderr_path()), "stderr"); - } else { - UNREACHABLE; - return false; - } -} - -std::string -atf_check::specific_args(void) - const -{ - return ""; -} - -atf_check::options_set -atf_check::specific_options(void) - const -{ - using atf::application::option; - options_set opts; - - opts.insert(option('s', "qual:value", "Handle status. Qualifier " - "must be one of: ignore exit: signal:")); - opts.insert(option('o', "action:arg", "Handle stdout. Action must be " - "one of: empty ignore file: inline: match:regexp " - "save:")); - opts.insert(option('e', "action:arg", "Handle stderr. Action must be " - "one of: empty ignore file: inline: match:regexp " - "save:")); - opts.insert(option('x', "", "Execute command as a shell command")); - - return opts; -} - -void -atf_check::process_option(int ch, const char* arg) -{ - switch (ch) { - case 's': - m_status_checks.push_back(parse_status_check_arg(arg)); - break; - - case 'o': - m_stdout_checks.push_back(parse_output_check_arg(arg)); - break; - - case 'e': - m_stderr_checks.push_back(parse_output_check_arg(arg)); - break; - - case 'x': - m_xflag = true; - break; - - default: - UNREACHABLE; - } -} - -int -atf_check::main(void) -{ - if (m_argc < 1) - throw atf::application::usage_error("No command specified"); - - int status = EXIT_FAILURE; - - std::auto_ptr< atf::check::check_result > r = - m_xflag ? execute_with_shell(m_argv) : execute(m_argv); - - if (m_status_checks.empty()) - m_status_checks.push_back(status_check(sc_exit, false, EXIT_SUCCESS)); - else if (m_status_checks.size() > 1) { - // TODO: Remove this restriction. - throw atf::application::usage_error("Cannot specify -s more than once"); - } - - if (m_stdout_checks.empty()) - m_stdout_checks.push_back(output_check(oc_empty, false, "")); - if (m_stderr_checks.empty()) - m_stderr_checks.push_back(output_check(oc_empty, false, "")); - - if ((run_status_checks(m_status_checks, *r) == false) || - (run_output_checks(*r, "stderr") == false) || - (run_output_checks(*r, "stdout") == false)) - status = EXIT_FAILURE; - else - status = EXIT_SUCCESS; - - return status; -} - -int -main(int argc, char* const* argv) -{ - return atf_check().run(argc, argv); -} diff --git a/unit/atf-src/atf-sh/atf-check_test.sh b/unit/atf-src/atf-sh/atf-check_test.sh deleted file mode 100644 index 9542dfb0bd..0000000000 --- a/unit/atf-src/atf-sh/atf-check_test.sh +++ /dev/null @@ -1,441 +0,0 @@ -# Copyright (c) 2008 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# The Atf_Check and Atf-Shell variables are set by atf-sh. - -h_pass() -{ - cmd="$1"; shift - - echo "Running [atf-check $*] against [${cmd}]" - - cat >script.sh <tmp; then - cat tmp - atf_fail "atf-check failed" - fi -} - -h_fail() -{ - cmd="$1"; shift - - echo "Running [atf-check $*] against [${cmd}]" - - cat >script.sh <tmp; then - cat tmp - atf_fail "atf-check succeeded but should fail" - fi -} - -atf_test_case sflag_eq_ne -sflag_eq_ne_head() -{ - atf_set "descr" "Tests for the -s option using the 'eq' and 'ne' qualifiers" -} -sflag_eq_ne_body() -{ - h_pass "true" -s eq:0 - h_pass "false" -s ne:0 - h_pass "exit 255" -s eq:255 - h_pass "exit 0" -s ne:255 - - h_fail "exit 256" -s eq:256 - h_fail "exit -1" -s eq:-1 - h_fail "true" -s ne:256 - h_fail "true" -s ne:-1 -} - -atf_test_case sflag_exit -sflag_exit_head() -{ - atf_set "descr" "Tests for the -s option using the 'exit' qualifier" -} -sflag_exit_body() -{ - h_pass 'true' -s exit:0 - h_pass 'false' -s not-exit:0 - h_pass 'exit 255' -s exit:255 - h_pass 'exit 0' -s not-exit:255 - - h_fail 'exit 256' -s exit:256 - h_fail 'exit -1' -s exit:-1 - h_fail 'true' -s not-exit:256 - h_fail 'true' -s not-exit:-1 - - h_pass 'true' -s exit - h_pass 'false' -s exit - if ${Atf_Check} -s exit -x 'kill $$'; then - atf_fail "Signal detected as clean exit" - fi -} - -atf_test_case sflag_ignore -sflag_ignore_head() -{ - atf_set "descr" "Tests for the -s option using the 'ignore' qualifier" -} -sflag_ignore_body() -{ - h_pass 'true' -s ignore - h_pass 'false' -s ignore - if ${Atf_Check} -s ignored -x 'kill $$'; then - atf_fail "Signal not ignored" - fi -} - -atf_test_case sflag_signal -sflag_signal_head() -{ - atf_set "descr" "Tests for the -s option using the 'signal' qualifier" -} -sflag_signal_body() -{ - ${Atf_Check} -s signal:hup -x 'kill -1 $$' || atf_fail "Signal not detected" - ${Atf_Check} -s signal:sighup -x 'kill -1 $$' || atf_fail "Signal not" \ - "detected" - ${Atf_Check} -s signal:1 -x 'kill -1 $$' || atf_fail "Signal not detected" - ${Atf_Check} -s signal -x 'kill -1 $$' || atf_fail "Signal not detected" - - ${Atf_Check} -s not-signal:kill -x 'kill -9 $$' && \ - atf_fail "not-signal:kill matched kill -9" - ${Atf_Check} -s not-signal:kill -x 'kill -1 $$' || \ - atf_fail "not-signal:kill did not match kill -1" - - h_fail 'true' -s signal - h_fail 'false' -s signal -} - -atf_test_case xflag -xflag_head() -{ - atf_set "descr" "Tests for the -x option" -} -xflag_body() -{ - ${Atf_Check} -s ne:0 -o ignore -e ignore "echo foo 2>&1" || \ - atf_fail "Shell command succeeded without -x" - - ${Atf_Check} -e inline:"foo\n" -x "echo foo 1>&2" || \ - atf_fail "Cannot run command with -x" - - ${Atf_Check} -o inline:"foo\n" -x echo foo || \ - atf_fail "Using -x does not respect all provided arguments" -} - -atf_test_case oflag_empty -oflag_empty_head() -{ - atf_set "descr" "Tests for the -o option using the 'empty' argument" -} -oflag_empty_body() -{ - h_pass "true" -o empty - h_fail "echo foo" -o empty -} - -atf_test_case oflag_ignore -oflag_ignore_head() -{ - atf_set "descr" "Tests for the -o option using the 'ignore' argument" -} -oflag_ignore_body() -{ - h_pass "true" -o ignore - h_pass "echo foo" -o ignore -} - -atf_test_case oflag_file -oflag_file_head() -{ - atf_set "descr" "Tests for the -o option using the 'file:' argument" -} -oflag_file_body() -{ - touch empty - h_pass "true" -o file:empty - - echo foo >text - h_pass "echo foo" -o file:text - h_fail "echo bar" -o file:text - - dd if=/dev/urandom of=bin bs=1k count=10 - h_pass "cat bin" -o file:bin -} - -atf_test_case oflag_inline -oflag_inline_head() -{ - atf_set "descr" "Tests for the -o option using the 'inline:' argument" -} -oflag_inline_body() -{ - h_pass "true" -o inline: - h_pass "echo foo bar" -o inline:"foo bar\n" - h_pass "printf 'foo bar'" -o inline:"foo bar" - h_pass "printf '\t\n\t\n'" -o inline:"\t\n\t\n" - h_pass "printf '\a\b\033\f\n\r\t\v'" -o inline:"\a\b\e\f\n\r\t\v" - h_pass "printf '\011\022\033\012'" -o inline:"\011\022\033\012" - - h_fail "echo foo bar" -o inline:"foo bar" - h_fail "echo -n foo bar" -o inline:"foo bar\n" -} - -atf_test_case oflag_match -oflag_match_head() -{ - atf_set "descr" "Tests for the -o option using the 'match:' argument" -} -oflag_match_body() -{ - h_pass "printf no-newline" -o "match:^no-newline" - h_pass "echo line1; echo foo bar" -o "match:^foo" - h_pass "echo foo bar" -o "match:o b" - h_fail "echo foo bar" -o "match:baz" - h_fail "echo foo bar" -o "match:^bar" -} - -atf_test_case oflag_save -oflag_save_head() -{ - atf_set "descr" "Tests for the -o option using the 'save:' argument" -} -oflag_save_body() -{ - h_pass "echo foo" -o save:out - echo foo >exp - cmp -s out exp || atf_fail "Saved output does not match expected results" -} - -atf_test_case oflag_multiple -oflag_multiple_head() -{ - atf_set "descr" "Tests for multiple occurrences of the -o option" -} -oflag_multiple_body() -{ - h_pass "echo foo bar" -o match:foo -o match:bar - h_pass "echo foo; echo bar" -o match:foo -o match:bar - h_fail "echo foo baz" -o match:bar -o match:foo - h_fail "echo foo; echo baz" -o match:bar -o match:foo -} - -atf_test_case oflag_negated -oflag_negated_head() -{ - atf_set "descr" "Tests for negated occurrences of the -o option" -} -oflag_negated_body() -{ - h_fail "echo foo" -o empty - h_pass "echo foo" -o not-empty - - h_pass "echo foo bar" -o match:foo - h_fail "echo foo bar" -o not-match:foo -} - -atf_test_case eflag_empty -eflag_empty_head() -{ - atf_set "descr" "Tests for the -e option using the 'empty' argument" -} -eflag_empty_body() -{ - h_pass "true 1>&2" -e empty - h_fail "echo foo 1>&2" -e empty -} - -atf_test_case eflag_ignore -eflag_ignore_head() -{ - atf_set "descr" "Tests for the -e option using the 'ignore' argument" -} -eflag_ignore_body() -{ - h_pass "true 1>&2" -e ignore - h_pass "echo foo 1>&2" -e ignore -} - -atf_test_case eflag_file -eflag_file_head() -{ - atf_set "descr" "Tests for the -e option using the 'file:' argument" -} -eflag_file_body() -{ - touch empty - h_pass "true 1>&2" -e file:empty - - echo foo >text - h_pass "echo foo 1>&2" -e file:text - h_fail "echo bar 1>&2" -e file:text - - dd if=/dev/urandom of=bin bs=1k count=10 - h_pass "cat bin 1>&2" -e file:bin -} - -atf_test_case eflag_inline -eflag_inline_head() -{ - atf_set "descr" "Tests for the -e option using the 'inline:' argument" -} -eflag_inline_body() -{ - h_pass "true 1>&2" -e inline: - h_pass "echo foo bar 1>&2" -e inline:"foo bar\n" - h_pass "printf 'foo bar' 1>&2" -e inline:"foo bar" - h_pass "printf '\t\n\t\n' 1>&2" -e inline:"\t\n\t\n" - h_pass "printf '\a\b\033\f\n\r\t\v' 1>&2" -e inline:"\a\b\e\f\n\r\t\v" - h_pass "printf '\011\022\033\012' 1>&2" -e inline:"\011\022\033\012" - - h_fail "echo foo bar 1>&2" -e inline:"foo bar" - h_fail "echo -n foo bar 1>&2" -e inline:"foo bar\n" -} - -atf_test_case eflag_save -eflag_save_head() -{ - atf_set "descr" "Tests for the -e option using the 'save:' argument" -} -eflag_save_body() -{ - h_pass "echo foo 1>&2" -e save:out - echo foo >exp - cmp -s out exp || atf_fail "Saved output does not match expected results" -} - -atf_test_case eflag_match -eflag_match_head() -{ - atf_set "descr" "Tests for the -e option using the 'match:' argument" -} -eflag_match_body() -{ - h_pass "printf no-newline 1>&2" -e "match:^no-newline" - h_pass "echo line1 1>&2; echo foo bar 1>&2" -e "match:^foo" - h_pass "echo foo bar 1>&2" -e "match:o b" - h_fail "echo foo bar 1>&2" -e "match:baz" - h_fail "echo foo bar 1>&2" -e "match:^bar" -} - -atf_test_case eflag_multiple -eflag_multiple_head() -{ - atf_set "descr" "Tests for multiple occurrences of the -e option" -} -eflag_multiple_body() -{ - h_pass "echo foo bar 1>&2" -e match:foo -e match:bar - h_pass "echo foo 1>&2; echo bar 1>&2" -e match:foo -e match:bar - h_fail "echo foo baz 1>&2" -e match:bar -e match:foo - h_fail "echo foo 1>&2; echo baz 1>&2" -e match:bar -e match:foo -} - -atf_test_case eflag_negated -eflag_negated_head() -{ - atf_set "descr" "Tests for negated occurrences of the -e option" -} -eflag_negated_body() -{ - h_fail "echo foo 1>&2" -e empty - h_pass "echo foo 1>&2" -e not-empty - - h_pass "echo foo bar 1>&2" -e match:foo - h_fail "echo foo bar 1>&2" -e not-match:foo -} - -atf_test_case stdin -stdin_head() -{ - atf_set "descr" "Tests that stdin is preserved" -} -stdin_body() -{ - echo "hello" | ${Atf_Check} -o match:"hello" cat || \ - atf_fail "atf-check does not seem to respect stdin" -} - -atf_test_case invalid_umask -invalid_umask_head() -{ - atf_set "descr" "Tests for a correct error condition if the umask is" \ - "too restrictive" -} -invalid_umask_body() -{ - umask 0222 - ${Atf_Check} false 2>stderr && \ - atf_fail "atf-check returned 0 but it should have failed" - cat stderr - grep 'temporary.*current umask.*0222' stderr >/dev/null || \ - atf_fail "atf-check did not report an error related to the" \ - "current umask" -} - -atf_init_test_cases() -{ - atf_add_test_case sflag_eq_ne - atf_add_test_case sflag_exit - atf_add_test_case sflag_ignore - atf_add_test_case sflag_signal - - atf_add_test_case xflag - - atf_add_test_case oflag_empty - atf_add_test_case oflag_ignore - atf_add_test_case oflag_file - atf_add_test_case oflag_inline - atf_add_test_case oflag_match - atf_add_test_case oflag_save - atf_add_test_case oflag_multiple - atf_add_test_case oflag_negated - - atf_add_test_case eflag_empty - atf_add_test_case eflag_ignore - atf_add_test_case eflag_file - atf_add_test_case eflag_inline - atf_add_test_case eflag_match - atf_add_test_case eflag_save - atf_add_test_case eflag_multiple - atf_add_test_case eflag_negated - - atf_add_test_case stdin - - atf_add_test_case invalid_umask -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/atf-sh.1 b/unit/atf-src/atf-sh/atf-sh.1 deleted file mode 100644 index e7eaff8b67..0000000000 --- a/unit/atf-src/atf-sh/atf-sh.1 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Copyright (c) 2010 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd September 27, 2014 -.Dt ATF-SH 1 -.Os -.Sh NAME -.Nm atf-sh -.Op Fl s Ar shell -.Nd interpreter for shell-based test programs -.Sh SYNOPSIS -.Nm -.Ar script -.Sh DESCRIPTION -.Nm -is an interpreter that runs the test program given in -.Ar script -after loading the -.Xr atf-sh 3 -library. -.Pp -.Nm -is not a real interpreter though: it is just a wrapper around -the system-wide shell defined by -.Va ATF_SHELL . -.Nm -executes the interpreter, loads the -.Xr atf-sh 3 -library and then runs the script. -You must consider -.Nm atf-sh -to be a POSIX shell by default and thus should not use any non-standard -extensions. -.Pp -The following options are available: -.Bl -tag -width XsXshellXXX -.It Fl s Ar shell -Specifies the shell to use instead of the value provided by -.Va ATF_SHELL . -.El -.Sh ENVIRONMENT -.Bl -tag -width ATFXLIBEXECDIRXX -compact -.It Va ATF_LIBEXECDIR -Overrides the builtin directory where -.Nm -is located. -Should not be overridden other than for testing purposes. -.It Va ATF_PKGDATADIR -Overrides the builtin directory where -.Pa libatf-sh.subr -is located. -Should not be overridden other than for testing purposes. -.It Va ATF_SHELL -Path to the system shell to be used in the generated scripts. -Scripts must not rely on this variable being set to select a specific -interpreter. -.El -.Sh EXAMPLES -Scripts using -.Xr atf-sh 3 -should start with: -.Bd -literal -offset indent -#! /usr/bin/env atf-sh -.Ed -.Pp -Alternatively, if you want to explicitly choose a shell interpreter, you cannot -rely on -.Xr env 1 -to find -.Nm . -Instead, you have to hardcode the path to -.Nm -in the script and then use the -.Fl s -option afterwards as a -.Em single parameter : -.Bd -literal -offset indent -#! /path/to/bin/atf-sh -s/bin/bash -.Ed -.Sh SEE ALSO -.Xr atf-sh 3 diff --git a/unit/atf-src/atf-sh/atf-sh.3 b/unit/atf-src/atf-sh/atf-sh.3 deleted file mode 100644 index be56539d04..0000000000 --- a/unit/atf-src/atf-sh/atf-sh.3 +++ /dev/null @@ -1,372 +0,0 @@ -.\" Copyright (c) 2008 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd October 13, 2014 -.Dt ATF-SH 3 -.Os -.Sh NAME -.Nm atf_add_test_case , -.Nm atf_check , -.Nm atf_check_equal , -.Nm atf_config_get , -.Nm atf_config_has , -.Nm atf_expect_death , -.Nm atf_expect_exit , -.Nm atf_expect_fail , -.Nm atf_expect_pass , -.Nm atf_expect_signal , -.Nm atf_expect_timeout , -.Nm atf_fail , -.Nm atf_get , -.Nm atf_get_srcdir , -.Nm atf_pass , -.Nm atf_require_prog , -.Nm atf_set , -.Nm atf_skip , -.Nm atf_test_case -.Nd POSIX shell API to write ATF-based test programs -.Sh SYNOPSIS -.Nm atf_add_test_case -.Qq name -.Nm atf_check -.Qq command -.Nm atf_check_equal -.Qq expected_expression -.Qq actual_expression -.Nm atf_config_get -.Qq var_name -.Nm atf_config_has -.Qq var_name -.Nm atf_expect_death -.Qq reason -.Qq ... -.Nm atf_expect_exit -.Qq exitcode -.Qq reason -.Qq ... -.Nm atf_expect_fail -.Qq reason -.Qq ... -.Nm atf_expect_pass -.Qq -.Nm atf_expect_signal -.Qq signo -.Qq reason -.Qq ... -.Nm atf_expect_timeout -.Qq reason -.Qq ... -.Nm atf_fail -.Qq reason -.Nm atf_get -.Qq var_name -.Nm atf_get_srcdir -.Nm atf_pass -.Nm atf_require_prog -.Qq prog_name -.Nm atf_set -.Qq var_name -.Qq value -.Nm atf_skip -.Qq reason -.Nm atf_test_case -.Qq name -.Qq cleanup -.Sh DESCRIPTION -ATF -provides a simple but powerful interface to easily write test programs in -the POSIX shell language. -These are extremely helpful given that they are trivial to write due to the -language simplicity and the great deal of available external tools, so they -are often ideal to test other applications at the user level. -.Pp -Test programs written using this library must be run using the -.Xr atf-sh 1 -interpreter by putting the following on their very first line: -.Bd -literal -offset indent -#! /usr/bin/env atf-sh -.Ed -.Pp -Shell-based test programs always follow this template: -.Bd -literal -offset indent -atf_test_case tc1 -tc1_head() { - ... first test case's header ... -} -tc1_body() { - ... first test case's body ... -} - -atf_test_case tc2 cleanup -tc2_head() { - ... second test case's header ... -} -tc2_body() { - ... second test case's body ... -} -tc2_cleanup() { - ... second test case's cleanup ... -} - -.Ns ... additional test cases ... - -atf_init_test_cases() { - atf_add_test_case tc1 - atf_add_test_case tc2 - ... add additional test cases ... -} -.Ed -.Ss Definition of test cases -Test cases have an identifier and are composed of three different parts: -the header, the body and an optional cleanup routine, all of which are -described in -.Xr atf-test-case 4 . -To define test cases, one can use the -.Nm atf_test_case -function, which takes a first parameter specifiying the test case's -name and instructs the library to set things up to accept it as a valid -test case. -The second parameter is optional and, if provided, must be -.Sq cleanup ; -providing this parameter allows defining a cleanup routine for the test -case. -It is important to note that this function -.Em does not -set the test case up for execution when the program is run. -In order to do so, a later registration is needed through the -.Nm atf_add_test_case -function detailed in -.Sx Program initialization . -.Pp -Later on, one must define the three parts of the body by providing two -or three functions (remember that the cleanup routine is optional). -These functions are named after the test case's identifier, and are -.Nm \*(Ltid\*(Gt_head , -.Nm \*(Ltid\*(Gt_body -and -.Nm \*(Ltid\*(Gt_cleanup . -None of these take parameters when executed. -.Ss Program initialization -The test program must define an -.Nm atf_init_test_cases -function, which is in charge of registering the test cases that will be -executed at run time by using the -.Nm atf_add_test_case -function, which takes the name of a test case as its single parameter. -This main function should not do anything else, except maybe sourcing -auxiliary source files that define extra variables and functions. -.Ss Configuration variables -The test case has read-only access to the current configuration variables -through the -.Nm atf_config_has -and -.Nm atf_config_get -methods. -The former takes a single parameter specifying a variable name and returns -a boolean indicating whether the variable is defined or not. -The latter can take one or two parameters. -If it takes only one, it specifies the variable from which to get the -value, and this variable must be defined. -If it takes two, the second one specifies a default value to be returned -if the variable is not available. -.Ss Access to the source directory -It is possible to get the path to the test case's source directory from -anywhere in the test program by using the -.Nm atf_get_srcdir -function. -It is interesting to note that this can be used inside -.Nm atf_init_test_cases -to silently include additional helper files from the source directory. -.Ss Requiring programs -Aside from the -.Va require.progs -meta-data variable available in the header only, one can also check for -additional programs in the test case's body by using the -.Nm atf_require_prog -function, which takes the base name or full path of a single binary. -Relative paths are forbidden. -If it is not found, the test case will be automatically skipped. -.Ss Test case finalization -The test case finalizes either when the body reaches its end, at which -point the test is assumed to have -.Em passed , -or at any explicit call to -.Nm atf_pass , -.Nm atf_fail -or -.Nm atf_skip . -These three functions terminate the execution of the test case immediately. -The cleanup routine will be processed afterwards in a completely automated -way, regardless of the test case's termination reason. -.Pp -.Nm atf_pass -does not take any parameters. -.Nm atf_fail -and -.Nm atf_skip -take a single string parameter that describes why the test case failed or -was skipped, respectively. -It is very important to provide a clear error message in both cases so that -the user can quickly know why the test did not pass. -.Ss Expectations -Everything explained in the previous section changes when the test case -expectations are redefined by the programmer. -.Pp -Each test case has an internal state called -.Sq expect -that describes what the test case expectations are at any point in time. -The value of this property can change during execution by any of: -.Bl -tag -width indent -.It Nm atf_expect_death Qo reason Qc Qo ... Qc -Expects the test case to exit prematurely regardless of the nature of the -exit. -.It Nm atf_expect_exit Qo exitcode Qc Qo reason Qc Qo ... Qc -Expects the test case to exit cleanly. -If -.Va exitcode -is not -.Sq -1 , -the runtime engine will validate that the exit code of the test case -matches the one provided in this call. -Otherwise, the exact value will be ignored. -.It Nm atf_expect_fail Qo reason Qc -Any failure raised in this mode is recorded, but such failures do not report -the test case as failed; instead, the test case finalizes cleanly and is -reported as -.Sq expected failure ; -this report includes the provided -.Fa reason -as part of it. -If no error is raised while running in this mode, then the test case is -reported as -.Sq failed . -.Pp -This mode is useful to reproduce actual known bugs in tests. -Whenever the developer fixes the bug later on, the test case will start -reporting a failure, signaling the developer that the test case must be -adjusted to the new conditions. -In this situation, it is useful, for example, to set -.Fa reason -as the bug number for tracking purposes. -.It Nm atf_expect_pass -This is the normal mode of execution. -In this mode, any failure is reported as such to the user and the test case -is marked as -.Sq failed . -.It Nm atf_expect_signal Qo signo Qc Qo reason Qc Qo ... Qc -Expects the test case to terminate due to the reception of a signal. -If -.Va signo -is not -.Sq -1 , -the runtime engine will validate that the signal that terminated the test -case matches the one provided in this call. -Otherwise, the exact value will be ignored. -.It Nm atf_expect_timeout Qo reason Qc Qo ... Qc -Expects the test case to execute for longer than its timeout. -.El -.Ss Helper functions for common checks -.Bl -tag -width indent -.It Nm atf_check Qo [options] Qc Qo command Qc Qo [args] Qc -Executes a command, performs checks on its exit code and its output, and -fails the test case if any of the checks is not successful. -This function is particularly useful in integration tests that verify the -correct functioning of a binary. -.Pp -Internally, this function is just a wrapper over the -.Xr atf-check 1 -tool (whose manual page provides all details on the calling syntax). -You should always use the -.Nm atf_check -function instead of the -.Xr atf-check 1 -tool in your scripts; the latter is not even in the path. -.It Nm atf_check_equal Qo expected_expression Qc Qo actual_expression Qc -This function takes two expressions, evaluates them and, if their -results differ, aborts the test case with an appropriate failure message. -The common style is to put the expected value in the first parameter and the -actual value in the second parameter. -.El -.Sh EXAMPLES -The following shows a complete test program with a single test case that -validates the addition operator: -.Bd -literal -offset indent -atf_test_case addition -addition_head() { - atf_set "descr" "Sample tests for the addition operator" -} -addition_body() { - atf_check_equal 0 $((0 + 0)) - atf_check_equal 1 $((0 + 1)) - atf_check_equal 1 $((1 + 0)) - - atf_check_equal 2 $((1 + 1)) - - atf_check_equal 300 $((100 + 200)) -} - -atf_init_test_cases() { - atf_add_test_case addition -} -.Ed -.Pp -This other example shows how to include a file with extra helper functions -in the test program: -.Bd -literal -offset indent -.Ns ... definition of test cases ... - -atf_init_test_cases() { - . $(atf_get_srcdir)/helper_functions.sh - - atf_add_test_case foo1 - atf_add_test_case foo2 -} -.Ed -.Pp -This example demonstrates the use of the very useful -.Nm atf_check -function: -.Bd -literal -offset indent -# Check for silent output -atf_check -s exit:0 -o empty -e empty 'true' - -# Check for silent output and failure -atf_check -s exit:1 -o empty -e empty 'false' - -# Check for known stdout and silent stderr -echo foo >expout -atf_check -s exit:0 -o file:expout -e empty 'echo foo' - -# Generate a file for later inspection -atf_check -s exit:0 -o save:stdout -e empty 'ls' -grep foo ls || atf_fail "foo file not found in listing" - -# Or just do the match along the way -atf_check -s exit:0 -o match:"^foo$" -e empty 'ls' -.Ed -.Sh SEE ALSO -.Xr atf-check 1 , -.Xr atf-sh 1 , -.Xr atf-test-program 1 , -.Xr atf-test-case 4 diff --git a/unit/atf-src/atf-sh/atf-sh.cpp b/unit/atf-src/atf-sh/atf-sh.cpp deleted file mode 100644 index 997557322e..0000000000 --- a/unit/atf-src/atf-sh/atf-sh.cpp +++ /dev/null @@ -1,185 +0,0 @@ -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -extern "C" { -#include -} - -#include -#include -#include -#include - -#include "atf-c++/detail/application.hpp" -#include "atf-c++/detail/env.hpp" -#include "atf-c++/detail/fs.hpp" -#include "atf-c++/detail/sanity.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -namespace { - -static -std::string -fix_plain_name(const char *filename) -{ - const atf::fs::path filepath(filename); - if (filepath.branch_path().str() == ".") - return std::string("./") + filename; - else - return std::string(filename); -} - -static -std::string* -construct_script(const char* filename) -{ - const std::string libexecdir = atf::env::get( - "ATF_LIBEXECDIR", ATF_LIBEXECDIR); - const std::string pkgdatadir = atf::env::get( - "ATF_PKGDATADIR", ATF_PKGDATADIR); - const std::string shell = atf::env::get("ATF_SHELL", ATF_SHELL); - - std::string* command = new std::string(); - command->reserve(512); - (*command) += ("Atf_Check='" + libexecdir + "/atf-check' ; " + - "Atf_Shell='" + shell + "' ; " + - ". " + pkgdatadir + "/libatf-sh.subr ; " + - ". " + fix_plain_name(filename) + " ; " + - "main \"${@}\""); - return command; -} - -static -const char** -construct_argv(const std::string& shell, const int interpreter_argc, - const char* const* interpreter_argv) -{ - PRE(interpreter_argc >= 1); - PRE(interpreter_argv[0] != NULL); - - const std::string* script = construct_script(interpreter_argv[0]); - - const int count = 4 + (interpreter_argc - 1) + 1; - const char** argv = new const char*[count]; - argv[0] = shell.c_str(); - argv[1] = "-c"; - argv[2] = script->c_str(); - argv[3] = interpreter_argv[0]; - - for (int i = 1; i < interpreter_argc; i++) - argv[4 + i - 1] = interpreter_argv[i]; - - argv[count - 1] = NULL; - - return argv; -} - -} // anonymous namespace - -// ------------------------------------------------------------------------ -// The "atf_sh" class. -// ------------------------------------------------------------------------ - -class atf_sh : public atf::application::app { - static const char* m_description; - - atf::fs::path m_shell; - - options_set specific_options(void) const; - void process_option(int, const char*); - -public: - atf_sh(void); - - int main(void); -}; - -const char* atf_sh::m_description = - "atf-sh is a shell interpreter that extends the functionality of the " - "system sh(1) with the atf-sh library."; - -atf_sh::atf_sh(void) : - app(m_description, "atf-sh(1)"), - m_shell(atf::fs::path(atf::env::get("ATF_SHELL", ATF_SHELL))) -{ -} - -atf_sh::options_set -atf_sh::specific_options(void) - const -{ - using atf::application::option; - options_set opts; - - INV(m_shell == atf::fs::path(atf::env::get("ATF_SHELL", ATF_SHELL))); - opts.insert(option('s', "shell", "Path to the shell interpreter to use; " - "default: " + m_shell.str())); - - return opts; -} - -void -atf_sh::process_option(int ch, const char* arg) -{ - switch (ch) { - case 's': - m_shell = atf::fs::path(arg); - break; - - default: - UNREACHABLE; - } -} - -int -atf_sh::main(void) -{ - if (m_argc < 1) - throw atf::application::usage_error("No test program provided"); - - const atf::fs::path script(m_argv[0]); - if (!atf::fs::exists(script)) - throw std::runtime_error("The test program '" + script.str() + "' " - "does not exist"); - - const char** argv = construct_argv(m_shell.str(), m_argc, m_argv); - // Don't bother keeping track of the memory allocated by construct_argv: - // we are going to exec or die immediately. - - const int ret = execv(m_shell.c_str(), const_cast< char** >(argv)); - INV(ret == -1); - std::cerr << "Failed to execute " << m_shell.str() << ": " - << std::strerror(errno) << "\n"; - return EXIT_FAILURE; -} - -int -main(int argc, char* const* argv) -{ - return atf_sh().run(argc, argv); -} diff --git a/unit/atf-src/atf-sh/atf-sh.m4 b/unit/atf-src/atf-sh/atf-sh.m4 deleted file mode 100644 index 754f50264e..0000000000 --- a/unit/atf-src/atf-sh/atf-sh.m4 +++ /dev/null @@ -1,49 +0,0 @@ -dnl Copyright 2011 Google Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions are -dnl met: -dnl -dnl * Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl * Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl * Neither the name of Google Inc. nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl ATF_CHECK_SH([version-spec]) -dnl -dnl Checks if atf-sh is present. If version-spec is provided, ensures that -dnl the installed version of atf-sh matches the required version. This -dnl argument must be something like '>= 0.14' and accepts any version -dnl specification supported by pkg-config. -dnl -dnl Defines and substitutes ATF_SH with the full path to the atf-sh interpreter. -AC_DEFUN([ATF_CHECK_SH], [ - spec="atf-sh[]m4_default_nblank([ $1], [])" - _ATF_CHECK_ARG_WITH( - [AC_MSG_CHECKING([for ${spec}]) - PKG_CHECK_EXISTS([${spec}], [found=yes], [found=no]) - if test "${found}" = yes; then - ATF_SH="$(${PKG_CONFIG} --variable=interpreter atf-sh)" - AC_SUBST([ATF_SH], [${ATF_SH}]) - found_atf_sh=yes - fi - AC_MSG_RESULT([${ATF_SH}])], - [required ${spec} not found]) -]) diff --git a/unit/atf-src/atf-sh/atf-sh.pc.in b/unit/atf-src/atf-sh/atf-sh.pc.in deleted file mode 100644 index 930dc4c3d4..0000000000 --- a/unit/atf-src/atf-sh/atf-sh.pc.in +++ /dev/null @@ -1,8 +0,0 @@ -# ATF pkg-config file - -exec_prefix=__EXEC_PREFIX__ -interpreter=${exec_prefix}/bin/atf-sh - -Name: atf-sh -Description: Automated Testing Framework (POSIX shell binding) -Version: __ATF_VERSION__ diff --git a/unit/atf-src/atf-sh/atf_check_test.sh b/unit/atf-src/atf-sh/atf_check_test.sh deleted file mode 100644 index 163e905f1a..0000000000 --- a/unit/atf-src/atf-sh/atf_check_test.sh +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# TODO: Bring in the checks in the bootstrap testsuite for atf_check. - -atf_test_case info_ok -info_ok_head() -{ - atf_set "descr" "Verifies that atf_check prints an informative" \ - "message even when the command is successful" -} -info_ok_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:0 -o save:stdout -e save:stderr -x \ - "${h} atf_check_info_ok" - grep 'Executing command.*true' stdout >/dev/null || \ - atf_fail "atf_check does not print an informative message" - - atf_check -s eq:0 -o save:stdout -e save:stderr -x \ - "${h} atf_check_info_fail" - grep 'Executing command.*false' stdout >/dev/null || \ - atf_fail "atf_check does not print an informative message" -} - -atf_test_case expout_mismatch -expout_mismatch_head() -{ - atf_set "descr" "Verifies that atf_check prints a diff of the" \ - "stdout and the expected stdout if the two do not" \ - "match" -} -expout_mismatch_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:1 -o save:stdout -e save:stderr -x \ - "${h} atf_check_expout_mismatch" - grep 'Executing command.*echo bar' stdout >/dev/null || \ - atf_fail "atf_check does not print an informative message" - grep 'stdout does not match golden output' stderr >/dev/null || \ - atf_fail "atf_check does not print the stdout header" - grep 'stderr' stderr >/dev/null && \ - atf_fail "atf_check prints the stderr header" - grep '^-foo' stderr >/dev/null || \ - atf_fail "atf_check does not print the stdout's diff" - grep '^+bar' stderr >/dev/null || \ - atf_fail "atf_check does not print the stdout's diff" -} - -atf_test_case experr_mismatch -experr_mismatch_head() -{ - atf_set "descr" "Verifies that atf_check prints a diff of the" \ - "stderr and the expected stderr if the two do not" \ - "match" -} -experr_mismatch_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:1 -o save:stdout -e save:stderr -x \ - "${h} atf_check_experr_mismatch" - grep 'Executing command.*echo bar' stdout >/dev/null || \ - atf_fail "atf_check does not print an informative message" - grep 'stdout' stderr >/dev/null && \ - atf_fail "atf_check prints the stdout header" - grep 'stderr does not match golden output' stderr >/dev/null || \ - atf_fail "atf_check does not print the stderr header" - grep '^-foo' stderr >/dev/null || \ - atf_fail "atf_check does not print the stderr's diff" - grep '^+bar' stderr >/dev/null || \ - atf_fail "atf_check does not print the stderr's diff" -} - -atf_test_case null_stdout -null_stdout_head() -{ - atf_set "descr" "Verifies that atf_check prints a the stdout it got" \ - "when it was supposed to be null" -} -null_stdout_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:1 -o save:stdout -e save:stderr -x \ - "${h} atf_check_null_stdout" - grep 'Executing command.*echo.*These.*contents' stdout >/dev/null || \ - atf_fail "atf_check does not print an informative message" - grep 'stdout not empty' stderr >/dev/null || \ - atf_fail "atf_check does not print the stdout header" - grep 'stderr' stderr >/dev/null && \ - atf_fail "atf_check prints the stderr header" - grep 'These are the contents' stderr >/dev/null || \ - atf_fail "atf_check does not print stdout's contents" -} - -atf_test_case null_stderr -null_stderr_head() -{ - atf_set "descr" "Verifies that atf_check prints a the stderr it got" \ - "when it was supposed to be null" -} -null_stderr_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:1 -o save:stdout -e save:stderr -x \ - "${h} atf_check_null_stderr" - grep 'Executing command.*echo.*These.*contents' stdout >/dev/null || \ - atf_fail "atf_check does not print an informative message" - grep 'stdout' stderr >/dev/null && \ - atf_fail "atf_check prints the stdout header" - grep 'stderr not empty' stderr >/dev/null || \ - atf_fail "atf_check does not print the stderr header" - grep 'These are the contents' stderr >/dev/null || \ - atf_fail "atf_check does not print stderr's contents" -} - -atf_test_case equal -equal_head() -{ - atf_set "descr" "Verifies that atf_check_equal works" -} -equal_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:0 -o ignore -e ignore -x "${h} atf_check_equal_ok" - - atf_check -s eq:1 -o ignore -e ignore -x \ - "${h} -r resfile atf_check_equal_fail" - atf_check -s eq:0 -o ignore -e empty grep '^failed: a != b (a != b)$' \ - resfile - - atf_check -s eq:0 -o ignore -e ignore -x "${h} atf_check_equal_eval_ok" - - atf_check -s eq:1 -o ignore -e ignore -x \ - "${h} -r resfile atf_check_equal_eval_fail" - atf_check -s eq:0 -o ignore -e empty \ - grep '^failed: \${x} != \${y} (a != b)$' resfile -} - -atf_test_case flush_stdout_on_timeout -flush_stdout_on_timeout_body() -{ - "$(atf_get_srcdir)/misc_helpers" -s "$(atf_get_srcdir)" atf_check_timeout \ - >out 2>err & - pid="${!}" - sleep 1 - kill "${pid}" - - grep 'Executing command.*true' out \ - || atf_fail 'First command not in output' - grep 'Executing command.*sleep 42' out \ - || atf_fail 'Second command not in output' -} - -atf_init_test_cases() -{ - atf_add_test_case info_ok - atf_add_test_case expout_mismatch - atf_add_test_case experr_mismatch - atf_add_test_case null_stdout - atf_add_test_case null_stderr - atf_add_test_case equal - atf_add_test_case flush_stdout_on_timeout -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/config_test.sh b/unit/atf-src/atf-sh/config_test.sh deleted file mode 100644 index 048834c1c4..0000000000 --- a/unit/atf-src/atf-sh/config_test.sh +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case has -has_head() -{ - atf_set "descr" "Verifies that atf_config_has works" -} -has_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - atf_check -s eq:0 -o match:'foo not found' -e ignore -x \ - "TEST_VARIABLE=foo ${h} config_has" - - atf_check -s eq:0 -o match:'foo found' -e ignore -x \ - "TEST_VARIABLE=foo ${h} -v foo=bar config_has" - - echo "Checking for deprecated variables" - atf_check -s eq:0 -o match:'workdir not found' -e ignore -x \ - "TEST_VARIABLE=workdir ${h} config_has" -} - -atf_test_case get -get_head() -{ - atf_set "descr" "Verifies that atf_config_get works" -} -get_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - - echo "Querying an undefined variable" - ( atf_config_get "undefined" ) >out 2>err && \ - atf_fail "Getting an undefined variable succeeded" - grep 'not find' err || \ - atf_fail "Getting an undefined variable did not report an error" - - echo "Querying an undefined variable using a default value" - v=$(atf_config_get "undefined" "the default value") - [ "${v}" = "the default value" ] || \ - atf_fail "Default value does not work" - - atf_check -s eq:0 -o match:'foo = bar' -e ignore -x \ - "TEST_VARIABLE=foo ${h} -v foo=bar config_get" - - atf_check -s eq:0 -o match:'foo = baz' -e ignore -x \ - "TEST_VARIABLE=foo ${h} -v foo=baz config_get" -} - -atf_init_test_cases() -{ - atf_add_test_case has - atf_add_test_case get -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/integration_test.sh b/unit/atf-src/atf-sh/integration_test.sh deleted file mode 100644 index 1150966f28..0000000000 --- a/unit/atf-src/atf-sh/integration_test.sh +++ /dev/null @@ -1,160 +0,0 @@ -# Copyright (c) 2010 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -: ${ATF_SH:="__ATF_SH__"} - -create_test_program() { - local output="${1}"; shift - echo "#! ${ATF_SH} ${*}" >"${output}" - cat >>"${output}" - chmod +x "${output}" -} - -atf_test_case no_args -no_args_body() -{ - cat >experr <experr <>>\${0}<<<" - while test \${#} -gt 0; do - echo ">>>\${1}<<<" - shift - done - true -} -EOF - - cat >expout <>>./tp<<< ->>> a b <<< ->>>foo<<< -EOF - atf_check -s eq:0 -o file:expout -e empty ./tp ' a b ' foo - - cat >expout <>>tp<<< ->>> hello bye <<< ->>>foo bar<<< -EOF - atf_check -s eq:0 -o file:expout -e empty "${ATF_SH}" tp \ - ' hello bye ' 'foo bar' -} - -atf_test_case custom_shell__command_line -custom_shell__command_line_body() -{ - cat >expout <custom-shell <expout <custom-shell <custom-shell <tp <_head and _body, and optionally by -# a _cleanup function. -# -atf_add_test_case() -{ - Test_Cases="${Test_Cases} ${1}" -} - -# -# atf_check cmd expcode expout experr -# -# Executes atf-check with given arguments and automatically calls -# atf_fail in case of failure. -# -atf_check() -{ - ${Atf_Check} "${@}" || \ - atf_fail "atf-check failed; see the output of the test for details" -} - -# -# atf_check_equal expected_expression actual_expression -# -# Checks that expected_expression's value matches actual_expression's -# and, if not, raises an error. Ideally expected_expression and -# actual_expression should be provided quoted (not expanded) so that -# the error message is helpful; otherwise it will only show the values, -# not the expressions themselves. -# -atf_check_equal() -{ - eval _val1=\"${1}\" - eval _val2=\"${2}\" - test "${_val1}" = "${_val2}" || \ - atf_fail "${1} != ${2} (${_val1} != ${_val2})" -} - -# -# atf_config_get varname [defvalue] -# -# Prints the value of a configuration variable. If it is not -# defined, prints the given default value. -# -atf_config_get() -{ - _varname="__tc_config_var_$(_atf_normalize ${1})" - if [ ${#} -eq 1 ]; then - eval _value=\"\${${_varname}-__unset__}\" - [ "${_value}" = __unset__ ] && \ - _atf_error 1 "Could not find configuration variable \`${1}'" - echo ${_value} - elif [ ${#} -eq 2 ]; then - eval echo \${${_varname}-${2}} - else - _atf_error 1 "Incorrect number of parameters for atf_config_get" - fi -} - -# -# atf_config_has varname -# -# Returns a boolean indicating if the given configuration variable is -# defined or not. -# -atf_config_has() -{ - _varname="__tc_config_var_$(_atf_normalize ${1})" - eval _value=\"\${${_varname}-__unset__}\" - [ "${_value}" != __unset__ ] -} - -# -# atf_expect_death reason -# -# Sets the expectations to 'death'. -# -atf_expect_death() -{ - _atf_validate_expect - - Expect=death - _atf_create_resfile "expected_death: ${*}" -} - -# -# atf_expect_timeout reason -# -# Sets the expectations to 'timeout'. -# -atf_expect_timeout() -{ - _atf_validate_expect - - Expect=timeout - _atf_create_resfile "expected_timeout: ${*}" -} - -# -# atf_expect_exit exitcode reason -# -# Sets the expectations to 'exit'. -# -atf_expect_exit() -{ - _exitcode="${1}"; shift - - _atf_validate_expect - - Expect=exit - if [ "${_exitcode}" = "-1" ]; then - _atf_create_resfile "expected_exit: ${*}" - else - _atf_create_resfile "expected_exit(${_exitcode}): ${*}" - fi -} - -# -# atf_expect_fail reason -# -# Sets the expectations to 'fail'. -# -atf_expect_fail() -{ - _atf_validate_expect - - Expect=fail - Expect_Reason="${*}" -} - -# -# atf_expect_pass -# -# Sets the expectations to 'pass'. -# -atf_expect_pass() -{ - _atf_validate_expect - - Expect=pass - Expect_Reason= -} - -# -# atf_expect_signal signo reason -# -# Sets the expectations to 'signal'. -# -atf_expect_signal() -{ - _signo="${1}"; shift - - _atf_validate_expect - - Expect=signal - if [ "${_signo}" = "-1" ]; then - _atf_create_resfile "expected_signal: ${*}" - else - _atf_create_resfile "expected_signal(${_signo}): ${*}" - fi -} - -# -# atf_expected_failure msg1 [.. msgN] -# -# Makes the test case report an expected failure with the given error -# message. Multiple words can be provided, which are concatenated with -# a single blank space. -# -atf_expected_failure() -{ - _atf_create_resfile "expected_failure: ${Expect_Reason}: ${*}" - exit 0 -} - -# -# atf_fail msg1 [.. msgN] -# -# Makes the test case fail with the given error message. Multiple -# words can be provided, in which case they are joined by a single -# blank space. -# -atf_fail() -{ - case "${Expect}" in - fail) - atf_expected_failure "${@}" - ;; - pass) - _atf_create_resfile "failed: ${*}" - exit 1 - ;; - *) - _atf_error 128 "Unreachable" - ;; - esac -} - -# -# atf_get varname -# -# Prints the value of a test case-specific variable. Given that one -# should not get the value of non-existent variables, it is fine to -# always use this function as 'val=$(atf_get var)'. -# -atf_get() -{ - eval echo \${__tc_var_${Test_Case}_$(_atf_normalize ${1})} -} - -# -# atf_get_srcdir -# -# Prints the value of the test case's source directory. -# -atf_get_srcdir() -{ - echo ${Source_Dir} -} - -# -# atf_pass -# -# Makes the test case pass. Shouldn't be used in general, as a test -# case that does not explicitly fail is assumed to pass. -# -atf_pass() -{ - case "${Expect}" in - fail) - Expect=pass - atf_fail "Test case was expecting a failure but got a pass instead" - ;; - pass) - _atf_create_resfile passed - exit 0 - ;; - *) - _atf_error 128 "Unreachable" - ;; - esac -} - -# -# atf_require_prog prog -# -# Checks that the given program name (either provided as an absolute -# path or as a plain file name) can be found. If it is not available, -# automatically skips the test case with an appropriate message. -# -# Relative paths are not allowed because the test case cannot predict -# where it will be executed from. -# -atf_require_prog() -{ - _prog= - case ${1} in - /*) - _prog="${1}" - [ -x ${_prog} ] || \ - atf_skip "The required program ${1} could not be found" - ;; - */*) - atf_fail "atf_require_prog does not accept relative path names \`${1}'" - ;; - *) - _prog=$(_atf_find_in_path "${1}") - [ -n "${_prog}" ] || \ - atf_skip "The required program ${1} could not be found" \ - "in the PATH" - ;; - esac -} - -# -# atf_set varname val1 [.. valN] -# -# Sets the test case's variable 'varname' to the specified values -# which are concatenated using a single blank space. This function -# is supposed to be called form the test case's head only. -# -atf_set() -{ - ${Parsing_Head} || \ - _atf_error 128 "atf_set called from the test case's body" - - Test_Case_Vars="${Test_Case_Vars} ${1}" - _var=$(_atf_normalize ${1}); shift - eval __tc_var_${Test_Case}_${_var}=\"\${*}\" -} - -# -# atf_skip msg1 [.. msgN] -# -# Skips the test case because of the reason provided. Multiple words -# can be given, in which case they are joined by a single blank space. -# -atf_skip() -{ - _atf_create_resfile "skipped: ${*}" - exit 0 -} - -# -# atf_test_case tc-name cleanup -# -# Defines a new test case named tc-name. The name provided here must be -# accompanied by two functions named after it: _head and -# _body. If cleanup is set to 'cleanup', then this also expects -# a _cleanup function to be defined. -# -atf_test_case() -{ - eval "${1}_head() { :; }" - eval "${1}_body() { atf_fail 'Test case not implemented'; }" - if [ "${2}" = cleanup ]; then - eval __has_cleanup_${1}=true - eval "${1}_cleanup() { :; }" - else - eval "${1}_cleanup() { - _atf_error 1 'Test case ${1} declared without a cleanup routine'; }" - fi -} - -# ------------------------------------------------------------------------ -# PRIVATE INTERFACE -# ------------------------------------------------------------------------ - -# -# _atf_config_set varname val1 [.. valN] -# -# Sets the test case's private variable 'varname' to the specified -# values which are concatenated using a single blank space. -# -_atf_config_set() -{ - _var=$(_atf_normalize ${1}); shift - eval __tc_config_var_${_var}=\"\${*}\" - Config_Vars="${Config_Vars} __tc_config_var_${_var}" -} - -# -# _atf_config_set_str varname=val -# -# Sets the test case's private variable 'varname' to the specified -# value. The parameter is of the form 'varname=val'. -# -_atf_config_set_from_str() -{ - _oldifs=${IFS} - IFS='=' - set -- ${*} - _var=${1} - shift - _val="${@}" - IFS=${_oldifs} - _atf_config_set "${_var}" "${_val}" -} - -# -# _atf_create_resfile contents -# -# Creates the results file. -# -_atf_create_resfile() -{ - if [ -n "${Results_File}" ]; then - echo "${*}" >"${Results_File}" || \ - _atf_error 128 "Cannot create results file '${Results_File}'" - else - echo "${*}" - fi -} - -# -# _atf_error error_code [msg1 [.. msgN]] -# -# Prints the given error message (which can be composed of multiple -# arguments, in which case are joined by a single space) and exits -# with the specified error code. -# -# This must not be used by test programs themselves (hence making -# the function private) to indicate a test case's failure. They -# have to use the atf_fail function. -# -_atf_error() -{ - _error_code="${1}"; shift - - echo "${Prog_Name}: ERROR:" "$@" 1>&2 - exit ${_error_code} -} - -# -# _atf_warning msg1 [.. msgN] -# -# Prints the given warning message (which can be composed of multiple -# arguments, in which case are joined by a single space). -# -_atf_warning() -{ - echo "${Prog_Name}: WARNING:" "$@" 1>&2 -} - -# -# _atf_find_in_path program -# -# Looks for a program in the path and prints the full path to it or -# nothing if it could not be found. It also returns true in case of -# success. -# -_atf_find_in_path() -{ - _prog="${1}" - - _oldifs=${IFS} - IFS=: - for _dir in ${PATH} - do - if [ -x ${_dir}/${_prog} ]; then - IFS=${_oldifs} - echo ${_dir}/${_prog} - return 0 - fi - done - IFS=${_oldifs} - - return 1 -} - -# -# _atf_has_tc name -# -# Returns true if the given test case exists. -# -_atf_has_tc() -{ - for _tc in ${Test_Cases}; do - [ "${_tc}" != "${1}" ] || return 0 - done - return 1 -} - -# -# _atf_list_tcs -# -# Describes all test cases and prints the list to the standard output. -# -_atf_list_tcs() -{ - echo 'Content-Type: application/X-atf-tp; version="1"' - echo - - set -- ${Test_Cases} - while [ ${#} -gt 0 ]; do - _atf_parse_head ${1} - - echo "ident: $(atf_get ident)" - for _var in ${Test_Case_Vars}; do - [ "${_var}" != "ident" ] && echo "${_var}: $(atf_get ${_var})" - done - - [ ${#} -gt 1 ] && echo - shift - done -} - -# -# _atf_normalize str -# -# Normalizes a string so that it is a valid shell variable name. -# -_atf_normalize() -{ - echo ${1} | tr .- __ -} - -# -# _atf_parse_head tcname -# -# Evaluates a test case's head to gather its variables and prepares the -# test program to run it. -# -_atf_parse_head() -{ - Parsing_Head=true - - Test_Case="${1}" - Test_Case_Vars= - - if _atf_has_cleanup "${1}"; then - atf_set has.cleanup "true" - fi - - ${1}_head - atf_set ident "${1}" - - Parsing_Head=false -} - -# -# _atf_run_tc tc -# -# Runs the specified test case. Prints its exit status to the -# standard output and returns a boolean indicating if the test was -# successful or not. -# -_atf_run_tc() -{ - case ${1} in - *:*) - _tcname=${1%%:*} - _tcpart=${1#*:} - - if [ "${_tcpart}" != body -a "${_tcpart}" != cleanup ]; then - _atf_syntax_error "Unknown test case part \`${_tcpart}'" - fi - ;; - - *) - _tcname=${1} - _tcpart=body - ;; - esac - - _atf_has_tc "${_tcname}" || _atf_syntax_error "Unknown test case \`${1}'" - - if [ "${__RUNNING_INSIDE_ATF_RUN}" != "internal-yes-value" ]; then - _atf_warning "Running test cases outside of kyua(1) is unsupported" - _atf_warning "No isolation nor timeout control is being applied;" \ - "you may get unexpected failures; see atf-test-case(4)" - fi - - _atf_parse_head ${_tcname} - - case ${_tcpart} in - body) - if ${_tcname}_body; then - _atf_validate_expect - _atf_create_resfile passed - else - Expect=pass - atf_fail "Test case body returned a non-ok exit code, but" \ - "this is not allowed" - fi - ;; - cleanup) - if _atf_has_cleanup "${_tcname}"; then - ${_tcname}_cleanup || _atf_error 128 "The test case cleanup" \ - "returned a non-ok exit code, but this is not allowed" - fi - ;; - *) - _atf_error 128 "Unknown test case part" - ;; - esac -} - -# -# _atf_syntax_error msg1 [.. msgN] -# -# Formats and prints a syntax error message and terminates the -# program prematurely. -# -_atf_syntax_error() -{ - echo "${Prog_Name}: ERROR: ${@}" 1>&2 - echo "${Prog_Name}: See atf-test-program(1) for usage details." 1>&2 - exit 1 -} - -# -# _atf_has_cleanup tc-name -# -# Returns a boolean indicating if the given test case has a cleanup -# routine or not. -# -_atf_has_cleanup() -{ - _found=true - eval "[ x\"\${__has_cleanup_${1}}\" = xtrue ] || _found=false" - [ "${_found}" = true ] -} - -# -# _atf_validate_expect -# -# Ensures that the current test case state is correct regarding the expect -# status. -# -_atf_validate_expect() -{ - case "${Expect}" in - death) - Expect=pass - atf_fail "Test case was expected to terminate abruptly but it" \ - "continued execution" - ;; - exit) - Expect=pass - atf_fail "Test case was expected to exit cleanly but it continued" \ - "execution" - ;; - fail) - Expect=pass - atf_fail "Test case was expecting a failure but none were raised" - ;; - pass) - ;; - signal) - Expect=pass - atf_fail "Test case was expected to receive a termination signal" \ - "but it continued execution" - ;; - timeout) - Expect=pass - atf_fail "Test case was expected to hang but it continued execution" - ;; - *) - _atf_error 128 "Unreachable" - ;; - esac -} - -# -# _atf_warning [msg1 [.. msgN]] -# -# Prints the given warning message (which can be composed of multiple -# arguments, in which case are joined by a single space). -# -# This must not be used by test programs themselves (hence making -# the function private). -# -_atf_warning() -{ - echo "${Prog_Name}: WARNING:" "$@" 1>&2 -} - -# -# main [options] test_case -# -# Test program's entry point. -# -main() -{ - # Process command-line options first. - _numargs=${#} - _lflag=false - while getopts :lr:s:v: arg; do - case ${arg} in - l) - _lflag=true - ;; - - r) - Results_File=${OPTARG} - ;; - - s) - Source_Dir=${OPTARG} - ;; - - v) - _atf_config_set_from_str "${OPTARG}" - ;; - - \?) - _atf_syntax_error "Unknown option -${OPTARG}." - # NOTREACHED - ;; - esac - done - shift `expr ${OPTIND} - 1` - - case ${Source_Dir} in - /*) - ;; - *) - Source_Dir=$(pwd)/${Source_Dir} - ;; - esac - [ -f ${Source_Dir}/${Prog_Name} ] || \ - _atf_error 1 "Cannot find the test program in the source" \ - "directory \`${Source_Dir}'" - - # Call the test program's hook to register all available test cases. - atf_init_test_cases - - # Run or list test cases. - if `${_lflag}`; then - if [ ${#} -gt 0 ]; then - _atf_syntax_error "Cannot provide test case names with -l" - fi - _atf_list_tcs - else - if [ ${#} -eq 0 ]; then - _atf_syntax_error "Must provide a test case name" - elif [ ${#} -gt 1 ]; then - _atf_syntax_error "Cannot provide more than one test case name" - else - _atf_run_tc "${1}" - fi - fi -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/misc_helpers.sh b/unit/atf-src/atf-sh/misc_helpers.sh deleted file mode 100644 index 62d6580536..0000000000 --- a/unit/atf-src/atf-sh/misc_helpers.sh +++ /dev/null @@ -1,305 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# ------------------------------------------------------------------------- -# Helper tests for "t_atf_check". -# ------------------------------------------------------------------------- - -atf_test_case atf_check_info_ok -atf_check_info_ok_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_info_ok_body() -{ - atf_check -s eq:0 -o empty -e empty true -} - -atf_test_case atf_check_info_fail -atf_check_info_fail_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_info_fail_body() -{ - # In Solaris, /usr/bin/false returns 255 rather than 1. Use the - # built-in version for the check. - atf_check -s eq:1 -o empty -e empty sh -c "false" -} - -atf_test_case atf_check_expout_mismatch -atf_check_expout_mismatch_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_expout_mismatch_body() -{ - cat >expout <experr <&2' -} - -atf_test_case atf_check_null_stdout -atf_check_null_stdout_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_null_stdout_body() -{ - atf_check -s eq:0 -o empty -e empty echo "These are the contents" -} - -atf_test_case atf_check_null_stderr -atf_check_null_stderr_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_null_stderr_body() -{ - atf_check -s eq:0 -o empty -e empty -x 'echo "These are the contents" 1>&2' -} - -atf_test_case atf_check_equal_ok -atf_check_equal_ok_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_equal_ok_body() -{ - atf_check_equal a a -} - -atf_test_case atf_check_equal_fail -atf_check_equal_fail_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_equal_fail_body() -{ - atf_check_equal a b -} - -atf_test_case atf_check_equal_eval_ok -atf_check_equal_eval_ok_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_equal_eval_ok_body() -{ - x=a - y=a - atf_check_equal '${x}' '${y}' -} - -atf_test_case atf_check_equal_eval_fail -atf_check_equal_eval_fail_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" -} -atf_check_equal_eval_fail_body() -{ - x=a - y=b - atf_check_equal '${x}' '${y}' -} - -atf_test_case atf_check_timeout -atf_check_timeout_head() -{ - atf_set "descr" "Helper test case for the t_atf_check test program" - atf_set "timeout" 1 -} -atf_check_timeout_body() -{ - atf_check true - atf_check sleep 42 -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_config". -# ------------------------------------------------------------------------- - -atf_test_case config_get -config_get_head() -{ - atf_set "descr" "Helper test case for the t_config test program" -} -config_get_body() -{ - if atf_config_has ${TEST_VARIABLE}; then - echo "${TEST_VARIABLE} = $(atf_config_get ${TEST_VARIABLE})" - fi -} - -atf_test_case config_has -config_has_head() -{ - atf_set "descr" "Helper test case for the t_config test program" -} -config_has_body() -{ - if atf_config_has ${TEST_VARIABLE}; then - echo "${TEST_VARIABLE} found" - else - echo "${TEST_VARIABLE} not found" - fi -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_normalize". -# ------------------------------------------------------------------------- - -atf_test_case normalize -normalize_head() -{ - atf_set "descr" "Helper test case for the t_normalize test program" - atf_set "a.b" "test value 1" - atf_set "c-d" "test value 2" -} -normalize_body() -{ - echo "a.b: $(atf_get a.b)" - echo "c-d: $(atf_get c-d)" -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_tc". -# ------------------------------------------------------------------------- - -atf_test_case tc_pass_true -tc_pass_true_head() -{ - atf_set "descr" "Helper test case for the t_tc test program" -} -tc_pass_true_body() -{ - true -} - -atf_test_case tc_pass_false -tc_pass_false_head() -{ - atf_set "descr" "Helper test case for the t_tc test program" -} -tc_pass_false_body() -{ - false -} - -atf_test_case tc_pass_return_error -tc_pass_return_error_head() -{ - atf_set "descr" "Helper test case for the t_tc test program" -} -tc_pass_return_error_body() -{ - return 1 -} - -atf_test_case tc_fail -tc_fail_head() -{ - atf_set "descr" "Helper test case for the t_tc test program" -} -tc_fail_body() -{ - echo "An error" 1>&2 - exit 1 -} - -atf_test_case tc_missing_body -tc_missing_body_head() -{ - atf_set "descr" "Helper test case for the t_tc test program" -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_tp". -# ------------------------------------------------------------------------- - -atf_test_case tp_srcdir -tp_srcdir_head() -{ - atf_set "descr" "Helper test case for the t_tp test program" -} -tp_srcdir_body() -{ - echo "Calling helper" - helper_subr || atf_fail "Could not call helper subroutine" -} - -# ------------------------------------------------------------------------- -# Main. -# ------------------------------------------------------------------------- - -atf_init_test_cases() -{ - # Add helper tests for t_atf_check. - atf_add_test_case atf_check_info_ok - atf_add_test_case atf_check_info_fail - atf_add_test_case atf_check_expout_mismatch - atf_add_test_case atf_check_experr_mismatch - atf_add_test_case atf_check_null_stdout - atf_add_test_case atf_check_null_stderr - atf_add_test_case atf_check_equal_ok - atf_add_test_case atf_check_equal_fail - atf_add_test_case atf_check_equal_eval_ok - atf_add_test_case atf_check_equal_eval_fail - atf_add_test_case atf_check_timeout - - # Add helper tests for t_config. - atf_add_test_case config_get - atf_add_test_case config_has - - # Add helper tests for t_normalize. - atf_add_test_case normalize - - # Add helper tests for t_tc. - atf_add_test_case tc_pass_true - atf_add_test_case tc_pass_false - atf_add_test_case tc_pass_return_error - atf_add_test_case tc_fail - atf_add_test_case tc_missing_body - - # Add helper tests for t_tp. - [ -f $(atf_get_srcdir)/subrs ] && . $(atf_get_srcdir)/subrs - atf_add_test_case tp_srcdir -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/normalize_test.sh b/unit/atf-src/atf-sh/normalize_test.sh deleted file mode 100644 index 0419db36ed..0000000000 --- a/unit/atf-src/atf-sh/normalize_test.sh +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case main -main_head() -{ - atf_set "descr" "Verifies that variable names with symbols not" \ - "allowed as part of shell variable names work" -} -main_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - atf_check -s eq:0 -o match:'a.b: test value 1' \ - -o match:'c-d: test value 2' -e ignore ${h} normalize -} - -atf_init_test_cases() -{ - atf_add_test_case main -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/tc_test.sh b/unit/atf-src/atf-sh/tc_test.sh deleted file mode 100644 index 1117047cba..0000000000 --- a/unit/atf-src/atf-sh/tc_test.sh +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case default_status -default_status_head() -{ - atf_set "descr" "Verifies that test cases get the correct default" \ - "status if they did not provide any" -} -default_status_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - atf_check -s eq:0 -o ignore -e ignore ${h} tc_pass_true - atf_check -s eq:1 -o ignore -e ignore ${h} tc_pass_false - atf_check -s eq:1 -o match:'failed:.*body.*non-ok exit code' -e ignore \ - ${h} tc_pass_return_error - atf_check -s eq:1 -o ignore -e match:'An error' ${h} tc_fail -} - -atf_test_case missing_body -missing_body_head() -{ - atf_set "descr" "Verifies that test cases without a body are reported" \ - "as failed" -} -missing_body_body() -{ - h="$(atf_get_srcdir)/misc_helpers -s $(atf_get_srcdir)" - atf_check -s eq:1 -o ignore -e ignore ${h} tc_missing_body -} - -atf_init_test_cases() -{ - atf_add_test_case default_status - atf_add_test_case missing_body -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/atf-sh/tp_test.sh b/unit/atf-src/atf-sh/tp_test.sh deleted file mode 100644 index a9f1b96a7e..0000000000 --- a/unit/atf-src/atf-sh/tp_test.sh +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case srcdir -srcdir_head() -{ - atf_set "descr" "Verifies that the source directory can be queried" \ - "from the initialization function" -} -srcdir_body() -{ - mkdir work - atf_check -s eq:0 -o empty -e empty cp "$(atf_get_srcdir)/misc_helpers" work - cat >work/subrs < header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if getcwd(NULL, 0) works */ -#undef HAVE_GETCWD_DYN - -/* Define to 1 if getopt allows a + sign for POSIX behavior */ -#undef HAVE_GNU_GETOPT - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if getopt has optreset */ -#undef HAVE_OPTRESET - -/* Define to 1 if you have the `putenv' function. */ -#undef HAVE_PUTENV - -/* Define to 1 if you have the `setenv' function. */ -#undef HAVE_SETENV - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `unsetenv' function. */ -#undef HAVE_UNSETENV - -/* Define to 1 if vsnprintf is in std */ -#undef HAVE_VSNPRINTF_IN_STD - -/* Define to the last valid signal number */ -#undef LAST_SIGNO - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the copyright string applicable to this package. */ -#undef PACKAGE_COPYRIGHT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/unit/atf-src/bootstrap/Makefile.am.inc b/unit/atf-src/bootstrap/Makefile.am.inc deleted file mode 100644 index fd80d809ce..0000000000 --- a/unit/atf-src/bootstrap/Makefile.am.inc +++ /dev/null @@ -1,114 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -check_PROGRAMS = bootstrap/h_app_empty -bootstrap_h_app_empty_SOURCES = bootstrap/h_app_empty.cpp -bootstrap_h_app_empty_LDADD = tools/libtools.a $(ATF_CXX_LIBS) - -check_PROGRAMS += bootstrap/h_app_opts_args -bootstrap_h_app_opts_args_SOURCES = bootstrap/h_app_opts_args.cpp -bootstrap_h_app_opts_args_LDADD = tools/libtools.a $(ATF_CXX_LIBS) - -check_PROGRAMS += bootstrap/h_tp_basic_c -bootstrap_h_tp_basic_c_SOURCES = bootstrap/h_tp_basic_c.c -bootstrap_h_tp_basic_c_LDADD = libatf-c.la - -check_PROGRAMS += bootstrap/h_tp_basic_cpp -bootstrap_h_tp_basic_cpp_SOURCES = bootstrap/h_tp_basic_cpp.cpp -bootstrap_h_tp_basic_cpp_LDADD = $(ATF_CXX_LIBS) - -check_SCRIPTS = bootstrap/h_tp_basic_sh -CLEANFILES += bootstrap/h_tp_basic_sh -EXTRA_DIST += bootstrap/h_tp_basic_sh.sh -bootstrap/h_tp_basic_sh: $(srcdir)/bootstrap/h_tp_basic_sh.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_basic_sh.sh; dst=$@; $(BUILD_SH_TP) - -check_SCRIPTS += bootstrap/h_tp_atf_check_sh -CLEANFILES += bootstrap/h_tp_atf_check_sh -EXTRA_DIST += bootstrap/h_tp_atf_check_sh.sh -bootstrap/h_tp_atf_check_sh: \ - $(srcdir)/bootstrap/h_tp_atf_check_sh.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_atf_check_sh.sh; dst=$@; $(BUILD_SH_TP) - -check_SCRIPTS += bootstrap/h_tp_fail -CLEANFILES += bootstrap/h_tp_fail -EXTRA_DIST += bootstrap/h_tp_fail.sh -bootstrap/h_tp_fail: $(srcdir)/bootstrap/h_tp_fail.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_fail.sh; dst=$@; $(BUILD_SH_TP) - -check_SCRIPTS += bootstrap/h_tp_pass -CLEANFILES += bootstrap/h_tp_pass -EXTRA_DIST += bootstrap/h_tp_pass.sh -bootstrap/h_tp_pass: $(srcdir)/bootstrap/h_tp_pass.sh - $(AM_V_GEN)src=$(srcdir)/bootstrap/h_tp_pass.sh; dst=$@; $(BUILD_SH_TP) - -DISTCLEANFILES = \ - bootstrap/atconfig \ - testsuite.lineno \ - testsuite.log - -distclean-local: - -rm -rf testsuite.dir - -EXTRA_DIST += bootstrap/testsuite \ - bootstrap/package.m4 \ - bootstrap/testsuite.at \ - $(testsuite_incs) - -testsuite_incs= $(srcdir)/bootstrap/t_application_help.at \ - $(srcdir)/bootstrap/t_application_opts_args.at \ - $(srcdir)/bootstrap/t_atf_config.at \ - $(srcdir)/bootstrap/t_atf_run.at \ - $(srcdir)/bootstrap/t_subr_atf_check.at \ - $(srcdir)/bootstrap/t_test_program_compare.at \ - $(srcdir)/bootstrap/t_test_program_filter.at \ - $(srcdir)/bootstrap/t_test_program_list.at \ - $(srcdir)/bootstrap/t_test_program_run.at - -@target_srcdir@bootstrap/package.m4: $(top_srcdir)/configure.ac - { \ - echo '# Signature of the current package.'; \ - echo 'm4_define(AT_PACKAGE_NAME, @PACKAGE_NAME@)'; \ - echo 'm4_define(AT_PACKAGE_TARNAME, @PACKAGE_TARNAME@)'; \ - echo 'm4_define(AT_PACKAGE_VERSION, @PACKAGE_VERSION@)'; \ - echo 'm4_define(AT_PACKAGE_STRING, @PACKAGE_STRING@)'; \ - echo 'm4_define(AT_PACKAGE_BUGREPORT, @PACKAGE_BUGREPORT@)'; \ - echo 'm4_define(ENABLE_TOOLS, @ENABLE_TOOLS@)'; \ - } >$(srcdir)/bootstrap/package.m4 - -@target_srcdir@bootstrap/testsuite: $(srcdir)/bootstrap/testsuite.at \ - $(testsuite_incs) \ - @target_srcdir@bootstrap/package.m4 - autom4te --language=Autotest -I $(srcdir) \ - -I $(srcdir)/bootstrap \ - $(srcdir)/bootstrap/testsuite.at -o $@.tmp - mv $@.tmp $@ - -INSTALLCHECK_TARGETS += installcheck-bootstrap -PHONY_TARGETS += installcheck-bootstrap -installcheck-bootstrap: @target_srcdir@bootstrap/testsuite check - $(TESTS_ENVIRONMENT) $(srcdir)/bootstrap/testsuite - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/bootstrap/h_app_empty.cpp b/unit/atf-src/bootstrap/h_app_empty.cpp deleted file mode 100644 index 9656f00135..0000000000 --- a/unit/atf-src/bootstrap/h_app_empty.cpp +++ /dev/null @@ -1,62 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include "tools/application.hpp" - -class h_app_empty : public tools::application::app { - static const char* m_description; - -public: - h_app_empty(void); - - int main(void); -}; - -const char* h_app_empty::m_description = - "A helper application for the bootstrap test suite that does nothing " - "on its own and redefines no methods."; - -h_app_empty::h_app_empty(void) : - app(m_description, "h_app_empty(1)", "atf(7)") -{ -} - -int -h_app_empty::main(void) -{ - return EXIT_SUCCESS; -} - -int -main(int argc, char* const* argv) -{ - return h_app_empty().run(argc, argv); -} diff --git a/unit/atf-src/bootstrap/h_app_opts_args.cpp b/unit/atf-src/bootstrap/h_app_opts_args.cpp deleted file mode 100644 index f05a6b2bb1..0000000000 --- a/unit/atf-src/bootstrap/h_app_opts_args.cpp +++ /dev/null @@ -1,102 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include "tools/application.hpp" - -class h_app_opts_args : public tools::application::app { - static const char* m_description; - - std::string specific_args(void) const; - options_set specific_options(void) const; - void process_option(int, const char*); - -public: - h_app_opts_args(void); - - int main(void); -}; - -const char* h_app_opts_args::m_description = - "A helper application for the bootstrap test suite that redefines the " - "methods to specify custom options and arguments."; - -h_app_opts_args::h_app_opts_args(void) : - app(m_description, "h_app_opts_args(1)", "atf(7)") -{ -} - -std::string -h_app_opts_args::specific_args(void) - const -{ - return " "; -} - -h_app_opts_args::options_set -h_app_opts_args::specific_options(void) - const -{ - using tools::application::option; - options_set opts; - opts.insert(option('d', "", "Debug mode")); - opts.insert(option('v', "level", "Verbosity level")); - return opts; -} - -void -h_app_opts_args::process_option(int ch, const char* arg) -{ - switch (ch) { - case 'd': - std::cout << "-d given\n"; - break; - - case 'v': - std::cout << "-v given with argument " << arg << "\n"; - break; - - default: - std::abort(); - } -} - -int -h_app_opts_args::main(void) -{ - return EXIT_SUCCESS; -} - -int -main(int argc, char* const* argv) -{ - return h_app_opts_args().run(argc, argv); -} diff --git a/unit/atf-src/bootstrap/h_tp_atf_check_sh.sh b/unit/atf-src/bootstrap/h_tp_atf_check_sh.sh deleted file mode 100644 index a5037698bc..0000000000 --- a/unit/atf-src/bootstrap/h_tp_atf_check_sh.sh +++ /dev/null @@ -1,300 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case exitcode_0_0 -exitcode_0_0_head() -{ - atf_set "descr" "Runs a program that returns true and expects true" -} -exitcode_0_0_body() -{ - atf_check -s eq:0 -o empty -e empty true -} - -atf_test_case exitcode_0_1 -exitcode_0_1_head() -{ - atf_set "descr" "Runs a program that returns true and expects false" -} -exitcode_0_1_body() -{ - atf_check -s eq:1 -o empty -e empty true -} - -atf_test_case exitcode_1_0 -exitcode_1_0_head() -{ - atf_set "descr" "Runs a program that returns false and expects true" -} -exitcode_1_0_body() -{ - atf_check -s eq:0 -o empty -e empty false -} - -atf_test_case exitcode_1_1 -exitcode_1_1_head() -{ - atf_set "descr" "Runs a program that returns false and expects false" -} -exitcode_1_1_body() -{ - # In Solaris, /usr/bin/false returns 255 rather than 1. Use the - # built-in version for the check. - atf_check -s eq:1 -o empty -e empty sh -c "false" -} - -atf_test_case stdout_expout_pass -stdout_expout_pass_head() -{ - atf_set "descr" "Runs a program with stdout set to expout and passes" -} -stdout_expout_pass_body() -{ - echo foo >expout - atf_check -s eq:0 -o file:expout -e empty echo foo -} - -atf_test_case stdout_expout_fail -stdout_expout_fail_head() -{ - atf_set "descr" "Runs a program with stdout set to expout and fails" -} -stdout_expout_fail_body() -{ - echo foo >expout - atf_check -s eq:0 -o file:expout -e empty echo bar -} - -atf_test_case stdout_ignore_empty -stdout_ignore_empty_head() -{ - atf_set "descr" "Runs a program with stdout set to ignore and" \ - "writes nothing" -} -stdout_ignore_empty_body() -{ - atf_check -s eq:0 -o ignore -e empty true -} - -atf_test_case stdout_ignore_sth -stdout_ignore_sth_head() -{ - atf_set "descr" "Runs a program with stdout set to ignore and" \ - "writes something" -} -stdout_ignore_sth_body() -{ - atf_check -s eq:0 -o ignore -e empty echo foo -} - -atf_test_case stdout_null_empty -stdout_null_empty_head() -{ - atf_set "descr" "Runs a program with stdout set to null and" \ - "writes nothing" -} -stdout_null_empty_body() -{ - atf_check -s eq:0 -o empty -e empty true -} - -atf_test_case stdout_null_sth -stdout_null_sth_head() -{ - atf_set "descr" "Runs a program with stdout set to null and" \ - "writes something" -} -stdout_null_sth_body() -{ - atf_check -s eq:0 -o empty -e empty echo foo -} - -atf_test_case stdout_stdout_written -stdout_stdout_written_head() -{ - atf_set "descr" "Runs a program with stdout set to stdout and" \ - "writes something" -} -stdout_stdout_written_body() -{ - atf_check -s eq:0 -o save:stdout -e empty echo foo - echo foo >aux - cmp -s stdout aux || atf_fail "Test failed" -} - -atf_test_case stdout_match_ok -stdout_match_ok_head() -{ - atf_set "descr" "Runs a program with stdout set to match and" \ - "matches the regular expression" -} -stdout_match_ok_body() -{ - atf_check -s eq:0 -o 'match:bar$' -e empty -x "echo line; echo foo bar" -} - -atf_test_case stdout_match_fail -stdout_match_fail_head() -{ - atf_set "descr" "Runs a program with stdout set to match and" \ - "does not match the regular expression" -} -stdout_match_fail_body() -{ - atf_check -s eq:0 -o 'match:bar$' -e empty -x "echo line; echo foo bar baz" -} - -atf_test_case stderr_experr_pass -stderr_experr_pass_head() -{ - atf_set "descr" "Runs a program with stderr set to experr and passes" -} -stderr_experr_pass_body() -{ - echo foo >experr - atf_check -s eq:0 -o empty -e file:experr -x 'echo foo 1>&2' -} - -atf_test_case stderr_experr_fail -stderr_experr_fail_head() -{ - atf_set "descr" "Runs a program with stderr set to experr and fails" -} -stderr_experr_fail_body() -{ - echo foo >experr - atf_check -s eq:0 -o empty -e file:stderr -x 'echo bar 1>&2' -} - -atf_test_case stderr_ignore_empty -stderr_ignore_empty_head() -{ - atf_set "descr" "Runs a program with stderr set to ignore and" \ - "writes nothing" -} -stderr_ignore_empty_body() -{ - atf_check -s eq:0 -o empty -e ignore -x 'true 1>&2' -} - -atf_test_case stderr_ignore_sth -stderr_ignore_sth_head() -{ - atf_set "descr" "Runs a program with stderr set to ignore and" \ - "writes something" -} -stderr_ignore_sth_body() -{ - atf_check -s eq:0 -o empty -e ignore -x 'echo foo 1>&2' -} - -atf_test_case stderr_null_empty -stderr_null_empty_head() -{ - atf_set "descr" "Runs a program with stderr set to null and" \ - "writes nothing" -} -stderr_null_empty_body() -{ - atf_check -s eq:0 -o empty -e empty -x 'true 1>&2' -} - -atf_test_case stderr_null_sth -stderr_null_sth_head() -{ - atf_set "descr" "Runs a program with stderr set to null and" \ - "writes something" -} -stderr_null_sth_body() -{ - atf_check -s eq:0 -o empty -e empty -x 'echo foo 1>&2' -} - -atf_test_case stderr_stderr_written -stderr_stderr_written_head() -{ - atf_set "descr" "Runs a program with stderr set to stderr and" \ - "writes something" -} -stderr_stderr_written_body() -{ - atf_check -s eq:0 -o empty -e save:stderr -x 'echo foo 1>&2' - echo foo >aux - cmp -s stderr aux || atf_fail "Test failed" -} - -atf_test_case stderr_match_ok -stderr_match_ok_head() -{ - atf_set "descr" "Runs a program with stderr set to match and" \ - "matches the regular expression" -} -stderr_match_ok_body() -{ - atf_check -s eq:0 -o empty -e 'match:bar$' -x \ - "echo line 1>&2; echo foo bar 1>&2" -} - -atf_test_case stderr_match_fail -stderr_match_fail_head() -{ - atf_set "descr" "Runs a program with stderr set to match and" \ - "does not match the regular expression" -} -stderr_match_fail_body() -{ - atf_check -s eq:0 -o empty -e 'match:bar$' -x \ - "echo line 1>&2; echo foo bar baz 1>&2" -} - -atf_init_test_cases() -{ - atf_add_test_case exitcode_0_0 - atf_add_test_case exitcode_0_1 - atf_add_test_case exitcode_1_0 - atf_add_test_case exitcode_1_1 - - atf_add_test_case stdout_expout_pass - atf_add_test_case stdout_expout_fail - atf_add_test_case stdout_ignore_empty - atf_add_test_case stdout_ignore_sth - atf_add_test_case stdout_null_empty - atf_add_test_case stdout_null_sth - atf_add_test_case stdout_stdout_written - atf_add_test_case stdout_match_ok - atf_add_test_case stdout_match_fail - - atf_add_test_case stderr_experr_pass - atf_add_test_case stderr_experr_fail - atf_add_test_case stderr_ignore_empty - atf_add_test_case stderr_ignore_sth - atf_add_test_case stderr_null_empty - atf_add_test_case stderr_null_sth - atf_add_test_case stderr_stderr_written - atf_add_test_case stderr_match_ok - atf_add_test_case stderr_match_fail -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/h_tp_basic_c.c b/unit/atf-src/bootstrap/h_tp_basic_c.c deleted file mode 100644 index 6e74ef77b1..0000000000 --- a/unit/atf-src/bootstrap/h_tp_basic_c.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include - -#include "atf-c/error.h" - -ATF_TC(pass); -ATF_TC_HEAD(pass, tc) -{ - atf_tc_set_md_var(tc, "descr", "An empty test case that always passes"); -} -ATF_TC_BODY(pass, tc) -{ - atf_tc_pass(); -} - -ATF_TC(fail); -ATF_TC_HEAD(fail, tc) -{ - atf_tc_set_md_var(tc, "descr", "An empty test case that always fails"); -} -ATF_TC_BODY(fail, tc) -{ - atf_tc_fail("On purpose"); -} - -ATF_TC(skip); -ATF_TC_HEAD(skip, tc) -{ - atf_tc_set_md_var(tc, "descr", "An empty test case that is always " - "skipped"); -} -ATF_TC_BODY(skip, tc) -{ - atf_tc_skip("By design"); -} - -ATF_TC(default); -ATF_TC_HEAD(default, tc) -{ - atf_tc_set_md_var(tc, "descr", "A test case that passes without " - "explicitly stating it"); -} -ATF_TC_BODY(default, tc) -{ -} - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, pass); - ATF_TP_ADD_TC(tp, fail); - ATF_TP_ADD_TC(tp, skip); - ATF_TP_ADD_TC(tp, default); - - return atf_no_error(); -} diff --git a/unit/atf-src/bootstrap/h_tp_basic_cpp.cpp b/unit/atf-src/bootstrap/h_tp_basic_cpp.cpp deleted file mode 100644 index ded8243430..0000000000 --- a/unit/atf-src/bootstrap/h_tp_basic_cpp.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include - -ATF_TEST_CASE(pass); - -ATF_TEST_CASE_HEAD(pass) -{ - set_md_var("descr", "An empty test case that always passes"); -} - -ATF_TEST_CASE_BODY(pass) -{ - ATF_PASS(); -} - -ATF_TEST_CASE(fail); - -ATF_TEST_CASE_HEAD(fail) -{ - set_md_var("descr", "An empty test case that always fails"); -} - -ATF_TEST_CASE_BODY(fail) -{ - ATF_FAIL("On purpose"); -} - -ATF_TEST_CASE(skip); - -ATF_TEST_CASE_HEAD(skip) -{ - set_md_var("descr", "An empty test case that is always skipped"); -} - -ATF_TEST_CASE_BODY(skip) -{ - ATF_SKIP("By design"); -} - -ATF_TEST_CASE(default); - -ATF_TEST_CASE_HEAD(default) -{ - set_md_var("descr", "A test case that passes without explicitly " - "stating it"); -} - -ATF_TEST_CASE_BODY(default) -{ -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, pass); - ATF_ADD_TEST_CASE(tcs, fail); - ATF_ADD_TEST_CASE(tcs, skip); - ATF_ADD_TEST_CASE(tcs, default); -} diff --git a/unit/atf-src/bootstrap/h_tp_basic_sh.sh b/unit/atf-src/bootstrap/h_tp_basic_sh.sh deleted file mode 100644 index b05debb817..0000000000 --- a/unit/atf-src/bootstrap/h_tp_basic_sh.sh +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case pass -pass_head() -{ - atf_set "descr" "An empty test case that always passes" -} -pass_body() -{ - atf_pass -} - -atf_test_case fail -fail_head() -{ - atf_set "descr" "An empty test case that always fails" -} -fail_body() -{ - atf_fail "On purpose" -} - -atf_test_case skip -skip_head() -{ - atf_set "descr" "An empty test case that is always skipped" -} -skip_body() -{ - atf_skip "By design" -} - -atf_test_case default -default_head() -{ - atf_set "descr" "A test case that passes without explicitly" \ - "stating it" -} -default_body() -{ - : -} - -atf_init_test_cases() -{ - atf_add_test_case pass - atf_add_test_case fail - atf_add_test_case skip - atf_add_test_case default -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/h_tp_fail.sh b/unit/atf-src/bootstrap/h_tp_fail.sh deleted file mode 100644 index ac47d2f73b..0000000000 --- a/unit/atf-src/bootstrap/h_tp_fail.sh +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2009 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case @TC_NAME@ -@TC_NAME@_head() -{ - atf_set "descr" "An empty test case that always fails" -} -@TC_NAME@_body() -{ - echo "ignore-me" - echo "ignore-me" 1>&2 - atf_fail "No reason" -} - -atf_init_test_cases() -{ - atf_add_test_case @TC_NAME@ -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/h_tp_pass.sh b/unit/atf-src/bootstrap/h_tp_pass.sh deleted file mode 100644 index dd6a5a81f0..0000000000 --- a/unit/atf-src/bootstrap/h_tp_pass.sh +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2009 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case @TC_NAME@ -@TC_NAME@_head() -{ - atf_set "descr" "An empty test case that always passes" -} -@TC_NAME@_body() -{ - echo "ignore-me" - echo "ignore-me" 1>&2 - atf_pass -} - -atf_init_test_cases() -{ - atf_add_test_case @TC_NAME@ -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/package.m4 b/unit/atf-src/bootstrap/package.m4 deleted file mode 100644 index 2b14854679..0000000000 --- a/unit/atf-src/bootstrap/package.m4 +++ /dev/null @@ -1,7 +0,0 @@ -# Signature of the current package. -m4_define(AT_PACKAGE_NAME, Automated Testing Framework) -m4_define(AT_PACKAGE_TARNAME, atf) -m4_define(AT_PACKAGE_VERSION, 0.17) -m4_define(AT_PACKAGE_STRING, Automated Testing Framework 0.17) -m4_define(AT_PACKAGE_BUGREPORT, atf-devel@NetBSD.org) -m4_define(ENABLE_TOOLS, yes) diff --git a/unit/atf-src/bootstrap/t_application_help.at b/unit/atf-src/bootstrap/t_application_help.at deleted file mode 100644 index 7686fea2c1..0000000000 --- a/unit/atf-src/bootstrap/t_application_help.at +++ /dev/null @@ -1,40 +0,0 @@ -dnl -dnl Automated Testing Framework (atf) -dnl -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -dnl - -AT_SETUP([application: online help option]) - -AT_CHECK([APP_HELPER(app_empty)], 0, [stdout], []) -AT_CHECK([grep 'Available options' stdout], 1, [ignore], []) - -AT_CHECK([APP_HELPER(app_empty) -h], 0, [stdout], []) -AT_CHECK([grep 'Available options' stdout], 0, [ignore], []) - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_application_opts_args.at b/unit/atf-src/bootstrap/t_application_opts_args.at deleted file mode 100644 index 0c36cef776..0000000000 --- a/unit/atf-src/bootstrap/t_application_opts_args.at +++ /dev/null @@ -1,86 +0,0 @@ -dnl -dnl Automated Testing Framework (atf) -dnl -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -dnl - -AT_SETUP([application: arguments and options handling]) - -dnl Check that an application that does not redefine any method does -dnl not show strange flags in the usage message. -AT_CHECK([APP_HELPER(app_empty) -h], 0, [stdout], []) -AT_CHECK([grep ' -d ' stdout], 1, [ignore], []) -AT_CHECK([grep ' -h ' stdout], 0, [ignore], []) -AT_CHECK([grep ' -v ' stdout], 1, [ignore], []) -AT_CHECK([grep ' -z ' stdout], 1, [ignore], []) - -dnl Check that an application that adds its own options shows them in -dnl the usage message. -AT_CHECK([APP_HELPER(app_opts_args) -h], 0, [stdout], []) -AT_CHECK([grep ' -d ' stdout], 0, [ignore], []) -AT_CHECK([grep ' -h ' stdout], 0, [ignore], []) -AT_CHECK([grep ' -v ' stdout], 0, [ignore], []) -AT_CHECK([grep ' -z ' stdout], 1, [ignore], []) - -dnl Check that an application that does not redefine any method does -dnl not recognize strange flags. -AT_CHECK([APP_HELPER(app_empty) -d], 1, [], [stderr]) -AT_CHECK([grep 'Unknown option.*-d' stderr], 0, [ignore], []) -AT_CHECK([APP_HELPER(app_empty) -v], 1, [], [stderr]) -AT_CHECK([grep 'Unknown option.*-v' stderr], 0, [ignore], []) -AT_CHECK([APP_HELPER(app_empty) -z], 1, [], [stderr]) -AT_CHECK([grep 'Unknown option.*-z' stderr], 0, [ignore], []) - -dnl Check that an application that adds its own options is able to -dnl properly handle them. -AT_CHECK([APP_HELPER(app_opts_args) -d], 0, [stdout], []) -AT_CHECK([grep -- '-d given' stdout], 0, [ignore], []) -AT_CHECK([APP_HELPER(app_opts_args) -v], 1, [], [stderr]) -AT_CHECK([grep 'Option.*-v.*requires an argument' stderr], 0, [ignore], []) -AT_CHECK([APP_HELPER(app_opts_args) -v foo], 0, [stdout], []) -AT_CHECK([grep -- '-v given with argument foo' stdout], 0, [ignore], []) -AT_CHECK([APP_HELPER(app_opts_args) -z], 1, [], [stderr]) -AT_CHECK([grep 'Unknown option.*-z' stderr], 0, [ignore], []) - -dnl Check that option processing stops after an argument. -AT_CHECK([APP_HELPER(app_opts_args) -- -d], 0, [stdout], []) -AT_CHECK([grep -- '-d given' stdout], 1, [], []) -AT_CHECK([APP_HELPER(app_opts_args) arg -d], 0, [stdout], []) -AT_CHECK([grep -- '-d given' stdout], 1, [], []) - -dnl Check that an application that does not redefine any method does -dnl not show unexpected arguments in the usage message. -AT_CHECK([APP_HELPER(app_empty) -h], 0, [stdout], []) -AT_CHECK([grep '\@<:@options\@:>@$' stdout], 0, [ignore], []) - -dnl Check that an application that defines the arguments it takes -dnl shows them in the usage message. -AT_CHECK([APP_HELPER(app_opts_args) -h], 0, [stdout], []) -AT_CHECK([grep '\@<:@options\@:>@ ' stdout], 0, [ignore], []) - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_atf_config.at b/unit/atf-src/bootstrap/t_atf_config.at deleted file mode 100644 index a863169992..0000000000 --- a/unit/atf-src/bootstrap/t_atf_config.at +++ /dev/null @@ -1,108 +0,0 @@ -dnl -dnl Automated Testing Framework (atf) -dnl -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -dnl - -AT_SETUP([atf-config: querying of build-time variables]) -AT_TESTED(atf-config) - -all_vars="atf_arch \ - atf_build_cc \ - atf_build_cflags \ - atf_build_cpp \ - atf_build_cppflags \ - atf_build_cxx \ - atf_build_cxxflags \ - atf_confdir \ - atf_includedir \ - atf_libdir \ - atf_libexecdir \ - atf_machine \ - atf_pkgdatadir \ - atf_shell \ - atf_workdir" -all_vars_no=15 - -dnl List all variables. -AT_CHECK([atf-config], [0], [stdout], []) -AT_CHECK([COUNT_LINES(stdout, ${all_vars_no})], [0], [], []) -for v in ${all_vars}; do - AT_CHECK([grep "${v}" stdout], [0], [ignore], []) -done - -dnl Query a single variable and test terse mode. -for v in ${all_vars}; do - AT_CHECK([atf-config ${v}], [0], [stdout], []) - AT_CHECK([COUNT_LINES(stdout, 1)], [0], [], []) - AT_CHECK([grep "${v}" stdout], [0], [ignore], []) - AT_CHECK([cut -d ' ' -f 3- stdout], [0], [stdout], []) - AT_CHECK([mv stdout expout], [0], [], []) - AT_CHECK([atf-config -t ${v}], [0], [expout], []) -done - -dnl Query several variables. -AT_CHECK([atf-config atf_libexecdir atf_pkgdatadir], [0], [stdout], []) -AT_CHECK([grep 'atf_libexecdir' stdout], [0], [ignore], []) -AT_CHECK([grep 'atf_pkgdatadir' stdout], [0], [ignore], []) -AT_CHECK([COUNT_LINES(stdout, 2)], [0], [ignore], []) - -dnl Query a non-existent variable. -AT_CHECK([atf-config non_existent], [1], [], [stderr]) -AT_CHECK([grep 'Unknown variable.*non_existent' stderr], [0], [ignore], []) - -dnl Query an existent and non-existent variable. -for v in ${all_vars}; do - AT_CHECK([atf-config ${v} non_existent], [1], [], [stderr]) - AT_CHECK([grep 'Unknown variable.*non_existent' stderr], - [0], [ignore], []) - AT_CHECK([atf-config non_existent ${v}], [1], [], [stderr]) - AT_CHECK([grep 'Unknown variable.*non_existent' stderr], - [0], [ignore], []) -done - -dnl Override every variable through the environment. -for v in ${all_vars}; do - V=$(echo ${v} | tr '@<:@a-z@:>@' '@<:@A-Z@:>@') - AT_CHECK([env ${V}=testval atf-config], [0], [stdout], []) - AT_CHECK([mv stdout all], [0], [], []) - - AT_CHECK([grep "^${v} : " all], [0], [stdout], []) - AT_CHECK([mv stdout affected], [0], [], []) - AT_CHECK([grep -v "^${v} : " all], [0], [stdout], []) - AT_CHECK([mv stdout unaffected], [0], [], []) - - AT_CHECK([COUNT_LINES(affected, 1)], [0], [ignore], []) - AT_CHECK([COUNT_LINES(unaffected, $((${all_vars_no} - 1)))], - [0], [ignore], []) - - AT_CHECK([grep "^${v} : testval$" affected], [0], [ignore], []) - AT_CHECK([grep ' : testval$' unaffected], [1], [], []) -done - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_atf_run.at b/unit/atf-src/bootstrap/t_atf_run.at deleted file mode 100644 index db09deb2cd..0000000000 --- a/unit/atf-src/bootstrap/t_atf_run.at +++ /dev/null @@ -1,178 +0,0 @@ -dnl -dnl Automated Testing Framework (atf) -dnl -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -dnl - -AT_SETUP([atf-run: execution of tests]) -AT_TESTED(atf-run) - -m4_define([CREATE_PASS_TEST], -[AT_CHECK([sed -e 's,@TC_NAME@,$2,g' @' stdout], [1], [], []) -AT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) -AT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) - -AT_CHECK([cd top/dir2 && atf-run], [1], [stdout], [stderr]) -CHECK_TPS_TCR(tc_4, failed, stdout) -CHECK_TPS_TCR(tc_5, passed, stdout) -AT_CHECK([grep -i 'tc_@<:@123@:>@' stdout], [1], [], []) -AT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) -AT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) - -AT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) -CHECK_TPS_TCR(tc_1, passed, stdout) -CHECK_TPS_TCR(tc_2, failed, stdout) -CHECK_TPS_TCR(tc_3, passed, stdout) -CHECK_TPS_TCR(tc_4, failed, stdout) -CHECK_TPS_TCR(tc_5, passed, stdout) -AT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) -AT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) - -dnl Repeat previous but using a glob that matches everything. -AT_DATA([top/Atffile], -[Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp-glob: * -]) -AT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) -CHECK_TPS_TCR(tc_1, passed, stdout) -CHECK_TPS_TCR(tc_2, failed, stdout) -CHECK_TPS_TCR(tc_3, passed, stdout) -CHECK_TPS_TCR(tc_4, failed, stdout) -CHECK_TPS_TCR(tc_5, passed, stdout) -AT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) -AT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) - -dnl Repeat previous but using a glob that matches directories only. -AT_DATA([top/Atffile], -[Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp-glob: d* -]) -AT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) -CHECK_TPS_TCR(tc_3, passed, stdout) -CHECK_TPS_TCR(tc_4, failed, stdout) -CHECK_TPS_TCR(tc_5, passed, stdout) -AT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) -AT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) - -dnl Make sure globs do not match non-executable nor hidden files. -dnl XXX This is not really part of the bootstrap test suite. Move to -dnl tests/atf/tools/t_atf_run.sh when it exists. -AT_CHECK([rm -rf top], [0], [], []) -AT_CHECK([mkdir top], [0], [], []) -CREATE_PASS_TEST([top/test1], [tc_1]) -CREATE_PASS_TEST([top/test2], [tc_2]) -CREATE_PASS_TEST([top/test3], [tc_3]) -AT_CHECK([chmod -x top/test3], [0], [], []) -CREATE_PASS_TEST([top/.test4], [tc_4]) -AT_CHECK([chmod -x top/.test4], [0], [], []) -AT_DATA([top/Atffile], -[Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp-glob: * -]) -AT_CHECK([cd top && atf-run], [0], [stdout], [stderr]) -CHECK_TPS_TCR(tc_1, passed, stdout) -CHECK_TPS_TCR(tc_2, passed, stdout) -AT_CHECK([grep -i 'tc_3' stdout], [1], [ignore], []) -AT_CHECK([grep -i 'tc_4' stdout], [1], [ignore], []) - -dnl Run all test cases from a test program. -AT_CHECK([rm -rf top], [0], [], []) -AT_CHECK([mkdir top], [0], [], []) -AT_CHECK([cp TEST_HELPER_NO_S(tp_basic_sh) top]) -AT_DATA([top/Atffile], -[Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: h_tp_basic_sh -]) -AT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) -CHECK_TPS_TCR(pass, passed, stdout) -CHECK_TPS_TCR(fail, failed, stdout) -CHECK_TPS_TCR(skip, skipped, stdout) -CHECK_TPS_TCR(default, passed, stdout) - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_subr_atf_check.at b/unit/atf-src/bootstrap/t_subr_atf_check.at deleted file mode 100644 index 4aca4e4de1..0000000000 --- a/unit/atf-src/bootstrap/t_subr_atf_check.at +++ /dev/null @@ -1,77 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AT_SETUP([subr: atf_check function]) - -AT_CHECK([TEST_HELPER(tp_atf_check_sh) exitcode_0_0], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) exitcode_0_1], - [1], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) exitcode_1_0], - [1], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) exitcode_1_1], - [0], [ignore], [ignore]) - -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_expout_pass], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_expout_fail], - [1], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_ignore_empty], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_ignore_sth], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_null_empty], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_null_sth], - [1], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_stdout_written], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_match_ok], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stdout_match_fail], - [1], [ignore], [ignore]) - -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_experr_pass], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_experr_fail], - [1], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_ignore_empty], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_ignore_sth], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_null_empty], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_null_sth], - [1], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_stderr_written], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_match_ok], - [0], [ignore], [ignore]) -AT_CHECK([TEST_HELPER(tp_atf_check_sh) stderr_match_fail], - [1], [ignore], [ignore]) - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_test_program_compare.at b/unit/atf-src/bootstrap/t_test_program_compare.at deleted file mode 100644 index ebf6253d3f..0000000000 --- a/unit/atf-src/bootstrap/t_test_program_compare.at +++ /dev/null @@ -1,182 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AT_SETUP([test_program: compare the user-visible interfaces]) - -dnl No arguments. -AT_CHECK([TEST_HELPER(tp_basic_c)], [1], [], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp)], [1], [], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh)], [1], [], [experr]) - -dnl Try to ask for help, which is not bundled in. -AT_CHECK([TEST_HELPER(tp_basic_c) -h], [1], [], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp) -h], [1], [], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh) -h], [1], [], [experr]) - -dnl Give an invalid option. -AT_CHECK([TEST_HELPER(tp_basic_c) -Z], [1], [], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp) -Z], [1], [], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh) -Z], [1], [], [experr]) - -dnl List all tests. -AT_CHECK([TEST_HELPER(tp_basic_c) -l], [0], [stdout], []) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -AT_CHECK([TEST_HELPER(tp_basic_cpp) -l], [0], [expout], []) -sed 's,tp_basic_c,tp_basic_sh,g' expout -AT_CHECK([TEST_HELPER(tp_basic_sh) -l], [0], [expout], []) - -dnl Run no tests. -AT_CHECK([TEST_HELPER(tp_basic_c)], - [1], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp)], - [1], [expout], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh)], - [1], [expout], [experr]) - -dnl Run the pass test case. -AT_CHECK([TEST_HELPER(tp_basic_c) -r resout pass], - [0], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_cpp) -r resout pass], - [0], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_sh) -r resout pass], - [0], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) - -dnl Run the fail test case. -AT_CHECK([TEST_HELPER(tp_basic_c) -r resout fail], - [1], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_cpp) -r resout fail], - [1], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_sh) -r resout fail], - [1], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) - -dnl Run the skip test case. -AT_CHECK([TEST_HELPER(tp_basic_c) -r resout skip], - [0], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_cpp) -r resout skip], - [0], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_sh) -r resout skip], - [0], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) - -dnl Run the default test case. -AT_CHECK([TEST_HELPER(tp_basic_c) -r resout default], - [0], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_cpp) -r resout default], - [0], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -AT_CHECK([TEST_HELPER(tp_basic_sh) -r resout default], - [0], [expout], [experr]) -AT_CHECK([cmp -s resout resexp], [0], [], []) - -dnl Try running multiple tests. -AT_CHECK([TEST_HELPER(tp_basic_c) pass fail], - [1], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp) pass fail], - [1], [expout], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh) pass fail], - [1], [expout], [experr]) - -dnl Run an unknown test case. -AT_CHECK([TEST_HELPER(tp_basic_c) unknown], - [1], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp) unknown], - [1], [expout], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh) unknown], - [1], [expout], [experr]) - -dnl Try running a non-existent cleanup routine. -AT_CHECK([TEST_HELPER(tp_basic_c) pass:cleanup], - [0], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp) pass:cleanup], - [0], [expout], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh) pass:cleanup], - [0], [expout], [experr]) - -dnl Run a test and dump the results on stdout. -AT_CHECK([TEST_HELPER(tp_basic_c) skip], - [0], [stdout], [stderr]) -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -AT_CHECK([TEST_HELPER(tp_basic_cpp) skip], - [0], [expout], [experr]) -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -AT_CHECK([TEST_HELPER(tp_basic_sh) skip], - [0], [expout], [experr]) - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_test_program_filter.at b/unit/atf-src/bootstrap/t_test_program_filter.at deleted file mode 100644 index c4124a9cbf..0000000000 --- a/unit/atf-src/bootstrap/t_test_program_filter.at +++ /dev/null @@ -1,59 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AT_SETUP([test_program: filter test cases by name]) - -for h in tp_basic_c tp_basic_cpp tp_basic_sh; do - -dnl Try an invalid test case name. -AT_CHECK([TEST_HELPER(${h}) invalid], 1, [], [stderr]) -AT_CHECK([grep "Unknown test case .invalid'" stderr], - [0], [ignore], []) - -dnl Try a glob as a test case name. -AT_CHECK([TEST_HELPER(${h}) "*p*"], 1, [], [stderr]) -AT_CHECK([grep "Unknown test case .\\*p\\*'" stderr], - [0], [ignore], []) - -AT_DATA([expres], [passed -]) -AT_CHECK([TEST_HELPER(${h}) -r resout pass], 0, [ignore], [ignore]) -AT_CHECK([cmp -s resout expres], [0], [], []) - -AT_DATA([expres], [skipped: By design -]) -AT_CHECK([TEST_HELPER(${h}) -r resout skip], 0, [ignore], [ignore]) -AT_CHECK([cmp -s resout expres], [0], [], []) - -AT_DATA([expres], [failed: On purpose -]) -AT_CHECK([TEST_HELPER(${h}) -r resout fail], 1, [ignore], [ignore]) -AT_CHECK([cmp -s resout expres], [0], [], []) - -done - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_test_program_list.at b/unit/atf-src/bootstrap/t_test_program_list.at deleted file mode 100644 index f0a8ea114a..0000000000 --- a/unit/atf-src/bootstrap/t_test_program_list.at +++ /dev/null @@ -1,59 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AT_SETUP([test_program: list test cases]) - -for h in tp_basic_c tp_basic_cpp tp_basic_sh; do - -AT_DATA([expout], [Content-Type: application/X-atf-tp; version="1" - -ident: pass -descr: An empty test case that always passes - -ident: fail -descr: An empty test case that always fails - -ident: skip -descr: An empty test case that is always skipped - -ident: default -descr: A test case that passes without explicitly stating it -]) - -AT_CHECK([TEST_HELPER(${h}) -l], [0], [expout], []) - -AT_CHECK([TEST_HELPER(${h}) -l pass], [1], [], [stderr]) -AT_CHECK([grep 'Cannot provide test case names with -l' stderr], - [0], [ignore], []) - -AT_CHECK([TEST_HELPER(${h}) -l pass fail], [1], [], [stderr]) -AT_CHECK([grep 'Cannot provide test case names with -l' stderr], - [0], [ignore], []) - -done - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/t_test_program_run.at b/unit/atf-src/bootstrap/t_test_program_run.at deleted file mode 100644 index 1d7bf4a4c6..0000000000 --- a/unit/atf-src/bootstrap/t_test_program_run.at +++ /dev/null @@ -1,47 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AT_SETUP([test_program: output format and exit codes]) - -for h in tp_basic_c tp_basic_cpp tp_basic_sh; do - -dnl Check the -r flag to redirect the results output. -AT_CHECK([TEST_HELPER(${h}) -r resout pass], 0, [stdout], [stderr]) -CHECK_TCR([resout], [passed]) - -AT_CHECK([TEST_HELPER(${h}) -r resout fail], 1, [stdout], [stderr]) -CHECK_TCR([resout], [failed], [On purpose]) - -AT_CHECK([TEST_HELPER(${h}) -r resout skip], 0, [stdout], [stderr]) -CHECK_TCR([resout], [skipped], [By design]) - -AT_CHECK([TEST_HELPER(${h}) -r resout default], 0, [stdout], [stderr]) -CHECK_TCR([resout], [passed]) - -done - -AT_CLEANUP() - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/bootstrap/testsuite b/unit/atf-src/bootstrap/testsuite deleted file mode 100755 index 2c1aa3f38a..0000000000 --- a/unit/atf-src/bootstrap/testsuite +++ /dev/null @@ -1,5873 +0,0 @@ -#! /bin/sh -# Generated from bootstrap/testsuite.at by GNU Autoconf 2.69. -# -# Copyright (C) 2009-2012 Free Software Foundation, Inc. -# -# This test suite is free software; the Free Software Foundation gives -# unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - - - -SHELL=${CONFIG_SHELL-/bin/sh} - -# How were we run? -at_cli_args="$@" - - -# Not all shells have the 'times' builtin; the subshell is needed to make -# sure we discard the 'times: not found' message from the shell. -at_times_p=false -(times) >/dev/null 2>&1 && at_times_p=: - -# CLI Arguments to pass to the debugging scripts. -at_debug_args= -# -e sets to true -at_errexit_p=false -# Shall we be verbose? ':' means no, empty means yes. -at_verbose=: -at_quiet= -# Running several jobs in parallel, 0 means as many as test groups. -at_jobs=1 -at_traceon=: -at_trace_echo=: -at_check_filter_trace=: - -# Shall we keep the debug scripts? Must be `:' when the suite is -# run by a debug script, so that the script doesn't remove itself. -at_debug_p=false -# Display help message? -at_help_p=false -# Display the version message? -at_version_p=false -# List test groups? -at_list_p=false -# --clean -at_clean=false -# Test groups to run -at_groups= -# Whether to rerun failed tests. -at_recheck= -# Whether a write failure occurred -at_write_fail=0 - -# The directory we run the suite in. Default to . if no -C option. -at_dir=`pwd` -# An absolute reference to this testsuite script. -case $as_myself in - [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;; - * ) at_myself=$at_dir/$as_myself ;; -esac -# Whether -C is in effect. -at_change_dir=false - -# Whether to enable colored test results. -at_color=no -# List of the tested programs. -at_tested='' -# As many question marks as there are digits in the last test group number. -# Used to normalize the test group numbers so that `ls' lists them in -# numerical order. -at_format='?' -# Description of all the test groups. -at_help_all="1;t_test_program_filter.at:30;test_program: filter test cases by name;; -2;t_test_program_run.at:30;test_program: output format and exit codes;; -3;t_test_program_list.at:30;test_program: list test cases;; -4;t_test_program_compare.at:30;test_program: compare the user-visible interfaces;; -5;t_subr_atf_check.at:30;subr: atf_check function;; -" -# List of the all the test groups. -at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'` - -# at_fn_validate_ranges NAME... -# ----------------------------- -# Validate and normalize the test group number contained in each variable -# NAME. Leading zeroes are treated as decimal. -at_fn_validate_ranges () -{ - for at_grp - do - eval at_value=\$$at_grp - if test $at_value -lt 1 || test $at_value -gt 5; then - $as_echo "invalid test group: $at_value" >&2 - exit 1 - fi - case $at_value in - 0*) # We want to treat leading 0 as decimal, like expr and test, but - # AS_VAR_ARITH treats it as octal if it uses $(( )). - # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the - # expr fork, but it is not worth the effort to determine if the - # shell supports XSI when the user can just avoid leading 0. - eval $at_grp='`expr $at_value + 0`' ;; - esac - done -} - -at_prev= -for at_option -do - # If the previous option needs an argument, assign it. - if test -n "$at_prev"; then - at_option=$at_prev=$at_option - at_prev= - fi - - case $at_option in - *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;; - *) at_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $at_option in - --help | -h ) - at_help_p=: - ;; - - --list | -l ) - at_list_p=: - ;; - - --version | -V ) - at_version_p=: - ;; - - --clean | -c ) - at_clean=: - ;; - - --color ) - at_color=always - ;; - --color=* ) - case $at_optarg in - no | never | none) at_color=never ;; - auto | tty | if-tty) at_color=auto ;; - always | yes | force) at_color=always ;; - *) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'` - as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;; - esac - ;; - - --debug | -d ) - at_debug_p=: - ;; - - --errexit | -e ) - at_debug_p=: - at_errexit_p=: - ;; - - --verbose | -v ) - at_verbose=; at_quiet=: - ;; - - --trace | -x ) - at_traceon='set -x' - at_trace_echo=echo - at_check_filter_trace=at_fn_filter_trace - ;; - - [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]) - at_fn_validate_ranges at_option - as_fn_append at_groups "$at_option$as_nl" - ;; - - # Ranges - [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-) - at_range_start=`echo $at_option |tr -d X-` - at_fn_validate_ranges at_range_start - at_range=`$as_echo "$at_groups_all" | \ - sed -ne '/^'$at_range_start'$/,$p'` - as_fn_append at_groups "$at_range$as_nl" - ;; - - -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9]) - at_range_end=`echo $at_option |tr -d X-` - at_fn_validate_ranges at_range_end - at_range=`$as_echo "$at_groups_all" | \ - sed -ne '1,/^'$at_range_end'$/p'` - as_fn_append at_groups "$at_range$as_nl" - ;; - - [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \ - [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \ - [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \ - [0-9][0-9][0-9]-[0-9][0-9][0-9] | \ - [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \ - [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] ) - at_range_start=`expr $at_option : '\(.*\)-'` - at_range_end=`expr $at_option : '.*-\(.*\)'` - if test $at_range_start -gt $at_range_end; then - at_tmp=$at_range_end - at_range_end=$at_range_start - at_range_start=$at_tmp - fi - at_fn_validate_ranges at_range_start at_range_end - at_range=`$as_echo "$at_groups_all" | \ - sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'` - as_fn_append at_groups "$at_range$as_nl" - ;; - - # Directory selection. - --directory | -C ) - at_prev=--directory - ;; - --directory=* ) - at_change_dir=: - at_dir=$at_optarg - if test x- = "x$at_dir" ; then - at_dir=./- - fi - ;; - - # Parallel execution. - --jobs | -j ) - at_jobs=0 - ;; - --jobs=* | -j[0-9]* ) - if test -n "$at_optarg"; then - at_jobs=$at_optarg - else - at_jobs=`expr X$at_option : 'X-j\(.*\)'` - fi - case $at_jobs in *[!0-9]*) - at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'` - as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;; - esac - ;; - - # Keywords. - --keywords | -k ) - at_prev=--keywords - ;; - --keywords=* ) - at_groups_selected=$at_help_all - at_save_IFS=$IFS - IFS=, - set X $at_optarg - shift - IFS=$at_save_IFS - for at_keyword - do - at_invert= - case $at_keyword in - '!'*) - at_invert="-v" - at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'` - ;; - esac - # It is on purpose that we match the test group titles too. - at_groups_selected=`$as_echo "$at_groups_selected" | - grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"` - done - # Smash the keywords. - at_groups_selected=`$as_echo "$at_groups_selected" | sed 's/;.*//'` - as_fn_append at_groups "$at_groups_selected$as_nl" - ;; - --recheck) - at_recheck=: - ;; - - *=*) - at_envvar=`expr "x$at_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $at_envvar in - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$at_envvar'" ;; - esac - at_value=`$as_echo "$at_optarg" | sed "s/'/'\\\\\\\\''/g"` - # Export now, but save eval for later and for debug scripts. - export $at_envvar - as_fn_append at_debug_args " $at_envvar='$at_value'" - ;; - - *) $as_echo "$as_me: invalid option: $at_option" >&2 - $as_echo "Try \`$0 --help' for more information." >&2 - exit 1 - ;; - esac -done - -# Verify our last option didn't require an argument -if test -n "$at_prev"; then : - as_fn_error $? "\`$at_prev' requires an argument" -fi - -# The file containing the suite. -at_suite_log=$at_dir/$as_me.log - -# Selected test groups. -if test -z "$at_groups$at_recheck"; then - at_groups=$at_groups_all -else - if test -n "$at_recheck" && test -r "$at_suite_log"; then - at_oldfails=`sed -n ' - /^Failed tests:$/,/^Skipped tests:$/{ - s/^[ ]*\([1-9][0-9]*\):.*/\1/p - } - /^Unexpected passes:$/,/^## Detailed failed tests/{ - s/^[ ]*\([1-9][0-9]*\):.*/\1/p - } - /^## Detailed failed tests/q - ' "$at_suite_log"` - as_fn_append at_groups "$at_oldfails$as_nl" - fi - # Sort the tests, removing duplicates. - at_groups=`$as_echo "$at_groups" | sort -nu | sed '/^$/d'` -fi - -if test x"$at_color" = xalways \ - || { test x"$at_color" = xauto && test -t 1; }; then - at_red=`printf '\033[0;31m'` - at_grn=`printf '\033[0;32m'` - at_lgn=`printf '\033[1;32m'` - at_blu=`printf '\033[1;34m'` - at_std=`printf '\033[m'` -else - at_red= at_grn= at_lgn= at_blu= at_std= -fi - -# Help message. -if $at_help_p; then - cat <<_ATEOF || at_write_fail=1 -Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS] - -Run all the tests, or the selected TESTS, given by numeric ranges, and -save a detailed log file. Upon failure, create debugging scripts. - -Do not change environment variables directly. Instead, set them via -command line arguments. Set \`AUTOTEST_PATH' to select the executables -to exercise. Each relative directory is expanded as build and source -directories relative to the top level of this distribution. -E.g., from within the build directory /tmp/foo-1.0, invoking this: - - $ $0 AUTOTEST_PATH=bin - -is equivalent to the following, assuming the source directory is /src/foo-1.0: - - PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0 -_ATEOF -cat <<_ATEOF || at_write_fail=1 - -Operation modes: - -h, --help print the help message, then exit - -V, --version print version number, then exit - -c, --clean remove all the files this test suite might create and exit - -l, --list describes all the tests, or the selected TESTS -_ATEOF -cat <<_ATEOF || at_write_fail=1 - -Execution tuning: - -C, --directory=DIR - change to directory DIR before starting - --color[=never|auto|always] - enable colored test results on terminal, or always - -j, --jobs[=N] - Allow N jobs at once; infinite jobs with no arg (default 1) - -k, --keywords=KEYWORDS - select the tests matching all the comma-separated KEYWORDS - multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD - --recheck select all tests that failed or passed unexpectedly last time - -e, --errexit abort as soon as a test fails; implies --debug - -v, --verbose force more detailed output - default for debugging scripts - -d, --debug inhibit clean up and top-level logging - default for debugging scripts - -x, --trace enable tests shell tracing -_ATEOF -cat <<_ATEOF || at_write_fail=1 - -Report bugs to . -_ATEOF - exit $at_write_fail -fi - -# List of tests. -if $at_list_p; then - cat <<_ATEOF || at_write_fail=1 -Automated Testing Framework 0.17 test suite: bootstrap tests test groups: - - NUM: FILE-NAME:LINE TEST-GROUP-NAME - KEYWORDS - -_ATEOF - # Pass an empty line as separator between selected groups and help. - $as_echo "$at_groups$as_nl$as_nl$at_help_all" | - awk 'NF == 1 && FS != ";" { - selected[$ 1] = 1 - next - } - /^$/ { FS = ";" } - NF > 0 { - if (selected[$ 1]) { - printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3 - if ($ 4) { - lmax = 79 - indent = " " - line = indent - len = length (line) - n = split ($ 4, a, " ") - for (i = 1; i <= n; i++) { - l = length (a[i]) + 1 - if (i > 1 && len + l > lmax) { - print line - line = indent " " a[i] - len = length (line) - } else { - line = line " " a[i] - len += l - } - } - if (n) - print line - } - } - }' || at_write_fail=1 - exit $at_write_fail -fi -if $at_version_p; then - $as_echo "$as_me (Automated Testing Framework 0.17)" && - cat <<\_ATEOF || at_write_fail=1 - -Copyright (C) 2012 Free Software Foundation, Inc. -This test suite is free software; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. -_ATEOF - exit $at_write_fail -fi - -# Should we print banners? Yes if more than one test is run. -case $at_groups in #( - *$as_nl* ) - at_print_banners=: ;; #( - * ) at_print_banners=false ;; -esac -# Text for banner N, set to a single space once printed. - -# Take any -C into account. -if $at_change_dir ; then - test x != "x$at_dir" && cd "$at_dir" \ - || as_fn_error $? "unable to change directory" - at_dir=`pwd` -fi - -# Load the config files for any default variable assignments. -for at_file in atconfig atlocal -do - test -r $at_file || continue - . ./$at_file || as_fn_error $? "invalid content: $at_file" -done - -# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix: -: "${at_top_build_prefix=$at_top_builddir}" - -# Perform any assignments requested during argument parsing. -eval "$at_debug_args" - -# atconfig delivers names relative to the directory the test suite is -# in, but the groups themselves are run in testsuite-dir/group-dir. -if test -n "$at_top_srcdir"; then - builddir=../.. - for at_dir_var in srcdir top_srcdir top_build_prefix - do - eval at_val=\$at_$at_dir_var - case $at_val in - [\\/$]* | ?:[\\/]* ) at_prefix= ;; - *) at_prefix=../../ ;; - esac - eval "$at_dir_var=\$at_prefix\$at_val" - done -fi - -## -------------------- ## -## Directory structure. ## -## -------------------- ## - -# This is the set of directories and files used by this script -# (non-literals are capitalized): -# -# TESTSUITE - the testsuite -# TESTSUITE.log - summarizes the complete testsuite run -# TESTSUITE.dir/ - created during a run, remains after -d or failed test -# + at-groups/ - during a run: status of all groups in run -# | + NNN/ - during a run: meta-data about test group NNN -# | | + check-line - location (source file and line) of current AT_CHECK -# | | + status - exit status of current AT_CHECK -# | | + stdout - stdout of current AT_CHECK -# | | + stder1 - stderr, including trace -# | | + stderr - stderr, with trace filtered out -# | | + test-source - portion of testsuite that defines group -# | | + times - timestamps for computing duration -# | | + pass - created if group passed -# | | + xpass - created if group xpassed -# | | + fail - created if group failed -# | | + xfail - created if group xfailed -# | | + skip - created if group skipped -# + at-stop - during a run: end the run if this file exists -# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction -# + 0..NNN/ - created for each group NNN, remains after -d or failed test -# | + TESTSUITE.log - summarizes the group results -# | + ... - files created during the group - -# The directory the whole suite works in. -# Should be absolute to let the user `cd' at will. -at_suite_dir=$at_dir/$as_me.dir -# The file containing the suite ($at_dir might have changed since earlier). -at_suite_log=$at_dir/$as_me.log -# The directory containing helper files per test group. -at_helper_dir=$at_suite_dir/at-groups -# Stop file: if it exists, do not start new jobs. -at_stop_file=$at_suite_dir/at-stop -# The fifo used for the job dispatcher. -at_job_fifo=$at_suite_dir/at-job-fifo - -if $at_clean; then - test -d "$at_suite_dir" && - find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; - rm -f -r "$at_suite_dir" "$at_suite_log" - exit $? -fi - -# Don't take risks: use only absolute directories in PATH. -# -# For stand-alone test suites (ie. atconfig was not found), -# AUTOTEST_PATH is relative to `.'. -# -# For embedded test suites, AUTOTEST_PATH is relative to the top level -# of the package. Then expand it into build/src parts, since users -# may create executables in both places. -AUTOTEST_PATH=`$as_echo "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"` -at_path= -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $AUTOTEST_PATH $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR -case $as_dir in - [\\/]* | ?:[\\/]* ) - as_fn_append at_path "$as_dir" - ;; - * ) - if test -z "$at_top_build_prefix"; then - # Stand-alone test suite. - as_fn_append at_path "$as_dir" - else - # Embedded test suite. - as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR" - as_fn_append at_path "$at_top_srcdir/$as_dir" - fi - ;; -esac - done -IFS=$as_save_IFS - - -# Now build and simplify PATH. -# -# There might be directories that don't exist, but don't redirect -# builtins' (eg., cd) stderr directly: Ultrix's sh hates that. -at_new_path= -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $at_path -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -d "$as_dir" || continue -case $as_dir in - [\\/]* | ?:[\\/]* ) ;; - * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;; -esac -case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in - *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;; - $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;; - *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;; -esac - done -IFS=$as_save_IFS - -PATH=$at_new_path -export PATH - -# Setting up the FDs. - - - -# 5 is the log file. Not to be overwritten if `-d'. -if $at_debug_p; then - at_suite_log=/dev/null -else - : >"$at_suite_log" -fi -exec 5>>"$at_suite_log" - -# Banners and logs. -$as_echo "## ------------------------------------------------------------- ## -## Automated Testing Framework 0.17 test suite: bootstrap tests. ## -## ------------------------------------------------------------- ##" -{ - $as_echo "## ------------------------------------------------------------- ## -## Automated Testing Framework 0.17 test suite: bootstrap tests. ## -## ------------------------------------------------------------- ##" - echo - - $as_echo "$as_me: command line was:" - $as_echo " \$ $0 $at_cli_args" - echo - - # If ChangeLog exists, list a few lines in case it might help determining - # the exact version. - if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then - $as_echo "## ---------- ## -## ChangeLog. ## -## ---------- ##" - echo - sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog" - echo - fi - - { -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} - echo - - # Contents of the config files. - for at_file in atconfig atlocal - do - test -r $at_file || continue - $as_echo "$as_me: $at_file:" - sed 's/^/| /' $at_file - echo - done -} >&5 - - -## ------------------------- ## -## Autotest shell functions. ## -## ------------------------- ## - -# at_fn_banner NUMBER -# ------------------- -# Output banner NUMBER, provided the testsuite is running multiple groups and -# this particular banner has not yet been printed. -at_fn_banner () -{ - $at_print_banners || return 0 - eval at_banner_text=\$at_banner_text_$1 - test "x$at_banner_text" = "x " && return 0 - eval "at_banner_text_$1=\" \"" - if test -z "$at_banner_text"; then - $at_first || echo - else - $as_echo "$as_nl$at_banner_text$as_nl" - fi -} # at_fn_banner - -# at_fn_check_prepare_notrace REASON LINE -# --------------------------------------- -# Perform AT_CHECK preparations for the command at LINE for an untraceable -# command; REASON is the reason for disabling tracing. -at_fn_check_prepare_notrace () -{ - $at_trace_echo "Not enabling shell tracing (command contains $1)" - $as_echo "$2" >"$at_check_line_file" - at_check_trace=: at_check_filter=: - : >"$at_stdout"; : >"$at_stderr" -} - -# at_fn_check_prepare_trace LINE -# ------------------------------ -# Perform AT_CHECK preparations for the command at LINE for a traceable -# command. -at_fn_check_prepare_trace () -{ - $as_echo "$1" >"$at_check_line_file" - at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace - : >"$at_stdout"; : >"$at_stderr" -} - -# at_fn_check_prepare_dynamic COMMAND LINE -# ---------------------------------------- -# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate -# preparation function. -at_fn_check_prepare_dynamic () -{ - case $1 in - *$as_nl*) - at_fn_check_prepare_notrace 'an embedded newline' "$2" ;; - *) - at_fn_check_prepare_trace "$2" ;; - esac -} - -# at_fn_filter_trace -# ------------------ -# Remove the lines in the file "$at_stderr" generated by "set -x" and print -# them to stderr. -at_fn_filter_trace () -{ - mv "$at_stderr" "$at_stder1" - grep '^ *+' "$at_stder1" >&2 - grep -v '^ *+' "$at_stder1" >"$at_stderr" -} - -# at_fn_log_failure FILE-LIST -# --------------------------- -# Copy the files in the list on stdout with a "> " prefix, and exit the shell -# with a failure exit code. -at_fn_log_failure () -{ - for file - do $as_echo "$file:"; sed 's/^/> /' "$file"; done - echo 1 > "$at_status_file" - exit 1 -} - -# at_fn_check_skip EXIT-CODE LINE -# ------------------------------- -# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit -# the test group subshell with that same exit code. Use LINE in any report -# about test failure. -at_fn_check_skip () -{ - case $1 in - 99) echo 99 > "$at_status_file"; at_failed=: - $as_echo "$2: hard failure"; exit 99;; - 77) echo 77 > "$at_status_file"; exit 77;; - esac -} - -# at_fn_check_status EXPECTED EXIT-CODE LINE -# ------------------------------------------ -# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing. -# Otherwise, if it is 77 or 99, exit the test group subshell with that same -# exit code; if it is anything else print an error message referring to LINE, -# and fail the test. -at_fn_check_status () -{ - case $2 in - $1 ) ;; - 77) echo 77 > "$at_status_file"; exit 77;; - 99) echo 99 > "$at_status_file"; at_failed=: - $as_echo "$3: hard failure"; exit 99;; - *) $as_echo "$3: exit code was $2, expected $1" - at_failed=:;; - esac -} - -# at_fn_diff_devnull FILE -# ----------------------- -# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff -# invocations. -at_fn_diff_devnull () -{ - test -s "$1" || return 0 - $at_diff "$at_devnull" "$1" -} - -# at_fn_test NUMBER -# ----------------- -# Parse out test NUMBER from the tail of this file. -at_fn_test () -{ - eval at_sed=\$at_sed$1 - sed "$at_sed" "$at_myself" > "$at_test_source" -} - -# at_fn_create_debugging_script -# ----------------------------- -# Create the debugging script $at_group_dir/run which will reproduce the -# current test group. -at_fn_create_debugging_script () -{ - { - echo "#! /bin/sh" && - echo 'test "${ZSH_VERSION+set}" = set && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' && - $as_echo "cd '$at_dir'" && - $as_echo "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" && - echo 'exit 1' - } >"$at_group_dir/run" && - chmod +x "$at_group_dir/run" -} - -## -------------------------------- ## -## End of autotest shell functions. ## -## -------------------------------- ## -{ - $as_echo "## ---------------- ## -## Tested programs. ## -## ---------------- ##" - echo -} >&5 - -# Report what programs are being tested. -for at_program in : $at_tested -do - test "$at_program" = : && continue - case $at_program in - [\\/]* | ?:[\\/]* ) $at_program_=$at_program ;; - * ) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -f "$as_dir/$at_program" && break - done -IFS=$as_save_IFS - - at_program_=$as_dir/$at_program ;; - esac - if test -f "$at_program_"; then - { - $as_echo "$at_srcdir/testsuite.at:30: $at_program_ --version" - "$at_program_" --version &5 2>&1 - else - as_fn_error $? "cannot find $at_program" "$LINENO" 5 - fi -done - -{ - $as_echo "## ------------------ ## -## Running the tests. ## -## ------------------ ##" -} >&5 - -at_start_date=`date` -at_start_time=`date +%s 2>/dev/null` -$as_echo "$as_me: starting at: $at_start_date" >&5 - -# Create the master directory if it doesn't already exist. -as_dir="$at_suite_dir"; as_fn_mkdir_p || - as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5 - -# Can we diff with `/dev/null'? DU 5.0 refuses. -if diff /dev/null /dev/null >/dev/null 2>&1; then - at_devnull=/dev/null -else - at_devnull=$at_suite_dir/devnull - >"$at_devnull" -fi - -# Use `diff -u' when possible. -if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff" -then - at_diff='diff -u' -else - at_diff=diff -fi - -# Get the last needed group. -for at_group in : $at_groups; do :; done - -# Extract the start and end lines of each test group at the tail -# of this file -awk ' -BEGIN { FS="" } -/^#AT_START_/ { - start = NR -} -/^#AT_STOP_/ { - test = substr ($ 0, 10) - print "at_sed" test "=\"1," start "d;" (NR-1) "q\"" - if (test == "'"$at_group"'") exit -}' "$at_myself" > "$at_suite_dir/at-source-lines" && -. "$at_suite_dir/at-source-lines" || - as_fn_error $? "cannot create test line number cache" "$LINENO" 5 -rm -f "$at_suite_dir/at-source-lines" - -# Set number of jobs for `-j'; avoid more jobs than test groups. -set X $at_groups; shift; at_max_jobs=$# -if test $at_max_jobs -eq 0; then - at_jobs=1 -fi -if test $at_jobs -ne 1 && - { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then - at_jobs=$at_max_jobs -fi - -# If parallel mode, don't output banners, don't split summary lines. -if test $at_jobs -ne 1; then - at_print_banners=false - at_quiet=: -fi - -# Set up helper dirs. -rm -rf "$at_helper_dir" && -mkdir "$at_helper_dir" && -cd "$at_helper_dir" && -{ test -z "$at_groups" || mkdir $at_groups; } || -as_fn_error $? "testsuite directory setup failed" "$LINENO" 5 - -# Functions for running a test group. We leave the actual -# test group execution outside of a shell function in order -# to avoid hitting zsh 4.x exit status bugs. - -# at_fn_group_prepare -# ------------------- -# Prepare for running a test group. -at_fn_group_prepare () -{ - # The directory for additional per-group helper files. - at_job_dir=$at_helper_dir/$at_group - # The file containing the location of the last AT_CHECK. - at_check_line_file=$at_job_dir/check-line - # The file containing the exit status of the last command. - at_status_file=$at_job_dir/status - # The files containing the output of the tested commands. - at_stdout=$at_job_dir/stdout - at_stder1=$at_job_dir/stder1 - at_stderr=$at_job_dir/stderr - # The file containing the code for a test group. - at_test_source=$at_job_dir/test-source - # The file containing dates. - at_times_file=$at_job_dir/times - - # Be sure to come back to the top test directory. - cd "$at_suite_dir" - - # Clearly separate the test groups when verbose. - $at_first || $at_verbose echo - - at_group_normalized=$at_group - - eval 'while :; do - case $at_group_normalized in #( - '"$at_format"'*) break;; - esac - at_group_normalized=0$at_group_normalized - done' - - - # Create a fresh directory for the next test group, and enter. - # If one already exists, the user may have invoked ./run from - # within that directory; we remove the contents, but not the - # directory itself, so that we aren't pulling the rug out from - # under the shell's notion of the current directory. - at_group_dir=$at_suite_dir/$at_group_normalized - at_group_log=$at_group_dir/$as_me.log - if test -d "$at_group_dir"; then - find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \; - rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??* -fi || - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5 -$as_echo "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;} - # Be tolerant if the above `rm' was not able to remove the directory. - as_dir="$at_group_dir"; as_fn_mkdir_p - - echo 0 > "$at_status_file" - - # In verbose mode, append to the log file *and* show on - # the standard output; in quiet mode only write to the log. - if test -z "$at_verbose"; then - at_tee_pipe='tee -a "$at_group_log"' - else - at_tee_pipe='cat >> "$at_group_log"' - fi -} - -# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER] -# ------------------------------------------------- -# Declare the test group ORDINAL, located at LINE with group description DESC, -# and residing under BANNER. Use PAD to align the status column. -at_fn_group_banner () -{ - at_setup_line="$2" - test -n "$5" && at_fn_banner $5 - at_desc="$3" - case $1 in - [0-9]) at_desc_line=" $1: ";; - [0-9][0-9]) at_desc_line=" $1: " ;; - *) at_desc_line="$1: " ;; - esac - as_fn_append at_desc_line "$3$4" - $at_quiet $as_echo_n "$at_desc_line" - echo "# -*- compilation -*-" >> "$at_group_log" -} - -# at_fn_group_postprocess -# ----------------------- -# Perform cleanup after running a test group. -at_fn_group_postprocess () -{ - # Be sure to come back to the suite directory, in particular - # since below we might `rm' the group directory we are in currently. - cd "$at_suite_dir" - - if test ! -f "$at_check_line_file"; then - sed "s/^ */$as_me: WARNING: /" <<_ATEOF - A failure happened in a test group before any test could be - run. This means that test suite is improperly designed. Please - report this failure to . -_ATEOF - $as_echo "$at_setup_line" >"$at_check_line_file" - at_status=99 - fi - $at_verbose $as_echo_n "$at_group. $at_setup_line: " - $as_echo_n "$at_group. $at_setup_line: " >> "$at_group_log" - case $at_xfail:$at_status in - yes:0) - at_msg="UNEXPECTED PASS" - at_res=xpass - at_errexit=$at_errexit_p - at_color=$at_red - ;; - no:0) - at_msg="ok" - at_res=pass - at_errexit=false - at_color=$at_grn - ;; - *:77) - at_msg='skipped ('`cat "$at_check_line_file"`')' - at_res=skip - at_errexit=false - at_color=$at_blu - ;; - no:* | *:99) - at_msg='FAILED ('`cat "$at_check_line_file"`')' - at_res=fail - at_errexit=$at_errexit_p - at_color=$at_red - ;; - yes:*) - at_msg='expected failure ('`cat "$at_check_line_file"`')' - at_res=xfail - at_errexit=false - at_color=$at_lgn - ;; - esac - echo "$at_res" > "$at_job_dir/$at_res" - # In parallel mode, output the summary line only afterwards. - if test $at_jobs -ne 1 && test -n "$at_verbose"; then - $as_echo "$at_desc_line $at_color$at_msg$at_std" - else - # Make sure there is a separator even with long titles. - $as_echo " $at_color$at_msg$at_std" - fi - at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg" - case $at_status in - 0|77) - # $at_times_file is only available if the group succeeded. - # We're not including the group log, so the success message - # is written in the global log separately. But we also - # write to the group log in case they're using -d. - if test -f "$at_times_file"; then - at_log_msg="$at_log_msg ("`sed 1d "$at_times_file"`')' - rm -f "$at_times_file" - fi - $as_echo "$at_log_msg" >> "$at_group_log" - $as_echo "$at_log_msg" >&5 - - # Cleanup the group directory, unless the user wants the files - # or the success was unexpected. - if $at_debug_p || test $at_res = xpass; then - at_fn_create_debugging_script - if test $at_res = xpass && $at_errexit; then - echo stop > "$at_stop_file" - fi - else - if test -d "$at_group_dir"; then - find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; - rm -fr "$at_group_dir" - fi - rm -f "$at_test_source" - fi - ;; - *) - # Upon failure, include the log into the testsuite's global - # log. The failure message is written in the group log. It - # is later included in the global log. - $as_echo "$at_log_msg" >> "$at_group_log" - - # Upon failure, keep the group directory for autopsy, and create - # the debugging script. With -e, do not start any further tests. - at_fn_create_debugging_script - if $at_errexit; then - echo stop > "$at_stop_file" - fi - ;; - esac -} - - -## ------------ ## -## Driver loop. ## -## ------------ ## - - -if (set -m && set +m && set +b) >/dev/null 2>&1; then - set +b - at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=- -else - at_job_control_on=: at_job_control_off=: at_job_group= -fi - -for at_signal in 1 2 15; do - trap 'set +x; set +e - $at_job_control_off - at_signal='"$at_signal"' - echo stop > "$at_stop_file" - trap "" $at_signal - at_pgids= - for at_pgid in `jobs -p 2>/dev/null`; do - at_pgids="$at_pgids $at_job_group$at_pgid" - done - test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null - wait - if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then - echo >&2 - fi - at_signame=`kill -l $at_signal 2>&1 || echo $at_signal` - set x $at_signame - test 1 -gt 2 && at_signame=$at_signal - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5 -$as_echo "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;} - as_fn_arith 128 + $at_signal && exit_status=$as_val - as_fn_exit $exit_status' $at_signal -done - -rm -f "$at_stop_file" -at_first=: - -if test $at_jobs -ne 1 && - rm -f "$at_job_fifo" && - test -n "$at_job_group" && - ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null -then - # FIFO job dispatcher. - - trap 'at_pids= - for at_pid in `jobs -p`; do - at_pids="$at_pids $at_job_group$at_pid" - done - if test -n "$at_pids"; then - at_sig=TSTP - test "${TMOUT+set}" = set && at_sig=STOP - kill -$at_sig $at_pids 2>/dev/null - fi - kill -STOP $$ - test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP - - echo - # Turn jobs into a list of numbers, starting from 1. - at_joblist=`$as_echo "$at_groups" | sed -n 1,${at_jobs}p` - - set X $at_joblist - shift - for at_group in $at_groups; do - $at_job_control_on 2>/dev/null - ( - # Start one test group. - $at_job_control_off - if $at_first; then - exec 7>"$at_job_fifo" - else - exec 6<&- - fi - trap 'set +x; set +e - trap "" PIPE - echo stop > "$at_stop_file" - echo >&7 - as_fn_exit 141' PIPE - at_fn_group_prepare - if cd "$at_group_dir" && - at_fn_test $at_group && - . "$at_test_source" - then :; else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 -$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} - at_failed=: - fi - at_fn_group_postprocess - echo >&7 - ) & - $at_job_control_off - if $at_first; then - at_first=false - exec 6<"$at_job_fifo" 7>"$at_job_fifo" - fi - shift # Consume one token. - if test $# -gt 0; then :; else - read at_token <&6 || break - set x $* - fi - test -f "$at_stop_file" && break - done - exec 7>&- - # Read back the remaining ($at_jobs - 1) tokens. - set X $at_joblist - shift - if test $# -gt 0; then - shift - for at_job - do - read at_token - done <&6 - fi - exec 6<&- - wait -else - # Run serially, avoid forks and other potential surprises. - for at_group in $at_groups; do - at_fn_group_prepare - if cd "$at_group_dir" && - at_fn_test $at_group && - . "$at_test_source"; then :; else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 -$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} - at_failed=: - fi - at_fn_group_postprocess - test -f "$at_stop_file" && break - at_first=false - done -fi - -# Wrap up the test suite with summary statistics. -cd "$at_helper_dir" - -# Use ?..???? when the list must remain sorted, the faster * otherwise. -at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'` -at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'` -at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'` -at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do - echo $f; done | sed '/?/d; s,/xpass,,'` -at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do - echo $f; done | sed '/?/d; s,/fail,,'` - -set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list -shift; at_group_count=$# -set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$* -set X $at_xfail_list; shift; at_xfail_count=$# -set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$* -set X $at_skip_list; shift; at_skip_count=$# - -as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val -as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val -as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val - -# Back to the top directory. -cd "$at_dir" -rm -rf "$at_helper_dir" - -# Compute the duration of the suite. -at_stop_date=`date` -at_stop_time=`date +%s 2>/dev/null` -$as_echo "$as_me: ending at: $at_stop_date" >&5 -case $at_start_time,$at_stop_time in - [0-9]*,[0-9]*) - as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val - as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val - as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val - as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val - as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val - at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s" - $as_echo "$as_me: test suite duration: $at_duration" >&5 - ;; -esac - -echo -$as_echo "## ------------- ## -## Test results. ## -## ------------- ##" -echo -{ - echo - $as_echo "## ------------- ## -## Test results. ## -## ------------- ##" - echo -} >&5 - -if test $at_run_count = 1; then - at_result="1 test" - at_were=was -else - at_result="$at_run_count tests" - at_were=were -fi -if $at_errexit_p && test $at_unexpected_count != 0; then - if test $at_xpass_count = 1; then - at_result="$at_result $at_were run, one passed" - else - at_result="$at_result $at_were run, one failed" - fi - at_result="$at_result unexpectedly and inhibited subsequent tests." - at_color=$at_red -else - # Don't you just love exponential explosion of the number of cases? - at_color=$at_red - case $at_xpass_count:$at_fail_count:$at_xfail_count in - # So far, so good. - 0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;; - 0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;; - - # Some unexpected failures - 0:*:0) at_result="$at_result $at_were run, -$at_fail_count failed unexpectedly." ;; - - # Some failures, both expected and unexpected - 0:*:1) at_result="$at_result $at_were run, -$at_total_fail_count failed ($at_xfail_count expected failure)." ;; - 0:*:*) at_result="$at_result $at_were run, -$at_total_fail_count failed ($at_xfail_count expected failures)." ;; - - # No unexpected failures, but some xpasses - *:0:*) at_result="$at_result $at_were run, -$at_xpass_count passed unexpectedly." ;; - - # No expected failures, but failures and xpasses - *:1:0) at_result="$at_result $at_were run, -$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;; - *:*:0) at_result="$at_result $at_were run, -$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;; - - # All of them. - *:*:1) at_result="$at_result $at_were run, -$at_xpass_count passed unexpectedly, -$at_total_fail_count failed ($at_xfail_count expected failure)." ;; - *:*:*) at_result="$at_result $at_were run, -$at_xpass_count passed unexpectedly, -$at_total_fail_count failed ($at_xfail_count expected failures)." ;; - esac - - if test $at_skip_count = 0 && test $at_run_count -gt 1; then - at_result="All $at_result" - fi -fi - -# Now put skips in the mix. -case $at_skip_count in - 0) ;; - 1) at_result="$at_result -1 test was skipped." ;; - *) at_result="$at_result -$at_skip_count tests were skipped." ;; -esac - -if test $at_unexpected_count = 0; then - echo "$at_color$at_result$at_std" - echo "$at_result" >&5 -else - echo "${at_color}ERROR: $at_result$at_std" >&2 - echo "ERROR: $at_result" >&5 - { - echo - $as_echo "## ------------------------ ## -## Summary of the failures. ## -## ------------------------ ##" - - # Summary of failed and skipped tests. - if test $at_fail_count != 0; then - echo "Failed tests:" - $SHELL "$at_myself" $at_fail_list --list - echo - fi - if test $at_skip_count != 0; then - echo "Skipped tests:" - $SHELL "$at_myself" $at_skip_list --list - echo - fi - if test $at_xpass_count != 0; then - echo "Unexpected passes:" - $SHELL "$at_myself" $at_xpass_list --list - echo - fi - if test $at_fail_count != 0; then - $as_echo "## ---------------------- ## -## Detailed failed tests. ## -## ---------------------- ##" - echo - for at_group in $at_fail_list - do - at_group_normalized=$at_group - - eval 'while :; do - case $at_group_normalized in #( - '"$at_format"'*) break;; - esac - at_group_normalized=0$at_group_normalized - done' - - cat "$at_suite_dir/$at_group_normalized/$as_me.log" - echo - done - echo - fi - if test -n "$at_top_srcdir"; then - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## ${at_top_build_prefix}config.log ## -_ASBOX - sed 's/^/| /' ${at_top_build_prefix}config.log - echo - fi - } >&5 - - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## $as_me.log was created. ## -_ASBOX - - echo - if $at_debug_p; then - at_msg='per-test log files' - else - at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'" - fi - $as_echo "Please send $at_msg and all information you think might help: - - To: - Subject: [Automated Testing Framework 0.17] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly} - -You may investigate any problem if you feel able to do so, in which -case the test suite provides a good starting point. Its output may -be found below \`${at_testdir+${at_testdir}/}$as_me.dir'. -" - exit 1 -fi - -exit 0 - -## ------------- ## -## Actual tests. ## -## ------------- ## -#AT_START_1 -at_fn_group_banner 1 't_test_program_filter.at:30' \ - "test_program: filter test cases by name" " " -at_xfail=no -( - $as_echo "1. $at_setup_line: testing $at_desc ..." - $at_traceon - - -for h in tp_basic_c tp_basic_cpp tp_basic_sh; do - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:35: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap invalid" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_filter.at:35" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap invalid -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_filter.at:35" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:36: grep \"Unknown test case .invalid'\" stderr" -at_fn_check_prepare_trace "t_test_program_filter.at:36" -( $at_check_trace; grep "Unknown test case .invalid'" stderr -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:36" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:40: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap \"*p*\"" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_filter.at:40" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap "*p*" -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_filter.at:40" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:41: grep \"Unknown test case .\\\\*p\\\\*'\" stderr" -at_fn_check_prepare_trace "t_test_program_filter.at:41" -( $at_check_trace; grep "Unknown test case .\\*p\\*'" stderr -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:41" -$at_failed && at_fn_log_failure -$at_traceon; } - - -cat >expres <<'_ATEOF' -passed -_ATEOF - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:46: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_filter.at:46" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:46" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:47: cmp -s resout expres" -at_fn_check_prepare_trace "t_test_program_filter.at:47" -( $at_check_trace; cmp -s resout expres -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:47" -$at_failed && at_fn_log_failure -$at_traceon; } - - -cat >expres <<'_ATEOF' -skipped: By design -_ATEOF - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:51: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_filter.at:51" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:51" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:52: cmp -s resout expres" -at_fn_check_prepare_trace "t_test_program_filter.at:52" -( $at_check_trace; cmp -s resout expres -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:52" -$at_failed && at_fn_log_failure -$at_traceon; } - - -cat >expres <<'_ATEOF' -failed: On purpose -_ATEOF - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:56: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_filter.at:56" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_filter.at:56" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_filter.at:57: cmp -s resout expres" -at_fn_check_prepare_trace "t_test_program_filter.at:57" -( $at_check_trace; cmp -s resout expres -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_filter.at:57" -$at_failed && at_fn_log_failure -$at_traceon; } - - -done - - set +x - $at_times_p && times >"$at_times_file" -) 5>&1 2>&1 7>&- | eval $at_tee_pipe -read at_status <"$at_status_file" -#AT_STOP_1 -#AT_START_2 -at_fn_group_banner 2 't_test_program_run.at:30' \ - "test_program: output format and exit codes" " " -at_xfail=no -( - $as_echo "2. $at_setup_line: testing $at_desc ..." - $at_traceon - - -for h in tp_basic_c tp_basic_cpp tp_basic_sh; do - -{ set +x -$as_echo "$at_srcdir/t_test_program_run.at:35: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_run.at:35" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:35" -$at_failed && at_fn_log_failure -$at_traceon; } - -echo 'passed' >expres <>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:36" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_run.at:38: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_run.at:38" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_run.at:38" -$at_failed && at_fn_log_failure -$at_traceon; } - -echo 'failed' >expres <expres - { set +x -$as_echo "$at_srcdir/t_test_program_run.at:39: diff -u expres resout" -at_fn_check_prepare_trace "t_test_program_run.at:39" -( $at_check_trace; diff -u expres resout -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:39" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_run.at:41: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_run.at:41" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:41" -$at_failed && at_fn_log_failure -$at_traceon; } - -echo 'skipped' >expres <expres - { set +x -$as_echo "$at_srcdir/t_test_program_run.at:42: diff -u expres resout" -at_fn_check_prepare_trace "t_test_program_run.at:42" -( $at_check_trace; diff -u expres resout -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:42" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_run.at:44: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout default" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_run.at:44" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout default -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:44" -$at_failed && at_fn_log_failure -$at_traceon; } - -echo 'passed' >expres <>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_run.at:45" -$at_failed && at_fn_log_failure -$at_traceon; } - - -done - - set +x - $at_times_p && times >"$at_times_file" -) 5>&1 2>&1 7>&- | eval $at_tee_pipe -read at_status <"$at_status_file" -#AT_STOP_2 -#AT_START_3 -at_fn_group_banner 3 't_test_program_list.at:30' \ - "test_program: list test cases" " " -at_xfail=no -( - $as_echo "3. $at_setup_line: testing $at_desc ..." - $at_traceon - - -for h in tp_basic_c tp_basic_cpp tp_basic_sh; do - -cat >expout <<'_ATEOF' -Content-Type: application/X-atf-tp; version="1" - -ident: pass -descr: An empty test case that always passes - -ident: fail -descr: An empty test case that always fails - -ident: skip -descr: An empty test case that is always skipped - -ident: default -descr: A test case that passes without explicitly stating it -_ATEOF - - -{ set +x -$as_echo "$at_srcdir/t_test_program_list.at:49: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -l" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_list.at:49" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -l -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_list.at:49" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_list.at:51: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -l pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_list.at:51" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -l pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_list.at:51" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_list.at:52: grep 'Cannot provide test case names with -l' stderr" -at_fn_check_prepare_trace "t_test_program_list.at:52" -( $at_check_trace; grep 'Cannot provide test case names with -l' stderr -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_list.at:52" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_list.at:55: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_\${h} \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -l pass fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_list.at:55" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_${h} \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -l pass fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_list.at:55" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_list.at:56: grep 'Cannot provide test case names with -l' stderr" -at_fn_check_prepare_trace "t_test_program_list.at:56" -( $at_check_trace; grep 'Cannot provide test case names with -l' stderr -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_list.at:56" -$at_failed && at_fn_log_failure -$at_traceon; } - - -done - - set +x - $at_times_p && times >"$at_times_file" -) 5>&1 2>&1 7>&- | eval $at_tee_pipe -read at_status <"$at_status_file" -#AT_STOP_3 -#AT_START_4 -at_fn_group_banner 4 't_test_program_compare.at:30' \ - "test_program: compare the user-visible interfaces" "" -at_xfail=no -( - $as_echo "4. $at_setup_line: testing $at_desc ..." - $at_traceon - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:33: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:33" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:33" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:35: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:35" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:35" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:37: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:37" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:37" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:40: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -h" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:40" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -h -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:40" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:42: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -h" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:42" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -h -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:42" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:44: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -h" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:44" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -h -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:44" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:47: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -Z" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:47" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -Z -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:47" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:49: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -Z" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:49" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -Z -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:49" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:51: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -Z" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:51" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -Z -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:51" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:54: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -l" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:54" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -l -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:54" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:56: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -l" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:56" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -l -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:56" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:58: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -l" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:58" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -l -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:58" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:61: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:61" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:61" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:65: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:65" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:65" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:69: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:69" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:69" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:73: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:73" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:73" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:78: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:78" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:78" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:80: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:80" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:80" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:84: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:84" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:84" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:86: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:86" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:86" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:89: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:89" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:89" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:94: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:94" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:94" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:96: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:96" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:96" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:100: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:100" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:100" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:102: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:102" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:102" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:105: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:105" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:105" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:110: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:110" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:110" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:112: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:112" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:112" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:116: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:116" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:116" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:118: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:118" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:118" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:121: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout default" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:121" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout default -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:121" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -sed 's,tp_basic_c,tp_basic_cpp,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:126: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout default" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:126" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout default -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:126" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:128: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:128" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:128" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -sed 's,tp_basic_c,tp_basic_sh,g' resexp -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:132: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap -r resout default" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:132" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap -r resout default -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:132" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:134: cmp -s resout resexp" -at_fn_check_prepare_trace "t_test_program_compare.at:134" -( $at_check_trace; cmp -s resout resexp -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -at_fn_diff_devnull "$at_stderr" || at_failed=: -at_fn_diff_devnull "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:134" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:137: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap pass fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:137" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap pass fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:137" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:141: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap pass fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:141" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap pass fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:141" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:145: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap pass fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:145" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap pass fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:145" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:149: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap unknown" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:149" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap unknown -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:149" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:153: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap unknown" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:153" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap unknown -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:153" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:157: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap unknown" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:157" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap unknown -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 1 $at_status "$at_srcdir/t_test_program_compare.at:157" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:161: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap pass:cleanup" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:161" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap pass:cleanup -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:161" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:165: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap pass:cleanup" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:165" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap pass:cleanup -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:165" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:169: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap pass:cleanup" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:169" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap pass:cleanup -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:169" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:173: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_c \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:173" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_c \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; tee stderr <"$at_stderr" -echo stdout:; tee stdout <"$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:173" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_cpp,g' expout -sed 's,tp_basic_c,tp_basic_cpp,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:177: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_cpp \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:177" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_cpp \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:177" -$at_failed && at_fn_log_failure -$at_traceon; } - -sed 's,tp_basic_c,tp_basic_sh,g' expout -sed 's,tp_basic_c,tp_basic_sh,g' experr -{ set +x -$as_echo "$at_srcdir/t_test_program_compare.at:181: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_basic_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap skip" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_test_program_compare.at:181" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_basic_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap skip -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -$at_diff experr "$at_stderr" || at_failed=: -$at_diff expout "$at_stdout" || at_failed=: -at_fn_check_status 0 $at_status "$at_srcdir/t_test_program_compare.at:181" -$at_failed && at_fn_log_failure -$at_traceon; } - - - set +x - $at_times_p && times >"$at_times_file" -) 5>&1 2>&1 7>&- | eval $at_tee_pipe -read at_status <"$at_status_file" -#AT_STOP_4 -#AT_START_5 -at_fn_group_banner 5 't_subr_atf_check.at:30' \ - "subr: atf_check function" " " -at_xfail=no -( - $as_echo "5. $at_setup_line: testing $at_desc ..." - $at_traceon - - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:32: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap exitcode_0_0" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:32" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap exitcode_0_0 -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:32" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:34: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap exitcode_0_1" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:34" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap exitcode_0_1 -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:34" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:36: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap exitcode_1_0" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:36" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap exitcode_1_0 -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:36" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:38: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap exitcode_1_1" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:38" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap exitcode_1_1 -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:38" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:41: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_expout_pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:41" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_expout_pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:41" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:43: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_expout_fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:43" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_expout_fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:43" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:45: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_ignore_empty" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:45" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_ignore_empty -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:45" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:47: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_ignore_sth" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:47" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_ignore_sth -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:47" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:49: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_null_empty" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:49" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_null_empty -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:49" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:51: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_null_sth" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:51" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_null_sth -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:51" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:53: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_stdout_written" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:53" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_stdout_written -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:53" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:55: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_match_ok" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:55" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_match_ok -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:55" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:57: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stdout_match_fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:57" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stdout_match_fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:57" -$at_failed && at_fn_log_failure -$at_traceon; } - - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:60: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_experr_pass" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:60" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_experr_pass -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:60" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:62: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_experr_fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:62" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_experr_fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:62" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:64: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_ignore_empty" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:64" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_ignore_empty -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:64" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:66: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_ignore_sth" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:66" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_ignore_sth -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:66" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:68: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_null_empty" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:68" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_null_empty -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:68" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:70: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_null_sth" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:70" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_null_sth -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:70" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:72: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_stderr_written" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:72" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_stderr_written -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:72" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:74: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_match_ok" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:74" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_match_ok -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 0 $at_status "$at_srcdir/t_subr_atf_check.at:74" -$at_failed && at_fn_log_failure -$at_traceon; } - -{ set +x -$as_echo "$at_srcdir/t_subr_atf_check.at:76: \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap/h_tp_atf_check_sh \\ - -s \$({ - old=\$(pwd) - while test \$(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=\$(pwd) - cd \${old} - echo \${topdir} -})/bootstrap stderr_match_fail" -at_fn_check_prepare_notrace 'a $(...) command substitution' "t_subr_atf_check.at:76" -( $at_check_trace; $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap/h_tp_atf_check_sh \ - -s $({ - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -})/bootstrap stderr_match_fail -) >>"$at_stdout" 2>>"$at_stderr" 5>&- -at_status=$? at_failed=false -$at_check_filter -echo stderr:; cat "$at_stderr" -echo stdout:; cat "$at_stdout" -at_fn_check_status 1 $at_status "$at_srcdir/t_subr_atf_check.at:76" -$at_failed && at_fn_log_failure -$at_traceon; } - - - set +x - $at_times_p && times >"$at_times_file" -) 5>&1 2>&1 7>&- | eval $at_tee_pipe -read at_status <"$at_status_file" -#AT_STOP_5 diff --git a/unit/atf-src/bootstrap/testsuite.at b/unit/atf-src/bootstrap/testsuite.at deleted file mode 100644 index f13d391069..0000000000 --- a/unit/atf-src/bootstrap/testsuite.at +++ /dev/null @@ -1,80 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AT_INIT([bootstrap tests]) - -m4_define([GUESS_TOPDIR], { - old=$(pwd) - while test $(pwd) != '/' -a ! -e ./Makefile; do - cd .. - done - topdir=$(pwd) - cd ${old} - echo ${topdir} -}) - -m4_define([APP_HELPER], [$(GUESS_TOPDIR)/bootstrap/h_$1]) - -m4_define([TEST_HELPER_NO_S], [$(GUESS_TOPDIR)/bootstrap/h_$1]) - -m4_define([TEST_HELPER], [$(GUESS_TOPDIR)/bootstrap/h_$1 \ - -s $(GUESS_TOPDIR)/bootstrap]) - -m4_define(COUNT_IN_LINES, - [test @S|@[($1 | wc -l | awk '{ print @S|@1 }')] = $2]) - -m4_define(COUNT_LINES, [test @S|@[(wc -l $1 | awk '{ print @S|@1 }')] = $2]) - -m4_define(TCR_DATA, [echo '$2' >$1 <$1])]) - -m4_define(CHECK_TCR, [TCR_DATA([expres], $2, $3) - AT_CHECK([diff -u expres $1], [0], [], [])]) - -m4_define(CHECK_TCS_TCR, - [AT_CHECK([grep '^tc-end: @<:@0-9. @:>@*, $1, $2' $3], [0], - [ignore], [])]) - -m4_define(CHECK_TPS_TCR, - [AT_CHECK([grep '^tc-end: @<:@0-9. @:>@*, $1, $2' $3], [0], - [ignore], [])]) - -dnl The tests below are sorted depending on how important they are. -m4_include(bootstrap/t_test_program_filter.at) -m4_include(bootstrap/t_test_program_run.at) -m4_include(bootstrap/t_test_program_list.at) -m4_include(bootstrap/t_test_program_compare.at) -m4_include(bootstrap/t_subr_atf_check.at) - -m4_if(ENABLE_TOOLS, yes, [ - m4_include(bootstrap/t_application_opts_args.at) - m4_include(bootstrap/t_application_help.at) - m4_include(bootstrap/t_atf_config.at) - m4_include(bootstrap/t_atf_run.at) -]) - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/config.h.in b/unit/atf-src/config.h.in deleted file mode 100644 index fa88b355fb..0000000000 --- a/unit/atf-src/config.h.in +++ /dev/null @@ -1,94 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if basename takes a constant pointer */ -#undef HAVE_CONST_BASENAME - -/* Define to 1 if dirname takes a constant pointer */ -#undef HAVE_CONST_DIRNAME - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if getcwd(NULL, 0) works */ -#undef HAVE_GETCWD_DYN - -/* Define to 1 if getopt allows a + sign for POSIX behavior */ -#undef HAVE_GNU_GETOPT - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if getopt has optreset */ -#undef HAVE_OPTRESET - -/* Define to 1 if you have the `putenv' function. */ -#undef HAVE_PUTENV - -/* Define to 1 if you have the `setenv' function. */ -#undef HAVE_SETENV - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `unsetenv' function. */ -#undef HAVE_UNSETENV - -/* Define to 1 if vsnprintf is in std */ -#undef HAVE_VSNPRINTF_IN_STD - -/* Define to the last valid signal number */ -#undef LAST_SIGNO - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the copyright string applicable to this package. */ -#undef PACKAGE_COPYRIGHT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/unit/atf-src/configure b/unit/atf-src/configure deleted file mode 100755 index ed2ca84f00..0000000000 --- a/unit/atf-src/configure +++ /dev/null @@ -1,20680 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Automated Testing Framework 0.21. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -# -# Copyright (c) 2007-2012 The NetBSD Foundation, Inc. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: atf-discuss@googlegroups.com about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='Automated Testing Framework' -PACKAGE_TARNAME='atf' -PACKAGE_VERSION='0.21' -PACKAGE_STRING='Automated Testing Framework 0.21' -PACKAGE_BUGREPORT='atf-discuss@googlegroups.com' -PACKAGE_URL='https://github.com/jmmv/atf/' - -ac_unique_file="atf-c.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -GIT -HAVE_KYUA_FALSE -HAVE_KYUA_TRUE -KYUA -GDB -ATF_SHELL -atf_xsldir -atf_pkgconfigdir -atf_egdir -atf_dtddir -atf_cssdir -atf_aclocaldir -atf_confdir -ATF_CONFSUBDIR -ATF_WORKDIR -atf_machine -atf_arch -target_srcdir -ATF_BUILD_CXXFLAGS -ATF_BUILD_CXX -ATF_BUILD_CPPFLAGS -ATF_BUILD_CPP -ATF_BUILD_CFLAGS -ATF_BUILD_CC -ATTRIBUTE_UNUSED -ATTRIBUTE_NORETURN -ATTRIBUTE_FORMAT_PRINTF -CXXCPP -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -ENABLE_TOOLS_FALSE -ENABLE_TOOLS_TRUE -ENABLE_TOOLS -CPP -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -ac_ct_AR -AR -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_tools -enable_developer -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -LT_SYS_LIBRARY_PATH -CPP -CXX -CXXFLAGS -CCC -CXXCPP -ATF_BUILD_CC -ATF_BUILD_CFLAGS -ATF_BUILD_CPP -ATF_BUILD_CPPFLAGS -ATF_BUILD_CXX -ATF_BUILD_CXXFLAGS -ATF_WORKDIR -ATF_CONFSUBDIR -ATF_SHELL' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures Automated Testing Framework 0.21 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/atf] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of Automated Testing Framework 0.21:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-tools Enables the build of the deprecated ATF tools - --enable-developer enable developer features - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - ATF_BUILD_CC - C compiler to use at runtime - ATF_BUILD_CFLAGS - C compiler flags to use at runtime - ATF_BUILD_CPP - C/C++ preprocessor to use at runtime - ATF_BUILD_CPPFLAGS - C/C++ preprocessor flags to use at runtime - ATF_BUILD_CXX - C++ compiler to use at runtime - ATF_BUILD_CXXFLAGS - C++ compiler flags to use at runtime - ATF_WORKDIR Default location to use for ATF work directories - ATF_CONFSUBDIR - Subdirectory of sysconfdir under which to look for files - ATF_SHELL Location of the POSIX shell interpreter to use - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -Automated Testing Framework home page: . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -Automated Testing Framework configure 0.21 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -Copyright (c) 2007-2012 The NetBSD Foundation, Inc. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_cxx_try_run LINENO -# ------------------------ -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_cxx_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_run - -# ac_fn_cxx_check_func LINENO FUNC VAR -# ------------------------------------ -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_cxx_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_cxx_check_func - -# ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES -# --------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_cxx_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_cxx_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by Automated Testing Framework $as_me 0.21, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - -$as_echo "#define PACKAGE_COPYRIGHT \"Copyright (c) 2007-2012 The NetBSD Foundation, Inc.\"" >>confdefs.h - -ac_aux_dir= -for ac_dir in admin "$srcdir"/admin; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in admin \"$srcdir\"/admin" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -ac_config_headers="$ac_config_headers config.h" - - - -ac_config_commands="$ac_config_commands bootstrap/atconfig" - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -am__api_version='1.15' - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='atf' - VERSION='0.21' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar lib "link -lib" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar lib "link -lib" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - am_cv_ar_interface=ar - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int some_variable = 0; -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - as_fn_error $? "could not determine $AR interface" "$LINENO" 5 - ;; -esac - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - 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]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - 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]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - 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)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - 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' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - 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' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - 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' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - 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' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - 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' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - 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' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - 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' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - 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" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - 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)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - 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\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - 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" - 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" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - 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' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - 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' - fi - else - 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' - 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' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - 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' - else - allow_undefined_flag=' -expect_unresolved \*' - 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' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - 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' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - 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' - 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~ - $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' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $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' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - 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' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -# Check whether --enable-tools was given. -if test "${enable_tools+set}" = set; then : - enableval=$enable_tools; case $enableval in - yes|no) enable_tools=${enableval} ;; - *) as_fn_error $? "Invalid value passed to --enable-tools" "$LINENO" 5 ;; - esac -else - enable_tools=no -fi - -ENABLE_TOOLS=${enable_tools} - - if test "${enable_tools}" = yes; then - ENABLE_TOOLS_TRUE= - ENABLE_TOOLS_FALSE='#' -else - ENABLE_TOOLS_TRUE='#' - ENABLE_TOOLS_FALSE= -fi - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - - - -func_stripname_cnf () -{ - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; - esac -} # func_stripname_cnf - - if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$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' - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct_CXX=no - hardcode_direct_absolute_CXX=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec_CXX='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - no_undefined_flag_CXX='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$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" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' $wl-bernotok' - allow_undefined_flag_CXX=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='$wl--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$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' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $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' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds_CXX="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" - module_expsym_cmds_CXX="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" - if test yes != "$lt_cv_apple_cc_single_mod"; then - archive_cmds_CXX="\$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" - archive_expsym_cmds_CXX="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" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - os2*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_minus_L_CXX=yes - allow_undefined_flag_CXX=unsupported - shrext_cmds=.dll - archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes_CXX=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='$wl-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - ;; - *) - if test yes = "$GXX"; then - archive_cmds_CXX='$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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='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' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$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' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - archive_cmds_CXX='$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' - else - archive_cmds_CXX='$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' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='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' - archive_expsym_cmds_CXX='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' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $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' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$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' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - whole_archive_flag_spec_CXX='$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' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='$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' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='$wl-E' - whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='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' - - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - archive_cmds_CXX='$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' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$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' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $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~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - archive_cmds_CXX='$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' - ;; - *) - archive_cmds_CXX='$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' - ;; - esac - - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $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' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='$wl-z,text' - allow_undefined_flag_CXX='$wl-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no - - GCC_CXX=$GXX - LD_CXX=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX=$prev$p - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX=$prev$p - else - postdeps_CXX="${postdeps_CXX} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX=$p - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX=$p - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - lt_prog_compiler_pic_CXX='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static_CXX='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--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" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX=$ltdll_cmds - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - 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' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -if ${atf_cv_prog_cxx_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - atf_cv_prog_cxx_works=yes -else - atf_cv_prog_cxx_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $atf_cv_prog_cxx_works" >&5 -$as_echo "$atf_cv_prog_cxx_works" >&6; } -if test "${atf_cv_prog_cxx_works}" = no; then - as_fn_error $? "C++ compiler cannot create executables" "$LINENO" 5 -fi - - - - - # Check whether --enable-developer was given. -if test "${enable_developer+set}" = set; then : - enableval=$enable_developer; -else - if test -d ${srcdir}/.git; then - { $as_echo "$as_me:${as_lineno-$LINENO}: building from HEAD; developer mode autoenabled" >&5 -$as_echo "$as_me: building from HEAD; developer mode autoenabled" >&6;} - enable_developer=yes - else - enable_developer=no - fi -fi - - - # - # The following warning flags should also be enabled but cannot be. - # Reasons given below. - # - # -Wold-style-cast: Raises errors when using TIOCGWINSZ, at least under - # Mac OS X. This is due to the way _IOR is defined. - # - - try_c_cxx_flags="-D_FORTIFY_SOURCE=2 \ - -Wall \ - -Wcast-qual \ - -Wextra \ - -Wpointer-arith \ - -Wredundant-decls \ - -Wreturn-type \ - -Wshadow \ - -Wsign-compare \ - -Wswitch \ - -Wwrite-strings" - - try_c_flags="-Wmissing-prototypes \ - -Wno-traditional \ - -Wstrict-prototypes" - - try_cxx_flags="-Wabi \ - -Wctor-dtor-privacy \ - -Wno-deprecated \ - -Wno-non-template-friend \ - -Wno-pmf-conversions \ - -Wnon-virtual-dtor \ - -Woverloaded-virtual \ - -Wreorder \ - -Wsign-promo \ - -Wsynth" - - if test ${enable_developer} = yes; then - try_werror=yes - try_c_cxx_flags="${try_c_cxx_flags} -g -Werror" - else - try_werror=no - try_c_cxx_flags="${try_c_cxx_flags} -DNDEBUG" - fi - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - valid_cflags= - for f in ${try_c_cxx_flags} ${try_c_flags}; do - - - - - if test x"${kyua_CC_has_werror-unset}" = xunset; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Werror" >&5 -$as_echo_n "checking whether ${CC} supports -Werror... " >&6; } - saved_flags="${CFLAGS}" - kyua_CC_has_werror=no - CFLAGS="${CFLAGS} -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - kyua_CC_has_werror=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="${saved_flags}" - fi - - if test "${f}" = "-Werror"; then - found=${kyua_CC_has_werror} - else - found=unset - if test ${kyua_CC_has_werror} = yes; then - - if test x"${found-unset}" = xunset; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports ${f}" >&5 -$as_echo_n "checking whether ${CC} supports ${f}... " >&6; } - saved_flags="${CFLAGS}" - found=no - CFLAGS="${CFLAGS} -Werror ${f}" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - found=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="${saved_flags}" - fi - - else - - if test x"${found-unset}" = xunset; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports ${f}" >&5 -$as_echo_n "checking whether ${CC} supports ${f}... " >&6; } - saved_flags="${CFLAGS}" - found=no - CFLAGS="${CFLAGS} ${f}" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - found=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="${saved_flags}" - fi - - fi - fi - if test ${found} = yes; then - valid_cflags="${valid_cflags} ${f}" - fi - - - done - if test -n "${valid_cflags}"; then - CFLAGS="${CFLAGS} ${valid_cflags}" - fi - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - valid_cxxflags= - for f in ${try_c_cxx_flags} ${try_cxx_flags}; do - - - - - if test x"${kyua_CXX_has_werror-unset}" = xunset; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CXX} supports -Werror" >&5 -$as_echo_n "checking whether ${CXX} supports -Werror... " >&6; } - saved_flags="${CXXFLAGS}" - kyua_CXX_has_werror=no - CXXFLAGS="${CXXFLAGS} -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - kyua_CXX_has_werror=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CXXFLAGS="${saved_flags}" - fi - - if test "${f}" = "-Werror"; then - found=${kyua_CXX_has_werror} - else - found=unset - if test ${kyua_CXX_has_werror} = yes; then - - if test x"${found-unset}" = xunset; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CXX} supports ${f}" >&5 -$as_echo_n "checking whether ${CXX} supports ${f}... " >&6; } - saved_flags="${CXXFLAGS}" - found=no - CXXFLAGS="${CXXFLAGS} -Werror ${f}" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - found=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CXXFLAGS="${saved_flags}" - fi - - else - - if test x"${found-unset}" = xunset; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CXX} supports ${f}" >&5 -$as_echo_n "checking whether ${CXX} supports ${f}... " >&6; } - saved_flags="${CXXFLAGS}" - found=no - CXXFLAGS="${CXXFLAGS} ${f}" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - found=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CXXFLAGS="${saved_flags}" - fi - - fi - fi - if test ${found} = yes; then - valid_cxxflags="${valid_cxxflags} ${f}" - fi - - - done - if test -n "${valid_cxxflags}"; then - CXXFLAGS="${CXXFLAGS} ${valid_cxxflags}" - fi - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf is in std" >&5 -$as_echo_n "checking whether vsnprintf is in std... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include -int -main () -{ -va_list ap; - char* buf = NULL; - const char* fmt = NULL; - std::vsnprintf(buf, 0, fmt, ap); - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define HAVE_VSNPRINTF_IN_STD 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt allows a + sign for POSIX behavior" >&5 -$as_echo_n "checking whether getopt allows a + sign for POSIX behavior... " >&6; } -if ${kyua_cv_getopt_plus+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -int -main () -{ - - int argc = 4; - char* argv[5] = { - strdup("conftest"), - strdup("-+"), - strdup("-a"), - strdup("bar"), - NULL - }; - int ch; - int seen_a = 0, seen_plus = 0; - - while ((ch = getopt(argc, argv, "+a:")) != -1) { - switch (ch) { - case 'a': - seen_a = 1; - break; - - case '+': - seen_plus = 1; - break; - - case '?': - default: - ; - } - } - - return (seen_a && !seen_plus) ? EXIT_SUCCESS : EXIT_FAILURE; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - kyua_cv_getopt_plus=yes -else - kyua_cv_getopt_plus=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kyua_cv_getopt_plus" >&5 -$as_echo "$kyua_cv_getopt_plus" >&6; } - if test x"${kyua_cv_getopt_plus}" = xyes; then - -$as_echo "#define HAVE_GNU_GETOPT 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt has optreset" >&5 -$as_echo_n "checking whether getopt has optreset... " >&6; } -if ${kyua_cv_getopt_optreset+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ - - optreset = 1; - return EXIT_SUCCESS; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - kyua_cv_getopt_optreset=yes -else - kyua_cv_getopt_optreset=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kyua_cv_getopt_optreset" >&5 -$as_echo "$kyua_cv_getopt_optreset" >&6; } - if test x"${kyua_cv_getopt_optreset}" = xyes; then - -$as_echo "#define HAVE_OPTRESET 1" >>confdefs.h - - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((__format__(__printf__, a, b))) is supported" >&5 -$as_echo_n "checking whether __attribute__((__format__(__printf__, a, b))) is supported... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -static void test_printf(const char *, ...) - __attribute__((__format__(__printf__, 1, 2))); - -static void -test_printf(const char *format, ...) -{ - va_list ap; - - va_start(ap, format); - vprintf(format, ap); - va_end(ap); -} -int -main () -{ - - test_printf("foo %s", "bar"); - return 0; - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - value="__attribute__((__format__(__printf__, a, b)))" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - value="" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ATTRIBUTE_FORMAT_PRINTF=${value} - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((__noreturn__)) is supported" >&5 -$as_echo_n "checking whether __attribute__((__noreturn__)) is supported... " >&6; } -if ${kyua_cv_attribute_noreturn+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#if ((__GNUC__ == 2 && __GNUC_MINOR__ >= 5) || __GNUC__ > 2) - return 0; -#else - return 1; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - kyua_cv_attribute_noreturn=yes -else - kyua_cv_attribute_noreturn=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kyua_cv_attribute_noreturn" >&5 -$as_echo "$kyua_cv_attribute_noreturn" >&6; } - if test x"${kyua_cv_attribute_noreturn}" = xyes; then - value="__attribute__((__noreturn__))" - else - value="" - fi - ATTRIBUTE_NORETURN=${value} - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((__unused__)) is supported" >&5 -$as_echo_n "checking whether __attribute__((__unused__)) is supported... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -static void -function(int a __attribute__((__unused__))) -{ -} -int -main () -{ - - function(3); - return 0; - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - value="__attribute__((__unused__))" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - value="" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ATTRIBUTE_UNUSED=${value} - - - - - for ac_func in putenv setenv unsetenv -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether basename takes a constant pointer" >&5 -$as_echo_n "checking whether basename takes a constant pointer... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - const char* s = "/foo/bar/"; - (void)::basename(s); - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define HAVE_CONST_BASENAME 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dirname takes a constant pointer" >&5 -$as_echo_n "checking whether dirname takes a constant pointer... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - const char* s = "/foo/bar/"; - (void)::dirname(s); - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define HAVE_CONST_DIRNAME 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getcwd(NULL, 0) works" >&5 -$as_echo_n "checking whether getcwd(NULL, 0) works... " >&6; } -if ${kyua_cv_getcwd_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ - - char *cwd = getcwd(NULL, 0); - return (cwd != NULL) ? EXIT_SUCCESS : EXIT_FAILURE; - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - kyua_cv_getcwd_works=yes -else - kyua_cv_getcwd_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kyua_cv_getcwd_works" >&5 -$as_echo "$kyua_cv_getcwd_works" >&6; } - if test x"${kyua_cv_getcwd_works}" = xyes; then - -$as_echo "#define HAVE_GETCWD_DYN 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the last valid signal" >&5 -$as_echo_n "checking for the last valid signal... " >&6; } -if ${kyua_cv_signal_lastno+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include -#include -int -main () -{ - - int i; - FILE *f; - - i = 0; - while (i < 1024) { - i++; - if (i != SIGKILL && i != SIGSTOP) { - struct sigaction sa; - int ret; - - sa.sa_handler = SIG_IGN; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - - ret = sigaction(i, &sa, NULL); - if (ret == -1) { - if (errno == EINVAL) { - i--; - break; - } else - err(EXIT_FAILURE, "sigaction failed"); - } - } - } - if (i == 100) - errx(EXIT_FAILURE, "too much signals"); - - f = fopen("conftest.cnt", "w"); - if (f == NULL) - err(EXIT_FAILURE, "failed to open file"); - - fprintf(f, "%d\n", i); - fclose(f); - - return EXIT_SUCCESS; - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - if test ! -f conftest.cnt; then - kyua_cv_signal_lastno=15 - else - kyua_cv_signal_lastno=$(cat conftest.cnt) - rm -f conftest.cnt - fi -else - kyua_cv_signal_lastno=15 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kyua_cv_signal_lastno" >&5 -$as_echo "$kyua_cv_signal_lastno" >&6; } - -cat >>confdefs.h <<_ACEOF -#define LAST_SIGNO ${kyua_cv_signal_lastno} -_ACEOF - - - -ac_fn_cxx_check_type "$LINENO" "timer_t" "ac_cv_type_timer_t" "#include -" -if test "x$ac_cv_type_timer_t" = xyes; then : - -fi - - - - - test x"${ATF_BUILD_CC-unset}" = x"unset" && ATF_BUILD_CC="${CC}" - - - - - test x"${ATF_BUILD_CFLAGS-unset}" = x"unset" && ATF_BUILD_CFLAGS="${CFLAGS}" - - - - - test x"${ATF_BUILD_CPP-unset}" = x"unset" && ATF_BUILD_CPP="${CPP}" - - - - - test x"${ATF_BUILD_CPPFLAGS-unset}" = x"unset" && ATF_BUILD_CPPFLAGS="${CPPFLAGS}" - - - - - test x"${ATF_BUILD_CXX-unset}" = x"unset" && ATF_BUILD_CXX="${CXX}" - - - - - test x"${ATF_BUILD_CXXFLAGS-unset}" = x"unset" && ATF_BUILD_CXXFLAGS="${CXXFLAGS}" - - - - -if test "${srcdir}" = .; then - target_srcdir= -else - target_srcdir="${srcdir}/" -fi - - - -atf_arch=`uname -p` -atf_machine=`uname -m` - -{ $as_echo "$as_me:${as_lineno-$LINENO}: Machine type: ${atf_machine}, architecture: ${atf_arch}" >&5 -$as_echo "$as_me: Machine type: ${atf_machine}, architecture: ${atf_arch}" >&6;} -atf_arch=${atf_arch} - -atf_machine=${atf_machine} - - - - -if test x"${ATF_WORKDIR}" = x""; then - for t in /tmp /var/tmp; do - if test -d ${t}; then - ATF_WORKDIR=${t} - break - fi - done - if test x"${ATF_WORKDIR}" = x""; then - as_fn_error $? "Could not guess a value for ATF_WORKDIR" "$LINENO" 5 - fi -else - case ${ATF_WORKDIR} in - /*) - ;; - *) - as_fn_error $? "ATF_WORKDIR must hold an absolute path" "$LINENO" 5 - ;; - esac -fi - - -if test x"${ATF_CONFSUBDIR-unset}" = x"unset"; then - ATF_CONFSUBDIR=atf -else - case ${ATF_CONFSUBDIR} in - /*) - as_fn_error $? "ATF_CONFSUBDIR must hold a relative path" "$LINENO" 5 - ;; - *) - ;; - esac -fi -if test x"${ATF_CONFSUBDIR}" = x""; then - atf_confdir=\${sysconfdir} - -else - atf_confdir=\${sysconfdir}/${ATF_CONFSUBDIR} - -fi - -atf_aclocaldir=\${datadir}/aclocal - -atf_cssdir=\${datadir}/examples/atf - -atf_dtddir=\${datadir}/xml/atf - -atf_egdir=\${datadir}/examples/atf - -atf_pkgconfigdir=\${libdir}/pkgconfig - -atf_xsldir=\${datadir}/xsl/atf - - - - -if test x"${ATF_SHELL}" = x""; then - for ac_prog in bash sh -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ATF_SHELL+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ATF_SHELL in - [\\/]* | ?:[\\/]*) - ac_cv_path_ATF_SHELL="$ATF_SHELL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ATF_SHELL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ATF_SHELL=$ac_cv_path_ATF_SHELL -if test -n "$ATF_SHELL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ATF_SHELL" >&5 -$as_echo "$ATF_SHELL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ATF_SHELL" && break -done - -else - case ${ATF_SHELL} in - /*) - ;; - *) - as_fn_error $? "ATF_SHELL must hold an absolute path" "$LINENO" 5 - ;; - esac -fi -if test x"${ATF_SHELL}" = x""; then - as_fn_error $? "No POSIX shell interpreter found; maybe set ATF_SHELL?" "$LINENO" 5 -fi - - -# Extract the first word of "gdb", so it can be a program name with args. -set dummy gdb; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GDB+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GDB in - [\\/]* | ?:[\\/]*) - ac_cv_path_GDB="$GDB" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GDB="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -GDB=$ac_cv_path_GDB -if test -n "$GDB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDB" >&5 -$as_echo "$GDB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "kyua", so it can be a program name with args. -set dummy kyua; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_KYUA+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $KYUA in - [\\/]* | ?:[\\/]*) - ac_cv_path_KYUA="$KYUA" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_KYUA="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -KYUA=$ac_cv_path_KYUA -if test -n "$KYUA"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KYUA" >&5 -$as_echo "$KYUA" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test -n "${KYUA}"; then - HAVE_KYUA_TRUE= - HAVE_KYUA_FALSE='#' -else - HAVE_KYUA_TRUE='#' - HAVE_KYUA_FALSE= -fi - -# Extract the first word of "git", so it can be a program name with args. -set dummy git; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GIT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GIT="$GIT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GIT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -GIT=$ac_cv_path_GIT -if test -n "$GIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIT" >&5 -$as_echo "$GIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - -ac_config_files="$ac_config_files Makefile atf-c/defs.h tools/defs.hpp" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_TOOLS_TRUE}" && test -z "${ENABLE_TOOLS_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_TOOLS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_KYUA_TRUE}" && test -z "${HAVE_KYUA_FALSE}"; then - as_fn_error $? "conditional \"HAVE_KYUA\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by Automated Testing Framework $as_me 0.21, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to . -Automated Testing Framework home page: ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -Automated Testing Framework config.status 0.21 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -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"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "bootstrap/atconfig") CONFIG_COMMANDS="$CONFIG_COMMANDS bootstrap/atconfig" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "atf-c/defs.h") CONFIG_FILES="$CONFIG_FILES atf-c/defs.h" ;; - "tools/defs.hpp") CONFIG_FILES="$CONFIG_FILES tools/defs.hpp" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "bootstrap/atconfig":C) cat >bootstrap/atconfig </dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -if test ${enable_tools} = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Building the deprecated ATF tools (atf-run and atf-report);" >&5 -$as_echo "$as_me: WARNING: Building the deprecated ATF tools (atf-run and atf-report);" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: please migrate to Kyua as soon as feasible." >&5 -$as_echo "$as_me: WARNING: please migrate to Kyua as soon as feasible." >&2;} -fi - diff --git a/unit/atf-src/configure.ac b/unit/atf-src/configure.ac deleted file mode 100644 index bc8506402b..0000000000 --- a/unit/atf-src/configure.ac +++ /dev/null @@ -1,228 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl ----------------------------------------------------------------------- -dnl Initialize the GNU build system. -dnl ----------------------------------------------------------------------- - -AC_INIT([Automated Testing Framework], [0.21], - [atf-discuss@googlegroups.com], [atf], - [https://github.com/jmmv/atf/]) -AC_PREREQ([2.65]) -AC_COPYRIGHT([Copyright (c) 2007-2012 The NetBSD Foundation, Inc.]) -AC_DEFINE([PACKAGE_COPYRIGHT], - ["Copyright (c) 2007-2012 The NetBSD Foundation, Inc."], - [Define to the copyright string applicable to this package.]) -AC_CONFIG_AUX_DIR([admin]) -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_SRCDIR([atf-c.h]) -AC_CONFIG_TESTDIR([bootstrap]) - -AC_CANONICAL_TARGET - -AM_INIT_AUTOMAKE([1.9 check-news foreign subdir-objects -Wall]) - -AM_PROG_AR -LT_INIT - -AC_ARG_ENABLE(tools, - AS_HELP_STRING([--enable-tools], - [Enables the build of the deprecated ATF tools]), - [case $enableval in - yes|no) enable_tools=${enableval} ;; - *) AC_MSG_ERROR([Invalid value passed to --enable-tools]) ;; - esac], - [enable_tools=no]) -AC_SUBST([ENABLE_TOOLS], ${enable_tools}) -AM_CONDITIONAL([ENABLE_TOOLS], [test "${enable_tools}" = yes]) - -dnl ----------------------------------------------------------------------- -dnl Check for the C and C++ compilers and required features. -dnl ----------------------------------------------------------------------- - -AC_LANG(C) -AC_PROG_CC -AM_PROG_CC_C_O -dnl The C compiler check automatically aborts if the compiler does not work. -dnl Nothing to do here. - -AC_LANG(C++) -AC_PROG_CXX -AC_CACHE_CHECK([whether the C++ compiler works], - [atf_cv_prog_cxx_works], - [AC_LANG_PUSH([C++]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], - [atf_cv_prog_cxx_works=yes], - [atf_cv_prog_cxx_works=no]) - AC_LANG_POP]) -if test "${atf_cv_prog_cxx_works}" = no; then - AC_MSG_ERROR([C++ compiler cannot create executables]) -fi - -KYUA_DEVELOPER_MODE([C,C++]) - -dnl TODO(jmmv): Remove once the atf-*-api.3 symlinks are removed. -AC_PROG_LN_S - -ATF_MODULE_APPLICATION -ATF_MODULE_DEFS -ATF_MODULE_ENV -ATF_MODULE_FS -ATF_MODULE_SIGNALS - -AC_CHECK_TYPE([timer_t], [], [], [[#include ]]) - -ATF_RUNTIME_TOOL([ATF_BUILD_CC], - [C compiler to use at runtime], [${CC}]) -ATF_RUNTIME_TOOL([ATF_BUILD_CFLAGS], - [C compiler flags to use at runtime], [${CFLAGS}]) -ATF_RUNTIME_TOOL([ATF_BUILD_CPP], - [C/C++ preprocessor to use at runtime], [${CPP}]) -ATF_RUNTIME_TOOL([ATF_BUILD_CPPFLAGS], - [C/C++ preprocessor flags to use at runtime], [${CPPFLAGS}]) -ATF_RUNTIME_TOOL([ATF_BUILD_CXX], - [C++ compiler to use at runtime], [${CXX}]) -ATF_RUNTIME_TOOL([ATF_BUILD_CXXFLAGS], - [C++ compiler flags to use at runtime], [${CXXFLAGS}]) - -dnl ----------------------------------------------------------------------- -dnl Generation of files in srcdir. -dnl ----------------------------------------------------------------------- - -dnl BSD make(1) doesn't deal with targets specified as './foo' well: they -dnl need to be specified as 'foo'. The following hack is to workaround this -dnl issue. -if test "${srcdir}" = .; then - target_srcdir= -else - target_srcdir="${srcdir}/" -fi -AC_SUBST([target_srcdir]) - -dnl ----------------------------------------------------------------------- -dnl Architecture and machine checks. -dnl ----------------------------------------------------------------------- - -atf_arch=`uname -p` -atf_machine=`uname -m` - -AC_MSG_NOTICE([Machine type: ${atf_machine}, architecture: ${atf_arch}]) -AC_SUBST(atf_arch, ${atf_arch}) -AC_SUBST(atf_machine, ${atf_machine}) - -dnl ----------------------------------------------------------------------- -dnl User-customizable variables. -dnl ----------------------------------------------------------------------- - -AC_ARG_VAR([ATF_WORKDIR], - [Default location to use for ATF work directories]) -if test x"${ATF_WORKDIR}" = x""; then - for t in /tmp /var/tmp; do - if test -d ${t}; then - ATF_WORKDIR=${t} - break - fi - done - if test x"${ATF_WORKDIR}" = x""; then - AC_MSG_ERROR([Could not guess a value for ATF_WORKDIR]) - fi -else - case ${ATF_WORKDIR} in - /*) - ;; - *) - AC_MSG_ERROR([ATF_WORKDIR must hold an absolute path]) - ;; - esac -fi - -AC_ARG_VAR([ATF_CONFSUBDIR], - [Subdirectory of sysconfdir under which to look for files]) -if test x"${ATF_CONFSUBDIR-unset}" = x"unset"; then - ATF_CONFSUBDIR=atf -else - case ${ATF_CONFSUBDIR} in - /*) - AC_MSG_ERROR([ATF_CONFSUBDIR must hold a relative path]) - ;; - *) - ;; - esac -fi -if test x"${ATF_CONFSUBDIR}" = x""; then - AC_SUBST(atf_confdir, \${sysconfdir}) -else - AC_SUBST(atf_confdir, \${sysconfdir}/${ATF_CONFSUBDIR}) -fi - -AC_SUBST(atf_aclocaldir, \${datadir}/aclocal) -AC_SUBST(atf_cssdir, \${datadir}/examples/atf) -AC_SUBST(atf_dtddir, \${datadir}/xml/atf) -AC_SUBST(atf_egdir, \${datadir}/examples/atf) -AC_SUBST(atf_pkgconfigdir, \${libdir}/pkgconfig) -AC_SUBST(atf_xsldir, \${datadir}/xsl/atf) - -dnl ----------------------------------------------------------------------- -dnl Check for the shell and portability problems. -dnl ----------------------------------------------------------------------- - -AC_ARG_VAR([ATF_SHELL], [Location of the POSIX shell interpreter to use]) -if test x"${ATF_SHELL}" = x""; then - AC_PATH_PROGS(ATF_SHELL, [bash sh]) -else - case ${ATF_SHELL} in - /*) - ;; - *) - AC_MSG_ERROR([ATF_SHELL must hold an absolute path]) - ;; - esac -fi -if test x"${ATF_SHELL}" = x""; then - AC_MSG_ERROR([No POSIX shell interpreter found; maybe set ATF_SHELL?]) -fi - -dnl ----------------------------------------------------------------------- -dnl Check for required tools. -dnl ----------------------------------------------------------------------- - -AC_PATH_PROG([GDB], [gdb]) -AC_PATH_PROG([KYUA], [kyua]) -AM_CONDITIONAL([HAVE_KYUA], [test -n "${KYUA}"]) -AC_PATH_PROG([GIT], [git]) - -dnl ----------------------------------------------------------------------- -dnl Finally, generate output. -dnl ----------------------------------------------------------------------- - -AC_OUTPUT([Makefile atf-c/defs.h tools/defs.hpp]) - -if test ${enable_tools} = yes; then - AC_MSG_WARN([Building the deprecated ATF tools (atf-run and atf-report);]) - AC_MSG_WARN([please migrate to Kyua as soon as feasible.]) -fi - -dnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/doc/Makefile.am.inc b/unit/atf-src/doc/Makefile.am.inc deleted file mode 100644 index 5f8a4a3612..0000000000 --- a/unit/atf-src/doc/Makefile.am.inc +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dist_man_MANS += doc/atf-test-case.4 \ - doc/atf-test-program.1 - -man_MANS += doc/atf.7 -CLEANFILES += doc/atf.7 -EXTRA_DIST += doc/atf.7.in - -doc/atf.7: $(srcdir)/doc/atf.7.in - $(AM_V_GEN)test -d doc || mkdir -p doc; \ - sed -e 's#__DOCDIR__#$(docdir)#g' \ - -e 's#__TESTSDIR__#$(testsdir)#g' \ - <$(srcdir)/doc/atf.7.in >doc/atf.7.tmp; \ - mv doc/atf.7.tmp doc/atf.7 - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/doc/atf-test-case.4 b/unit/atf-src/doc/atf-test-case.4 deleted file mode 100644 index 30254118ce..0000000000 --- a/unit/atf-src/doc/atf-test-case.4 +++ /dev/null @@ -1,321 +0,0 @@ -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd October 5, 2014 -.Dt ATF-TEST-CASE 4 -.Os -.Sh NAME -.Nm atf-test-case -.Nd generic description of test cases -.Sh DESCRIPTION -A -.Em test case -is a piece of code that stress-tests a specific feature of the software. -This feature is typically self-contained enough, either in the amount of -code that implements it or in the general idea that describes it, to -warrant its independent testing. -Given this, test cases are very fine-grained, but they attempt to group -similar smaller tests which are semantically related. -.Pp -A test case is defined by three components regardless of the language it is -implemented in: a header, a body and a cleanup routine. -The -.Em header -is, basically, a declarative piece of code that defines several -properties to describe what the test case does and how it behaves. -In other words: it defines the test case's -.Em meta-data , -further described in the -.Sx Meta-data -section. -The -.Em body -is the test case itself. -It executes all actions needed to reproduce the test, and checks for -failures. -This body is only executed if the abstract conditions specified by the -header are met. -The -.Em cleanup -routine is a piece of code always executed after the body, regardless of -the exit status of the test case. -It can be used to undo side-effects of the test case. -Note that almost all side-effects of a test case are automatically cleaned -up by the library; this is explained in more detail in the rest of this -document. -.Pp -It is extremely important to keep the separation between a test case's -header and body well-defined, because the header is -.Em always -parsed, whereas the body is only executed when the conditions defined in -the header are met and when the user specifies that test case. -.Pp -At last, test cases are always contained into test programs. -The test programs act as a front-end to them, providing a consistent -interface to the user and several APIs to ease their implementation. -.Ss Results -Upon termination, a test case reports a status and, optionally, a textual -reason describing why the test reported such status. -The caller must ensure that the test case really performed the task that its -status describes, as the test program may be bogus and therefore providing a -misleading result (e.g. providing a result that indicates success but the -error code of the program says otherwise). -.Pp -The possible exit status of a test case are one of the following: -.Bl -tag -width expectedXfailureXX -.It expected_death -The test case expects to terminate abruptly. -.It expected_exit -The test case expects to exit cleanly. -.It expected_failure -The test case expects to exit with a controller fatal/non-fatal failure. -If this happens, the test program exits with a success error code. -.It expected_signal -The test case expects to receive a signal that makes it terminate. -.It expected_timeout -The test case expects to execute for longer than its timeout. -.It passed -The test case was executed successfully. -The test program exits with a success error code. -.It skipped -The test case could not be executed because some preconditions were not -met. -This is not a failure because it can typically be resolved by adjusting -the system to meet the necessary conditions. -This is always accompanied by a -.Em reason , -a message describing why the test was skipped. -The test program exits with a success error code. -.It failed -An error appeared during the execution of the test case. -This is always accompanied by a -.Em reason , -a message describing why the test failed. -The test program exits with a failure error code. -.El -.Pp -The usefulness of the -.Sq expected_* -results comes when writing test cases that verify known failures caused, -in general, due to programming errors (aka bugs). -Whenever the faulty condition that the -.Sq expected_* -result is trying to cover is fixed, then the test case will be reported as -.Sq failed -and the developer will have to adjust it to match its new condition. -.Pp -It is important to note that all -.Sq expected_* -results are only provided as a -.Em hint -to the caller; the caller must verify that the test case did actually terminate -as the expected condition says. -.Ss Input/output -Test cases are free to print whatever they want to their -.Xr stdout 4 -and -.Xr stderr 4 -file descriptors. -They are, in fact, encouraged to print status information as they execute -to keep the user informed of their actions. -This is specially important for long test cases. -.Pp -Test cases will log their results to an auxiliary file, which is then -collected by the test program they are contained in. -The developer need not care about this as long as he uses the correct -APIs to implement the test cases. -.Pp -The standard input of the test cases is unconditionally connected to -.Sq /dev/zero . -.Ss Meta-data -The following list describes all meta-data properties interpreted -internally by ATF. -You are free to define new properties in your test cases and use them as -you wish, but non-standard properties must be prefixed by -.Sq X- . -.Bl -tag -width requireXmachineXX -.It descr -Type: textual. -Required. -.Pp -A brief textual description of the test case's purpose. -Will be shown to the user in reports. -Also good for documentation purposes. -.It has.cleanup -Type: boolean. -Optional. -.Pp -If set to true, specifies that the test case has a cleanup routine that has -to be executed by the runtime engine during the cleanup phase of the execution. -This property is automatically set by the framework when defining a test case -with a cleanup routine, so it should never be set by hand. -.It ident -Type: textual. -Required. -.Pp -The test case's identifier. -Must be unique inside the test program and should be short but descriptive. -.It require.arch -Type: textual. -Optional. -.Pp -A whitespace separated list of architectures that the test case can be run -under without causing errors due to an architecture mismatch. -.It require.config -Type: textual. -Optional. -.Pp -A whitespace separated list of configuration variables that must be defined -to execute the test case. -If any of the required variables is not defined, the test case is -.Em skipped . -.It require.diskspace -Type: integer. -Optional. -Specifies the minimum amount of available disk space needed by the test. -The value can have a size suffix such as -.Sq K , -.Sq M , -.Sq G -or -.Sq T -to make the amount of bytes easier to type and read. -.It require.files -Type: textual. -Optional. -.Pp -A whitespace separated list of files that must be present to execute the -test case. -The names of these files must be absolute paths. -If any of the required files is not found, the test case is -.Em skipped . -.It require.machine -Type: textual. -Optional. -.Pp -A whitespace separated list of machine types that the test case can be run -under without causing errors due to a machine type mismatch. -.It require.memory -Type: integer. -Optional. -Specifies the minimum amount of physical memory needed by the test. -The value can have a size suffix such as -.Sq K , -.Sq M , -.Sq G -or -.Sq T -to make the amount of bytes easier to type and read. -.It require.progs -Type: textual. -Optional. -.Pp -A whitespace separated list of programs that must be present to execute -the test case. -These can be given as plain names, in which case they are looked in the -user's -.Ev PATH , -or as absolute paths. -If any of the required programs is not found, the test case is -.Em skipped . -.It require.user -Type: textual. -Optional. -.Pp -The required privileges to execute the test case. -Can be one of -.Sq root -or -.Sq unprivileged . -.Pp -If the test case is running as a regular user and this property is -.Sq root , -the test case is -.Em skipped . -.Pp -If the test case is running as root and this property is -.Sq unprivileged , -the runtime engine will automatically drop the privileges if the -.Sq unprivileged-user -configuration property is set; otherwise the test case is -.Em skipped . -.It timeout -Type: integral. -Optional; defaults to -.Sq 300 . -.Pp -Specifies the maximum amount of time the test case can run. -This is particularly useful because some tests can stall either because they -are incorrectly coded or because they trigger an anomalous behavior of the -program. -It is not acceptable for these tests to stall the whole execution of the -test program. -.Pp -Can optionally be set to zero, in which case the test case has no run-time -limit. -This is discouraged. -.El -.Ss Environment -Every time a test case is executed, several environment variables are -cleared or reseted to sane values to ensure they do not make the test fail -due to unexpected conditions. -These variables are: -.Bl -tag -width LCXMESSAGESXX -.It Ev HOME -Set to the work directory's path. -.It Ev LANG -Undefined. -.It Ev LC_ALL -Undefined. -.It Ev LC_COLLATE -Undefined. -.It Ev LC_CTYPE -Undefined. -.It Ev LC_MESSAGES -Undefined. -.It Ev LC_MONETARY -Undefined. -.It Ev LC_NUMERIC -Undefined. -.It Ev LC_TIME -Undefined. -.It Ev TZ -Hardcoded to -.Sq UTC . -.El -.Ss Work directories -The test program always creates a temporary directory -and switches to it before running the test case's body. -This way the test case is free to modify its current directory as it -wishes, and the runtime engine will be able to clean it up later on in a -safe way, removing any traces of its execution from the system. -To do so, the runtime engine will perform a recursive removal of the work -directory without crossing mount points; if a mount point is found, the -file system will be unmounted (if possible). -.Ss File creation mode mask (umask) -Test cases are always executed with a file creation mode mask (umask) of -.Sq 0022 . -The test case's code is free to change this during execution. -.Sh SEE ALSO -.Xr atf-test-program 1 diff --git a/unit/atf-src/doc/atf-test-program.1 b/unit/atf-src/doc/atf-test-program.1 deleted file mode 100644 index 0ca1963554..0000000000 --- a/unit/atf-src/doc/atf-test-program.1 +++ /dev/null @@ -1,99 +0,0 @@ -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd March 2, 2014 -.Dt ATF-TEST-PROGRAM 1 -.Os -.Sh NAME -.Nm atf-test-program -.Nd common interface to ATF test programs -.Sh SYNOPSIS -.Nm -.Op Fl r Ar resfile -.Op Fl s Ar srcdir -.Op Fl v Ar var1=value1 Op .. Fl v Ar varN=valueN -.Ar test_case -.Nm -.Fl l -.Sh DESCRIPTION -Test programs written using the ATF libraries all share a common user -interface, which is what this manual page describes. -.Em NOTE: There is no binary known as -.Nm ; -.Em what is described in this manual page is the command-line interface -.Em exposed by the atf-c, atf-c++ and atf-sh bindings . -.Pp -In the first synopsis form, the test program will execute the provided -test case and print its results to the standard output, unless otherwise -stated by the -.Fl r -flag. -Optionally, the test case name can be suffixed by -.Sq :cleanup , -in which case the cleanup routine of the test case will be executed -instead of the test case body; see -.Xr atf-test-case 4 . -Note that the test case is -.Em executed without isolation , -so it can and probably will create and modify files in the current directory. -To execute test cases in a controller manner, you need a runtime engine -that understands the ATF interface. -The recommended runtime engine is -.Xr kyua 1 . -You should only execute test cases by hand for debugging purposes. -.Pp -In the second synopsis form, the test program will list all available -test cases alongside their meta-data properties in a format that is -machine parseable. -This list is processed by -.Xr kyua 1 -to know how to execute the test cases of a given test program. -.Pp -The following options are available: -.Bl -tag -width XvXvarXvalueXX -.It Fl l -Lists available test cases alongside a brief description for each of them. -.It Fl r Ar resfile -Specifies the file that will receive the test case result. -If not specified, the test case prints its results to stdout. -If the result of a test case needs to be parsed by another program, you must -use this option to redirect the result to a file and then read the resulting -file from the other program. -Note: -.Em do not try to process the stdout of the test case -because your program may break in the future. -.It Fl s Ar srcdir -The path to the directory where the test program is located. -This is needed in all cases, except when the test program is being executed -from the current directory. -The test program will use this path to locate any helper data files or -utilities. -.It Fl v Ar var=value -Sets the configuration variable -.Ar var -to the value -.Ar value . -.El -.Sh SEE ALSO -.Xr kyua 1 diff --git a/unit/atf-src/doc/atf.7.in b/unit/atf-src/doc/atf.7.in deleted file mode 100644 index ded00c1120..0000000000 --- a/unit/atf-src/doc/atf.7.in +++ /dev/null @@ -1,120 +0,0 @@ -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.Dd September 14, 2014 -.Dt ATF 7 -.Os -.Sh NAME -.Nm ATF -.Nd introduction to the Automated Testing Framework -.Sh DESCRIPTION -The Automated Testing Framework -.Pf ( Nm ) -is a -.Em collection of libraries -to implement test programs in a variety of languages. -These libraries all offer similar functionality and any test program -written with them exposes a consistent user interface. -.Pp -Test programs using the -.Nm -libraries rely on a separate runtime engine to execute them in a -deterministic fashion. -The runtime engine isolates the test programs from the rest of the system -and ensures some common side-effects are cleaned up. -The runtime engine is also responsible for gathering the results of all -tests and composing reports. -The current runtime of choice is Kyua, described in -.Xr kyua 1 . -.Pp -If your operating systems distributes -.Nm , -it should also provide an introductory -.Xr tests 7 -manual page. -You are encouraged to read it now. -.Pp -The rest of this manual page serves as a cross-reference to all the other -documentation shipped with -.Nm . -.Ss Language bindings -.Bl -tag -width atfXtestXprogramXXXXX -.It Xr atf-c 3 -C programming interface. -.It Xr atf-c++ 3 -C++ programming interface. -.It Xr atf-sh 3 -.Xr sh 1 -programming interface. -.El -.Ss Miscellaneous pages -.Bl -tag -width atfXtestXprogramXXXXX -.It Xr atf-test-case 4 -Generic description of test cases, independent of the language they are -implemented in. -.It Xr atf-test-program 1 -Common interface provided by the test programs written using the -.Nm -libraries. -.El -.Sh SEE ALSO -.Xr kyua 1 , -.Xr tests 7 -.Sh HISTORY -.Nm -started as a Google Summer of Code 2007 project mentored by The NetBSD -Foundation. -Its original goal was to provide a testing framework for the -.Nx -operating system, but it grew as an independent project because the -framework itself did not need to be tied to a specific operating system. -.Pp -Originally, -.Nm -shipped the collection of libraries described in this manual page as well -as a runtime engine. -The runtime engine has since been replaced by Kyua and the old tools were -removed in -.Nm 0.20 , -which shipped in early 2014. -.Pp -As of late 2014, both -.Fx -and -.Nx -ship -.Nm -in their base systems and provide extensive test suites based on it. -.Pp -For more details on historical changes, refer to: -.Bd -literal -offset indent -.Pa __DOCDIR__/NEWS -.Ed -.Sh AUTHORS -For more details on the people that made -.Nm -possible, refer to: -.Bd -literal -offset indent -.Pa __DOCDIR__/AUTHORS -.Ed diff --git a/unit/atf-src/m4/compiler-flags.m4 b/unit/atf-src/m4/compiler-flags.m4 deleted file mode 100644 index 480e5c740a..0000000000 --- a/unit/atf-src/m4/compiler-flags.m4 +++ /dev/null @@ -1,159 +0,0 @@ -dnl Copyright 2010 Google Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions are -dnl met: -dnl -dnl * Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl * Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl * Neither the name of Google Inc. nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl \file compiler-flags.m4 -dnl -dnl Macros to check for the existence of compiler flags. The macros in this -dnl file support both C and C++. -dnl -dnl Be aware that, in order to detect a flag accurately, we may need to enable -dnl strict warning checking in the compiler (i.e. enable -Werror). Some -dnl compilers, e.g. Clang, report unknown -W flags as warnings unless -Werror is -dnl selected. This fact would confuse the flag checks below because we would -dnl conclude that a flag is valid while in reality it is not. To resolve this, -dnl the macros below will pass -Werror to the compiler along with any other flag -dnl being checked. - - -dnl Checks for a compiler flag and sets a result variable. -dnl -dnl This is an auxiliary macro for the implementation of _KYUA_FLAG. -dnl -dnl \param 1 The shell variable containing the compiler name. Used for -dnl reporting purposes only. C or CXX. -dnl \param 2 The shell variable containing the flags for the compiler. -dnl CFLAGS or CXXFLAGS. -dnl \param 3 The name of the compiler flag to check for. -dnl \param 4 The shell variable to set with the result of the test. Will -dnl be set to 'yes' if the flag is valid, 'no' otherwise. -dnl \param 5 Additional, optional flags to pass to the C compiler while -dnl looking for the flag in $3. We use this here to pass -Werror to the -dnl flag checks (unless we are checking for -Werror already). -AC_DEFUN([_KYUA_FLAG_AUX], [ - if test x"${$4-unset}" = xunset; then - AC_MSG_CHECKING(whether ${$1} supports $3) - saved_flags="${$2}" - $4=no - $2="${$2} $5 $3" - AC_LINK_IFELSE([AC_LANG_PROGRAM([], [return 0;])], - AC_MSG_RESULT(yes) - $4=yes, - AC_MSG_RESULT(no)) - $2="${saved_flags}" - fi -]) - - -dnl Checks for a compiler flag and appends it to a result variable. -dnl -dnl \param 1 The shell variable containing the compiler name. Used for -dnl reporting purposes only. CC or CXX. -dnl \param 2 The shell variable containing the flags for the compiler. -dnl CFLAGS or CXXFLAGS. -dnl \param 3 The name of the compiler flag to check for. -dnl \param 4 The shell variable to which to append $3 if the flag is valid. -AC_DEFUN([_KYUA_FLAG], [ - _KYUA_FLAG_AUX([$1], [$2], [-Werror], [kyua_$1_has_werror]) - if test "$3" = "-Werror"; then - found=${kyua_$1_has_werror} - else - found=unset - if test ${kyua_$1_has_werror} = yes; then - _KYUA_FLAG_AUX([$1], [$2], [$3], [found], [-Werror]) - else - _KYUA_FLAG_AUX([$1], [$2], [$3], [found], []) - fi - fi - if test ${found} = yes; then - $4="${$4} $3" - fi -]) - - -dnl Checks for a C compiler flag and appends it to a variable. -dnl -dnl \pre The current language is C. -dnl -dnl \param 1 The name of the compiler flag to check for. -dnl \param 2 The shell variable to which to append $1 if the flag is valid. -AC_DEFUN([KYUA_CC_FLAG], [ - AC_LANG_ASSERT([C]) - _KYUA_FLAG([CC], [CFLAGS], [$1], [$2]) -]) - - -dnl Checks for a C++ compiler flag and appends it to a variable. -dnl -dnl \pre The current language is C++. -dnl -dnl \param 1 The name of the compiler flag to check for. -dnl \param 2 The shell variable to which to append $1 if the flag is valid. -AC_DEFUN([KYUA_CXX_FLAG], [ - AC_LANG_ASSERT([C++]) - _KYUA_FLAG([CXX], [CXXFLAGS], [$1], [$2]) -]) - - -dnl Checks for a set of C compiler flags and appends them to CFLAGS. -dnl -dnl The checks are performed independently and only when all the checks are -dnl done, the output variable is modified. -dnl -dnl \param 1 Whitespace-separated list of C flags to check. -AC_DEFUN([KYUA_CC_FLAGS], [ - AC_LANG_PUSH([C]) - valid_cflags= - for f in $1; do - KYUA_CC_FLAG(${f}, valid_cflags) - done - if test -n "${valid_cflags}"; then - CFLAGS="${CFLAGS} ${valid_cflags}" - fi - AC_LANG_POP([C]) -]) - - -dnl Checks for a set of C++ compiler flags and appends them to CXXFLAGS. -dnl -dnl The checks are performed independently and only when all the checks are -dnl done, the output variable is modified. -dnl -dnl \pre The current language is C++. -dnl -dnl \param 1 Whitespace-separated list of C flags to check. -AC_DEFUN([KYUA_CXX_FLAGS], [ - AC_LANG_PUSH([C++]) - valid_cxxflags= - for f in $1; do - KYUA_CXX_FLAG(${f}, valid_cxxflags) - done - if test -n "${valid_cxxflags}"; then - CXXFLAGS="${CXXFLAGS} ${valid_cxxflags}" - fi - AC_LANG_POP([C++]) -]) diff --git a/unit/atf-src/m4/cxx-std-funcs.m4 b/unit/atf-src/m4/cxx-std-funcs.m4 deleted file mode 100644 index 24b442e1ad..0000000000 --- a/unit/atf-src/m4/cxx-std-funcs.m4 +++ /dev/null @@ -1,46 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AC_DEFUN([ATF_CHECK_IN_STD], [ - AC_MSG_CHECKING(whether $1 is in std) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([$2], [$3 return 0;])], - AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_]translit($1, [a-z], [A-Z])[_IN_STD], [1], - [Define to 1 if $1 is in std]), - AC_MSG_RESULT(no) - ) -]) - -AC_DEFUN([ATF_CHECK_STD_VSNPRINTF], [ - ATF_CHECK_IN_STD([vsnprintf], - [#include - #include ], - [va_list ap; - char* buf = NULL; - const char* fmt = NULL; - std::vsnprintf(buf, 0, fmt, ap);] - ) -]) diff --git a/unit/atf-src/m4/developer-mode.m4 b/unit/atf-src/m4/developer-mode.m4 deleted file mode 100644 index 9c9118bf1f..0000000000 --- a/unit/atf-src/m4/developer-mode.m4 +++ /dev/null @@ -1,112 +0,0 @@ -dnl Copyright 2010 Google Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions are -dnl met: -dnl -dnl * Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl * Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl * Neither the name of Google Inc. nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl \file developer-mode.m4 -dnl -dnl "Developer mode" is a mode in which the build system reports any -dnl build-time warnings as fatal errors. This helps in minimizing the -dnl amount of trivial coding problems introduced in the code. -dnl Unfortunately, this is not bullet-proof due to the wide variety of -dnl compilers available and their different warning diagnostics. -dnl -dnl When developer mode support is added to a package, the compilation will -dnl gain a bunch of extra warning diagnostics. These will NOT be enforced -dnl unless developer mode is enabled. -dnl -dnl Developer mode is enabled when the user requests it through the -dnl configure command line, or when building from the repository. The -dnl latter is to minimize the risk of committing new code with warnings -dnl into the tree. - - -dnl Adds "developer mode" support to the package. -dnl -dnl This macro performs the actual definition of the --enable-developer -dnl flag and implements all of its logic. See the file-level comment for -dnl details as to what this implies. -AC_DEFUN([KYUA_DEVELOPER_MODE], [ - m4_foreach([language], [$1], [m4_set_add([languages], language)]) - - AC_ARG_ENABLE( - [developer], - AS_HELP_STRING([--enable-developer], [enable developer features]),, - [if test -d ${srcdir}/.git; then - AC_MSG_NOTICE([building from HEAD; developer mode autoenabled]) - enable_developer=yes - else - enable_developer=no - fi]) - - # - # The following warning flags should also be enabled but cannot be. - # Reasons given below. - # - # -Wold-style-cast: Raises errors when using TIOCGWINSZ, at least under - # Mac OS X. This is due to the way _IOR is defined. - # - - try_c_cxx_flags="-D_FORTIFY_SOURCE=2 \ - -Wall \ - -Wcast-qual \ - -Wextra \ - -Wpointer-arith \ - -Wredundant-decls \ - -Wreturn-type \ - -Wshadow \ - -Wsign-compare \ - -Wswitch \ - -Wwrite-strings" - - try_c_flags="-Wmissing-prototypes \ - -Wno-traditional \ - -Wstrict-prototypes" - - try_cxx_flags="-Wabi \ - -Wctor-dtor-privacy \ - -Wno-deprecated \ - -Wno-non-template-friend \ - -Wno-pmf-conversions \ - -Wnon-virtual-dtor \ - -Woverloaded-virtual \ - -Wreorder \ - -Wsign-promo \ - -Wsynth" - - if test ${enable_developer} = yes; then - try_werror=yes - try_c_cxx_flags="${try_c_cxx_flags} -g -Werror" - else - try_werror=no - try_c_cxx_flags="${try_c_cxx_flags} -DNDEBUG" - fi - - m4_set_contains([languages], [C], - [KYUA_CC_FLAGS(${try_c_cxx_flags} ${try_c_flags})]) - m4_set_contains([languages], [C++], - [KYUA_CXX_FLAGS(${try_c_cxx_flags} ${try_cxx_flags})]) -]) diff --git a/unit/atf-src/m4/libtool.m4 b/unit/atf-src/m4/libtool.m4 deleted file mode 100644 index a3bc337b79..0000000000 --- a/unit/atf-src/m4/libtool.m4 +++ /dev/null @@ -1,8369 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -]) - -# serial 58 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_PREPARE_CC_BASENAME -# ----------------------- -m4_defun([_LT_PREPARE_CC_BASENAME], [ -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} -])# _LT_PREPARE_CC_BASENAME - - -# _LT_CC_BASENAME(CC) -# ------------------- -# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, -# but that macro is also expanded into generated libtool script, which -# arranges for $SED and $ECHO to be set by different means. -m4_defun([_LT_CC_BASENAME], -[m4_require([_LT_PREPARE_CC_BASENAME])dnl -AC_REQUIRE([_LT_DECL_SED])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -func_cc_basename $1 -cc_basename=$func_cc_basename_result -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl -m4_require([_LT_CMD_TRUNCATE])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from 'configure', and 'config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# 'config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain=$ac_aux_dir/ltmain.sh -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the 'libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to 'config.status' so that its -# declaration there will have the same value as in 'configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags='_LT_TAGS'dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into 'config.status', and then the shell code to quote escape them in -# for loops in 'config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# '#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test 0 != $[#] -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test yes = "$silent" && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -_LT_COPYING -_LT_LIBTOOL_TAGS - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -_LT_PREPARE_MUNGE_PATH_LIST -_LT_PREPARE_CC_BASENAME - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; then - _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\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - _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" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _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" - _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" - m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then - _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" - _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" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script that will find a shell with a builtin -# printf (that we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case $ECHO in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([$with_sysroot]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test yes = "[$]$2"; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS -]) - -if test yes = "[$]$2"; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n "$lt_cv_sys_max_cmd_len"; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", - [Define to the sub-directory where libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then - - # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_PREPARE_MUNGE_PATH_LIST -# --------------------------- -# Make sure func_munge_path_list() is defined correctly. -m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], -[[# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} -]])# _LT_PREPARE_PATH_LIST - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -AC_ARG_VAR([LT_SYS_LIBRARY_PATH], -[User-defined run-time library search path.]) - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a[(]lib.so.V[)]' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $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' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - 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' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], - [Detected run-time system search path for libraries]) -_LT_DECL([], [configure_time_lt_sys_library_path], [2], - [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program that can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program that can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], -[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi]) -rm -f conftest.i conftest2.i conftest.out]) -])# _LT_PATH_DD - - -# _LT_CMD_TRUNCATE -# ---------------- -# find command to truncate a binary pipe -m4_defun([_LT_CMD_TRUNCATE], -[m4_require([_LT_PATH_DD]) -AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], -[printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) -_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], - [Command to truncate a binary pipe]) -])# _LT_CMD_TRUNCATE - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [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]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - 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]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# _LT_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM=-lm) - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _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" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test yes = "$GCC"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _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' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _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)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _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' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _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' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _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' - _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' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _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' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _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' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _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' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _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' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _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' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _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" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _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)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _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' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test yes = "$GCC"; then - _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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - _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' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; then - _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' - fi - else - _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' - _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' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(ld_shlibs, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - osf3*) - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _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' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _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' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _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' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _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' - _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~ - $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' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $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' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report what library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC=$lt_save_CC -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _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" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _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' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $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' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - ;; - *) - if test yes = "$GXX"; then - _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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _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' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _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' - ;; - *) - _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' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _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' - _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' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _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' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - _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' - else - _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' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _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' - _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' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $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' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _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' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _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' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _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' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _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' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - _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' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _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' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _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' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _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' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $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~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - 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"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - _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' - ;; - *) - _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' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $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' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)=$p - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_F77"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test no = "$FC"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_FC"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code=$lt_simple_compile_test_code - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine what file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/unit/atf-src/m4/ltoptions.m4 b/unit/atf-src/m4/ltoptions.m4 deleted file mode 100644 index 94b0829766..0000000000 --- a/unit/atf-src/m4/ltoptions.m4 +++ /dev/null @@ -1,437 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 8 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option '$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl 'shared' nor 'disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], - [_LT_WITH_AIX_SONAME([aix])]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the 'shared' and -# 'disable-shared' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the 'static' and -# 'disable-static' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the 'fast-install' -# and 'disable-fast-install' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_AIX_SONAME([DEFAULT]) -# ---------------------------------- -# implement the --with-aix-soname flag, and support the `aix-soname=aix' -# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT -# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. -m4_define([_LT_WITH_AIX_SONAME], -[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl -shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[[5-9]]*,yes) - AC_MSG_CHECKING([which variant of shared library versioning to provide]) - AC_ARG_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], - [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], - [case $withval in - aix|svr4|both) - ;; - *) - AC_MSG_ERROR([Unknown argument to --with-aix-soname]) - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname], - [AC_CACHE_VAL([lt_cv_with_aix_soname], - [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) - with_aix_soname=$lt_cv_with_aix_soname]) - AC_MSG_RESULT([$with_aix_soname]) - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - -_LT_DECL([], [shared_archive_member_spec], [0], - [Shared archive member basename, for filename based shared library versioning on AIX])dnl -])# _LT_WITH_AIX_SONAME - -LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' -# LT_INIT options. -# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [pic_mode=m4_default([$1], [default])]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/unit/atf-src/m4/ltsugar.m4 b/unit/atf-src/m4/ltsugar.m4 deleted file mode 100644 index 48bc9344a4..0000000000 --- a/unit/atf-src/m4/ltsugar.m4 +++ /dev/null @@ -1,124 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/unit/atf-src/m4/ltversion.m4 b/unit/atf-src/m4/ltversion.m4 deleted file mode 100644 index fa04b52a3b..0000000000 --- a/unit/atf-src/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 4179 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/unit/atf-src/m4/lt~obsolete.m4 b/unit/atf-src/m4/lt~obsolete.m4 deleted file mode 100644 index c6b26f88f6..0000000000 --- a/unit/atf-src/m4/lt~obsolete.m4 +++ /dev/null @@ -1,99 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/unit/atf-src/m4/module-application.m4 b/unit/atf-src/m4/module-application.m4 deleted file mode 100644 index 6966b7177e..0000000000 --- a/unit/atf-src/m4/module-application.m4 +++ /dev/null @@ -1,90 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AC_DEFUN([ATF_MODULE_APPLICATION], [ - ATF_CHECK_STD_VSNPRINTF - - AC_CACHE_CHECK( - [whether getopt allows a + sign for POSIX behavior], - [kyua_cv_getopt_plus], [ - AC_LANG_PUSH([C]) - AC_RUN_IFELSE([AC_LANG_PROGRAM([#include -#include -#include ], [ - int argc = 4; - char* argv@<:@5@:>@ = { - strdup("conftest"), - strdup("-+"), - strdup("-a"), - strdup("bar"), - NULL - }; - int ch; - int seen_a = 0, seen_plus = 0; - - while ((ch = getopt(argc, argv, "+a:")) != -1) { - switch (ch) { - case 'a': - seen_a = 1; - break; - - case '+': - seen_plus = 1; - break; - - case '?': - default: - ; - } - } - - return (seen_a && !seen_plus) ? EXIT_SUCCESS : EXIT_FAILURE; -])], - [kyua_cv_getopt_plus=yes], - [kyua_cv_getopt_plus=no]) - AC_LANG_POP([C]) - ]) - if test x"${kyua_cv_getopt_plus}" = xyes; then - AC_DEFINE([HAVE_GNU_GETOPT], [1], - [Define to 1 if getopt allows a + sign for POSIX behavior]) - fi - - AC_CACHE_CHECK( - [whether getopt has optreset], - [kyua_cv_getopt_optreset], [ - AC_LANG_PUSH([C]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include -#include ], [ - optreset = 1; - return EXIT_SUCCESS; -])], - [kyua_cv_getopt_optreset=yes], - [kyua_cv_getopt_optreset=no]) - AC_LANG_POP([C]) - ]) - if test x"${kyua_cv_getopt_optreset}" = xyes; then - AC_DEFINE([HAVE_OPTRESET], [1], [Define to 1 if getopt has optreset]) - fi -]) diff --git a/unit/atf-src/m4/module-defs.m4 b/unit/atf-src/m4/module-defs.m4 deleted file mode 100644 index b1c9cc843f..0000000000 --- a/unit/atf-src/m4/module-defs.m4 +++ /dev/null @@ -1,108 +0,0 @@ -dnl Copyright (c) 2008 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AC_DEFUN([ATF_ATTRIBUTE_FORMAT_PRINTF], [ - AC_MSG_CHECKING( - [whether __attribute__((__format__(__printf__, a, b))) is supported]) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([ -#include -#include - -static void test_printf(const char *, ...) - __attribute__((__format__(__printf__, 1, 2))); - -static void -test_printf(const char *format, ...) -{ - va_list ap; - - va_start(ap, format); - vprintf(format, ap); - va_end(ap); -}], [ - test_printf("foo %s", "bar"); - return 0; -])], - [AC_MSG_RESULT(yes) - value="__attribute__((__format__(__printf__, a, b)))"], - [AC_MSG_RESULT(no) - value=""] - ) - AC_SUBST([ATTRIBUTE_FORMAT_PRINTF], [${value}]) -]) - -AC_DEFUN([ATF_ATTRIBUTE_NORETURN], [ - dnl XXX This check is overly simple and should be fixed. For example, - dnl Sun's cc does support the noreturn attribute but CC (the C++ - dnl compiler) does not. And in that case, CC just raises a warning - dnl during compilation, not an error, which later breaks the - dnl atf-c++/t_pkg_config:cxx_build check. - AC_CACHE_CHECK( - [whether __attribute__((__noreturn__)) is supported], - [kyua_cv_attribute_noreturn], [ - AC_RUN_IFELSE( - [AC_LANG_PROGRAM([], [ -#if ((__GNUC__ == 2 && __GNUC_MINOR__ >= 5) || __GNUC__ > 2) - return 0; -#else - return 1; -#endif -])], - [kyua_cv_attribute_noreturn=yes], - [kyua_cv_attribute_noreturn=no]) - ]) - if test x"${kyua_cv_attribute_noreturn}" = xyes; then - value="__attribute__((__noreturn__))" - else - value="" - fi - AC_SUBST([ATTRIBUTE_NORETURN], [${value}]) -]) - -AC_DEFUN([ATF_ATTRIBUTE_UNUSED], [ - AC_MSG_CHECKING(whether __attribute__((__unused__)) is supported) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([ -static void -function(int a __attribute__((__unused__))) -{ -}], [ - function(3); - return 0; -])], - [AC_MSG_RESULT(yes) - value="__attribute__((__unused__))"], - [AC_MSG_RESULT(no) - value=""] - ) - AC_SUBST([ATTRIBUTE_UNUSED], [${value}]) -]) - -AC_DEFUN([ATF_MODULE_DEFS], [ - ATF_ATTRIBUTE_FORMAT_PRINTF - ATF_ATTRIBUTE_NORETURN - ATF_ATTRIBUTE_UNUSED -]) diff --git a/unit/atf-src/m4/module-env.m4 b/unit/atf-src/m4/module-env.m4 deleted file mode 100644 index 963aab386e..0000000000 --- a/unit/atf-src/m4/module-env.m4 +++ /dev/null @@ -1,28 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AC_DEFUN([ATF_MODULE_ENV], [ - AC_CHECK_FUNCS([putenv setenv unsetenv]) -]) diff --git a/unit/atf-src/m4/module-fs.m4 b/unit/atf-src/m4/module-fs.m4 deleted file mode 100644 index 032a3fa7ff..0000000000 --- a/unit/atf-src/m4/module-fs.m4 +++ /dev/null @@ -1,65 +0,0 @@ -dnl Copyright (c) 2007 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -AC_DEFUN([ATF_MODULE_FS], [ - AC_MSG_CHECKING(whether basename takes a constant pointer) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([#include ], [ - const char* s = "/foo/bar/"; - (void)::basename(s); - ])], - AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_CONST_BASENAME], [1], - [Define to 1 if basename takes a constant pointer]), - AC_MSG_RESULT(no)) - - AC_MSG_CHECKING(whether dirname takes a constant pointer) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([#include ], [ - const char* s = "/foo/bar/"; - (void)::dirname(s); - ])], - AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_CONST_DIRNAME], [1], - [Define to 1 if dirname takes a constant pointer]), - AC_MSG_RESULT(no)) - - AC_CACHE_CHECK( - [whether getcwd(NULL, 0) works], - [kyua_cv_getcwd_works], [ - AC_RUN_IFELSE( - [AC_LANG_PROGRAM([#include -#include ], [ - char *cwd = getcwd(NULL, 0); - return (cwd != NULL) ? EXIT_SUCCESS : EXIT_FAILURE; - ])], - [kyua_cv_getcwd_works=yes], - [kyua_cv_getcwd_works=no]) - ]) - if test x"${kyua_cv_getcwd_works}" = xyes; then - AC_DEFINE([HAVE_GETCWD_DYN], [1], - [Define to 1 if getcwd(NULL, 0) works]) - fi -]) diff --git a/unit/atf-src/m4/module-signals.m4 b/unit/atf-src/m4/module-signals.m4 deleted file mode 100644 index 6580eb6e10..0000000000 --- a/unit/atf-src/m4/module-signals.m4 +++ /dev/null @@ -1,86 +0,0 @@ -dnl -dnl Automated Testing Framework (atf) -dnl -dnl Copyright (c) 2008 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -dnl - -AC_DEFUN([ATF_MODULE_SIGNALS], [ - AC_CACHE_CHECK( - [for the last valid signal], - [kyua_cv_signal_lastno], [ - AC_RUN_IFELSE([AC_LANG_PROGRAM([#include -#include -#include -#include -#include -#include ], [ - int i; - FILE *f; - - i = 0; - while (i < 1024) { - i++; - if (i != SIGKILL && i != SIGSTOP) { - struct sigaction sa; - int ret; - - sa.sa_handler = SIG_IGN; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - - ret = sigaction(i, &sa, NULL); - if (ret == -1) { - if (errno == EINVAL) { - i--; - break; - } else - err(EXIT_FAILURE, "sigaction failed"); - } - } - } - if (i == 100) - errx(EXIT_FAILURE, "too much signals"); - - f = fopen("conftest.cnt", "w"); - if (f == NULL) - err(EXIT_FAILURE, "failed to open file"); - - fprintf(f, "%d\n", i); - fclose(f); - - return EXIT_SUCCESS; -])], - [if test ! -f conftest.cnt; then - kyua_cv_signal_lastno=15 - else - kyua_cv_signal_lastno=$(cat conftest.cnt) - rm -f conftest.cnt - fi], - [kyua_cv_signal_lastno=15]) - ]) - AC_DEFINE_UNQUOTED([LAST_SIGNO], [${kyua_cv_signal_lastno}], - [Define to the last valid signal number]) -]) diff --git a/unit/atf-src/m4/runtime-tool.m4 b/unit/atf-src/m4/runtime-tool.m4 deleted file mode 100644 index 3b453b7919..0000000000 --- a/unit/atf-src/m4/runtime-tool.m4 +++ /dev/null @@ -1,40 +0,0 @@ -dnl Copyright (c) 2009 The NetBSD Foundation, Inc. -dnl All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -dnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -dnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -dnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -dnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -dnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -dnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -dnl ----------------------------------------------------------------------- -dnl User-customizable tools used at run-time. -dnl ----------------------------------------------------------------------- - -dnl -dnl ATF_RUNTIME_TOOL(varname, description, default) -dnl -dnl Provides a configure-time configuration variable. The value provided -dnl here can later be overriden at run-time via the environment. -dnl -AC_DEFUN([ATF_RUNTIME_TOOL],[ - AC_ARG_VAR([$1], [$2]) - test x"${$1-unset}" = x"unset" && $1="$3" - AC_SUBST($1) -]) diff --git a/unit/atf-src/test-programs/Atffile b/unit/atf-src/test-programs/Atffile deleted file mode 100644 index 6a67a8ffbd..0000000000 --- a/unit/atf-src/test-programs/Atffile +++ /dev/null @@ -1,9 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: config_test -tp: expect_test -tp: meta_data_test -tp: srcdir_test -tp: result_test diff --git a/unit/atf-src/test-programs/Kyuafile b/unit/atf-src/test-programs/Kyuafile deleted file mode 100644 index e5252829e5..0000000000 --- a/unit/atf-src/test-programs/Kyuafile +++ /dev/null @@ -1,9 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="config_test"} -atf_test_program{name="expect_test"} -atf_test_program{name="meta_data_test"} -atf_test_program{name="srcdir_test"} -atf_test_program{name="result_test"} diff --git a/unit/atf-src/test-programs/Makefile.am.inc b/unit/atf-src/test-programs/Makefile.am.inc deleted file mode 100644 index 9ef2b12258..0000000000 --- a/unit/atf-src/test-programs/Makefile.am.inc +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -tests_test_programs_DATA = test-programs/Atffile \ - test-programs/Kyuafile -tests_test_programsdir = $(pkgtestsdir)/test-programs -EXTRA_DIST += $(tests_test_programs_DATA) - -tests_test_programs_PROGRAMS = test-programs/c_helpers -test_programs_c_helpers_SOURCES = test-programs/c_helpers.c -test_programs_c_helpers_LDADD = libatf-c.la - -tests_test_programs_PROGRAMS += test-programs/cpp_helpers -test_programs_cpp_helpers_SOURCES = test-programs/cpp_helpers.cpp -test_programs_cpp_helpers_LDADD = $(ATF_CXX_LIBS) - -common_sh = $(srcdir)/test-programs/common.sh -EXTRA_DIST += test-programs/common.sh - -tests_test_programs_SCRIPTS = test-programs/sh_helpers -CLEANFILES += test-programs/sh_helpers -EXTRA_DIST += test-programs/sh_helpers.sh -test-programs/sh_helpers: $(srcdir)/test-programs/sh_helpers.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/sh_helpers.sh $(common_sh)"; \ - dst="test-programs/sh_helpers"; $(BUILD_SH_TP) - -tests_test_programs_SCRIPTS += test-programs/config_test -CLEANFILES += test-programs/config_test -EXTRA_DIST += test-programs/config_test.sh -test-programs/config_test: $(srcdir)/test-programs/config_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/config_test.sh $(common_sh)"; \ - dst="test-programs/config_test"; $(BUILD_SH_TP) - -tests_test_programs_SCRIPTS += test-programs/expect_test -CLEANFILES += test-programs/expect_test -EXTRA_DIST += test-programs/expect_test.sh -test-programs/expect_test: $(srcdir)/test-programs/expect_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/expect_test.sh $(common_sh)"; \ - dst="test-programs/expect_test"; $(BUILD_SH_TP) - -tests_test_programs_SCRIPTS += test-programs/meta_data_test -CLEANFILES += test-programs/meta_data_test -EXTRA_DIST += test-programs/meta_data_test.sh -test-programs/meta_data_test: $(srcdir)/test-programs/meta_data_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/meta_data_test.sh $(common_sh)"; \ - dst="test-programs/meta_data_test"; $(BUILD_SH_TP) - -tests_test_programs_SCRIPTS += test-programs/result_test -CLEANFILES += test-programs/result_test -EXTRA_DIST += test-programs/result_test.sh -test-programs/result_test: $(srcdir)/test-programs/result_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/result_test.sh $(common_sh)"; \ - dst="test-programs/result_test"; $(BUILD_SH_TP) - -tests_test_programs_SCRIPTS += test-programs/srcdir_test -CLEANFILES += test-programs/srcdir_test -EXTRA_DIST += test-programs/srcdir_test.sh -test-programs/srcdir_test: $(srcdir)/test-programs/srcdir_test.sh - $(AM_V_GEN)src="$(srcdir)/test-programs/srcdir_test.sh $(common_sh)"; \ - dst="test-programs/srcdir_test"; $(BUILD_SH_TP) - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/test-programs/c_helpers.c b/unit/atf-src/test-programs/c_helpers.c deleted file mode 100644 index 1b7aa4ef0b..0000000000 --- a/unit/atf-src/test-programs/c_helpers.c +++ /dev/null @@ -1,503 +0,0 @@ -/* Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include "atf-c/detail/env.h" -#include "atf-c/detail/fs.h" -#include "atf-c/detail/test_helpers.h" -#include "atf-c/detail/text.h" -#include "atf-c/error.h" - -/* --------------------------------------------------------------------- - * Auxiliary functions. - * --------------------------------------------------------------------- */ - -static -void -safe_remove(const char* path) -{ - if (unlink(path) == -1) - atf_tc_fail("unlink(2) of %s failed", path); -} - -static -void -touch(const char *path) -{ - int fd; - fd = open(path, O_WRONLY | O_TRUNC | O_CREAT, 0644); - if (fd == -1) - atf_tc_fail("Could not create file %s", path); - close(fd); -} - -/* --------------------------------------------------------------------- - * Helper tests for "t_cleanup". - * --------------------------------------------------------------------- */ - -ATF_TC_WITH_CLEANUP(cleanup_pass); -ATF_TC_HEAD(cleanup_pass, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_cleanup test " - "program"); -} -ATF_TC_BODY(cleanup_pass, tc) -{ - touch(atf_tc_get_config_var(tc, "tmpfile")); -} -ATF_TC_CLEANUP(cleanup_pass, tc) -{ - if (atf_tc_get_config_var_as_bool(tc, "cleanup")) - safe_remove(atf_tc_get_config_var(tc, "tmpfile")); -} - -ATF_TC_WITH_CLEANUP(cleanup_fail); -ATF_TC_HEAD(cleanup_fail, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_cleanup test " - "program"); -} -ATF_TC_BODY(cleanup_fail, tc) -{ - touch(atf_tc_get_config_var(tc, "tmpfile")); - atf_tc_fail("On purpose"); -} -ATF_TC_CLEANUP(cleanup_fail, tc) -{ - if (atf_tc_get_config_var_as_bool(tc, "cleanup")) - safe_remove(atf_tc_get_config_var(tc, "tmpfile")); -} - -ATF_TC_WITH_CLEANUP(cleanup_skip); -ATF_TC_HEAD(cleanup_skip, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_cleanup test " - "program"); -} -ATF_TC_BODY(cleanup_skip, tc) -{ - touch(atf_tc_get_config_var(tc, "tmpfile")); - atf_tc_skip("On purpose"); -} -ATF_TC_CLEANUP(cleanup_skip, tc) -{ - if (atf_tc_get_config_var_as_bool(tc, "cleanup")) - safe_remove(atf_tc_get_config_var(tc, "tmpfile")); -} - -ATF_TC_WITH_CLEANUP(cleanup_curdir); -ATF_TC_HEAD(cleanup_curdir, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_cleanup test " - "program"); -} -ATF_TC_BODY(cleanup_curdir, tc) -{ - FILE *f; - - f = fopen("oldvalue", "w"); - if (f == NULL) - atf_tc_fail("Failed to create oldvalue file"); - fprintf(f, "1234"); - fclose(f); -} -ATF_TC_CLEANUP(cleanup_curdir, tc) -{ - FILE *f; - - f = fopen("oldvalue", "r"); - if (f != NULL) { - int i; - if (fscanf(f, "%d", &i) != 1) - fprintf(stderr, "Failed to read old value\n"); - else - printf("Old value: %d", i); - fclose(f); - } -} - -ATF_TC_WITH_CLEANUP(cleanup_sigterm); -ATF_TC_HEAD(cleanup_sigterm, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_cleanup test " - "program"); -} -ATF_TC_BODY(cleanup_sigterm, tc) -{ - char *nofile; - - touch(atf_tc_get_config_var(tc, "tmpfile")); - kill(getpid(), SIGTERM); - - RE(atf_text_format(&nofile, "%s.no", - atf_tc_get_config_var(tc, "tmpfile"))); - touch(nofile); - free(nofile); -} -ATF_TC_CLEANUP(cleanup_sigterm, tc) -{ - safe_remove(atf_tc_get_config_var(tc, "tmpfile")); -} - -/* --------------------------------------------------------------------- - * Helper tests for "t_config". - * --------------------------------------------------------------------- */ - -ATF_TC(config_unset); -ATF_TC_HEAD(config_unset, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_config test " - "program"); -} -ATF_TC_BODY(config_unset, tc) -{ - ATF_REQUIRE(!atf_tc_has_config_var(tc, "test")); -} - -ATF_TC(config_empty); -ATF_TC_HEAD(config_empty, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_config test " - "program"); -} -ATF_TC_BODY(config_empty, tc) -{ - ATF_REQUIRE(atf_tc_has_config_var(tc, "test")); - ATF_REQUIRE(strlen(atf_tc_get_config_var(tc, "test")) == 0); -} - -ATF_TC(config_value); -ATF_TC_HEAD(config_value, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_config test " - "program"); -} -ATF_TC_BODY(config_value, tc) -{ - ATF_REQUIRE(atf_tc_has_config_var(tc, "test")); - ATF_REQUIRE(strcmp(atf_tc_get_config_var(tc, "test"), "foo") == 0); -} - -ATF_TC(config_multi_value); -ATF_TC_HEAD(config_multi_value, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_config test " - "program"); -} -ATF_TC_BODY(config_multi_value, tc) -{ - ATF_REQUIRE(atf_tc_has_config_var(tc, "test")); - ATF_REQUIRE(strcmp(atf_tc_get_config_var(tc, "test"), "foo bar") == 0); -} - -/* --------------------------------------------------------------------- - * Helper tests for "t_expect". - * --------------------------------------------------------------------- */ - -ATF_TC_WITHOUT_HEAD(expect_pass_and_pass); -ATF_TC_BODY(expect_pass_and_pass, tc) -{ - atf_tc_expect_pass(); - -} - -ATF_TC_WITHOUT_HEAD(expect_pass_but_fail_requirement); -ATF_TC_BODY(expect_pass_but_fail_requirement, tc) -{ - atf_tc_expect_pass(); - atf_tc_fail("Some reason"); -} - -ATF_TC_WITHOUT_HEAD(expect_pass_but_fail_check); -ATF_TC_BODY(expect_pass_but_fail_check, tc) -{ - atf_tc_expect_pass(); - atf_tc_fail_nonfatal("Some reason"); -} - -ATF_TC_WITHOUT_HEAD(expect_fail_and_fail_requirement); -ATF_TC_BODY(expect_fail_and_fail_requirement, tc) -{ - atf_tc_expect_fail("Fail %s", "reason"); - atf_tc_fail("The failure"); - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(expect_fail_and_fail_check); -ATF_TC_BODY(expect_fail_and_fail_check, tc) -{ - atf_tc_expect_fail("Fail first"); - atf_tc_fail_nonfatal("abc"); - atf_tc_expect_pass(); - - atf_tc_expect_fail("And fail again"); - atf_tc_fail_nonfatal("def"); - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(expect_fail_but_pass); -ATF_TC_BODY(expect_fail_but_pass, tc) -{ - atf_tc_expect_fail("Fail first"); - atf_tc_fail_nonfatal("abc"); - atf_tc_expect_pass(); - - atf_tc_expect_fail("Will not fail"); - atf_tc_expect_pass(); - - atf_tc_expect_fail("And fail again"); - atf_tc_fail_nonfatal("def"); - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(expect_exit_any_and_exit); -ATF_TC_BODY(expect_exit_any_and_exit, tc) -{ - atf_tc_expect_exit(-1, "Call will exit"); - exit(EXIT_SUCCESS); -} - -ATF_TC_WITHOUT_HEAD(expect_exit_code_and_exit); -ATF_TC_BODY(expect_exit_code_and_exit, tc) -{ - atf_tc_expect_exit(123, "Call will exit"); - exit(123); -} - -ATF_TC_WITHOUT_HEAD(expect_exit_but_pass); -ATF_TC_BODY(expect_exit_but_pass, tc) -{ - atf_tc_expect_exit(-1, "Call won't exit"); -} - -ATF_TC_WITHOUT_HEAD(expect_signal_any_and_signal); -ATF_TC_BODY(expect_signal_any_and_signal, tc) -{ - atf_tc_expect_signal(-1, "Call will signal"); - kill(getpid(), SIGKILL); -} - -ATF_TC_WITHOUT_HEAD(expect_signal_no_and_signal); -ATF_TC_BODY(expect_signal_no_and_signal, tc) -{ - atf_tc_expect_signal(SIGHUP, "Call will signal"); - kill(getpid(), SIGHUP); -} - -ATF_TC_WITHOUT_HEAD(expect_signal_but_pass); -ATF_TC_BODY(expect_signal_but_pass, tc) -{ - atf_tc_expect_signal(-1, "Call won't signal"); -} - -ATF_TC_WITHOUT_HEAD(expect_death_and_exit); -ATF_TC_BODY(expect_death_and_exit, tc) -{ - atf_tc_expect_death("Exit case"); - exit(123); -} - -ATF_TC_WITHOUT_HEAD(expect_death_and_signal); -ATF_TC_BODY(expect_death_and_signal, tc) -{ - atf_tc_expect_death("Signal case"); - kill(getpid(), SIGKILL); -} - -ATF_TC_WITHOUT_HEAD(expect_death_but_pass); -ATF_TC_BODY(expect_death_but_pass, tc) -{ - atf_tc_expect_death("Call won't die"); -} - -ATF_TC(expect_timeout_and_hang); -ATF_TC_HEAD(expect_timeout_and_hang, tc) -{ - atf_tc_set_md_var(tc, "timeout", "1"); -} -ATF_TC_BODY(expect_timeout_and_hang, tc) -{ - atf_tc_expect_timeout("Will overrun"); - sleep(5); -} - -ATF_TC(expect_timeout_but_pass); -ATF_TC_HEAD(expect_timeout_but_pass, tc) -{ - atf_tc_set_md_var(tc, "timeout", "1"); -} -ATF_TC_BODY(expect_timeout_but_pass, tc) -{ - atf_tc_expect_timeout("Will just exit"); -} - -/* --------------------------------------------------------------------- - * Helper tests for "t_meta_data". - * --------------------------------------------------------------------- */ - -ATF_TC_WITHOUT_HEAD(metadata_no_descr); -ATF_TC_BODY(metadata_no_descr, tc) -{ -} - -ATF_TC_WITHOUT_HEAD(metadata_no_head); -ATF_TC_BODY(metadata_no_head, tc) -{ -} - -/* --------------------------------------------------------------------- - * Helper tests for "t_srcdir". - * --------------------------------------------------------------------- */ - -ATF_TC(srcdir_exists); -ATF_TC_HEAD(srcdir_exists, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_srcdir test " - "program"); -} -ATF_TC_BODY(srcdir_exists, tc) -{ - atf_fs_path_t p; - bool b; - - RE(atf_fs_path_init_fmt(&p, "%s/datafile", - atf_tc_get_config_var(tc, "srcdir"))); - RE(atf_fs_exists(&p, &b)); - atf_fs_path_fini(&p); - if (!b) - atf_tc_fail("Cannot find datafile"); -} - -/* --------------------------------------------------------------------- - * Helper tests for "t_result". - * --------------------------------------------------------------------- */ - -ATF_TC_WITHOUT_HEAD(result_pass); -ATF_TC_BODY(result_pass, tc) -{ - printf("msg\n"); -} - -ATF_TC_WITHOUT_HEAD(result_fail); -ATF_TC_BODY(result_fail, tc) -{ - printf("msg\n"); - atf_tc_fail("Failure reason"); -} - -ATF_TC_WITHOUT_HEAD(result_skip); -ATF_TC_BODY(result_skip, tc) -{ - printf("msg\n"); - atf_tc_skip("Skipped reason"); -} - -ATF_TC(result_newlines_fail); -ATF_TC_HEAD(result_newlines_fail, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_result test " - "program"); -} -ATF_TC_BODY(result_newlines_fail, tc) -{ - atf_tc_fail("First line\nSecond line"); -} - -ATF_TC(result_newlines_skip); -ATF_TC_HEAD(result_newlines_skip, tc) -{ - atf_tc_set_md_var(tc, "descr", "Helper test case for the t_result test " - "program"); -} -ATF_TC_BODY(result_newlines_skip, tc) -{ - atf_tc_skip("First line\nSecond line"); -} - -/* --------------------------------------------------------------------- - * Main. - * --------------------------------------------------------------------- */ - -ATF_TP_ADD_TCS(tp) -{ - /* Add helper tests for t_cleanup. */ - ATF_TP_ADD_TC(tp, cleanup_pass); - ATF_TP_ADD_TC(tp, cleanup_fail); - ATF_TP_ADD_TC(tp, cleanup_skip); - ATF_TP_ADD_TC(tp, cleanup_curdir); - ATF_TP_ADD_TC(tp, cleanup_sigterm); - - /* Add helper tests for t_config. */ - ATF_TP_ADD_TC(tp, config_unset); - ATF_TP_ADD_TC(tp, config_empty); - ATF_TP_ADD_TC(tp, config_value); - ATF_TP_ADD_TC(tp, config_multi_value); - - /* Add helper tests for t_expect. */ - ATF_TP_ADD_TC(tp, expect_pass_and_pass); - ATF_TP_ADD_TC(tp, expect_pass_but_fail_requirement); - ATF_TP_ADD_TC(tp, expect_pass_but_fail_check); - ATF_TP_ADD_TC(tp, expect_fail_and_fail_requirement); - ATF_TP_ADD_TC(tp, expect_fail_and_fail_check); - ATF_TP_ADD_TC(tp, expect_fail_but_pass); - ATF_TP_ADD_TC(tp, expect_exit_any_and_exit); - ATF_TP_ADD_TC(tp, expect_exit_code_and_exit); - ATF_TP_ADD_TC(tp, expect_exit_but_pass); - ATF_TP_ADD_TC(tp, expect_signal_any_and_signal); - ATF_TP_ADD_TC(tp, expect_signal_no_and_signal); - ATF_TP_ADD_TC(tp, expect_signal_but_pass); - ATF_TP_ADD_TC(tp, expect_death_and_exit); - ATF_TP_ADD_TC(tp, expect_death_and_signal); - ATF_TP_ADD_TC(tp, expect_death_but_pass); - ATF_TP_ADD_TC(tp, expect_timeout_and_hang); - ATF_TP_ADD_TC(tp, expect_timeout_but_pass); - - /* Add helper tests for t_meta_data. */ - ATF_TP_ADD_TC(tp, metadata_no_descr); - ATF_TP_ADD_TC(tp, metadata_no_head); - - /* Add helper tests for t_srcdir. */ - ATF_TP_ADD_TC(tp, srcdir_exists); - - /* Add helper tests for t_result. */ - ATF_TP_ADD_TC(tp, result_pass); - ATF_TP_ADD_TC(tp, result_fail); - ATF_TP_ADD_TC(tp, result_skip); - ATF_TP_ADD_TC(tp, result_newlines_fail); - ATF_TP_ADD_TC(tp, result_newlines_skip); - - return atf_no_error(); -} diff --git a/unit/atf-src/test-programs/common.sh b/unit/atf-src/test-programs/common.sh deleted file mode 100644 index 91657523b7..0000000000 --- a/unit/atf-src/test-programs/common.sh +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (c) 2008 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -get_helpers() -{ - srcdir=$(atf_get_srcdir) - - if [ ${#} -eq 0 ]; then - set -- c_helpers cpp_helpers sh_helpers - fi - - for h_name in "${@}"; do - echo ${srcdir}/${h_name} - done -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/test-programs/config_test.sh b/unit/atf-src/test-programs/config_test.sh deleted file mode 100644 index 510285215c..0000000000 --- a/unit/atf-src/test-programs/config_test.sh +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case vflag -vflag_head() -{ - atf_set "descr" "Tests that the -v flag works correctly to set" \ - "configuration variables" -} -vflag_body() -{ - for h in $(get_helpers); do - atf_check -s eq:0 -o ignore -e ignore ${h} -s $(atf_get_srcdir) \ - -r resfile config_unset - atf_check -s eq:0 -o ignore -e empty grep 'passed' resfile - - atf_check -s eq:0 -o ignore -e ignore ${h} -s $(atf_get_srcdir) \ - -r resfile -v 'test=' config_empty - atf_check -s eq:0 -o ignore -e empty grep 'passed' resfile - - atf_check -s eq:0 -o ignore -e ignore ${h} -s $(atf_get_srcdir) \ - -r resfile -v 'test=foo' config_value - atf_check -s eq:0 -o ignore -e empty grep 'passed' resfile - - atf_check -s eq:0 -o ignore -e ignore -x ${h} -s $(atf_get_srcdir) \ - -r resfile -v \'test=foo bar\' config_multi_value - atf_check -s eq:0 -o ignore -e empty grep 'passed' resfile - done -} - -atf_init_test_cases() -{ - atf_add_test_case vflag -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/test-programs/cpp_helpers.cpp b/unit/atf-src/test-programs/cpp_helpers.cpp deleted file mode 100644 index ff9e543919..0000000000 --- a/unit/atf-src/test-programs/cpp_helpers.cpp +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -extern "C" { -#include -#include -} - -#include -#include -#include - -#include - -#include "atf-c++/detail/fs.hpp" - -// ------------------------------------------------------------------------ -// Helper tests for "t_config". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(config_unset); -ATF_TEST_CASE_HEAD(config_unset) -{ - set_md_var("descr", "Helper test case for the t_config test program"); -} -ATF_TEST_CASE_BODY(config_unset) -{ - ATF_REQUIRE(!has_config_var("test")); -} - -ATF_TEST_CASE(config_empty); -ATF_TEST_CASE_HEAD(config_empty) -{ - set_md_var("descr", "Helper test case for the t_config test program"); -} -ATF_TEST_CASE_BODY(config_empty) -{ - ATF_REQUIRE_EQ(get_config_var("test"), ""); -} - -ATF_TEST_CASE(config_value); -ATF_TEST_CASE_HEAD(config_value) -{ - set_md_var("descr", "Helper test case for the t_config test program"); -} -ATF_TEST_CASE_BODY(config_value) -{ - ATF_REQUIRE_EQ(get_config_var("test"), "foo"); -} - -ATF_TEST_CASE(config_multi_value); -ATF_TEST_CASE_HEAD(config_multi_value) -{ - set_md_var("descr", "Helper test case for the t_config test program"); -} -ATF_TEST_CASE_BODY(config_multi_value) -{ - ATF_REQUIRE_EQ(get_config_var("test"), "foo bar"); -} - -// ------------------------------------------------------------------------ -// Helper tests for "t_expect". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE_WITHOUT_HEAD(expect_pass_and_pass); -ATF_TEST_CASE_BODY(expect_pass_and_pass) -{ - expect_pass(); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_pass_but_fail_requirement); -ATF_TEST_CASE_BODY(expect_pass_but_fail_requirement) -{ - expect_pass(); - fail("Some reason"); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_pass_but_fail_check); -ATF_TEST_CASE_BODY(expect_pass_but_fail_check) -{ - expect_pass(); - fail_nonfatal("Some reason"); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_fail_and_fail_requirement); -ATF_TEST_CASE_BODY(expect_fail_and_fail_requirement) -{ - expect_fail("Fail reason"); - fail("The failure"); - expect_pass(); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_fail_and_fail_check); -ATF_TEST_CASE_BODY(expect_fail_and_fail_check) -{ - expect_fail("Fail first"); - fail_nonfatal("abc"); - expect_pass(); - - expect_fail("And fail again"); - fail_nonfatal("def"); - expect_pass(); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_fail_but_pass); -ATF_TEST_CASE_BODY(expect_fail_but_pass) -{ - expect_fail("Fail first"); - fail_nonfatal("abc"); - expect_pass(); - - expect_fail("Will not fail"); - expect_pass(); - - expect_fail("And fail again"); - fail_nonfatal("def"); - expect_pass(); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_exit_any_and_exit); -ATF_TEST_CASE_BODY(expect_exit_any_and_exit) -{ - expect_exit(-1, "Call will exit"); - std::exit(EXIT_SUCCESS); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_exit_code_and_exit); -ATF_TEST_CASE_BODY(expect_exit_code_and_exit) -{ - expect_exit(123, "Call will exit"); - std::exit(123); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_exit_but_pass); -ATF_TEST_CASE_BODY(expect_exit_but_pass) -{ - expect_exit(-1, "Call won't exit"); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_signal_any_and_signal); -ATF_TEST_CASE_BODY(expect_signal_any_and_signal) -{ - expect_signal(-1, "Call will signal"); - ::kill(getpid(), SIGKILL); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_signal_no_and_signal); -ATF_TEST_CASE_BODY(expect_signal_no_and_signal) -{ - expect_signal(SIGHUP, "Call will signal"); - ::kill(getpid(), SIGHUP); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_signal_but_pass); -ATF_TEST_CASE_BODY(expect_signal_but_pass) -{ - expect_signal(-1, "Call won't signal"); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_death_and_exit); -ATF_TEST_CASE_BODY(expect_death_and_exit) -{ - expect_death("Exit case"); - std::exit(123); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_death_and_signal); -ATF_TEST_CASE_BODY(expect_death_and_signal) -{ - expect_death("Signal case"); - kill(getpid(), SIGKILL); -} - -ATF_TEST_CASE_WITHOUT_HEAD(expect_death_but_pass); -ATF_TEST_CASE_BODY(expect_death_but_pass) -{ - expect_death("Call won't die"); -} - -ATF_TEST_CASE(expect_timeout_and_hang); -ATF_TEST_CASE_HEAD(expect_timeout_and_hang) -{ - set_md_var("timeout", "1"); -} -ATF_TEST_CASE_BODY(expect_timeout_and_hang) -{ - expect_timeout("Will overrun"); - ::sleep(5); -} - -ATF_TEST_CASE(expect_timeout_but_pass); -ATF_TEST_CASE_HEAD(expect_timeout_but_pass) -{ - set_md_var("timeout", "1"); -} -ATF_TEST_CASE_BODY(expect_timeout_but_pass) -{ - expect_timeout("Will just exit"); -} - -// ------------------------------------------------------------------------ -// Helper tests for "t_meta_data". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(metadata_no_descr); -ATF_TEST_CASE_HEAD(metadata_no_descr) -{ -} -ATF_TEST_CASE_BODY(metadata_no_descr) -{ -} - -ATF_TEST_CASE_WITHOUT_HEAD(metadata_no_head); -ATF_TEST_CASE_BODY(metadata_no_head) -{ -} - -// ------------------------------------------------------------------------ -// Helper tests for "t_srcdir". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(srcdir_exists); -ATF_TEST_CASE_HEAD(srcdir_exists) -{ - set_md_var("descr", "Helper test case for the t_srcdir test program"); -} -ATF_TEST_CASE_BODY(srcdir_exists) -{ - if (!atf::fs::exists(atf::fs::path(get_config_var("srcdir")) / - "datafile")) - ATF_FAIL("Cannot find datafile"); -} - -// ------------------------------------------------------------------------ -// Helper tests for "t_result". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(result_pass); -ATF_TEST_CASE_HEAD(result_pass) { } -ATF_TEST_CASE_BODY(result_pass) -{ - std::cout << "msg\n"; -} - -ATF_TEST_CASE(result_fail); -ATF_TEST_CASE_HEAD(result_fail) { } -ATF_TEST_CASE_BODY(result_fail) -{ - std::cout << "msg\n"; - ATF_FAIL("Failure reason"); -} - -ATF_TEST_CASE(result_skip); -ATF_TEST_CASE_HEAD(result_skip) { } -ATF_TEST_CASE_BODY(result_skip) -{ - std::cout << "msg\n"; - ATF_SKIP("Skipped reason"); -} - -ATF_TEST_CASE(result_newlines_fail); -ATF_TEST_CASE_HEAD(result_newlines_fail) -{ - set_md_var("descr", "Helper test case for the t_result test program"); -} -ATF_TEST_CASE_BODY(result_newlines_fail) -{ - ATF_FAIL("First line\nSecond line"); -} - -ATF_TEST_CASE(result_newlines_skip); -ATF_TEST_CASE_HEAD(result_newlines_skip) -{ - set_md_var("descr", "Helper test case for the t_result test program"); -} -ATF_TEST_CASE_BODY(result_newlines_skip) -{ - ATF_SKIP("First line\nSecond line"); -} - -ATF_TEST_CASE(result_exception); -ATF_TEST_CASE_HEAD(result_exception) { } -ATF_TEST_CASE_BODY(result_exception) -{ - throw std::runtime_error("This is unhandled"); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add helper tests for t_config. - ATF_ADD_TEST_CASE(tcs, config_unset); - ATF_ADD_TEST_CASE(tcs, config_empty); - ATF_ADD_TEST_CASE(tcs, config_value); - ATF_ADD_TEST_CASE(tcs, config_multi_value); - - // Add helper tests for t_expect. - ATF_ADD_TEST_CASE(tcs, expect_pass_and_pass); - ATF_ADD_TEST_CASE(tcs, expect_pass_but_fail_requirement); - ATF_ADD_TEST_CASE(tcs, expect_pass_but_fail_check); - ATF_ADD_TEST_CASE(tcs, expect_fail_and_fail_requirement); - ATF_ADD_TEST_CASE(tcs, expect_fail_and_fail_check); - ATF_ADD_TEST_CASE(tcs, expect_fail_but_pass); - ATF_ADD_TEST_CASE(tcs, expect_exit_any_and_exit); - ATF_ADD_TEST_CASE(tcs, expect_exit_code_and_exit); - ATF_ADD_TEST_CASE(tcs, expect_exit_but_pass); - ATF_ADD_TEST_CASE(tcs, expect_signal_any_and_signal); - ATF_ADD_TEST_CASE(tcs, expect_signal_no_and_signal); - ATF_ADD_TEST_CASE(tcs, expect_signal_but_pass); - ATF_ADD_TEST_CASE(tcs, expect_death_and_exit); - ATF_ADD_TEST_CASE(tcs, expect_death_and_signal); - ATF_ADD_TEST_CASE(tcs, expect_death_but_pass); - ATF_ADD_TEST_CASE(tcs, expect_timeout_and_hang); - ATF_ADD_TEST_CASE(tcs, expect_timeout_but_pass); - - // Add helper tests for t_meta_data. - ATF_ADD_TEST_CASE(tcs, metadata_no_descr); - ATF_ADD_TEST_CASE(tcs, metadata_no_head); - - // Add helper tests for t_srcdir. - ATF_ADD_TEST_CASE(tcs, srcdir_exists); - - // Add helper tests for t_result. - ATF_ADD_TEST_CASE(tcs, result_pass); - ATF_ADD_TEST_CASE(tcs, result_fail); - ATF_ADD_TEST_CASE(tcs, result_skip); - ATF_ADD_TEST_CASE(tcs, result_newlines_fail); - ATF_ADD_TEST_CASE(tcs, result_newlines_skip); - ATF_ADD_TEST_CASE(tcs, result_exception); -} diff --git a/unit/atf-src/test-programs/expect_test.sh b/unit/atf-src/test-programs/expect_test.sh deleted file mode 100644 index 74e38e1d6a..0000000000 --- a/unit/atf-src/test-programs/expect_test.sh +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -check_result() { - file="${1}"; shift - - atf_check -s eq:0 -o match:"${*}" -e empty cat "${file}" - rm "${file}" -} - -atf_test_case expect_pass -expect_pass_body() { - for h in $(get_helpers); do - atf_check -s eq:0 -e ignore "${h}" -r result expect_pass_and_pass - check_result result "passed" - - atf_check -s eq:1 -e ignore "${h}" -r result \ - expect_pass_but_fail_requirement - check_result result "failed: Some reason" - - # atf-sh does not support non-fatal failures yet; skip checks for - # such conditions. - case "${h}" in *sh_helpers*) continue ;; esac - - atf_check -s eq:1 -o empty -e match:"Some reason" \ - "${h}" -r result expect_pass_but_fail_check - check_result result "failed: 1 checks failed" - done -} - -atf_test_case expect_fail -expect_fail_body() { - for h in $(get_helpers c_helpers cpp_helpers); do - atf_check -s eq:0 "${h}" -r result expect_fail_and_fail_requirement - check_result result "expected_failure: Fail reason: The failure" - - atf_check -s eq:1 -e match:"Expected check failure: Fail first: abc" \ - -e not-match:"And fail again" "${h}" -r result expect_fail_but_pass - check_result result "failed: .*expecting a failure" - - # atf-sh does not support non-fatal failures yet; skip checks for - # such conditions. - case "${h}" in *sh_helpers*) continue ;; esac - - atf_check -s eq:0 -e match:"Expected check failure: Fail first: abc" \ - -e match:"Expected check failure: And fail again: def" \ - "${h}" -r result expect_fail_and_fail_check - check_result result "expected_failure: And fail again: 2 checks" \ - "failed as expected" - done - - # atf-sh does not support non-fatal failures yet; skip checks for - # such conditions. - for h in $(get_helpers sh_helpers); do - atf_check -s eq:0 -e ignore "${h}" -r result \ - expect_fail_and_fail_requirement - check_result result "expected_failure: Fail reason: The failure" - - atf_check -s eq:1 -e ignore "${h}" -r result expect_fail_but_pass - check_result result "failed: .*expecting a failure" - done -} - -atf_test_case expect_exit -expect_exit_body() { - for h in $(get_helpers); do - atf_check -s eq:0 -e ignore "${h}" -r result expect_exit_any_and_exit - check_result result "expected_exit: Call will exit" - - atf_check -s eq:123 -e ignore "${h}" -r result expect_exit_code_and_exit - check_result result "expected_exit\(123\): Call will exit" - - atf_check -s eq:1 -e ignore "${h}" -r result expect_exit_but_pass - check_result result "failed: .*expected to exit" - done -} - -atf_test_case expect_signal -expect_signal_body() { - for h in $(get_helpers); do - atf_check -s signal:9 -e ignore "${h}" -r result \ - expect_signal_any_and_signal - check_result result "expected_signal: Call will signal" - - atf_check -s signal:hup -e ignore "${h}" -r result \ - expect_signal_no_and_signal - check_result result "expected_signal\(1\): Call will signal" - - atf_check -s eq:1 -e ignore "${h}" -r result \ - expect_signal_but_pass - check_result result "failed: .*termination signal" - done -} - -atf_test_case expect_death -expect_death_body() { - for h in $(get_helpers); do - atf_check -s eq:123 -e ignore "${h}" -r result expect_death_and_exit - check_result result "expected_death: Exit case" - - atf_check -s signal:kill -e ignore "${h}" -r result \ - expect_death_and_signal - check_result result "expected_death: Signal case" - - atf_check -s eq:1 -e ignore "${h}" -r result expect_death_but_pass - check_result result "failed: .*terminate abruptly" - done -} - -atf_test_case expect_timeout -expect_timeout_body() { - for h in $(get_helpers); do - atf_check -s eq:1 -e ignore "${h}" -r result expect_timeout_but_pass - check_result result "failed: Test case was expected to hang but it" \ - "continued execution" - done -} - -atf_init_test_cases() -{ - atf_add_test_case expect_pass - atf_add_test_case expect_fail - atf_add_test_case expect_exit - atf_add_test_case expect_signal - atf_add_test_case expect_death - atf_add_test_case expect_timeout -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/test-programs/meta_data_test.sh b/unit/atf-src/test-programs/meta_data_test.sh deleted file mode 100644 index 150b9e2120..0000000000 --- a/unit/atf-src/test-programs/meta_data_test.sh +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2010 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case no_descr -no_descr_head() -{ - atf_set "descr" "Tests that the description may not be present" -} -no_descr_body() -{ - for h in $(get_helpers); do - atf_check -s eq:0 -o ignore -e ignore ${h} -s $(atf_get_srcdir) -l - atf_check -s eq:0 -o match:passed -e ignore ${h} -s $(atf_get_srcdir) \ - metadata_no_descr - done -} - -atf_test_case no_head -no_head_head() -{ - atf_set "descr" "Tests that the head may not be present" -} -no_head_body() -{ - for h in $(get_helpers); do - atf_check -s eq:0 -o ignore -e ignore ${h} -s $(atf_get_srcdir) -l - atf_check -s eq:0 -o match:passed -e ignore ${h} -s $(atf_get_srcdir) \ - metadata_no_head - done -} - -atf_init_test_cases() -{ - atf_add_test_case no_descr - atf_add_test_case no_head -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/test-programs/result_test.sh b/unit/atf-src/test-programs/result_test.sh deleted file mode 100644 index a87f08daaf..0000000000 --- a/unit/atf-src/test-programs/result_test.sh +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -atf_test_case runtime_warnings -runtime_warnings_head() -{ - # The fact that this test case is in this test program is an abuse. - atf_set "descr" "Tests that the test case prints a warning because" \ - "it is being run outside of a runtime engine" -} -runtime_warnings_body() -{ - unset __RUNNING_INSIDE_ATF_RUN - srcdir="$(atf_get_srcdir)" - for h in $(get_helpers); do - atf_check -s eq:0 -o match:"passed" -e match:"WARNING.*kyua" \ - "${h}" -s "${srcdir}" result_pass - done -} - -atf_test_case result_on_stdout -result_on_stdout_head() -{ - atf_set "descr" "Tests that the test case result is printed on stdout" \ - "by default" -} -result_on_stdout_body() -{ - srcdir="$(atf_get_srcdir)" - for h in $(get_helpers); do - atf_check -s eq:0 -o match:"passed" -o match:"msg" \ - -e ignore "${h}" -s "${srcdir}" result_pass - atf_check -s eq:1 -o match:"failed: Failure reason" -o match:"msg" \ - -e ignore "${h}" -s "${srcdir}" result_fail - atf_check -s eq:0 -o match:"skipped: Skipped reason" -o match:"msg" \ - -e ignore "${h}" -s "${srcdir}" result_skip - done -} - -atf_test_case result_to_file -result_to_file_head() -{ - atf_set "descr" "Tests that the test case result is sent to a file if -r" \ - "is used" -} -result_to_file_body() -{ - srcdir="$(atf_get_srcdir)" - for h in $(get_helpers); do - atf_check -s eq:0 -o inline:"msg\n" -e ignore "${h}" -s "${srcdir}" \ - -r resfile result_pass - atf_check -o inline:"passed\n" cat resfile - - atf_check -s eq:1 -o inline:"msg\n" -e ignore "${h}" -s "${srcdir}" \ - -r resfile result_fail - atf_check -o inline:"failed: Failure reason\n" cat resfile - - atf_check -s eq:0 -o inline:"msg\n" -e ignore "${h}" -s "${srcdir}" \ - -r resfile result_skip - atf_check -o inline:"skipped: Skipped reason\n" cat resfile - done -} - -atf_test_case result_to_file_fail -result_to_file_fail_head() -{ - atf_set "descr" "Tests controlled failure if the test program fails to" \ - "create the results file" - atf_set "require.user" "unprivileged" -} -result_to_file_fail_body() -{ - mkdir dir - chmod 444 dir - - srcdir="$(atf_get_srcdir)" - - for h in $(get_helpers c_helpers cpp_helpers); do - atf_check -s signal -o ignore \ - -e match:"FATAL ERROR: Cannot create.*'dir/resfile'" \ - "${h}" -s "${srcdir}" -r dir/resfile result_pass - done - - for h in $(get_helpers sh_helpers); do - atf_check -s exit -o ignore \ - -e match:"ERROR: Cannot create.*'dir/resfile'" \ - "${h}" -s "${srcdir}" -r dir/resfile result_pass - done -} - -atf_test_case result_exception -result_exception_head() -{ - atf_set "descr" "Tests that an unhandled exception is correctly captured" -} -result_exception_body() -{ - for h in $(get_helpers cpp_helpers); do - atf_check -s signal -o not-match:'failed: .*This is unhandled' \ - -e ignore "${h}" -s "${srcdir}" result_exception - done -} - -atf_init_test_cases() -{ - atf_add_test_case runtime_warnings - atf_add_test_case result_on_stdout - atf_add_test_case result_to_file - atf_add_test_case result_to_file_fail - atf_add_test_case result_exception -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/test-programs/sh_helpers.sh b/unit/atf-src/test-programs/sh_helpers.sh deleted file mode 100644 index b27a541df5..0000000000 --- a/unit/atf-src/test-programs/sh_helpers.sh +++ /dev/null @@ -1,390 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# ------------------------------------------------------------------------- -# Helper tests for "t_cleanup". -# ------------------------------------------------------------------------- - -atf_test_case cleanup_pass cleanup -cleanup_pass_head() -{ - atf_set "descr" "Helper test case for the t_cleanup test program" -} -cleanup_pass_body() -{ - touch $(atf_config_get tmpfile) -} -cleanup_pass_cleanup() -{ - if [ $(atf_config_get cleanup no) = yes ]; then - rm $(atf_config_get tmpfile) - fi -} - -atf_test_case cleanup_fail cleanup -cleanup_fail_head() -{ - atf_set "descr" "Helper test case for the t_cleanup test program" -} -cleanup_fail_body() -{ - touch $(atf_config_get tmpfile) - atf_fail "On purpose" -} -cleanup_fail_cleanup() -{ - if [ $(atf_config_get cleanup no) = yes ]; then - rm $(atf_config_get tmpfile) - fi -} - -atf_test_case cleanup_skip cleanup -cleanup_skip_head() -{ - atf_set "descr" "Helper test case for the t_cleanup test program" -} -cleanup_skip_body() -{ - touch $(atf_config_get tmpfile) - atf_skip "On purpose" -} -cleanup_skip_cleanup() -{ - if [ $(atf_config_get cleanup no) = yes ]; then - rm $(atf_config_get tmpfile) - fi -} - -atf_test_case cleanup_curdir cleanup -cleanup_curdir_head() -{ - atf_set "descr" "Helper test case for the t_cleanup test program" -} -cleanup_curdir_body() -{ - echo 1234 >oldvalue -} -cleanup_curdir_cleanup() -{ - test -f oldvalue && echo "Old value: $(cat oldvalue)" -} - -atf_test_case cleanup_sigterm cleanup -cleanup_sigterm_head() -{ - atf_set "descr" "Helper test case for the t_cleanup test program" -} -cleanup_sigterm_body() -{ - touch $(atf_config_get tmpfile) - kill $$ - touch $(atf_config_get tmpfile).no -} -cleanup_sigterm_cleanup() -{ - rm $(atf_config_get tmpfile) -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_config". -# ------------------------------------------------------------------------- - -atf_test_case config_unset -config_unset_head() -{ - atf_set "descr" "Helper test case for the t_config test program" -} -config_unset_body() -{ - if atf_config_has 'test'; then - atf_fail "Test variable already defined" - fi -} - -atf_test_case config_empty -config_empty_head() -{ - atf_set "descr" "Helper test case for the t_config test program" -} -config_empty_body() -{ - atf_check_equal "$(atf_config_get 'test')" "" -} - -atf_test_case config_value -config_value_head() -{ - atf_set "descr" "Helper test case for the t_config test program" -} -config_value_body() -{ - atf_check_equal "$(atf_config_get 'test')" "foo" -} - -atf_test_case config_multi_value -config_multi_value_head() -{ - atf_set "descr" "Helper test case for the t_config test program" -} -config_multi_value_body() -{ - atf_check_equal "$(atf_config_get 'test')" "foo bar" -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_expect". -# ------------------------------------------------------------------------- - -atf_test_case expect_pass_and_pass -expect_pass_and_pass_body() -{ - atf_expect_pass -} - -atf_test_case expect_pass_but_fail_requirement -expect_pass_but_fail_requirement_body() -{ - atf_expect_pass - atf_fail "Some reason" -} - -atf_test_case expect_pass_but_fail_check -expect_pass_but_fail_check_body() -{ - atf_fail "Non-fatal failures not implemented" -} - -atf_test_case expect_fail_and_fail_requirement -expect_fail_and_fail_requirement_body() -{ - atf_expect_fail "Fail reason" - atf_fail "The failure" - atf_expect_pass -} - -atf_test_case expect_fail_and_fail_check -expect_fail_and_fail_check_body() -{ - atf_fail "Non-fatal failures not implemented" -} - -atf_test_case expect_fail_but_pass -expect_fail_but_pass_body() -{ - atf_expect_fail "Fail first" - atf_expect_pass -} - -atf_test_case expect_exit_any_and_exit -expect_exit_any_and_exit_body() -{ - atf_expect_exit -1 "Call will exit" - exit 0 -} - -atf_test_case expect_exit_code_and_exit -expect_exit_code_and_exit_body() -{ - atf_expect_exit 123 "Call will exit" - exit 123 -} - -atf_test_case expect_exit_but_pass -expect_exit_but_pass_body() -{ - atf_expect_exit -1 "Call won't exit" -} - -atf_test_case expect_signal_any_and_signal -expect_signal_any_and_signal_body() -{ - atf_expect_signal -1 "Call will signal" - kill -9 $$ -} - -atf_test_case expect_signal_no_and_signal -expect_signal_no_and_signal_body() -{ - atf_expect_signal 1 "Call will signal" - kill -1 $$ -} - -atf_test_case expect_signal_but_pass -expect_signal_but_pass_body() -{ - atf_expect_signal -1 "Call won't signal" -} - -atf_test_case expect_death_and_exit -expect_death_and_exit_body() -{ - atf_expect_death "Exit case" - exit 123 -} - -atf_test_case expect_death_and_signal -expect_death_and_signal_body() -{ - atf_expect_death "Signal case" - kill -9 $$ -} - -atf_test_case expect_death_but_pass -expect_death_but_pass_body() -{ - atf_expect_death "Call won't die" -} - -atf_test_case expect_timeout_and_hang -expect_timeout_and_hang_head() -{ - atf_set "timeout" "1" -} -expect_timeout_and_hang_body() -{ - atf_expect_timeout "Will overrun" - sleep 5 -} - -atf_test_case expect_timeout_but_pass -expect_timeout_but_pass_head() -{ - atf_set "timeout" "1" -} -expect_timeout_but_pass_body() -{ - atf_expect_timeout "Will just exit" -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_meta_data". -# ------------------------------------------------------------------------- - -atf_test_case metadata_no_descr -metadata_no_descr_head() -{ - : -} -metadata_no_descr_body() -{ - : -} - -atf_test_case metadata_no_head -metadata_no_head_body() -{ - : -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_srcdir". -# ------------------------------------------------------------------------- - -atf_test_case srcdir_exists -srcdir_exists_head() -{ - atf_set "descr" "Helper test case for the t_srcdir test program" -} -srcdir_exists_body() -{ - [ -f "$(atf_get_srcdir)/datafile" ] || atf_fail "Cannot find datafile" -} - -# ------------------------------------------------------------------------- -# Helper tests for "t_result". -# ------------------------------------------------------------------------- - -atf_test_case result_pass -result_pass_body() -{ - echo "msg" -} - -atf_test_case result_fail -result_fail_body() -{ - echo "msg" - atf_fail "Failure reason" -} - -atf_test_case result_skip -result_skip_body() -{ - echo "msg" - atf_skip "Skipped reason" -} - -# ------------------------------------------------------------------------- -# Main. -# ------------------------------------------------------------------------- - -atf_init_test_cases() -{ - # Add helper tests for t_cleanup. - atf_add_test_case cleanup_pass - atf_add_test_case cleanup_fail - atf_add_test_case cleanup_skip - atf_add_test_case cleanup_curdir - atf_add_test_case cleanup_sigterm - - # Add helper tests for t_config. - atf_add_test_case config_unset - atf_add_test_case config_empty - atf_add_test_case config_value - atf_add_test_case config_multi_value - - # Add helper tests for t_expect. - atf_add_test_case expect_pass_and_pass - atf_add_test_case expect_pass_but_fail_requirement - atf_add_test_case expect_pass_but_fail_check - atf_add_test_case expect_fail_and_fail_requirement - atf_add_test_case expect_fail_and_fail_check - atf_add_test_case expect_fail_but_pass - atf_add_test_case expect_exit_any_and_exit - atf_add_test_case expect_exit_code_and_exit - atf_add_test_case expect_exit_but_pass - atf_add_test_case expect_signal_any_and_signal - atf_add_test_case expect_signal_no_and_signal - atf_add_test_case expect_signal_but_pass - atf_add_test_case expect_death_and_exit - atf_add_test_case expect_death_and_signal - atf_add_test_case expect_death_but_pass - atf_add_test_case expect_timeout_and_hang - atf_add_test_case expect_timeout_but_pass - - # Add helper tests for t_meta_data. - atf_add_test_case metadata_no_descr - atf_add_test_case metadata_no_head - - # Add helper tests for t_srcdir. - atf_add_test_case srcdir_exists - - # Add helper tests for t_result. - atf_add_test_case result_pass - atf_add_test_case result_fail - atf_add_test_case result_skip -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/test-programs/srcdir_test.sh b/unit/atf-src/test-programs/srcdir_test.sh deleted file mode 100644 index 90a468a8f0..0000000000 --- a/unit/atf-src/test-programs/srcdir_test.sh +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -create_files() -{ - mkdir tmp - touch tmp/datafile -} - -atf_test_case default -default_head() -{ - atf_set "descr" "Checks that the program can find its files if" \ - "executed from the same directory" -} -default_body() -{ - create_files - - for hp in $(get_helpers); do - h=${hp##*/} - cp ${hp} tmp - atf_check -s eq:0 -o ignore -e ignore -x \ - "cd tmp && ./${h} srcdir_exists" - atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists - atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res - done -} - -atf_test_case libtool -libtool_head() -{ - atf_set "descr" "Checks that the program can find its files if" \ - "executed from the source directory and if it" \ - "was built with libtool" -} -libtool_body() -{ - create_files - mkdir tmp/.libs - - for hp in $(get_helpers c_helpers cpp_helpers); do - h=${hp##*/} - cp ${hp} tmp - cp ${hp} tmp/.libs - atf_check -s eq:0 -o ignore -e ignore -x \ - "cd tmp && ./.libs/${h} srcdir_exists" - atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists - atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res - done - - for hp in $(get_helpers c_helpers cpp_helpers); do - h=${hp##*/} - cp ${hp} tmp - cp ${hp} tmp/.libs/lt-${h} - atf_check -s eq:0 -o ignore -e ignore -x \ - "cd tmp && ./.libs/lt-${h} srcdir_exists" - atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists - atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res - done -} - -atf_test_case sflag -sflag_head() -{ - atf_set "descr" "Checks that the program can find its files when" \ - "using the -s flag" -} -sflag_body() -{ - create_files - - for hp in $(get_helpers); do - h=${hp##*/} - cp ${hp} tmp - atf_check -s eq:0 -o ignore -e ignore -x \ - "cd tmp && ./${h} -s $(pwd)/tmp \ - srcdir_exists" - atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res srcdir_exists - atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res - atf_check -s eq:0 -o ignore -e ignore \ - "${hp}" -s "$(pwd)"/tmp srcdir_exists - done -} - -atf_test_case relative -relative_head() -{ - atf_set "descr" "Checks that passing a relative path through -s" \ - "works" -} -relative_body() -{ - create_files - - for hp in $(get_helpers); do - h=${hp##*/} - cp ${hp} tmp - - for p in tmp tmp/. ./tmp; do - echo "Helper is: ${h}" - echo "Using source directory: ${p}" - - atf_check -s eq:0 -o ignore -e ignore \ - "./tmp/${h}" -s "${p}" srcdir_exists - atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res \ - srcdir_exists - atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res - atf_check -s eq:0 -o ignore -e ignore \ - "${hp}" -s "${p}" srcdir_exists - done - done -} - -atf_init_test_cases() -{ - atf_add_test_case default - atf_add_test_case libtool - atf_add_test_case sflag - atf_add_test_case relative -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/tools/.gitignore b/unit/atf-src/tools/.gitignore deleted file mode 100644 index f1d8cdaf76..0000000000 --- a/unit/atf-src/tools/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -atf-config -atf-report -atf-run -atf-version -atf.7 -defs.hpp -libtools.a -revision.h -revision.h.stamp diff --git a/unit/atf-src/tools/Atffile b/unit/atf-src/tools/Atffile deleted file mode 100644 index 8896078bcf..0000000000 --- a/unit/atf-src/tools/Atffile +++ /dev/null @@ -1,25 +0,0 @@ -Content-Type: application/X-atf-atffile; version="1" - -prop: test-suite = atf - -tp: atf-config_test -tp: atf-report_test -tp: atf-run_test -tp: application_test -tp: atffile_test -tp: auto_array_test -tp: config_test -tp: config_file_test -tp: env_test -tp: expand_test -tp: fs_test -tp: io_test -tp: parser_test -tp: process_test -tp: reader_test -tp: requirements_test -tp: signals_test -tp: test_program_test -tp: text_test -tp: ui_test -tp: user_test diff --git a/unit/atf-src/tools/Kyuafile b/unit/atf-src/tools/Kyuafile deleted file mode 100644 index 09c5145ff9..0000000000 --- a/unit/atf-src/tools/Kyuafile +++ /dev/null @@ -1,24 +0,0 @@ -syntax("kyuafile", 1) - -test_suite("atf") - -atf_test_program{name="atf-config_test"} -atf_test_program{name="atf-report_test"} -atf_test_program{name="atf-run_test"} -atf_test_program{name="application_test"} -atf_test_program{name="atffile_test"} -atf_test_program{name="auto_array_test"} -atf_test_program{name="config_test"} -atf_test_program{name="config_file_test"} -atf_test_program{name="env_test"} -atf_test_program{name="expand_test"} -atf_test_program{name="fs_test"} -atf_test_program{name="io_test"} -atf_test_program{name="parser_test"} -atf_test_program{name="process_test"} -atf_test_program{name="reader_test"} -atf_test_program{name="requirements_test"} -atf_test_program{name="signals_test"} -atf_test_program{name="test_program_test"} -atf_test_program{name="text_test"} -atf_test_program{name="ui_test"} diff --git a/unit/atf-src/tools/Makefile.am.inc b/unit/atf-src/tools/Makefile.am.inc deleted file mode 100644 index 00c3b1397b..0000000000 --- a/unit/atf-src/tools/Makefile.am.inc +++ /dev/null @@ -1,330 +0,0 @@ -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -TOOLS_CPPFLAGS = -I$(top_srcdir)/tools -I$(top_builddir)/tools -TOOLS_LDADD = tools/libtools.a - -noinst_LIBRARIES = tools/libtools.a -tools_libtools_a_SOURCES = tools/application.cpp \ - tools/application.hpp \ - tools/atffile.cpp \ - tools/atffile.hpp \ - tools/auto_array.hpp \ - tools/config.cpp \ - tools/config.hpp \ - tools/config_file.cpp \ - tools/config_file.hpp \ - tools/env.cpp \ - tools/env.hpp \ - tools/exceptions.cpp \ - tools/exceptions.hpp \ - tools/expand.cpp \ - tools/expand.hpp \ - tools/fs.cpp \ - tools/fs.hpp \ - tools/io.cpp \ - tools/io.hpp \ - tools/parser.cpp \ - tools/parser.hpp \ - tools/process.cpp \ - tools/process.hpp \ - tools/reader.cpp \ - tools/reader.hpp \ - tools/requirements.cpp \ - tools/requirements.hpp \ - tools/signals.cpp \ - tools/signals.hpp \ - tools/test-program.cpp \ - tools/test-program.hpp \ - tools/test_helpers.hpp \ - tools/text.cpp \ - tools/text.hpp \ - tools/timers.cpp \ - tools/timers.hpp \ - tools/ui.cpp \ - tools/ui.hpp \ - tools/user.cpp \ - tools/user.hpp -nodist_tools_libtools_a_SOURCES = tools/defs.hpp -tools_libtools_a_CPPFLAGS = "-DATF_ARCH=\"$(atf_arch)\"" \ - "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \ - "-DATF_BUILD_CFLAGS=\"$(ATF_BUILD_CFLAGS)\"" \ - "-DATF_BUILD_CPP=\"$(ATF_BUILD_CPP)\"" \ - "-DATF_BUILD_CPPFLAGS=\"$(ATF_BUILD_CPPFLAGS)\"" \ - "-DATF_BUILD_CXX=\"$(ATF_BUILD_CXX)\"" \ - "-DATF_BUILD_CXXFLAGS=\"$(ATF_BUILD_CXXFLAGS)\"" \ - "-DATF_CONFDIR=\"$(atf_confdir)\"" \ - "-DATF_INCLUDEDIR=\"$(includedir)\"" \ - "-DATF_LIBDIR=\"$(libdir)\"" \ - "-DATF_LIBEXECDIR=\"$(libexecdir)\"" \ - "-DATF_MACHINE=\"$(atf_machine)\"" \ - "-DATF_PKGDATADIR=\"$(pkgdatadir)\"" \ - "-DATF_SHELL=\"$(ATF_SHELL)\"" \ - "-DATF_WORKDIR=\"$(ATF_WORKDIR)\"" \ - $(TOOLS_CPPFLAGS) - -# XXX For some reason, the nodist line above does not work as expected. -# Work this problem around. -DIST_HOOKS += kill-defs-hpp -kill-defs-hpp: - rm -f $(distdir)/tools/defs.hpp - - - -bin_PROGRAMS += tools/atf-config -tools_atf_config_SOURCES = tools/atf-config.cpp -tools_atf_config_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_atf_config_LDADD = $(TOOLS_LDADD) -dist_man_MANS += tools/atf-config.1 - -bin_PROGRAMS += tools/atf-report -tools_atf_report_SOURCES = tools/atf-report.cpp -tools_atf_report_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_atf_report_LDADD = $(TOOLS_LDADD) -dist_man_MANS += tools/atf-report.1 - -bin_PROGRAMS += tools/atf-run -tools_atf_run_CPPFLAGS = $(TOOLS_CPPFLAGS) "-DGDB=\"$(GDB)\"" -tools_atf_run_SOURCES = tools/atf-run.cpp -tools_atf_run_LDADD = $(TOOLS_LDADD) -dist_man_MANS += tools/atf-run.1 - -bin_PROGRAMS += tools/atf-version -tools_atf_version_SOURCES = tools/atf-version.cpp -nodist_tools_atf_version_SOURCES = tools/revision.h -tools_atf_version_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_atf_version_LDADD = $(TOOLS_LDADD) -dist_man_MANS += tools/atf-version.1 - -EXTRA_DIST += tools/generate-revision.sh - -BUILT_SOURCES += tools/revision.h -CLEANFILES += tools/revision.h -tools/revision.h: tools/revision.h.stamp - @test -d tools || mkdir -p tools - @cmp -s tools/revision.h tools/revision.h.stamp || \ - cp -p tools/revision.h.stamp tools/revision.h - -CLEANFILES += tools/revision.h.stamp -PHONY_TARGETS += tools/revision.h.stamp -tools/revision.h.stamp: - @test -d tools || mkdir -p tools - @$(top_srcdir)/tools/generate-revision.sh \ - -g "$(GIT)" -r $(top_srcdir) -o tools/revision.h.stamp \ - -v $(PACKAGE_VERSION) - -#man_MANS += tools/atf.7 -#CLEANFILES += tools/atf.7 -#EXTRA_DIST += tools/atf.7.in - -dist_man_MANS += tools/atf-formats.5 - -tools/atf.7: $(srcdir)/tools/atf.7.in - test -d tools || mkdir -p tools - sed -e 's#__DOCDIR__#$(docdir)#g' \ - -e 's#__TESTSDIR__#$(testsdir)#g' \ - <$(srcdir)/tools/atf.7.in >tools/atf.7.tmp - mv tools/atf.7.tmp tools/atf.7 - - - -cssdir = $(atf_cssdir) -css_DATA = tools/tests-results.css -EXTRA_DIST += $(css_DATA) - -dtddir = $(atf_dtddir) -dtd_DATA = tools/tests-results.dtd -EXTRA_DIST += $(dtd_DATA) - -egdir = $(atf_egdir) -eg_DATA = tools/sample/atf-run.hooks -eg_DATA += tools/sample/common.conf -EXTRA_DIST += $(eg_DATA) - -hooksdir = $(pkgdatadir) -hooks_DATA = tools/share/atf-run.hooks -EXTRA_DIST += $(hooks_DATA) - -xsldir = $(atf_xsldir) -xsl_DATA = tools/tests-results.xsl -EXTRA_DIST += $(xsl_DATA) - - - -tests_tools_DATA = tools/Atffile tools/Kyuafile -tests_toolsdir = $(pkgtestsdir)/tools -EXTRA_DIST += $(tests_tools_DATA) - -tests_tools_SCRIPTS = tools/atf-config_test -CLEANFILES += tools/atf-config_test -EXTRA_DIST += tools/atf-config_test.sh -tools/atf-config_test: $(srcdir)/tools/atf-config_test.sh - @test -d tools || mkdir -p tools - @src="$(srcdir)/tools/atf-config_test.sh"; \ - dst="tools/atf-config_test"; $(BUILD_SH_TP) - -tests_tools_SCRIPTS += tools/atf-report_test -CLEANFILES += tools/atf-report_test -EXTRA_DIST += tools/atf-report_test.sh -tools/atf-report_test: $(srcdir)/tools/atf-report_test.sh - @test -d tools || mkdir -p tools - @src="$(srcdir)/tools/atf-report_test.sh"; \ - dst="tools/atf-report_test"; $(BUILD_SH_TP) - -tests_tools_SCRIPTS += tools/atf-run_test -CLEANFILES += tools/atf-run_test -EXTRA_DIST += tools/atf-run_test.sh -tools/atf-run_test: $(srcdir)/tools/atf-run_test.sh - @test -d tools || mkdir -p tools - @src="$(srcdir)/tools/atf-run_test.sh"; \ - dst="tools/atf-run_test"; $(BUILD_SH_TP) - -tests_tools_PROGRAMS = tools/application_test -tools_application_test_SOURCES = tools/application_test.cpp -tools_application_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_application_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/atffile_test -tools_atffile_test_SOURCES = tools/atffile_test.cpp -tools_atffile_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_atffile_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/auto_array_test -tools_auto_array_test_SOURCES = tools/auto_array_test.cpp -tools_auto_array_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_auto_array_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/bad_metadata_helper -tools_bad_metadata_helper_SOURCES = tools/bad_metadata_helper.c -tools_bad_metadata_helper_LDADD = libatf-c.la - -tests_tools_PROGRAMS += tools/config_test -tools_config_test_SOURCES = tools/config_test.cpp -tools_config_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_config_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/config_file_test -tools_config_file_test_SOURCES = tools/config_file_test.cpp -tools_config_file_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_config_file_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/env_test -tools_env_test_SOURCES = tools/env_test.cpp -tools_env_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_env_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/expand_test -tools_expand_test_SOURCES = tools/expand_test.cpp -tools_expand_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_expand_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/expect_helpers -tools_expect_helpers_SOURCES = tools/expect_helpers.c -tools_expect_helpers_LDADD = libatf-c.la - -tests_tools_PROGRAMS += tools/fail_helper -tools_fail_helper_SOURCES = tools/fail_helper.cpp -tools_fail_helper_LDADD = $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/fs_test -tools_fs_test_SOURCES = tools/fs_test.cpp -tools_fs_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_fs_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/io_test -tools_io_test_SOURCES = tools/io_test.cpp -tools_io_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_io_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/misc_helpers -tools_misc_helpers_SOURCES = tools/misc_helpers.cpp -tools_misc_helpers_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_misc_helpers_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/parser_test -tools_parser_test_SOURCES = tools/parser_test.cpp -tools_parser_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_parser_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/process_test -tools_process_test_SOURCES = tools/process_test.cpp -tools_process_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_process_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/pass_helper -tools_pass_helper_SOURCES = tools/pass_helper.cpp -tools_pass_helper_LDADD = $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/process_helpers -tools_process_helpers_SOURCES = tools/process_helpers.c - -tests_tools_PROGRAMS += tools/reader_test -tools_reader_test_SOURCES = tools/reader_test.cpp -tools_reader_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_reader_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/requirements_test -tools_requirements_test_SOURCES = tools/requirements_test.cpp -tools_requirements_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_requirements_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/several_tcs_helper -tools_several_tcs_helper_SOURCES = tools/several_tcs_helper.c -tools_several_tcs_helper_LDADD = libatf-c.la - -tests_tools_PROGRAMS += tools/signals_test -tools_signals_test_SOURCES = tools/signals_test.cpp tools/signals.cpp -tools_signals_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_signals_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/test_program_test -tools_test_program_test_SOURCES = tools/test_program_test.cpp -tools_test_program_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_test_program_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/text_test -tools_text_test_SOURCES = tools/text_test.cpp tools/text.cpp -tools_text_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_text_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/ui_test -tools_ui_test_SOURCES = tools/ui_test.cpp tools/ui.cpp -tools_ui_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_ui_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/user_test -tools_user_test_SOURCES = tools/user_test.cpp tools/user.cpp -tools_user_test_CPPFLAGS = $(TOOLS_CPPFLAGS) -tools_user_test_LDADD = $(TOOLS_LDADD) $(ATF_CXX_LIBS) - -tests_tools_PROGRAMS += tools/zero_tcs_helper -tools_zero_tcs_helper_SOURCES = tools/zero_tcs_helper.c -tools_zero_tcs_helper_LDADD = libatf-c.la - -# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8 diff --git a/unit/atf-src/tools/application.cpp b/unit/atf-src/tools/application.cpp deleted file mode 100644 index d32fd7e2ce..0000000000 --- a/unit/atf-src/tools/application.cpp +++ /dev/null @@ -1,317 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -} - -#include -#include -#include -#include -#include -#include - -#include "application.hpp" -#include "defs.hpp" -#include "ui.hpp" - -#if !defined(HAVE_VSNPRINTF_IN_STD) -namespace std { -using ::vsnprintf; -} -#endif // !defined(HAVE_VSNPRINTF_IN_STD) - -namespace impl = tools::application; -#define IMPL_NAME "tools::application" - -// ------------------------------------------------------------------------ -// The "usage_error" class. -// ------------------------------------------------------------------------ - -impl::usage_error::usage_error(const char *fmt, ...) - throw() : - std::runtime_error("usage_error; message unformatted") -{ - va_list ap; - - va_start(ap, fmt); - std::vsnprintf(m_text, sizeof(m_text), fmt, ap); - va_end(ap); -} - -impl::usage_error::~usage_error(void) - throw() -{ -} - -const char* -impl::usage_error::what(void) - const throw() -{ - return m_text; -} - -// ------------------------------------------------------------------------ -// The "application" class. -// ------------------------------------------------------------------------ - -impl::option::option(char ch, - const std::string& a, - const std::string& desc) : - m_character(ch), - m_argument(a), - m_description(desc) -{ -} - -bool -impl::option::operator<(const impl::option& o) - const -{ - return m_character < o.m_character; -} - -impl::app::app(const std::string& description, - const std::string& manpage, - const std::string& global_manpage) : - m_hflag(false), - m_argc(-1), - m_argv(NULL), - m_prog_name(NULL), - m_description(description), - m_manpage(manpage), - m_global_manpage(global_manpage) -{ -} - -impl::app::~app(void) -{ -} - -bool -impl::app::inited(void) -{ - return m_argc != -1; -} - -impl::app::options_set -impl::app::options(void) -{ - options_set opts = specific_options(); - opts.insert(option('h', "", "Shows this help message")); - return opts; -} - -std::string -impl::app::specific_args(void) - const -{ - return ""; -} - -impl::app::options_set -impl::app::specific_options(void) - const -{ - return options_set(); -} - -void -impl::app::process_option(int ch ATF_DEFS_ATTRIBUTE_UNUSED, - const char* arg ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::app::process_options(void) -{ - assert(inited()); - - std::string optstr; -#if defined(HAVE_GNU_GETOPT) - optstr += '+'; // Turn on POSIX behavior. -#endif - optstr += ':'; - { - options_set opts = options(); - for (options_set::const_iterator iter = opts.begin(); - iter != opts.end(); iter++) { - const option& opt = (*iter); - - optstr += opt.m_character; - if (!opt.m_argument.empty()) - optstr += ':'; - } - } - - int ch; - const int old_opterr = ::opterr; - ::opterr = 0; - while ((ch = ::getopt(m_argc, m_argv, optstr.c_str())) != -1) { - switch (ch) { - case 'h': - m_hflag = true; - break; - - case ':': - throw usage_error("Option -%c requires an argument.", - ::optopt); - - case '?': - throw usage_error("Unknown option -%c.", ::optopt); - - default: - process_option(ch, ::optarg); - } - } - m_argc -= ::optind; - m_argv += ::optind; - - // Clear getopt state just in case the test wants to use it. - opterr = old_opterr; - optind = 1; -#if defined(HAVE_OPTRESET) - optreset = 1; -#endif -} - -void -impl::app::usage(std::ostream& os) -{ - assert(inited()); - - std::string args = specific_args(); - if (!args.empty()) - args = " " + args; - os << ui::format_text_with_tag(std::string(m_prog_name) + " [options]" + - args, "Usage: ", false) << "\n\n" - << ui::format_text(m_description) << "\n\n"; - - options_set opts = options(); - assert(!opts.empty()); - os << "Available options:\n"; - size_t coldesc = 0; - for (options_set::const_iterator iter = opts.begin(); - iter != opts.end(); iter++) { - const option& opt = (*iter); - - if (opt.m_argument.length() + 1 > coldesc) - coldesc = opt.m_argument.length() + 1; - } - for (options_set::const_iterator iter = opts.begin(); - iter != opts.end(); iter++) { - const option& opt = (*iter); - - std::string tag = std::string(" -") + opt.m_character; - if (opt.m_argument.empty()) - tag += " "; - else - tag += " " + opt.m_argument + " "; - os << ui::format_text_with_tag(opt.m_description, tag, false, - coldesc + 10) << "\n"; - } - os << "\n"; - - std::string gmp; - if (!m_global_manpage.empty()) - gmp = " and " + m_global_manpage; - os << ui::format_text("For more details please see " + m_manpage + - gmp + ".") - << "\n"; -} - -int -impl::app::run(int argc, char* const* argv) -{ - assert(argc > 0); - assert(argv != NULL); - - m_argc = argc; - m_argv = argv; - - m_argv0 = m_argv[0]; - - m_prog_name = std::strrchr(m_argv[0], '/'); - if (m_prog_name == NULL) - m_prog_name = m_argv[0]; - else - m_prog_name++; - - // Libtool workaround: if running from within the source tree (binaries - // that are not installed yet), skip the "lt-" prefix added to files in - // the ".libs" directory to show the real (not temporary) name. - if (std::strncmp(m_prog_name, "lt-", 3) == 0) - m_prog_name += 3; - - const std::string bug = - std::string("This is probably a bug in ") + m_prog_name + - " or one of the libraries it uses. Please report this problem to " - PACKAGE_BUGREPORT " and provide as many details as possible " - "describing how you got to this condition."; - - int errcode; - try { - int oldargc = m_argc; - - process_options(); - - if (m_hflag) { - if (oldargc != 2) - throw usage_error("-h must be given alone."); - - usage(std::cout); - errcode = EXIT_SUCCESS; - } else - errcode = main(); - } catch (const usage_error& e) { - std::cerr << ui::format_error(m_prog_name, e.what()) << "\n" - << ui::format_info(m_prog_name, std::string("Type `") + - m_prog_name + " -h' for more details.") - << "\n"; - errcode = EXIT_FAILURE; - } catch (const std::runtime_error& e) { - std::cerr << ui::format_error(m_prog_name, std::string(e.what())) - << "\n"; - errcode = EXIT_FAILURE; - } catch (const std::exception& e) { - std::cerr << ui::format_error(m_prog_name, std::string("Caught " - "unexpected error: ") + e.what() + "\n" + bug) << "\n"; - errcode = EXIT_FAILURE; - } catch (...) { - std::cerr << ui::format_error(m_prog_name, std::string("Caught " - "unknown error\n") + bug) << "\n"; - errcode = EXIT_FAILURE; - } - return errcode; -} diff --git a/unit/atf-src/tools/application.hpp b/unit/atf-src/tools/application.hpp deleted file mode 100644 index 5a8d57c6e5..0000000000 --- a/unit/atf-src/tools/application.hpp +++ /dev/null @@ -1,113 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_APPLICATION_HPP) -#define TOOLS_APPLICATION_HPP - -#include -#include -#include -#include - -namespace tools { -namespace application { - -// ------------------------------------------------------------------------ -// The "usage_error" class. -// ------------------------------------------------------------------------ - -class usage_error : public std::runtime_error { - char m_text[4096]; - -public: - usage_error(const char*, ...) throw(); - ~usage_error(void) throw(); - - const char* what(void) const throw(); -}; - -// ------------------------------------------------------------------------ -// The "option" class. -// ------------------------------------------------------------------------ - -class option { - char m_character; - std::string m_argument; - std::string m_description; - - friend class app; - -public: - option(char, const std::string&, const std::string&); - - bool operator<(const option&) const; -}; - -// ------------------------------------------------------------------------ -// The "app" class. -// ------------------------------------------------------------------------ - -class app { - bool m_hflag; - - void process_options(void); - void usage(std::ostream&); - - bool inited(void); - -protected: - typedef std::set< option > options_set; - - int m_argc; - char* const* m_argv; - - const char* m_argv0; - const char* m_prog_name; - std::string m_description; - std::string m_manpage, m_global_manpage; - - options_set options(void); - - // To be redefined. - virtual std::string specific_args(void) const; - virtual options_set specific_options(void) const; - virtual void process_option(int, const char*); - virtual int main(void) = 0; - -public: - app(const std::string&, const std::string&, const std::string&); - virtual ~app(void); - - int run(int, char* const*); -}; - -} // namespace application -} // namespace tools - -#endif // !defined(TOOLS_APPLICATION_HPP) diff --git a/unit/atf-src/tools/application_test.cpp b/unit/atf-src/tools/application_test.cpp deleted file mode 100644 index a9013cdc6b..0000000000 --- a/unit/atf-src/tools/application_test.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -} - -#include - -#include "application.hpp" - -class getopt_app : public tools::application::app { -public: - getopt_app(void) : app("description", "manpage", "other") {} - - int main(void) - { - // Provide an option that is unknown to the application driver and - // one that is, together with an argument that would be swallowed by - // the test program option if it were recognized. - int argc = 4; - char arg1[] = "progname"; - char arg2[] = "-Z"; - char arg3[] = "-s"; - char arg4[] = "foo"; - char *const argv[] = { arg1, arg2, arg3, arg4, NULL }; - - int ch; - bool zflag; - - // Given that this obviously is an application, and that we used the - // same driver to start, we can test getopt(3) right here without doing - // any fancy stuff. - zflag = false; - while ((ch = ::getopt(argc, argv, ":Z")) != -1) { - switch (ch) { - case 'Z': - zflag = true; - break; - - case '?': - default: - if (optopt != 's') - ATF_FAIL("Unexpected unknown option found"); - } - } - - ATF_REQUIRE(zflag); - ATF_REQUIRE_EQ(1, argc - optind); - ATF_REQUIRE_EQ(std::string("foo"), argv[optind]); - - return 0; - } -}; - -ATF_TEST_CASE_WITHOUT_HEAD(getopt); -ATF_TEST_CASE_BODY(getopt) -{ - int argc = 1; - char arg1[] = "progname"; - char *const argv[] = { arg1, NULL }; - ATF_REQUIRE_EQ(0, getopt_app().run(argc, argv)); -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, getopt); -} diff --git a/unit/atf-src/tools/atf-config.1 b/unit/atf-src/tools/atf-config.1 deleted file mode 100644 index deae6f6406..0000000000 --- a/unit/atf-src/tools/atf-config.1 +++ /dev/null @@ -1,184 +0,0 @@ -.\" -.\" Automated Testing Framework (atf) -.\" -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd March 14, 2009 -.Dt ATF-CONFIG 1 -.Os -.Sh NAME -.Nm atf-config -.Nd queries static configuration information of ATF -.Sh SYNOPSIS -.Nm -.Op Fl t -.Op Ar var1 Op Ar .. varN -.Nm -.Fl h -.Sh DESCRIPTION -.Nm -is a utility that queries static configuration information of ATF. -Static configuration refers to all those values for settings that -were built into the ATF binaries at build time. -.Pp -In the first synopsis form, -.Nm -will print variable-value pairs for all built-in static variables if -no variable names are provided as arguments. -If any is provided, it will only print the variable-value pairs for -those variables. -The output of the utility does not use the -.Sq = -symbol to separate the variable name from its corresponding value in -an attempt to avoid sourcing the output in shell scripts or Makefiles. -If you need to do that, the -.Fl t -flag allows you to query the value of individual variables without any -surrounding text. -.Pp -In the second synopsis form, -.Nm -will print information about all supported options and their purpose. -.Pp -The following options are available: -.Bl -tag -width flag -.It Fl h -Shows a short summary of all available options and their purpose. -.It Fl t -Changes the output of the utility to show the variable values, one -per line, without the variable names. -.El -.Ss Static configuration variables -The following list describes all the variables that are part of ATF's -static configuration: -.Bl -tag -width atfXbuildXcppflagsXX -.It Va atf_arch -The architecture name detected by ATF. -This is derived from -.Va atf_machine -because it is a subset of it. -Given that this name might be misdetected, it is provided to the user -as a configuration variable so that he can fix its value temporarily -until a real fix is incorporated into mainstream sources. -.It Va atf_build_cc -The C compiler used by the ATF checks that provide build-time tests. -.It Va atf_build_cflags -The C compiler flags used by the ATF checks that provide build-time tests. -.It Va atf_build_cpp -The C/C++ preprocessor used by the ATF checks that provide build-time tests. -.It Va atf_build_cppflags -The C/C++ preprocessor flags used by the ATF checks that provide build-time -tests. -.It Va atf_build_cxx -The C++ compiler used by the ATF checks that provide build-time tests. -.It Va atf_build_cxxflags -The C++ compiler flags used by the ATF checks that provide build-time tests. -.It Va atf_confdir -The path to the directory that contains the system-wide configuration -files for ATF. -.It Va atf_includedir -The path to the directory that contains the ATF header files. -.It Va atf_libdir -The path to the directory that contains the ATF libraries. -.It Va atf_libexecdir -The path to the directory that contains the auxiliary utilities of ATF, -used internally by the public tools. -.It Va atf_machine -The machine type name detected by ATF. -This should not be tunable but is provided for symmetry with -.Va atf_arch . -.It Va atf_pkgdatadir -The path to the directory that contains the files that form the ATF's -shell-scripting library. -.It Va atf_shell -The path to the shell interpreter that will be used by ATF. -.It Va atf_workdir -The path to the temporary directory that the utilities and the test -programs will use to store temporary files in. -.El -.Sh ENVIRONMENT -Every variable that is part of the static configuration can be -overridden at run-time by defining an environment variable. -This environment variable has the exact same name as the one shown by -.Nm -except that the name is all composed of uppercase letters. -.Pp -In general, empty values in the environment will be ignored unless -otherwise noted below. -.Pp -The recognized environment variables are: -.Bl -tag -width ATFXBUILDXCPPFLAGSXX -.It Ev ATF_ARCH -Overrides the built-in value of -.Va atf_arch . -.It Ev ATF_BUILD_CC -Overrides the built-in value of -.Va atf_build_cc . -.It Ev ATF_BUILD_CFLAGS -Overrides the built-in value of -.Va atf_build_cflags . -Empty values are allowed. -.It Ev ATF_BUILD_CPP -Overrides the built-in value of -.Va atf_build_cpp . -.It Ev ATF_BUILD_CPPFLAGS -Overrides the built-in value of -.Va atf_build_cppflags . -Empty values are allowed. -.It Ev ATF_BUILD_CXX -Overrides the built-in value of -.Va atf_build_cxx . -.It Ev ATF_BUILD_CXXFLAGS -Overrides the built-in value of -.Va atf_build_cxxflags . -Empty values are allowed. -.It Ev ATF_CONFDIR -Overrides the built-in value of -.Va atf_confdir . -.It Ev ATF_INCLUDEDIR -Overrides the built-in value of -.Va atf_includedir . -.It Ev ATF_LIBDIR -Overrides the built-in value of -.Va atf_libdir . -.It Ev ATF_LIBEXECDIR -Overrides the built-in value of -.Va atf_libexecdir . -.It Ev ATF_MACHINE -Overrides the built-in value of -.Va atf_machine . -.It Ev ATF_PKGDATADIR -Overrides the built-in value of -.Va atf_pkgdatadir . -.It Ev ATF_SHELL -Overrides the built-in value of -.Va atf_shell . -.It Ev ATF_WORKDIR -Overrides the built-in value of -.Va atf_workdir . -.El -.Sh SEE ALSO -.Xr atf 7 diff --git a/unit/atf-src/tools/atf-config.cpp b/unit/atf-src/tools/atf-config.cpp deleted file mode 100644 index 4d82d55e63..0000000000 --- a/unit/atf-src/tools/atf-config.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include -#include -#include - -#include "application.hpp" -#include "config.hpp" -#include "defs.hpp" - -class atf_config : public tools::application::app { - static const char* m_description; - - bool m_tflag; - - void process_option(int, const char*); - std::string specific_args(void) const; - options_set specific_options(void) const; - - std::string format_var(const std::string&, const std::string&); - -public: - atf_config(void); - - int main(void); -}; - -const char* atf_config::m_description = - "atf-config is a tool that queries the value of several " - "installation-specific configuration values of the atf. " - "It can be used by external tools to discover where specific " - "internal atf files are installed."; - -atf_config::atf_config(void) : - app(m_description, "atf-config(1)", "atf(7)"), - m_tflag(false) -{ -} - -void -atf_config::process_option(int ch, const char* arg ATF_DEFS_ATTRIBUTE_UNUSED) -{ - switch (ch) { - case 't': - m_tflag = true; - break; - - default: - std::abort(); - } -} - -std::string -atf_config::specific_args(void) - const -{ - return "[var1 [.. varN]]"; -} - -atf_config::options_set -atf_config::specific_options(void) - const -{ - using tools::application::option; - options_set opts; - opts.insert(option('t', "", "Terse output: show values only")); - return opts; -} - -std::string -atf_config::format_var(const std::string& name, const std::string& val) -{ - std::string str; - - if (m_tflag) - str = val; - else - str = name + " : " + val; - - return str; -} - -int -atf_config::main(void) -{ - if (m_argc < 1) { - std::map< std::string, std::string > cv = tools::config::get_all(); - - for (std::map< std::string, std::string >::const_iterator iter = - cv.begin(); iter != cv.end(); iter++) - std::cout << format_var((*iter).first, (*iter).second) << "\n"; - } else { - for (int i = 0; i < m_argc; i++) { - if (!tools::config::has(m_argv[i])) - throw std::runtime_error(std::string("Unknown variable `") + - m_argv[i] + "'"); - } - - for (int i = 0; i < m_argc; i++) { - std::cout << format_var(m_argv[i], tools::config::get(m_argv[i])) - << "\n"; - } - } - - return EXIT_SUCCESS; -} - -int -main(int argc, char* const* argv) -{ - return atf_config().run(argc, argv); -} diff --git a/unit/atf-src/tools/atf-config_test.sh b/unit/atf-src/tools/atf-config_test.sh deleted file mode 100644 index 5d6505a417..0000000000 --- a/unit/atf-src/tools/atf-config_test.sh +++ /dev/null @@ -1,180 +0,0 @@ -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -all_vars="atf_arch \ - atf_build_cc \ - atf_build_cflags \ - atf_build_cpp \ - atf_build_cppflags \ - atf_build_cxx \ - atf_build_cxxflags \ - atf_confdir \ - atf_includedir \ - atf_libdir \ - atf_libexecdir \ - atf_machine \ - atf_pkgdatadir \ - atf_shell \ - atf_workdir" -all_vars_no=15 - -atf_test_case list_all -list_all_head() -{ - atf_set "descr" "Tests that at atf-config prints all expected" \ - "variables, and not more" -} -list_all_body() -{ - atf_check -s eq:0 -o save:stdout -e empty atf-config - atf_check -s eq:0 -o empty -e empty \ - test "$(wc -l stdout | awk '{ print $1 }')" = "${all_vars_no}" - for v in ${all_vars}; do - atf_check -s eq:0 -o ignore -e empty grep "${v}" stdout - done -} - -atf_test_case query_one -query_one_head() -{ - atf_set "descr" "Tests that querying a single variable works" -} -query_one_body() -{ - for v in ${all_vars}; do - atf_check -s eq:0 -o save:stdout -o match:"${v}" -e empty \ - atf-config "${v}" - atf_check -s eq:0 -o empty -e empty \ - test "$(wc -l stdout | awk '{ print $1 }')" = 1 - done -} - -atf_test_case query_one_terse -query_one_terse_head() -{ - atf_set "descr" "Tests that querying a single variable in terse mode" \ - "works" -} -query_one_terse_body() -{ - for v in ${all_vars}; do - atf_check -s eq:0 -o save:stdout -o match:"${v}" -e empty \ - atf-config "${v}" - atf_check -s eq:0 -o empty -e empty \ - test "$(wc -l stdout | awk '{ print $1 }')" = 1 - atf_check -s eq:0 -o save:stdout -e empty cut -d ' ' -f 3- stdout - atf_check -s eq:0 -o empty -e empty mv stdout expout - atf_check -s eq:0 -o file:expout -e empty atf-config -t "${v}" - done -} - -atf_test_case query_multiple -query_multiple_head() -{ - atf_set "descr" "Tests that querying multiple variables works" -} -query_multiple_body() -{ - atf_check -s eq:0 -o save:stdout -o match:'atf_libexecdir' \ - -o match:'atf_shell' -e empty atf-config atf_libexecdir atf_shell - atf_check -s eq:0 -o empty -e empty \ - test "$(wc -l stdout | awk '{ print $1 }')" = 2 -} - -atf_test_case query_unknown -query_unknown_head() -{ - atf_set "descr" "Tests that querying an unknown variable delivers" \ - "the correct error" -} -query_unknown_body() -{ - atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \ - atf-config non_existent -} - -atf_test_case query_mixture -query_mixture_head() -{ - atf_set "descr" "Tests that querying a known and an unknown variable" \ - "delivers the correct error" -} -query_mixture_body() -{ - for v in ${all_vars}; do - atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \ - atf-config "${v}" non_existent - atf_check -s eq:1 -o empty -e match:'Unknown variable.*non_existent' \ - atf-config non_existent "${v}" - done -} - -atf_test_case override_env -override_env_head() -{ - atf_set "descr" "Tests that build-time variables can be overriden" \ - "through their corresponding environment variables" -} -override_env_body() -{ - for v in ${all_vars}; do - V=$(echo ${v} | tr '[a-z]' '[A-Z]') - atf_check -s eq:0 -o save:stdout -e empty -x "${V}=testval atf-config" - atf_check -s eq:0 -o empty -e empty mv stdout all - - atf_check -s eq:0 -o save:stdout -e empty grep "^${v} : " all - atf_check -s eq:0 -o empty -e empty mv stdout affected - atf_check -s eq:0 -o save:stdout -e empty grep -v "^${v} : " all - atf_check -s eq:0 -o empty -e empty mv stdout unaffected - - atf_check -s eq:0 -o empty -e empty \ - test "$(wc -l affected | awk '{ print $1 }')" = 1 - atf_check -s eq:0 -o empty -e empty \ - test "$(wc -l unaffected | awk '{ print $1 }')" = \ - "$((${all_vars_no} -1))" - - atf_check -s eq:0 -o ignore -e empty grep "^${v} : testval$" affected - atf_check -s eq:1 -o empty -e empty grep ' : testval$' unaffected - done -} - -atf_init_test_cases() -{ - atf_add_test_case list_all - - atf_add_test_case query_one - atf_add_test_case query_one_terse - atf_add_test_case query_multiple - atf_add_test_case query_unknown - atf_add_test_case query_mixture - - atf_add_test_case override_env -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/tools/atf-formats.5 b/unit/atf-src/tools/atf-formats.5 deleted file mode 100644 index bb919f483a..0000000000 --- a/unit/atf-src/tools/atf-formats.5 +++ /dev/null @@ -1,231 +0,0 @@ -.\" -.\" Automated Testing Framework (atf) -.\" -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd December 20, 2011 -.Dt ATF-FORMATS 5 -.Os -.Sh NAME -.Nm atf-formats -.Nd machine-parseable data formats used by ATF -.Sh DESCRIPTION -This manual page describes the multiple data formats used in ATF. -These formats affect configuration files, control files and any data that -is externalized or internalized by the tools. -.Pp -Data files are always organized as follows: -.Bd -literal -offset indent -Header1: Value1 \\ - ... | head -HeaderN: ValueN / - mandatory blank line -Free-form text contents \\ - ... | body - ... / -.Ed -.Pp -A file must always contain a -.Sq Content-Type -header and must always separate that header from the body with a blank -line, even if the body is empty. -.Pp -The -.Sq Content-Type -is always of the form: -.Bd -literal -offset indent -Content-Type: application/X-atf-; version="" -.Ed -.Pp -where -.Sq subtype -indicates the specific file format and -.Sq version -its format version. -This header must be the first one of the file. -.Pp -The main purpose of the -.Sq Content-Type -header, aside from determining the format used in the file, is to allow -future changes to a given format. -Whenever an incompatible change is made, the version is bumped by one. -By keeping the header in the first line, future versions may even remove -the need for such a header -- e.g. if some format was replaced by XML -files, which have their own mandatory header. -.Pp -The rest of this document details the different format types. -.Ss Format: application/X-atf-atffile, version: 1 -Atffiles are logically divided into three sections: -.Bl -bullet -.It -Test programs: the list of test programs that define the test suite -described by the Atffile. -.It -Meta-data properties: these define some constant values applicable to -all the test programs defined in the file. -In some sense they define the properties that describe the test suite. -.It -Configuration variables: defaults for configuration variables that -can be overridden through configuration files or the command line. -.El -.Pp -The grammar for Atffiles is the following: -.Bd -literal -offset indent -DATA ::= ( ( CONF | PROP | TP )? COMMENT? NEWLINE )* EOF -CONF ::= 'conf:' WORD EQUAL STRING -PROP ::= 'prop:' WORD EQUAL STRING -TP ::= TPFILE | TPGLOB -TPFILE ::= 'tp: ' STRING -TPGLOB ::= 'tp-glob: ' STRING -STRING ::= WORD | '"' WORD* '"' -.Ed -.Pp -The meaning of the constructions above is: -.Bl -tag -width TPGLOBXX -.It CONF -Definition of a configuration variable. -.It PROP -Definition of a meta-data property. -.It TPFILE -Addition of a test program into the test suite. -The string is taken literally as the program's name, and this program -must exist. -.It TPGLOB -Addition of multiple test programs into the test suite. -The string is taken as a glob pattern, which may have or not have any -matches in the current directory. -.El -.Pp -An example: -.Bd -literal -offset indent -prop: test-suite = utilities - -conf: unprivileged-user = nobody - -tp: t_cp -tp: t_mv -tp: t_df -tp-glob: t_dir_* -.Ed -.Ss Format: application/X-atf-config, version: 1 -Configuration files are very simple: they only contain a list of variable -name/variable value pairs. -Their grammar is: -.Bd -literal -offset indent -DATA ::= ( VAR? COMMENT? NEWLINE )* EOF -VAR ::= WORD EQUAL STRING -COMMENT ::= HASH WORD* -STRING ::= WORD | '"' WORD* '"' -.Ed -.Pp -An example: -.Bd -literal -offset indent -# This is the system-wide configuration file for ATF. -# The above and this line are comments placed on their own line. - -var1 = this is a variable value -var2 = this is another one # Optional comment at the end. -.Ed -.Ss Format: application/X-atf-tps, version: 3 -The -.Sq application/X-atf-tps -format multiplexes the standard output, standard error and results output -streams from multiple test programs into a single data file. -This format is used by -.Xr atf-run 1 -to report the execution of several test programs and is later parsed by -.Xr atf-report 1 -to inform the user of this process. -It has the following grammar: -.Bd -literal -offset indent -DATA ::= INFO* TPS-COUNT TP-STANZA* INFO* EOF -INFO ::= 'info' COLON STRING COMMA STRING NEWLINE -TPS-COUNT ::= 'tps-count' COLON POSITIVE-NUMBER NEWLINE -TP-STANZA ::= TP-START TC-STANZA* TC-END -TP-START ::= 'tp-start' COLON TIMESTAMP COMMA STRING COMMA - POSITIVE-NUMBER NEWLINE -TP-END ::= 'tc-end' COLON TIMESTAMP COMMA STRING (COMMA STRING)? -TC-STANZA ::= TC-START (TC-SO | TC-SE)* TC-END -TC-START ::= 'tc-start' COLON TIMESTAMP COMMA STRING NEWLINE -TC-SO ::= 'tc-so' COLON STRING NEWLINE -TC-SE ::= 'tc-se' COLON STRING NEWLINE -TC-END ::= 'tc-end' COLON TIMESTAMP COMMA STRING COMMA TCR NEWLINE -TCR ::= 'passed' | ('failed' | 'skipped') COMMA STRING -TIMESTAMP ::= [0-9]+.[0-9]+ -.Ed -.Pp -The meaning of the constructions above is: -.Bl -tag -width TPSXCOUNTXX -.It TPS-COUNT -Indicates the number of test programs that will be executed. -There will be this exact amount of -.Sq TP-STANZA -constructions following it. -.It TP-START -Indicates the beginning of a test program. -This includes the program's name and the amount of test cases that -will follow. -.It TP-END -Indicates the completion of a test program. -This is followed by the program's name and, if the program ended -prematurely, an error message indicating the reason of its failure. -A successful execution of a test program (regardless of the status of its -test cases) must not be accompanied by any reason. -.It TC-START -Indicates the beginning of a test case. -This is accompanied by the test case's name. -.It TC-SO -Contains a text line sent to the standard output stream during the -execution of the test case. -Leading and trailing space is preserved. -.It TC-SE -Contains a text line sent to the standard error stream during the -execution of the test case. -Leading and trailing space is preserved. -.It TC-END -Indicates the completion of a test case. -This is accompanied by the test case's name, its result and the reason -associated with this result (if applicable). -.El -.Pp -An example: -.Bd -literal -offset indent -tps-count: 2 -tp-start: calculator, 1324318951.838923, 2 -tc-start: add, 1324318951.839101 -tc-end: add, 1324318951.839500, passed -tc-start: subtract, 1324318951.840001 -tc-so: 3-2 expected to return 1 but got 0 -tc-end: subtract, 1324318952.000123, failed, Calculated an unexpected value -tp-end: calculator, 1324318952.002301 -tp-start: files, 1, 1324318952.502348 -tc-start: copy, 1324318952.508291 -tc-se: could not find the cp(1) utility -tc-end: copy, 1324318953.203145, skipped -tp-end: files, 1324318953.203800 -.Ed -.Sh SEE ALSO -.Xr atf 7 diff --git a/unit/atf-src/tools/atf-report.1 b/unit/atf-src/tools/atf-report.1 deleted file mode 100644 index df03af0e07..0000000000 --- a/unit/atf-src/tools/atf-report.1 +++ /dev/null @@ -1,168 +0,0 @@ -.\" -.\" Automated Testing Framework (atf) -.\" -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd December 16, 2011 -.Dt ATF-REPORT 1 -.Os -.Sh NAME -.Nm atf-report -.Nd transforms the output of atf-run to different formats -.Sh SYNOPSIS -.Nm -.Op Fl o Ar fmt1:path1 Op .. Fl o Ar fmtN:pathN -.Nm -.Fl h -.Sh DESCRIPTION -.Nm -reads the output of -.Nm atf-run -and transforms it to different formats. -Some of these are user-friendly and others are machine-parseable, which -opens a wide range of possibilities to analyze the results of a test -suite's execution. -See -.Sx Output formats -below for more details on which these formats are. -.Pp -In the first synopsis form, -.Nm -reads the output of -.Nm atf-run -through its standard input and, if no -.Fl o -options are given, prints a user-friendly report on its standard -output using the -.Sq ticker -format. -If -.Fl o -options are provided (more than one are allowed), they specify the complete -list of reports to generate. -They are all generated simultaneously, and for obvious reasons, two reports -cannot be written to the same file. -Note that the default output is suppressed when -.Fl o -is provided. -.Pp -In the second synopsis form, -.Nm -will print information about all supported options and their purpose. -.Pp -The following options are available: -.Bl -tag -width XoXfmtXpathXX -.It Fl h -Shows a short summary of all available options and their purpose. -.It Fl o Ar fmt:path -Adds a new output format. -.Ar fmt -is one of the formats described later on in -.Sx Output formats . -.Ar path -specifies where the report will be written to. -Depending on the chosen format, this may refer to a single file or to -a directory. -For those formats that write to a single file, specifying a -.Sq - -as the path will redirect the report to the standard output. -.El -.Ss Output formats -The following output formats are allowed: -.Bl -tag -width tickerXX -.It csv -A machine-parseable Comma-Separated Values (CSV) file. -This file contains the results for all test cases and test programs. -Test cases are logged using the following syntax: -.Bd -literal -offset indent -tc, duration, test-program, test-case, result[, reason] -.Ed -.Pp -The -.Sq result -field for test cases is always one of -.Sq passed , -.Sq skipped -or -.Sq failed . -The last two are always followed by a reason. -.Pp -Test programs are logged with the following syntax: -.Bd -literal -offset indent -tp, duration, test-program, result[, reason] -.Ed -.Pp -In this case, the -.Sq result -can be one of: -.Sq passed , -which denotes test programs that ran without any failure; -.Sq failed , -which refers to test programs in which one or more test cases failed; -or -.Sq bogus , -which mentions those test programs that failed to execute by some reason. -The reason field is only available in the last case. -.Pp -The time required to execute each test case and test program is -also provided. -You should not rely on the order of the entries in the resulting output. -.It ticker -A user-friendly report that shows the progress of the test suite's -execution as it operates. -This type of report should always be redirected to a virtual terminal, -not a file, as it may use control sequences that will make the output -unreadable in regular files. -.It xml -A report contained in a single XML file. -Ideal for later processing with -.Xr xsltproc 1 -to generate nice HTML reports. -.El -.Sh EXAMPLES -The most simple way of running a test suite is to pipe the output of -.Nm atf-run -through -.Nm -without any additional flags. -This will use the default output format, which is suitable to most users: -.Bd -literal -offset indent -atf-run | atf-report -.Ed -.Pp -In some situations, it may be interesting to get a machine-parseable file -aside from the standard report. -This can be done as follows: -.Bd -literal -offset indent -atf-run | atf-report -o csv:testsuite.csv -o ticker:- -.Ed -.Pp -Or if the standard report is not desired, thus achieving completely silent -operation: -atf-run | atf-report -o csv:testsuite.csv -.Sh SEE ALSO -.Xr atf-run 1 , -.Xr atf 7 diff --git a/unit/atf-src/tools/atf-report.cpp b/unit/atf-src/tools/atf-report.cpp deleted file mode 100644 index cb065f993e..0000000000 --- a/unit/atf-src/tools/atf-report.cpp +++ /dev/null @@ -1,710 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -} - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "application.hpp" -#include "defs.hpp" -#include "fs.hpp" -#include "reader.hpp" -#include "text.hpp" -#include "ui.hpp" - -typedef std::auto_ptr< std::ostream > ostream_ptr; - -static ostream_ptr -open_outfile(const tools::fs::path& path) -{ - ostream_ptr osp; - if (path.str() == "-") - osp = ostream_ptr(new std::ofstream("/dev/stdout")); - else - osp = ostream_ptr(new std::ofstream(path.c_str())); - if (!(*osp)) - throw std::runtime_error("Could not create file " + path.str()); - return osp; -} - -static std::string -format_tv(struct timeval* tv) -{ - std::ostringstream output; - output << static_cast< long >(tv->tv_sec) << '.' - << std::setfill('0') << std::setw(6) - << static_cast< long >(tv->tv_usec); - return output.str(); -} - -// ------------------------------------------------------------------------ -// The "writer" interface. -// ------------------------------------------------------------------------ - -//! -//! \brief A base class that defines an output format. -//! -//! The writer base class defines a generic interface to output formats. -//! This is meant to be subclassed, and each subclass can redefine any -//! method to format the information as it wishes. -//! -//! This class is not tied to a output stream nor a file because, depending -//! on the output format, we will want to write to a single file or to -//! multiple ones. -//! -class writer { -public: - writer(void) {} - virtual ~writer(void) {} - - virtual void write_info(const std::string&, const std::string&) {} - virtual void write_ntps(size_t) {} - virtual void write_tp_start(const std::string&, size_t) {} - virtual void write_tp_end(struct timeval*, const std::string&) {} - virtual void write_tc_start(const std::string&) {} - virtual void write_tc_stdout_line(const std::string&) {} - virtual void write_tc_stderr_line(const std::string&) {} - virtual void write_tc_end(const std::string&, struct timeval*, - const std::string&) {} - virtual void write_eof(void) {} -}; - -// ------------------------------------------------------------------------ -// The "csv_writer" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A very simple plain-text output format. -//! -//! The csv_writer class implements a very simple plain-text output -//! format that summarizes the results of each executed test case. The -//! results are meant to be easily parseable by third-party tools, hence -//! they are formatted as a CSV file. -//! -class csv_writer : public writer { - ostream_ptr m_os; - bool m_failed; - - std::string m_tpname; - std::string m_tcname; - -public: - csv_writer(const tools::fs::path& p) : - m_os(open_outfile(p)) - { - } - - virtual - void - write_tp_start(const std::string& name, - size_t ntcs ATF_DEFS_ATTRIBUTE_UNUSED) - { - m_tpname = name; - m_failed = false; - } - - virtual - void - write_tp_end(struct timeval* tv, const std::string& reason) - { - const std::string timestamp = format_tv(tv); - - if (!reason.empty()) - (*m_os) << "tp, " << timestamp << ", " << m_tpname << ", bogus, " - << reason << "\n"; - else if (m_failed) - (*m_os) << "tp, " << timestamp << ", "<< m_tpname << ", failed\n"; - else - (*m_os) << "tp, " << timestamp << ", "<< m_tpname << ", passed\n"; - } - - virtual - void - write_tc_start(const std::string& name) - { - m_tcname = name; - } - - virtual - void - write_tc_end(const std::string& state, struct timeval* tv, - const std::string& reason) - { - std::string str = m_tpname + ", " + m_tcname + ", " + state; - if (!reason.empty()) - str += ", " + reason; - (*m_os) << "tc, " << format_tv(tv) << ", " << str << "\n"; - - if (state == "failed") - m_failed = true; - } -}; - -// ------------------------------------------------------------------------ -// The "ticker_writer" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A console-friendly output format. -//! -//! The ticker_writer class implements a formatter that is user-friendly -//! in the sense that it shows the execution of test cases in an easy to -//! read format. It is not meant to be parseable and its format can -//! freely change across releases. -//! -class ticker_writer : public writer { - ostream_ptr m_os; - - size_t m_curtp, m_ntps; - size_t m_tcs_passed, m_tcs_failed, m_tcs_skipped, m_tcs_expected_failures; - std::string m_tcname, m_tpname; - std::vector< std::string > m_failed_tcs; - std::map< std::string, std::string > m_expected_failures_tcs; - std::vector< std::string > m_failed_tps; - - void - write_info(const std::string& what, const std::string& val) - { - if (what == "tests.root") { - (*m_os) << "Tests root: " << val << "\n\n"; - } - } - - void - write_ntps(size_t ntps) - { - m_curtp = 1; - m_tcs_passed = 0; - m_tcs_failed = 0; - m_tcs_skipped = 0; - m_tcs_expected_failures = 0; - m_ntps = ntps; - } - - void - write_tp_start(const std::string& tp, size_t ntcs) - { - using tools::text::to_string; - using tools::ui::format_text; - - m_tpname = tp; - - (*m_os) << format_text(tp + " (" + to_string(m_curtp) + - "/" + to_string(m_ntps) + "): " + - to_string(ntcs) + " test cases") - << "\n"; - (*m_os).flush(); - } - - void - write_tp_end(struct timeval* tv, const std::string& reason) - { - using tools::ui::format_text_with_tag; - - m_curtp++; - - if (!reason.empty()) { - (*m_os) << format_text_with_tag("BOGUS TEST PROGRAM: Cannot " - "trust its results because " - "of `" + reason + "'", - m_tpname + ": ", false) - << "\n"; - m_failed_tps.push_back(m_tpname); - } - (*m_os) << "[" << format_tv(tv) << "s]\n\n"; - (*m_os).flush(); - - m_tpname.clear(); - } - - void - write_tc_start(const std::string& tcname) - { - m_tcname = tcname; - - (*m_os) << " " + tcname + ": "; - (*m_os).flush(); - } - - void - write_tc_end(const std::string& state, struct timeval* tv, - const std::string& reason) - { - std::string str; - - (*m_os) << "[" << format_tv(tv) << "s] "; - - if (state == "expected_death" || state == "expected_exit" || - state == "expected_failure" || state == "expected_signal" || - state == "expected_timeout") { - str = "Expected failure: " + reason; - m_tcs_expected_failures++; - m_expected_failures_tcs[m_tpname + ":" + m_tcname] = reason; - } else if (state == "failed") { - str = "Failed: " + reason; - m_tcs_failed++; - m_failed_tcs.push_back(m_tpname + ":" + m_tcname); - } else if (state == "passed") { - str = "Passed."; - m_tcs_passed++; - } else if (state == "skipped") { - str = "Skipped: " + reason; - m_tcs_skipped++; - } else - std::abort(); - - // XXX Wrap text. format_text_with_tag does not currently allow - // to specify the current column, which is needed because we have - // already printed the tc's name. - (*m_os) << str << '\n'; - - m_tcname = ""; - } - - static void - write_expected_failures(const std::map< std::string, std::string >& xfails, - std::ostream& os) - { - using tools::ui::format_text; - using tools::ui::format_text_with_tag; - - os << format_text("Test cases for known bugs:") << "\n"; - - for (std::map< std::string, std::string >::const_iterator iter = - xfails.begin(); iter != xfails.end(); iter++) { - const std::string& name = (*iter).first; - const std::string& reason = (*iter).second; - - os << format_text_with_tag(reason, " " + name + ": ", false) - << "\n"; - } - } - - void - write_eof(void) - { - using tools::text::join; - using tools::text::to_string; - using tools::ui::format_text; - using tools::ui::format_text_with_tag; - - if (!m_failed_tps.empty()) { - (*m_os) << format_text("Failed (bogus) test programs:") - << "\n"; - (*m_os) << format_text_with_tag(join(m_failed_tps, ", "), - " ", false) << "\n\n"; - } - - if (!m_expected_failures_tcs.empty()) { - write_expected_failures(m_expected_failures_tcs, *m_os); - (*m_os) << "\n"; - } - - if (!m_failed_tcs.empty()) { - (*m_os) << format_text("Failed test cases:") << "\n"; - (*m_os) << format_text_with_tag(join(m_failed_tcs, ", "), - " ", false) << "\n\n"; - } - - (*m_os) << format_text("Summary for " + to_string(m_ntps) + - " test programs:") << "\n"; - (*m_os) << format_text_with_tag(to_string(m_tcs_passed) + - " passed test cases.", - " ", false) << "\n"; - (*m_os) << format_text_with_tag(to_string(m_tcs_failed) + - " failed test cases.", - " ", false) << "\n"; - (*m_os) << format_text_with_tag(to_string(m_tcs_expected_failures) + - " expected failed test cases.", - " ", false) << "\n"; - (*m_os) << format_text_with_tag(to_string(m_tcs_skipped) + - " skipped test cases.", - " ", false) << "\n"; - } - -public: - ticker_writer(const tools::fs::path& p) : - m_os(open_outfile(p)) - { - } -}; - -// ------------------------------------------------------------------------ -// The "xml" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A single-file XML output format. -//! -//! The xml_writer class implements a formatter that prints the results -//! of test cases in an XML format easily parseable later on by other -//! utilities. -//! -class xml_writer : public writer { - ostream_ptr m_os; - - std::string m_tcname, m_tpname; - - static - std::string - attrval(const std::string& str) - { - return str; - } - - static - std::string - elemval(const std::string& str) - { - std::ostringstream buf; - for (std::string::const_iterator iter = str.begin(); - iter != str.end(); iter++) { - const int character = static_cast< unsigned char >(*iter); - if (character == '&') { - buf << "&"; - } else if (character == '<') { - buf << "<"; - } else if (character == '>') { - buf << ">"; - } else if (std::isalnum(character) || std::ispunct(character) || - std::isspace(character)) { - buf << static_cast< char >(character); - } else { - buf << "&#" << character << ";"; - } - } - return buf.str(); - } - - void - write_info(const std::string& what, const std::string& val) - { - (*m_os) << "" << val << "\n"; - } - - void - write_tp_start(const std::string& tp, - size_t ntcs ATF_DEFS_ATTRIBUTE_UNUSED) - { - (*m_os) << "\n"; - } - - void - write_tp_end(struct timeval* tv, const std::string& reason) - { - if (!reason.empty()) - (*m_os) << "" << elemval(reason) << "\n"; - (*m_os) << "" << format_tv(tv) << ""; - (*m_os) << "\n"; - } - - void - write_tc_start(const std::string& tcname) - { - (*m_os) << "\n"; - } - - void - write_tc_stdout_line(const std::string& line) - { - (*m_os) << "" << elemval(line) << "\n"; - } - - void - write_tc_stderr_line(const std::string& line) - { - (*m_os) << "" << elemval(line) << "\n"; - } - - void - write_tc_end(const std::string& state, struct timeval* tv, - const std::string& reason) - { - std::string str; - - if (state == "expected_death" || state == "expected_exit" || - state == "expected_failure" || state == "expected_signal" || - state == "expected_timeout") { - (*m_os) << "<" << state << ">" << elemval(reason) - << "\n"; - } else if (state == "passed") { - (*m_os) << "\n"; - } else if (state == "failed") { - (*m_os) << "" << elemval(reason) << "\n"; - } else if (state == "skipped") { - (*m_os) << "" << elemval(reason) << "\n"; - } else - std::abort(); - (*m_os) << "" << format_tv(tv) << ""; - (*m_os) << "\n"; - } - - void - write_eof(void) - { - (*m_os) << "\n"; - } - -public: - xml_writer(const tools::fs::path& p) : - m_os(open_outfile(p)) - { - (*m_os) << "\n" - << "\n\n" - "\n"; - } -}; - -// ------------------------------------------------------------------------ -// The "converter" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A reader that redirects events to multiple writers. -//! -//! The converter class implements an atf_tps_reader that, for each event -//! raised by the parser, redirects it to multiple writers so that they -//! can reformat it according to their output rules. -//! -class converter : public tools::atf_report::atf_tps_reader { - typedef std::vector< writer* > outs_vector; - outs_vector m_outs; - - void - got_info(const std::string& what, const std::string& val) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_info(what, val); - } - - void - got_ntps(size_t ntps) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_ntps(ntps); - } - - void - got_tp_start(const std::string& tp, size_t ntcs) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_tp_start(tp, ntcs); - } - - void - got_tp_end(struct timeval* tv, const std::string& reason) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_tp_end(tv, reason); - } - - void - got_tc_start(const std::string& tcname) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_tc_start(tcname); - } - - void - got_tc_stdout_line(const std::string& line) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_tc_stdout_line(line); - } - - void - got_tc_stderr_line(const std::string& line) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_tc_stderr_line(line); - } - - void - got_tc_end(const std::string& state, struct timeval* tv, - const std::string& reason) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_tc_end(state, tv, reason); - } - - void - got_eof(void) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - (*iter)->write_eof(); - } - -public: - converter(std::istream& is) : - tools::atf_report::atf_tps_reader(is) - { - } - - ~converter(void) - { - for (outs_vector::iterator iter = m_outs.begin(); - iter != m_outs.end(); iter++) - delete *iter; - } - - void - add_output(const std::string& fmt, const tools::fs::path& p) - { - if (fmt == "csv") { - m_outs.push_back(new csv_writer(p)); - } else if (fmt == "ticker") { - m_outs.push_back(new ticker_writer(p)); - } else if (fmt == "xml") { - m_outs.push_back(new xml_writer(p)); - } else - throw std::runtime_error("Unknown format `" + fmt + "'"); - } -}; - -// ------------------------------------------------------------------------ -// The "atf_report" class. -// ------------------------------------------------------------------------ - -class atf_report : public tools::application::app { - static const char* m_description; - - typedef std::pair< std::string, tools::fs::path > fmt_path_pair; - std::vector< fmt_path_pair > m_oflags; - - void process_option(int, const char*); - options_set specific_options(void) const; - -public: - atf_report(void); - - int main(void); -}; - -const char* atf_report::m_description = - "atf-report is a tool that parses the output of atf-run and " - "generates user-friendly reports in multiple different formats."; - -atf_report::atf_report(void) : - app(m_description, "atf-report(1)", "atf(7)") -{ -} - -void -atf_report::process_option(int ch, const char* arg) -{ - switch (ch) { - case 'o': - { - std::string str(arg); - std::string::size_type pos = str.find(':'); - if (pos == std::string::npos) - throw std::runtime_error("Syntax error in -o option"); - else { - std::string fmt = str.substr(0, pos); - tools::fs::path path = tools::fs::path(str.substr(pos + 1)); - m_oflags.push_back(fmt_path_pair(fmt, path)); - } - } - break; - - default: - std::abort(); - } -} - -atf_report::options_set -atf_report::specific_options(void) - const -{ - using tools::application::option; - options_set opts; - opts.insert(option('o', "fmt:path", "Adds a new output file; multiple " - "ones can be specified, and a - " - "path means stdout")); - return opts; -} - -int -atf_report::main(void) -{ - if (m_argc > 0) - throw std::runtime_error("No arguments allowed"); - - if (m_oflags.empty()) - m_oflags.push_back(fmt_path_pair("ticker", tools::fs::path("-"))); - - // Look for path duplicates. - std::set< tools::fs::path > paths; - for (std::vector< fmt_path_pair >::const_iterator iter = m_oflags.begin(); - iter != m_oflags.end(); iter++) { - tools::fs::path p = (*iter).second; - if (p == tools::fs::path("/dev/stdout")) - p = tools::fs::path("-"); - if (paths.find(p) != paths.end()) - throw std::runtime_error("The file `" + p.str() + "' was " - "specified more than once"); - paths.insert((*iter).second); - } - - // Generate the output files. - converter cnv(std::cin); - for (std::vector< fmt_path_pair >::const_iterator iter = m_oflags.begin(); - iter != m_oflags.end(); iter++) - cnv.add_output((*iter).first, (*iter).second); - cnv.read(); - - return EXIT_SUCCESS; -} - -int -main(int argc, char* const* argv) -{ - return atf_report().run(argc, argv); -} diff --git a/unit/atf-src/tools/atf-report_test.sh b/unit/atf-src/tools/atf-report_test.sh deleted file mode 100644 index 9f0f47fc61..0000000000 --- a/unit/atf-src/tools/atf-report_test.sh +++ /dev/null @@ -1,449 +0,0 @@ -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -create_helpers() -{ - mkdir dir1 - cp $(atf_get_srcdir)/pass_helper dir1/tp1 - cp $(atf_get_srcdir)/fail_helper dir1/tp2 - cp $(atf_get_srcdir)/pass_helper tp3 - cp $(atf_get_srcdir)/fail_helper tp4 - - cat >tp5 <Atffile <dir1/Atffile <etc/atf-run.hooks <tps.out 2>/dev/null - rm -rf etc -} - -atf_test_case default -default_head() -{ - atf_set "descr" "Checks that the default output uses the ticker" \ - "format" -} -default_body() -{ - create_helpers - run_helpers - - # Check that the default output uses the ticker format. - atf_check -s eq:0 -o match:'test cases' -o match:'Failed test cases' \ - -o match:'Summary for' -e empty -x 'atf-report Atffile <expout <expout <expout <>'; expected \`:' -EOF -# NO_CHECK_STYLE_END - - atf_check -s eq:0 -o file:expout -e empty -x \ - "atf-report -o csv:- expout <>'; expected \`:'' -[#.#s] - -Failed (bogus) test programs: - tp5 - -Failed test cases: - dir1/tp2:main, tp4:main - -Summary for 5 test programs: - 2 passed test cases. - 2 failed test cases. - 0 expected failed test cases. - 0 skipped test cases. -EOF - - atf_check -s eq:0 -o file:expout -e empty -x \ - "atf-report -o ticker:- expout < - - - -A value - - - -#.# -#.# - - -This always fails -#.# -#.# - - - -#.# -#.# - - -This always fails -#.# -#.# - -Invalid format for test case list: 1: Unexpected token \`<<NEWLINE>>'; expected \`:' -#.# -Another value - -EOF -# NO_CHECK_STYLE_END - - atf_check -s eq:0 -o file:expout -e empty -x \ - "atf-report -o xml:- < tps.out | sed -E -e 's/>[0-9]+.[0-9]{6}#.#Atffile <expout < - - - -A value - - ---- a 2007-11-04 14:00:41.000000000 +0100 -+++ b 2007-11-04 14:00:48.000000000 +0100 -@@ -1,7 +1,7 @@ - This test is meant to simulate a diff. - Blank space at beginning of context lines must be preserved. - --First original line. --Second original line. -+First modified line. -+Second modified line. - - EOF - -#.# -#.# -Another value - -EOF -# NO_CHECK_STYLE_END - - run_helpers - atf_check -s eq:0 -o file:expout -e empty -x \ - "atf-report -o xml:- [0-9]+.[0-9]{6}#.#experr <.conf . -.It -Configuration variables defined in the user-specific configuration file -shared among all test suites. -This lives in -.Pa ${HOME}/.atf/common.conf . -.It -Configuration variables defined in the user-specific test-suite-specific -configuration file. -This lives in -.Pa ${HOME}/.atf/.conf . -.It -Configuration variables provided as part of the command line through the -.Fl v -option. -.El -.Pp -The value of -.Va ATF_CONFDIR -in the above list determined as detailed in -.Xr atf-config 1 . -.Pp -The following configuration variables are globally recognized: -.Bl -tag -width XunprivilegedXuserXX -.It Va unprivileged-user -The name of the system user that atf-run will drop root privileges into -for test cases defining -.Sq require.user=unprivileged . -Note that this is -.Em not provided for security purposes ; -this feature is only for the convenience of the user. -.El -.Ss Hooks -.Nm Ns 's -internal behavior can be customized by the system administrator and the -user by means of hooks. -These hooks are written in the shell script language for simplicity and -are stored in the following files, which are read in the order provided -below: -.Bl -enum -.It -${ATF_CONFDIR}/atf-run.hooks -.It -${HOME}/.atf/atf-run.hooks -.El -.Pp -The following hooks are supported: -.Bl -tag -width infoXstartXhookXX -.It info_start_hook -Called before -.Nm -executes any test program. -The purpose of this hook is to write additional -.Sq info -stanzas to the top of the output report; these are defined by the -.Sq application/X-atf-tps format -described in -.Xr atf-formats 5 . -Always use the -.Sq atf_tps_writer_info -function to print these. -.Pp -This takes no parameters. -.It info_end_hook -Similar to -.Sq info_start_hook -but executed after all test programs have been run so that additional -.Sq info -stanzas can be added to the bottom of the output report. -.Pp -This takes no parameters. -.El -.Pp -All hooks are accompanied by a function named -.Sq default_ -that can be executed by them to invoke the default behavior built into -.Nm . -For example, in order to extend the default -.Sq info_start_hook -hook, we could write the following function: -.Bd -literal -offset indent -info_start_hook() -{ - default_info_start_hook "${@}" - - atf_tps_writer_info "uptime" "$(uptime)" -} -.Ed -.Sh SEE ALSO -.Xr atf-report 1 , -.Xr atf-test-program 1 , -.Xr atf 7 diff --git a/unit/atf-src/tools/atf-run.cpp b/unit/atf-src/tools/atf-run.cpp deleted file mode 100644 index a05b681720..0000000000 --- a/unit/atf-src/tools/atf-run.cpp +++ /dev/null @@ -1,567 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -#include -#include -#include -#include -} - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "application.hpp" -#include "atffile.hpp" -#include "config.hpp" -#include "config_file.hpp" -#include "env.hpp" -#include "exceptions.hpp" -#include "fs.hpp" -#include "parser.hpp" -#include "process.hpp" -#include "requirements.hpp" -#include "test-program.hpp" -#include "text.hpp" - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -} // anonymous namespace - -#if defined(MAXCOMLEN) -static const std::string::size_type max_core_name_length = MAXCOMLEN; -#else -static const std::string::size_type max_core_name_length = std::string::npos; -#endif - -class atf_run : public tools::application::app { - static const char* m_description; - - vars_map m_cmdline_vars; - - static vars_map::value_type parse_var(const std::string&); - - void process_option(int, const char*); - std::string specific_args(void) const; - options_set specific_options(void) const; - - void parse_vflag(const std::string&); - - std::vector< std::string > conf_args(void) const; - - size_t count_tps(std::vector< std::string >) const; - - int run_test(const tools::fs::path&, tools::test_program::atf_tps_writer&, - const vars_map&); - int run_test_directory(const tools::fs::path&, - tools::test_program::atf_tps_writer&); - int run_test_program(const tools::fs::path&, - tools::test_program::atf_tps_writer&, - const vars_map&); - - tools::test_program::test_case_result get_test_case_result( - const std::string&, const tools::process::status&, - const tools::fs::path&) const; - -public: - atf_run(void); - - int main(void); -}; - -static void -sanitize_gdb_env(void) -{ - try { - tools::env::unset("TERM"); - } catch (...) { - // Just swallow exceptions here; they cannot propagate into C, which - // is where this function is called from, and even if these exceptions - // appear they are benign. - } -} - -static void -dump_stacktrace(const tools::fs::path& tp, const tools::process::status& s, - const tools::fs::path& workdir, - tools::test_program::atf_tps_writer& w) -{ - assert(s.signaled() && s.coredump()); - - w.stderr_tc("Test program crashed; attempting to get stack trace"); - - const tools::fs::path corename = workdir / - (tp.leaf_name().substr(0, max_core_name_length) + ".core"); - if (!tools::fs::exists(corename)) { - w.stderr_tc("Expected file " + corename.str() + " not found"); - return; - } - - const tools::fs::path gdb(GDB); - const tools::fs::path gdbout = workdir / "gdb.out"; - const tools::process::argv_array args(gdb.leaf_name().c_str(), "-batch", - "-q", "-ex", "bt", tp.c_str(), - corename.c_str(), NULL); - tools::process::status status = tools::process::exec( - gdb, args, - tools::process::stream_redirect_path(gdbout), - tools::process::stream_redirect_path(tools::fs::path("/dev/null")), - sanitize_gdb_env); - if (!status.exited() || status.exitstatus() != EXIT_SUCCESS) { - w.stderr_tc("Execution of " GDB " failed"); - return; - } - - std::ifstream input(gdbout.c_str()); - if (input) { - std::string line; - while (std::getline(input, line).good()) - w.stderr_tc(line); - input.close(); - } - - w.stderr_tc("Stack trace complete"); -} - -const char* atf_run::m_description = - "atf-run is a tool that runs tests programs and collects their " - "results."; - -atf_run::atf_run(void) : - app(m_description, "atf-run(1)", "atf(7)") -{ -} - -void -atf_run::process_option(int ch, const char* arg) -{ - switch (ch) { - case 'v': - parse_vflag(arg); - break; - - default: - std::abort(); - } -} - -std::string -atf_run::specific_args(void) - const -{ - return "[test-program1 .. test-programN]"; -} - -atf_run::options_set -atf_run::specific_options(void) - const -{ - using tools::application::option; - options_set opts; - opts.insert(option('v', "var=value", "Sets the configuration variable " - "`var' to `value'; overrides " - "values in configuration files")); - return opts; -} - -void -atf_run::parse_vflag(const std::string& str) -{ - if (str.empty()) - throw std::runtime_error("-v requires a non-empty argument"); - - std::vector< std::string > ws = tools::text::split(str, "="); - if (ws.size() == 1 && str[str.length() - 1] == '=') { - m_cmdline_vars[ws[0]] = ""; - } else { - if (ws.size() != 2) - throw std::runtime_error("-v requires an argument of the form " - "var=value"); - - m_cmdline_vars[ws[0]] = ws[1]; - } -} - -int -atf_run::run_test(const tools::fs::path& tp, - tools::test_program::atf_tps_writer& w, - const vars_map& config) -{ - tools::fs::file_info fi(tp); - - int errcode; - if (fi.get_type() == tools::fs::file_info::dir_type) - errcode = run_test_directory(tp, w); - else { - const vars_map effective_config = - tools::config_file::merge_configs(config, m_cmdline_vars); - - errcode = run_test_program(tp, w, effective_config); - } - return errcode; -} - -int -atf_run::run_test_directory(const tools::fs::path& tp, - tools::test_program::atf_tps_writer& w) -{ - tools::atffile af = tools::read_atffile(tp / "Atffile"); - - vars_map test_suite_vars; - { - vars_map::const_iterator iter = af.props().find("test-suite"); - assert(iter != af.props().end()); - test_suite_vars = tools::config_file::read_config_files((*iter).second); - } - - bool ok = true; - for (std::vector< std::string >::const_iterator iter = af.tps().begin(); - iter != af.tps().end(); iter++) { - const bool result = run_test(tp / *iter, w, - tools::config_file::merge_configs(af.conf(), test_suite_vars)); - ok &= (result == EXIT_SUCCESS); - } - - return ok ? EXIT_SUCCESS : EXIT_FAILURE; -} - -tools::test_program::test_case_result -atf_run::get_test_case_result(const std::string& broken_reason, - const tools::process::status& s, - const tools::fs::path& resfile) - const -{ - using tools::text::to_string; - using tools::test_program::read_test_case_result; - using tools::test_program::test_case_result; - - if (!broken_reason.empty()) { - test_case_result tcr; - - try { - tcr = read_test_case_result(resfile); - - if (tcr.state() == "expected_timeout") { - return tcr; - } else { - return test_case_result("failed", -1, broken_reason); - } - } catch (const std::runtime_error&) { - return test_case_result("failed", -1, broken_reason); - } - } - - if (s.exited()) { - test_case_result tcr; - - try { - tcr = read_test_case_result(resfile); - } catch (const std::runtime_error& e) { - return test_case_result("failed", -1, "Test case exited " - "normally but failed to create the results file: " + - std::string(e.what())); - } - - if (tcr.state() == "expected_death") { - return tcr; - } else if (tcr.state() == "expected_exit") { - if (tcr.value() == -1 || s.exitstatus() == tcr.value()) - return tcr; - else - return test_case_result("failed", -1, "Test case was " - "expected to exit with a " + to_string(tcr.value()) + - " error code but returned " + to_string(s.exitstatus())); - } else if (tcr.state() == "expected_failure") { - if (s.exitstatus() == EXIT_SUCCESS) - return tcr; - else - return test_case_result("failed", -1, "Test case returned an " - "error in expected_failure mode but it should not have"); - } else if (tcr.state() == "expected_signal") { - return test_case_result("failed", -1, "Test case exited cleanly " - "but was expected to receive a signal"); - } else if (tcr.state() == "failed") { - if (s.exitstatus() == EXIT_SUCCESS) - return test_case_result("failed", -1, "Test case " - "exited successfully but reported failure"); - else - return tcr; - } else if (tcr.state() == "passed") { - if (s.exitstatus() == EXIT_SUCCESS) - return tcr; - else - return test_case_result("failed", -1, "Test case exited as " - "passed but reported an error"); - } else if (tcr.state() == "skipped") { - if (s.exitstatus() == EXIT_SUCCESS) - return tcr; - else - return test_case_result("failed", -1, "Test case exited as " - "skipped but reported an error"); - } - } else if (s.signaled()) { - test_case_result tcr; - - try { - tcr = read_test_case_result(resfile); - } catch (const std::runtime_error&) { - return test_case_result("failed", -1, "Test program received " - "signal " + tools::text::to_string(s.termsig()) + - (s.coredump() ? " (core dumped)" : "")); - } - - if (tcr.state() == "expected_death") { - return tcr; - } else if (tcr.state() == "expected_signal") { - if (tcr.value() == -1 || s.termsig() == tcr.value()) - return tcr; - else - return test_case_result("failed", -1, "Test case was " - "expected to exit due to a " + to_string(tcr.value()) + - " signal but got " + to_string(s.termsig())); - } else { - return test_case_result("failed", -1, "Test program received " - "signal " + tools::text::to_string(s.termsig()) + - (s.coredump() ? " (core dumped)" : "") + " and created a " - "bogus results file"); - } - } - std::abort(); - return test_case_result(); -} - -int -atf_run::run_test_program(const tools::fs::path& tp, - tools::test_program::atf_tps_writer& w, - const vars_map& config) -{ - int errcode = EXIT_SUCCESS; - - tools::test_program::metadata md; - try { - md = tools::test_program::get_metadata(tp, config); - } catch (const tools::parser::format_error& e) { - w.start_tp(tp.str(), 0); - w.end_tp("Invalid format for test case list: " + std::string(e.what())); - return EXIT_FAILURE; - } catch (const tools::parser::parse_errors& e) { - const std::string reason = tools::text::join(e, "; "); - w.start_tp(tp.str(), 0); - w.end_tp("Invalid format for test case list: " + reason); - return EXIT_FAILURE; - } - - tools::fs::temp_dir resdir( - tools::fs::path(tools::config::get("atf_workdir")) / "atf-run.XXXXXX"); - - w.start_tp(tp.str(), md.test_cases.size()); - if (md.test_cases.empty()) { - w.end_tp("Bogus test program: reported 0 test cases"); - errcode = EXIT_FAILURE; - } else { - for (std::map< std::string, vars_map >::const_iterator iter - = md.test_cases.begin(); iter != md.test_cases.end(); iter++) { - const std::string& tcname = (*iter).first; - const vars_map& tcmd = (*iter).second; - - w.start_tc(tcname); - - try { - const std::string& reqfail = tools::check_requirements( - tcmd, config); - if (!reqfail.empty()) { - w.end_tc("skipped", reqfail); - continue; - } - } catch (const std::runtime_error& e) { - w.end_tc("failed", e.what()); - errcode = EXIT_FAILURE; - continue; - } - - const std::pair< int, int > user = tools::get_required_user( - tcmd, config); - - tools::fs::path resfile = resdir.get_path() / "tcr"; - assert(!tools::fs::exists(resfile)); - try { - const bool has_cleanup = tools::text::to_bool( - (*tcmd.find("has.cleanup")).second); - - tools::fs::temp_dir workdir(tools::fs::path(tools::config::get( - "atf_workdir")) / "atf-run.XXXXXX"); - if (user.first != -1 && user.second != -1) { - if (::chown(workdir.get_path().c_str(), user.first, - user.second) == -1) { - throw tools::system_error("chown(" + - workdir.get_path().str() + ")", "chown(2) failed", - errno); - } - resfile = workdir.get_path() / "tcr"; - } - - std::pair< std::string, const tools::process::status > s = - tools::test_program::run_test_case( - tp, tcname, "body", tcmd, config, - resfile, workdir.get_path(), w); - if (s.second.signaled() && s.second.coredump()) - dump_stacktrace(tp, s.second, workdir.get_path(), w); - if (has_cleanup) - (void)tools::test_program::run_test_case( - tp, tcname, "cleanup", tcmd, - config, resfile, workdir.get_path(), w); - - // TODO: Force deletion of workdir. - - tools::test_program::test_case_result tcr = - get_test_case_result(s.first, s.second, resfile); - - w.end_tc(tcr.state(), tcr.reason()); - if (tcr.state() == "failed") - errcode = EXIT_FAILURE; - } catch (...) { - if (tools::fs::exists(resfile)) - tools::fs::remove(resfile); - throw; - } - if (tools::fs::exists(resfile)) - tools::fs::remove(resfile); - - } - w.end_tp(""); - } - - return errcode; -} - -size_t -atf_run::count_tps(std::vector< std::string > tps) - const -{ - size_t ntps = 0; - - for (std::vector< std::string >::const_iterator iter = tps.begin(); - iter != tps.end(); iter++) { - tools::fs::path tp(*iter); - tools::fs::file_info fi(tp); - - if (fi.get_type() == tools::fs::file_info::dir_type) { - tools::atffile af = tools::read_atffile(tp / "Atffile"); - std::vector< std::string > aux = af.tps(); - for (std::vector< std::string >::iterator i2 = aux.begin(); - i2 != aux.end(); i2++) - *i2 = (tp / *i2).str(); - ntps += count_tps(aux); - } else - ntps++; - } - - return ntps; -} - -static -void -call_hook(const std::string& tool, const std::string& hook) -{ - const tools::fs::path sh(tools::config::get("atf_shell")); - const tools::fs::path hooks = - tools::fs::path(tools::config::get("atf_pkgdatadir")) / (tool + ".hooks"); - - const tools::process::status s = - tools::process::exec(sh, - tools::process::argv_array(sh.c_str(), hooks.c_str(), - hook.c_str(), NULL), - tools::process::stream_inherit(), - tools::process::stream_inherit()); - - - if (!s.exited() || s.exitstatus() != EXIT_SUCCESS) - throw std::runtime_error("Failed to run the '" + hook + "' hook " - "for '" + tool + "'"); -} - -int -atf_run::main(void) -{ - tools::atffile af = tools::read_atffile(tools::fs::path("Atffile")); - - std::vector< std::string > tps; - tps = af.tps(); - if (m_argc >= 1) { - // TODO: Ensure that the given test names are listed in the - // Atffile. Take into account that the file can be using globs. - tps.clear(); - for (int i = 0; i < m_argc; i++) - tps.push_back(m_argv[i]); - } - - // Read configuration data for this test suite. - vars_map test_suite_vars; - { - vars_map::const_iterator iter = af.props().find("test-suite"); - assert(iter != af.props().end()); - test_suite_vars = tools::config_file::read_config_files((*iter).second); - } - - tools::test_program::atf_tps_writer w(std::cout); - call_hook("atf-run", "info_start_hook"); - w.ntps(count_tps(tps)); - - bool ok = true; - for (std::vector< std::string >::const_iterator iter = tps.begin(); - iter != tps.end(); iter++) { - const bool result = run_test(tools::fs::path(*iter), w, - tools::config_file::merge_configs(af.conf(), test_suite_vars)); - ok &= (result == EXIT_SUCCESS); - } - - call_hook("atf-run", "info_end_hook"); - - return ok ? EXIT_SUCCESS : EXIT_FAILURE; -} - -int -main(int argc, char* const* argv) -{ - return atf_run().run(argc, argv); -} diff --git a/unit/atf-src/tools/atf-run_test.sh b/unit/atf-src/tools/atf-run_test.sh deleted file mode 100644 index afd013efbf..0000000000 --- a/unit/atf-src/tools/atf-run_test.sh +++ /dev/null @@ -1,1134 +0,0 @@ -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -create_atffile() -{ - ATF_CONFDIR="$(pwd)"; export ATF_CONFDIR - - cat >Atffile <>Atffile - done -} - -create_helper() -{ - cp $(atf_get_srcdir)/misc_helpers helper - create_atffile helper - TESTCASE=${1}; export TESTCASE -} - -create_helper_stdin() -{ - # TODO: This really, really, really must use real test programs. - cat >${1} <>${1} - [ ${cnt} -lt ${2} ] && echo "echo" >>${1} - cnt=$((${cnt} + 1)) - done -cat >>${1} <>${1} -} - -create_mount_helper() -{ - cat >${1} <>${1} - cat >>${1} <etc/common.conf <.conf." - cat >etc/atf.conf <.atf/common.conf <.conf." - cat >.atf/atf.conf <etc/common.conf <>Atffile - atf_check -s eq:0 -o match:'testvar: a value' -e ignore -x \ - "ATF_CONFDIR=$(pwd)/etc atf-run helper" - - echo "Checking that defining 'testvar' trough the configuration" \ - "file overrides the one in the Atffile." - mkdir etc - cat >etc/common.conf <> Atffile - atf_check -s eq:1 -o ignore -e ignore -x "ATF_CONFDIR=$(pwd)/etc atf-run" - - echo "Checking that defining 'testvar' in the correct Atffile works." - echo 'conf: testvar = "a value"' >>dir/Atffile - atf_check -s eq:0 -o match:'testvar: a value' -e ignore -x \ - "ATF_CONFDIR=$(pwd)/etc atf-run" -} - -atf_test_case fds -fds_head() -{ - atf_set "descr" "Tests that all streams are properly captured" -} -fds_body() -{ - create_helper fds - - atf_check -s eq:0 \ - -o match:'^tc-so:msg1 to stdout$' \ - -o match:'^tc-so:msg2 to stdout$' \ - -o match:'^tc-se:msg1 to stderr$' \ - -o match:'^tc-se:msg2 to stderr$' \ - -e empty atf-run -} - -atf_test_case mux_streams -mux_streams_head() -{ - atf_set "descr" "Tests for a race condition in stream multiplexing" -} -mux_streams_body() -{ - create_helper mux_streams - - for i in 1 2 3 4 5; do - echo "Attempt ${i}" - atf_check -s eq:0 -o match:'stdout 9999' -o match:'stderr 9999' atf-run - done -} - -atf_test_case expect -expect_head() -{ - atf_set "descr" "Tests the processing of test case results and the" \ - "expect features" -} -expect_body() -{ - ln -s "$(atf_get_srcdir)/expect_helpers" . - create_atffile expect_helpers - - atf_check -s eq:1 \ - -o match:'death_and_exit, expected_death' \ - -o match:'death_and_signal, expected_death' \ - -o match:'death_but_pass, failed' \ - -o match:'exit_any_and_exit, expected_exit' \ - -o match:'exit_but_pass, failed' \ - -o match:'exit_code_and_exit, expected_exit' \ - -o match:'fail_and_fail_check, expected_failure' \ - -o match:'fail_and_fail_requirement, expected_failure' \ - -o match:'fail_but_pass, failed' \ - -o match:'pass_and_pass, passed' \ - -o match:'pass_but_fail_check, failed' \ - -o match:'pass_but_fail_requirement, failed' \ - -o match:'signal_any_and_signal, expected_signal' \ - -o match:'signal_but_pass, failed' \ - -o match:'signal_no_and_signal, expected_signal' \ - -o match:'timeout_and_hang, expected_timeout' \ - -o match:'timeout_but_pass, failed' \ - -e empty atf-run -} - -atf_test_case missing_results -missing_results_head() -{ - atf_set "descr" "Ensures that atf-run correctly handles test cases that " \ - "do not create the results file" -} -missing_results_body() -{ - create_helper_stdin helper 1 <\${resfile} -echo 'line 2' >>\${resfile} -exit 0 -EOF - chmod +x helper - - create_atffile helper - - re='^tc-end: [0-9][0-9]*\.[0-9]*, tc1,' - atf_check -s eq:1 -o match:"${re} .*line 1.*line 2" -e empty atf-run -} - -atf_test_case broken_tp_list -broken_tp_list_head() -{ - atf_set "descr" "Ensures that atf-run reports test programs that" \ - "provide a bogus test case list" -} -broken_tp_list_body() -{ - cat >helper <\${resfile} -exit 0 -EOF - chmod +x helper - - create_atffile helper - - re='^tc-end: [0-9][0-9]*\.[0-9]*, tc1,' - atf_check -s eq:1 \ - -o match:"${re} .*exited successfully.*reported failure" \ - -e empty atf-run -} - -atf_test_case signaled -signaled_head() -{ - atf_set "descr" "Ensures that atf-run reports test program's crashes" \ - "correctly regardless of their actual results" -} -signaled_body() -{ - create_helper_stdin helper 2 <\${resfile} -case \${testcase} in - tc1) ;; - tc2) echo "Killing myself!" ; kill -9 \$\$ ;; -esac -EOF - chmod +x helper - - create_atffile helper - - re='^tc-end: [0-9][0-9]*\.[0-9]*, tc2,' - atf_check -s eq:1 -o match:"${re} .*received signal 9" \ - -e empty atf-run -} - -atf_test_case hooks -hooks_head() -{ - atf_set "descr" "Checks that the default hooks work and that they" \ - "can be overriden by the user" -} -hooks_body() -{ - cp $(atf_get_srcdir)/pass_helper helper - create_atffile helper - - mkdir atf - mkdir .atf - - echo "Checking default hooks" - atf_check -s eq:0 -o match:'^info: time.start, ' \ - -o match:'^info: time.end, ' -e empty -x \ - "ATF_CONFDIR=$(pwd)/atf atf-run" - - echo "Checking the system-wide info_start hook" - cat >atf/atf-run.hooks <.atf/atf-run.hooks <atf/atf-run.hooks <.atf/atf-run.hooks <\${ROOT} -mkdir foo -mkdir foo/bar -mkdir foo/bar/mnt -do_mount foo/bar/mnt -mkdir foo/baz -do_mount foo/baz -mkdir foo/baz/foo -mkdir foo/baz/foo/bar -do_mount foo/baz/foo/bar -EOF - create_atffile helper - chmod +x helper - - platform=$(uname) - case ${platform} in - Linux|FreeBSD|NetBSD|SunOS) - ;; - *) - # XXX Possibly specify in meta-data too. - atf_skip "Test unimplemented in this platform (${platform})" - ;; - esac - - atf_check -s eq:0 -o match:"main, passed" -e ignore atf-run helper - mount | grep $(cat root) && atf_fail "Some file systems remain mounted" - atf_check -s eq:1 -o empty -e empty test -d $(cat root)/foo -} - -atf_test_case cleanup_symlink -cleanup_symlink_head() -{ - atf_set "descr" "Tests that the removal algorithm does not follow" \ - "symlinks, which may live in another device and thus" \ - "be treated as mount points" - atf_set "require.user" "root" -} -cleanup_symlink_body() -{ - ROOT="$(pwd)/root"; export ROOT - - create_mount_helper helper <\${ROOT} -atf_check -s eq:0 -o empty -e empty mkdir foo -atf_check -s eq:0 -o empty -e empty mkdir foo/bar -do_mount foo/bar -atf_check -s eq:0 -o empty -e empty touch a -atf_check -s eq:0 -o empty -e empty ln -s "\$(pwd)/a" foo/bar -EOF - create_atffile helper - chmod +x helper - - platform=$(uname) - case ${platform} in - Linux|FreeBSD|NetBSD|SunOS) - ;; - *) - # XXX Possibly specify in meta-data too. - atf_skip "Test unimplemented in this platform (${platform})" - ;; - esac - - atf_check -s eq:0 -o match:"main, passed" -e ignore atf-run helper - mount | grep $(cat root) && atf_fail "Some file systems remain mounted" - atf_check -s eq:1 -o empty -e empty test -d $(cat root)/foo -} - -atf_test_case require_arch -require_arch_head() -{ - atf_set "descr" "Tests that atf-run validates the require.arch property" -} -require_arch_body() -{ - create_helper require_arch - create_atffile helper - - echo "Checking for the real architecture" - arch=$(atf-config -t atf_arch) - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v arch="${arch}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v arch="foo ${arch}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v arch="${arch} foo" helper - - echo "Checking for a fictitious architecture" - arch=fictitious - export ATF_ARCH=fictitious - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v arch="${arch}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v arch="foo ${arch}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v arch="${arch} foo" helper - - echo "Triggering some failures" - atf_check -s eq:0 -o match:"${TESTCASE}, skipped, .*foo.*architecture" \ - -e ignore atf-run -v arch="foo" helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*foo bar.*architectures" -e ignore \ - atf-run -v arch="foo bar" helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*fictitiousxxx.*architecture" \ - -e ignore atf-run -v arch="${arch}xxx" helper -} - -atf_test_case require_config -require_config_head() -{ - atf_set "descr" "Tests that atf-run validates the require.config property" -} -require_config_body() -{ - create_helper require_config - create_atffile helper - - atf_check -s eq:0 -o match:"${TESTCASE}, skipped, .*var1.*not defined" \ - -e ignore atf-run helper - atf_check -s eq:0 -o match:"${TESTCASE}, skipped, .*var2.*not defined" \ - -e ignore atf-run -v var1=foo helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v var1=a -v var2=' ' helper -} - -atf_test_case require_files -require_files_head() -{ - atf_set "descr" "Tests that atf-run validates the require.files property" -} -require_files_body() -{ - create_helper require_files - create_atffile helper - - touch i-exist - - echo "Checking absolute paths" - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v files='/bin/cp' helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v files="$(pwd)/i-exist" helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*/dont-exist" \ - -e ignore atf-run -v files="$(pwd)/i-exist $(pwd)/dont-exist" helper - - echo "Checking that relative paths are not allowed" - atf_check -s eq:1 \ - -o match:"${TESTCASE}, failed, Relative paths.*not allowed.*hello" \ - -e ignore atf-run -v files='hello' helper - atf_check -s eq:1 \ - -o match:"${TESTCASE}, failed, Relative paths.*not allowed.*a/b" \ - -e ignore atf-run -v files='a/b' helper -} - -atf_test_case require_machine -require_machine_head() -{ - atf_set "descr" "Tests that atf-run validates the require.machine property" -} -require_machine_body() -{ - create_helper require_machine - create_atffile helper - - echo "Checking for the real machine type" - machine=$(atf-config -t atf_machine) - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v machine="${machine}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v machine="foo ${machine}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v machine="${machine} foo" helper - - echo "Checking for a fictitious machine type" - machine=fictitious - export ATF_MACHINE=fictitious - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v machine="${machine}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v machine="foo ${machine}" helper - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v machine="${machine} foo" helper - - echo "Triggering some failures" - atf_check -s eq:0 -o match:"${TESTCASE}, skipped, .*foo.*machine type" \ - -e ignore atf-run -v machine="foo" helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*foo bar.*machine types" -e ignore \ - atf-run -v machine="foo bar" helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*fictitiousxxx.*machine type" \ - -e ignore atf-run -v machine="${machine}xxx" helper -} - -atf_test_case require_progs -require_progs_head() -{ - atf_set "descr" "Tests that atf-run validates the require.progs property" -} -require_progs_body() -{ - create_helper require_progs - create_atffile helper - - echo "Checking absolute paths" - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v progs='/bin/cp' helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*/bin/__non-existent__.*PATH" \ - -e ignore atf-run -v progs='/bin/__non-existent__' helper - - echo "Checking that relative paths are not allowed" - atf_check -s eq:1 \ - -o match:"${TESTCASE}, failed, Relative paths.*not allowed.*bin/cp" \ - -e ignore atf-run -v progs='bin/cp' helper - - echo "Check plain file names, searching them in the PATH." - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v progs='cp' helper - atf_check -s eq:0 \ - -o match:"${TESTCASE}, skipped, .*__non-existent__.*PATH" -e ignore \ - atf-run -v progs='__non-existent__' helper -} - -atf_test_case require_user_root -require_user_root_head() -{ - atf_set "descr" "Tests that atf-run validates the require.user property" \ - "when it is set to 'root'" -} -require_user_root_body() -{ - create_helper require_user - create_atffile helper - - if [ $(id -u) -eq 0 ]; then - exp=passed - else - exp=skipped - fi - atf_check -s eq:0 -o match:"${TESTCASE}, ${exp}" -e ignore atf-run \ - -v user=root helper -} - -atf_test_case require_user_unprivileged -require_user_unprivileged_head() -{ - atf_set "descr" "Tests that atf-run validates the require.user property" \ - "when it is set to 'root'" -} -require_user_unprivileged_body() -{ - create_helper require_user - create_atffile helper - - if [ $(id -u) -eq 0 ]; then - exp=skipped - else - exp=passed - fi - atf_check -s eq:0 -o match:"${TESTCASE}, ${exp}" -e ignore atf-run \ - -v user=unprivileged helper -} - -atf_test_case require_user_bad -require_user_bad_head() -{ - atf_set "descr" "Tests that atf-run validates the require.user property" \ - "when it is set to 'root'" -} -require_user_bad_body() -{ - create_helper require_user - create_atffile helper - - atf_check -s eq:1 -o match:"${TESTCASE}, failed, Invalid value.*foobar" \ - -e ignore atf-run -v user=foobar helper -} - -atf_test_case timeout -timeout_head() -{ - atf_set "descr" "Tests that atf-run kills a test case that times out" -} -timeout_body() -{ - create_helper timeout - create_atffile helper - - atf_check -s eq:1 \ - -o match:"${TESTCASE}, failed, .*timed out after 1 second" -e ignore \ - atf-run -v statedir=$(pwd) helper - if [ -f finished ]; then - atf_fail "Test case was not killed after time out" - fi -} - -atf_test_case timeout_forkexit -timeout_forkexit_head() -{ - atf_set "descr" "Tests that atf-run deals gracefully with a test program" \ - "that forks, exits, but the child process hangs" -} -timeout_forkexit_body() -{ - create_helper timeout_forkexit - create_atffile helper - - atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \ - -v statedir=$(pwd) helper - test -f parent-finished || atf_fail "Parent did not exit as expected" - test -f child-finished && atf_fail "Subprocess exited but it should have" \ - "been forcibly terminated" || true -} - -atf_test_case ignore_deprecated_use_fs -ignore_deprecated_use_fs_head() -{ - atf_set "descr" "Tests that atf-run ignores the deprecated use.fs property" -} -ignore_deprecated_use_fs_body() -{ - create_helper use_fs - create_atffile helper - - atf_check -s eq:0 -o ignore -e ignore atf-run helper -} - -atf_init_test_cases() -{ - atf_add_test_case no_warnings - atf_add_test_case config - atf_add_test_case vflag - atf_add_test_case atffile - atf_add_test_case atffile_recursive - atf_add_test_case expect - atf_add_test_case fds - atf_add_test_case mux_streams - atf_add_test_case missing_results - atf_add_test_case broken_results - atf_add_test_case broken_tp_list - atf_add_test_case zero_tcs - atf_add_test_case exit_codes - atf_add_test_case signaled - atf_add_test_case hooks - atf_add_test_case isolation_env - atf_add_test_case isolation_home - atf_add_test_case isolation_stdin - atf_add_test_case isolation_umask - atf_add_test_case cleanup_pass - atf_add_test_case cleanup_fail - atf_add_test_case cleanup_skip - atf_add_test_case cleanup_curdir - atf_add_test_case cleanup_signal - atf_add_test_case cleanup_mount - atf_add_test_case cleanup_symlink - atf_add_test_case require_arch - atf_add_test_case require_config - atf_add_test_case require_files - atf_add_test_case require_machine - atf_add_test_case require_progs - atf_add_test_case require_user_root - atf_add_test_case require_user_unprivileged - atf_add_test_case require_user_bad - atf_add_test_case timeout - atf_add_test_case timeout_forkexit - atf_add_test_case ignore_deprecated_use_fs -} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/tools/atf-version.1 b/unit/atf-src/tools/atf-version.1 deleted file mode 100644 index 136f13cd46..0000000000 --- a/unit/atf-src/tools/atf-version.1 +++ /dev/null @@ -1,56 +0,0 @@ -.\" -.\" Automated Testing Framework (atf) -.\" -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd September 16, 2007 -.Dt ATF-VERSION 1 -.Os -.Sh NAME -.Nm atf-version -.Nd shows information about the installed ATF version -.Sh SYNOPSIS -.Nm -.Nm -.Fl h -.Sh DESCRIPTION -.Nm -is a utility that prints information about the version of ATF currently -installed in the system. -.Pp -In the first synopsis form, -.Nm -shows the release version of the ATF package installed in the system (the -installation that corresponds to the instance of -.Nm -being executed) and also shows information related to the repository -revision used to build that package. -.Pp -In the second synopsis form, -.Nm -will print information about all supported options and their purpose. -.Sh SEE ALSO -.Xr atf 7 diff --git a/unit/atf-src/tools/atf-version.cpp b/unit/atf-src/tools/atf-version.cpp deleted file mode 100644 index b93f33c260..0000000000 --- a/unit/atf-src/tools/atf-version.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include -#include - -#include "application.hpp" -#include "revision.h" -#include "ui.hpp" - -class atf_version : public tools::application::app { - static const char* m_description; - -public: - atf_version(void); - - int main(void); -}; - -const char* atf_version::m_description = - "atf-version is a tool that shows information about the currently " - "installed version of ATF."; - -atf_version::atf_version(void) : - app(m_description, "atf-version(1)", "atf(7)") -{ -} - -int -atf_version::main(void) -{ - using tools::ui::format_text; - using tools::ui::format_text_with_tag; - - std::cout << PACKAGE_STRING " (" PACKAGE_TARNAME "-" PACKAGE_VERSION - ")\n" PACKAGE_COPYRIGHT "\n\n"; - -#if defined(PACKAGE_REVISION_TYPE_DIST) - std::cout << format_text("Built from a distribution file; no revision " - "information available.") << "\n"; -#elif defined(PACKAGE_REVISION_TYPE_GIT) - std::cout << format_text_with_tag(PACKAGE_REVISION_BRANCH, "Branch: ", - false) << "\n"; - std::cout << format_text_with_tag(PACKAGE_REVISION_BASE -# if PACKAGE_REVISION_MODIFIED - " (locally modified)" -# endif - " " PACKAGE_REVISION_DATE, - "Base revision: ", false) << "\n"; -#else -# error "Unknown PACKAGE_REVISION_TYPE value" -#endif - - return EXIT_SUCCESS; -} - -int -main(int argc, char* const* argv) -{ - return atf_version().run(argc, argv); -} diff --git a/unit/atf-src/tools/atf.7.in b/unit/atf-src/tools/atf.7.in deleted file mode 100644 index b11054cc47..0000000000 --- a/unit/atf-src/tools/atf.7.in +++ /dev/null @@ -1,192 +0,0 @@ -.\" -.\" Automated Testing Framework (atf) -.\" -.\" Copyright (c) 2007 The NetBSD Foundation, Inc. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd August 28, 2010 -.Dt ATF 7 -.Os -.Sh NAME -.Nm ATF -.Nd introduction to the Automated Testing Framework -.Sh DESCRIPTION -.Em IMPORTANT: If you are here because you want to know how to run the tests in -.Pa __TESTSDIR__ , -.Em you most likely want to read the -.Xr tests 7 -.Em manual page instead. -.Pp -The Automated Testing Framework -.Pf ( Nm ) -is a collection of libraries and utilities designed to ease unattended -application testing in the hands of developers and end users of a specific -piece of software. -.Pp -As regards developers, -.Nm -provides the necessary means to easily create -test suites composed of multiple test programs, which in turn are a -collection of test cases. -It also attempts to simplify the debugging of problems when these test -cases detect an error by providing as much information as possible -about the failure. -.Pp -As regards users, it simplifies the process of running the test suites and, -in special, encourages end users to run them often: they do not need to -have source trees around nor any other development tools installed to be -able to certify that a given piece of software works on their machine as -advertised. -.Pp -If your operating systems distributes -.Nm , -it is possible that it provides an introductory -.Xr tests 7 -manual page. -You are encouraged to read it now. -.Ss License -.Nm -is distributed under the terms of the TNF License, a 2-clause BSD license. -For more details please see: -.Bd -literal -offset indent -.Pa __DOCDIR__/COPYING -.Ed -.Ss Components -.Nm -is a highly modular piece of software. -It provides a couple of libraries to ease the implementation of test -programs: one for the C and C++ languages and another one for shell -scripts. -It also includes multiple small utilities that follow the principle of -doing a single thing but doing it right. -This section outlines which these components are. -.Pp -Public utilities: -.Bl -tag -width atfXtestXprogramXXXXX -.It Xr atf-check 1 -Executes a command and checks that its exit code, its standard output -and its standard error output match pre-specified expected values. -.It Xr atf-config 1 -Queries static configuration information. -.It Xr atf-report 1 -Converts the output of -.Nm atf-run -to user-friendly and/or machine-parseable reports. -.It Xr atf-run 1 -Automates the execution of a series of test programs and collects their -results in a unified report. -.It Xr atf-sh 1 -Shell interpreter for shell-based test programs. -.El -.Pp -Programming interfaces: -.Bl -tag -width atfXtestXprogramXXXXX -.It Xr atf-c-api 3 -C programming interface for test programs. -.It Xr atf-c++-api 3 -C++ programming interface for test programs. -.It Xr atf-sh-api 3 -POSIX shell programming interface for test programs. -.El -.Pp -Other: -.Bl -tag -width atfXtestXprogramXXXXX -.It Xr atf-formats 5 -Description of the machine-parseable data formats used by the tools. -.It Xr atf-test-case 4 -Generic description of test cases, independent of the language they are -implemented in. -.It Xr atf-test-program 1 -Common interface provided by the test programs written using the -.Nm -libraries. -.El -.Ss Recommended reading order -For end users wishing to run tests: -.Bl -enum -compact -.It -.Xr tests 7 -(only if provided by your operating system). -.It -.Xr atf-test-program 1 -.It -.Xr atf-run 1 -.It -.Xr atf-report 1 -.It -.Xr atf-config 1 -.El -.Pp -For developers wanting to write their own tests: -.Bl -enum -compact -.It -Everything recommended to users. -.It -.Xr atf-test-case 4 -.It -.Xr atf-c-api 3 -.It -.Xr atf-c++-api 3 -.It -.Xr atf-sh-api 3 -.It -.Xr atf-sh 1 -.It -.Xr atf-check 1 -.El -.Pp -For those interested in -.Nm -internals: -.Bl -enum -compact -.It -Everything recommended to users. -.It -Everything recommended to developers. -.It -.Xr atf-formats 5 -.El -.Sh SEE ALSO -.Xr tests 7 -.Sh HISTORY -.Nm -started as a Google Summer of Code 2007 project mentored by The NetBSD -Foundation. -Its original goal was to provide a testing framework for The NetBSD -Operating System, but it grew as an independent project because the -framework itself did not need to be tied to a specific operating system. -.Pp -For more details on this subject, please see: -.Bd -literal -offset indent -.Pa __DOCDIR__/NEWS -.Pa __DOCDIR__/ROADMAP -.Ed -.Sh AUTHORS -For more details on the people that made -.Nm -possible, please see: -.Bd -literal -offset indent -.Pa __DOCDIR__/AUTHORS -.Ed diff --git a/unit/atf-src/tools/atffile.cpp b/unit/atf-src/tools/atffile.cpp deleted file mode 100644 index b04c59ed3b..0000000000 --- a/unit/atf-src/tools/atffile.cpp +++ /dev/null @@ -1,348 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include -#include - -#include "atffile.hpp" -#include "defs.hpp" -#include "exceptions.hpp" -#include "expand.hpp" -#include "parser.hpp" - -namespace impl = tools; -namespace detail = tools::detail; - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -} // anonymous namespace - -// ------------------------------------------------------------------------ -// The "atf_atffile" auxiliary parser. -// ------------------------------------------------------------------------ - -namespace atf_atffile { - -static const tools::parser::token_type eof_type = 0; -static const tools::parser::token_type nl_type = 1; -static const tools::parser::token_type text_type = 2; -static const tools::parser::token_type colon_type = 3; -static const tools::parser::token_type conf_type = 4; -static const tools::parser::token_type dblquote_type = 5; -static const tools::parser::token_type equal_type = 6; -static const tools::parser::token_type hash_type = 7; -static const tools::parser::token_type prop_type = 8; -static const tools::parser::token_type tp_type = 9; -static const tools::parser::token_type tp_glob_type = 10; - -class tokenizer : public tools::parser::tokenizer< std::istream > { -public: - tokenizer(std::istream& is, size_t curline) : - tools::parser::tokenizer< std::istream > - (is, true, eof_type, nl_type, text_type, curline) - { - add_delim(':', colon_type); - add_delim('=', equal_type); - add_delim('#', hash_type); - add_quote('"', dblquote_type); - add_keyword("conf", conf_type); - add_keyword("prop", prop_type); - add_keyword("tp", tp_type); - add_keyword("tp-glob", tp_glob_type); - } -}; - -} // namespace atf_atffile - -// ------------------------------------------------------------------------ -// The "atf_atffile_reader" class. -// ------------------------------------------------------------------------ - -detail::atf_atffile_reader::atf_atffile_reader(std::istream& is) : - m_is(is) -{ -} - -detail::atf_atffile_reader::~atf_atffile_reader(void) -{ -} - -void -detail::atf_atffile_reader::got_conf( - const std::string& name ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& val ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -detail::atf_atffile_reader::got_prop( - const std::string& name ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& val ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -detail::atf_atffile_reader::got_tp( - const std::string& name ATF_DEFS_ATTRIBUTE_UNUSED, - bool isglob ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -detail::atf_atffile_reader::got_eof(void) -{ -} - -void -detail::atf_atffile_reader::read(void) -{ - using tools::parser::parse_error; - using namespace atf_atffile; - - std::pair< size_t, tools::parser::headers_map > hml = - tools::parser::read_headers(m_is, 1); - tools::parser::validate_content_type(hml.second, - "application/X-atf-atffile", 1); - - tokenizer tkz(m_is, hml.first); - tools::parser::parser< tokenizer > p(tkz); - - for (;;) { - try { - tools::parser::token t = - p.expect(conf_type, hash_type, prop_type, tp_type, - tp_glob_type, nl_type, eof_type, - "conf, #, prop, tp, tp-glob, a new line or eof"); - if (t.type() == eof_type) - break; - - if (t.type() == conf_type) { - t = p.expect(colon_type, "`:'"); - - t = p.expect(text_type, "variable name"); - std::string var = t.text(); - - t = p.expect(equal_type, "equal sign"); - - t = p.expect(text_type, "word or quoted string"); - ATF_PARSER_CALLBACK(p, got_conf(var, t.text())); - } else if (t.type() == hash_type) { - (void)p.rest_of_line(); - } else if (t.type() == prop_type) { - t = p.expect(colon_type, "`:'"); - - t = p.expect(text_type, "property name"); - std::string name = t.text(); - - t = p.expect(equal_type, "equale sign"); - - t = p.expect(text_type, "word or quoted string"); - ATF_PARSER_CALLBACK(p, got_prop(name, t.text())); - } else if (t.type() == tp_type) { - t = p.expect(colon_type, "`:'"); - - t = p.expect(text_type, "word or quoted string"); - ATF_PARSER_CALLBACK(p, got_tp(t.text(), false)); - } else if (t.type() == tp_glob_type) { - t = p.expect(colon_type, "`:'"); - - t = p.expect(text_type, "word or quoted string"); - ATF_PARSER_CALLBACK(p, got_tp(t.text(), true)); - } else if (t.type() == nl_type) { - continue; - } else - std::abort(); - - t = p.expect(nl_type, hash_type, eof_type, - "new line or comment"); - if (t.type() == hash_type) { - (void)p.rest_of_line(); - t = p.next(); - } else if (t.type() == eof_type) - break; - } catch (const parse_error& pe) { - p.add_error(pe); - p.reset(nl_type); - } - } - - ATF_PARSER_CALLBACK(p, got_eof()); -} - -// ------------------------------------------------------------------------ -// The "reader" helper class. -// ------------------------------------------------------------------------ - -class reader : public detail::atf_atffile_reader { - const tools::fs::directory& m_dir; - vars_map m_conf, m_props; - std::vector< std::string > m_tps; - - void - got_tp(const std::string& name, bool isglob) - { - if (isglob) { - std::vector< std::string > ms = - tools::expand::expand_glob(name, m_dir.names()); - // Cannot use m_tps.insert(iterator, begin, end) here because it - // does not work under Solaris. - for (std::vector< std::string >::const_iterator iter = ms.begin(); - iter != ms.end(); iter++) - m_tps.push_back(*iter); - } else { - if (m_dir.find(name) == m_dir.end()) - throw tools::not_found_error< tools::fs::path > - ("Cannot locate the " + name + " file", - tools::fs::path(name)); - m_tps.push_back(name); - } - } - - void - got_prop(const std::string& name, const std::string& val) - { - m_props[name] = val; - } - - void - got_conf(const std::string& var, const std::string& val) - { - m_conf[var] = val; - } - -public: - reader(std::istream& is, const tools::fs::directory& dir) : - detail::atf_atffile_reader(is), - m_dir(dir) - { - } - - const vars_map& - conf(void) - const - { - return m_conf; - } - - const vars_map& - props(void) - const - { - return m_props; - } - - const std::vector< std::string >& - tps(void) - const - { - return m_tps; - } -}; - -// ------------------------------------------------------------------------ -// The "atffile" class. -// ------------------------------------------------------------------------ - -impl::atffile::atffile(const vars_map& config_vars, - const std::vector< std::string >& test_program_names, - const vars_map& properties) : - m_conf(config_vars), - m_tps(test_program_names), - m_props(properties) -{ - assert(properties.find("test-suite") != properties.end()); -} - -const std::vector< std::string >& -impl::atffile::tps(void) - const -{ - return m_tps; -} - -const vars_map& -impl::atffile::conf(void) - const -{ - return m_conf; -} - -const vars_map& -impl::atffile::props(void) - const -{ - return m_props; -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -// XXX Glob expansion and file existance checks certainly do not belong in -// a *parser*. This needs to be taken out... -impl::atffile -impl::read_atffile(const tools::fs::path& filename) -{ - // Scan the directory where the atffile lives in to gather a list of - // all possible test programs in it. - tools::fs::directory dir(filename.branch_path()); - dir.erase(filename.leaf_name()); - tools::fs::directory::iterator iter = dir.begin(); - while (iter != dir.end()) { - const std::string& name = (*iter).first; - const tools::fs::file_info& fi = (*iter).second; - - // Discard hidden files and non-executable ones so that they are - // not candidates for glob matching. - if (name[0] == '.' || (!fi.is_owner_executable() && - !fi.is_group_executable())) - dir.erase(iter++); - else - iter++; - } - - // Parse the atffile. - std::ifstream is(filename.c_str()); - if (!is) - throw tools::not_found_error< tools::fs::path > - ("Cannot open Atffile", filename); - reader r(is, dir); - r.read(); - is.close(); - - // Sanity checks. - if (r.props().find("test-suite") == r.props().end()) - throw tools::not_found_error< std::string > - ("Undefined property `test-suite'", "test-suite"); - - return atffile(r.conf(), r.tps(), r.props()); -} diff --git a/unit/atf-src/tools/atffile.hpp b/unit/atf-src/tools/atffile.hpp deleted file mode 100644 index f326b241d7..0000000000 --- a/unit/atf-src/tools/atffile.hpp +++ /dev/null @@ -1,92 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_ATFFILE_HPP) -#define TOOLS_ATFFILE_HPP - -#include -#include -#include - -#include "fs.hpp" - -namespace tools { - -// ------------------------------------------------------------------------ -// The "atf_atffile_reader" class. -// ------------------------------------------------------------------------ - -namespace detail { - -class atf_atffile_reader { - std::istream& m_is; - -protected: - virtual void got_conf(const std::string&, const std::string &); - virtual void got_prop(const std::string&, const std::string &); - virtual void got_tp(const std::string&, bool); - virtual void got_eof(void); - -public: - atf_atffile_reader(std::istream&); - virtual ~atf_atffile_reader(void); - - void read(void); -}; - -} // namespace detail - -// ------------------------------------------------------------------------ -// The "atffile" class. -// ------------------------------------------------------------------------ - -class atffile { - std::map< std::string, std::string > m_conf; - std::vector< std::string > m_tps; - std::map< std::string, std::string > m_props; - -public: - atffile(const std::map< std::string, std::string >&, - const std::vector< std::string >&, - const std::map< std::string, std::string >&); - - const std::map< std::string, std::string >& conf(void) const; - const std::vector< std::string >& tps(void) const; - const std::map< std::string, std::string >& props(void) const; -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -atffile read_atffile(const tools::fs::path&); - -} // namespace tools - -#endif // !defined(TOOLS_ATFFILE_HPP) diff --git a/unit/atf-src/tools/atffile_test.cpp b/unit/atf-src/tools/atffile_test.cpp deleted file mode 100644 index cb358dfa8b..0000000000 --- a/unit/atf-src/tools/atffile_test.cpp +++ /dev/null @@ -1,636 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -} - -#include -#include -#include - -#include - -#include "atffile.hpp" -#include "exceptions.hpp" -#include "test_helpers.hpp" - -namespace detail = tools::detail; - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -static -std::auto_ptr< std::ofstream > -new_atffile(void) -{ - std::auto_ptr< std::ofstream > os(new std::ofstream("Atffile")); - ATF_REQUIRE(*os); - - (*os) << "Content-Type: application/X-atf-atffile; version=\"1\"\n\n"; - return os; -} - -static -void -touch_exec(const char* name) -{ - std::ofstream os(name); - ATF_REQUIRE(os); - os.close(); - ATF_REQUIRE(::chmod(name, S_IRWXU) != -1); -} - -static inline -bool -is_in(const std::string& value, const std::vector< std::string >& v) -{ - return std::find(v.begin(), v.end(), value) != v.end(); -} - -} // anonymous namespace - -// ------------------------------------------------------------------------ -// Tests cases for the "atffile" parser. -// ------------------------------------------------------------------------ - -class atffile_reader : protected detail::atf_atffile_reader { - void - got_conf(const std::string& name, const std::string& val) - { - m_calls.push_back("got_conf(" + name + ", " + val + ")"); - } - - void - got_prop(const std::string& name, const std::string& val) - { - m_calls.push_back("got_prop(" + name + ", " + val + ")"); - } - - void - got_tp(const std::string& name, bool isglob) - { - m_calls.push_back("got_tp(" + name + ", " + (isglob ? "true" : "false") - + ")"); - } - - void - got_eof(void) - { - m_calls.push_back("got_eof()"); - } - -public: - atffile_reader(std::istream& is) : - detail::atf_atffile_reader(is) - { - } - - void - read(void) - { - atf_atffile_reader::read(); - } - - std::vector< std::string > m_calls; -}; - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_1); -ATF_TEST_CASE_BODY(atffile_1) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - ; - - const char* exp_calls[] = { - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_2); -ATF_TEST_CASE_BODY(atffile_2) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "# This is a comment on a line of its own.\n" - "# And this is another one.\n" - "\n" - " # Another after some whitespace.\n" - "\n" - "# The last one after an empty line.\n" - ; - - const char* exp_calls[] = { - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_3); -ATF_TEST_CASE_BODY(atffile_3) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "conf: var1=value1\n" - "conf: var2 = value2\n" - "conf: var3 = value3\n" - "conf: var4 = value4\n" - "\n" - "conf:var5=value5\n" - " conf:var6=value6\n" - "\n" - "conf: var7 = \"This is a long value.\"\n" - "conf: var8 = \"Single-word\"\n" - "conf: var9 = \" Single-word \"\n" - "conf: var10 = Single-word\n" - ; - - const char* exp_calls[] = { - "got_conf(var1, value1)", - "got_conf(var2, value2)", - "got_conf(var3, value3)", - "got_conf(var4, value4)", - "got_conf(var5, value5)", - "got_conf(var6, value6)", - "got_conf(var7, This is a long value.)", - "got_conf(var8, Single-word)", - "got_conf(var9, Single-word )", - "got_conf(var10, Single-word)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_4); -ATF_TEST_CASE_BODY(atffile_4) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "prop: var1=value1\n" - "prop: var2 = value2\n" - "prop: var3 = value3\n" - "prop: var4 = value4\n" - "\n" - "prop:var5=value5\n" - " prop:var6=value6\n" - "\n" - "prop: var7 = \"This is a long value.\"\n" - "prop: var8 = \"Single-word\"\n" - "prop: var9 = \" Single-word \"\n" - "prop: var10 = Single-word\n" - ; - - const char* exp_calls[] = { - "got_prop(var1, value1)", - "got_prop(var2, value2)", - "got_prop(var3, value3)", - "got_prop(var4, value4)", - "got_prop(var5, value5)", - "got_prop(var6, value6)", - "got_prop(var7, This is a long value.)", - "got_prop(var8, Single-word)", - "got_prop(var9, Single-word )", - "got_prop(var10, Single-word)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_5); -ATF_TEST_CASE_BODY(atffile_5) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "tp:foo\n" - "tp: foo\n" - "tp: foo\n" - "tp: foo\n" - "tp: foo\n" - "tp: \"name with spaces\"\n" - "tp: \"single-word\"\n" - "tp: single-word\n" - "\n" - "tp-glob:foo*?bar\n" - "tp-glob: foo*?bar\n" - "tp-glob: foo*?bar\n" - "tp-glob: foo*?bar\n" - "tp-glob: foo*?bar\n" - "tp-glob: \"glob * with ? spaces\"\n" - "tp-glob: \"single-*-word\"\n" - "tp-glob: single-*-word\n" - ; - - const char* exp_calls[] = { - "got_tp(foo, false)", - "got_tp(foo, false)", - "got_tp(foo, false)", - "got_tp(foo, false)", - "got_tp(foo, false)", - "got_tp(name with spaces, false)", - "got_tp(single-word, false)", - "got_tp(single-word, false)", - "got_tp(foo*?bar, true)", - "got_tp(foo*?bar, true)", - "got_tp(foo*?bar, true)", - "got_tp(foo*?bar, true)", - "got_tp(foo*?bar, true)", - "got_tp(glob * with ? spaces, true)", - "got_tp(single-*-word, true)", - "got_tp(single-*-word, true)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_6); -ATF_TEST_CASE_BODY(atffile_6) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "prop: foo = bar # A comment.\n" - "conf: foo = bar # A comment.\n" - "tp: foo # A comment.\n" - "tp-glob: foo # A comment.\n" - ; - - const char* exp_calls[] = { - "got_prop(foo, bar)", - "got_conf(foo, bar)", - "got_tp(foo, false)", - "got_tp(foo, true)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_50); -ATF_TEST_CASE_BODY(atffile_50) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "foo\n" - ; - - const char* exp_calls[] = { - NULL - }; - - // NO_CHECK_STYLE_BEGIN - const char* exp_errors[] = { - "3: Unexpected token `foo'; expected conf, #, prop, tp, tp-glob, a new line or eof", - NULL - }; - // NO_CHECK_STYLE_END - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_51); -ATF_TEST_CASE_BODY(atffile_51) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "foo bar\n" - "baz\n" - ; - - const char* exp_calls[] = { - NULL - }; - - // NO_CHECK_STYLE_BEGIN - const char* exp_errors[] = { - "3: Unexpected token `foo'; expected conf, #, prop, tp, tp-glob, a new line or eof", - "4: Unexpected token `baz'; expected conf, #, prop, tp, tp-glob, a new line or eof", - NULL - }; - // NO_CHECK_STYLE_END - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_52); -ATF_TEST_CASE_BODY(atffile_52) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "conf\n" - "conf:\n" - "conf: foo =\n" - "conf: bar = # A comment.\n" - "\n" - "prop\n" - "prop:\n" - "prop: foo =\n" - "prop: bar = # A comment.\n" - "\n" - "tp\n" - "tp:\n" - "tp: # A comment.\n" - "\n" - "tp-glob\n" - "tp-glob:\n" - "tp-glob: # A comment.\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected `:'", - "4: Unexpected token `<>'; expected variable name", - "5: Unexpected token `<>'; expected word or quoted string", - "6: Unexpected token `#'; expected word or quoted string", - "8: Unexpected token `<>'; expected `:'", - "9: Unexpected token `<>'; expected property name", - "10: Unexpected token `<>'; expected word or quoted string", - "11: Unexpected token `#'; expected word or quoted string", - "13: Unexpected token `<>'; expected `:'", - "14: Unexpected token `<>'; expected word or quoted string", - "15: Unexpected token `#'; expected word or quoted string", - "17: Unexpected token `<>'; expected `:'", - "18: Unexpected token `<>'; expected word or quoted string", - "19: Unexpected token `#'; expected word or quoted string", - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_53); -ATF_TEST_CASE_BODY(atffile_53) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "prop: foo = \"Correct value\" # With comment.\n" - "\n" - "prop: bar = # A comment.\n" - "\n" - "prop: baz = \"Last variable\"\n" - "\n" - "# End of file.\n" - ; - - const char* exp_calls[] = { - "got_prop(foo, Correct value)", - NULL - }; - - const char* exp_errors[] = { - "5: Unexpected token `#'; expected word or quoted string", - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(atffile_54); -ATF_TEST_CASE_BODY(atffile_54) -{ - const char* input = - "Content-Type: application/X-atf-atffile; version=\"1\"\n" - "\n" - "prop: foo = \"\n" - "prop: bar = \"text\n" - "prop: baz = \"te\\\"xt\n" - "prop: last = \"\\\"\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Missing double quotes before end of line", - "4: Missing double quotes before end of line", - "5: Missing double quotes before end of line", - "6: Missing double quotes before end of line", - NULL - }; - - do_parser_test< atffile_reader >(input, exp_calls, exp_errors); -} - -// ------------------------------------------------------------------------ -// Tests cases for the "atffile" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(atffile_getters); -ATF_TEST_CASE_HEAD(atffile_getters) {} -ATF_TEST_CASE_BODY(atffile_getters) { - vars_map config_vars; - config_vars["config-var-1"] = "value 1"; - - std::vector< std::string > test_program_names; - test_program_names.push_back("test-program-1"); - - vars_map properties; - properties["test-suite"] = "a test name"; - - const tools::atffile atffile(config_vars, test_program_names, properties); - ATF_REQUIRE(config_vars == atffile.conf()); - ATF_REQUIRE(test_program_names == atffile.tps()); - ATF_REQUIRE(properties == atffile.props()); -} - -// ------------------------------------------------------------------------ -// Tests cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE_WITHOUT_HEAD(read_ok_simple); -ATF_TEST_CASE_BODY(read_ok_simple) { - std::auto_ptr< std::ofstream > os = new_atffile(); - (*os) << "prop: test-suite = foo\n"; - (*os) << "tp: tp-1\n"; - (*os) << "conf: var1 = value1\n"; - (*os) << "tp: tp-2\n"; - (*os) << "tp: tp-3\n"; - (*os) << "prop: prop1 = propvalue1\n"; - (*os) << "conf: var2 = value2\n"; - (*os).close(); - - touch_exec("tp-1"); - touch_exec("tp-2"); - touch_exec("tp-3"); - - const tools::atffile atffile = tools::read_atffile( - tools::fs::path("Atffile")); - ATF_REQUIRE_EQ(2, atffile.conf().size()); - ATF_REQUIRE_EQ("value1", atffile.conf().find("var1")->second); - ATF_REQUIRE_EQ("value2", atffile.conf().find("var2")->second); - ATF_REQUIRE_EQ(3, atffile.tps().size()); - ATF_REQUIRE(is_in("tp-1", atffile.tps())); - ATF_REQUIRE(is_in("tp-2", atffile.tps())); - ATF_REQUIRE(is_in("tp-3", atffile.tps())); - ATF_REQUIRE_EQ(2, atffile.props().size()); - ATF_REQUIRE_EQ("foo", atffile.props().find("test-suite")->second); - ATF_REQUIRE_EQ("propvalue1", atffile.props().find("prop1")->second); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_ok_some_globs); -ATF_TEST_CASE_BODY(read_ok_some_globs) { - std::auto_ptr< std::ofstream > os = new_atffile(); - (*os) << "prop: test-suite = foo\n"; - (*os) << "tp: foo\n"; - (*os) << "tp-glob: *K*\n"; - (*os) << "tp: bar\n"; - (*os) << "tp-glob: t_*\n"; - (*os).close(); - - touch_exec("foo"); - touch_exec("bar"); - touch_exec("aK"); - touch_exec("KKKKK"); - touch_exec("t_hello"); - touch_exec("zzzt_hello"); - - const tools::atffile atffile = tools::read_atffile( - tools::fs::path("Atffile")); - ATF_REQUIRE_EQ(5, atffile.tps().size()); - ATF_REQUIRE(is_in("foo", atffile.tps())); - ATF_REQUIRE(is_in("bar", atffile.tps())); - ATF_REQUIRE(is_in("aK", atffile.tps())); - ATF_REQUIRE(is_in("KKKKK", atffile.tps())); - ATF_REQUIRE(is_in("t_hello", atffile.tps())); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_missing_test_suite); -ATF_TEST_CASE_BODY(read_missing_test_suite) { - std::auto_ptr< std::ofstream > os = new_atffile(); - (*os).close(); - - try { - (void)tools::read_atffile(tools::fs::path("Atffile")); - ATF_FAIL("Missing property 'test-suite' did not raise an error"); - } catch (const tools::not_found_error< std::string >& e) { - ATF_REQUIRE_EQ("test-suite", e.get_value()); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_missing_test_program); -ATF_TEST_CASE_BODY(read_missing_test_program) { - std::auto_ptr< std::ofstream > os = new_atffile(); - (*os) << "tp: foo\n"; - (*os) << "tp: bar\n"; - (*os) << "tp: baz\n"; - (*os).close(); - - touch_exec("foo"); - touch_exec("baz"); - - try { - (void)tools::read_atffile(tools::fs::path("Atffile")); - ATF_FAIL("Missing file 'bar' did not raise an error"); - } catch (const tools::not_found_error< tools::fs::path >& e) { - ATF_REQUIRE_EQ("bar", e.get_value().str()); - } -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the parser class. - ATF_ADD_TEST_CASE(tcs, atffile_1); - ATF_ADD_TEST_CASE(tcs, atffile_2); - ATF_ADD_TEST_CASE(tcs, atffile_3); - ATF_ADD_TEST_CASE(tcs, atffile_4); - ATF_ADD_TEST_CASE(tcs, atffile_5); - ATF_ADD_TEST_CASE(tcs, atffile_6); - ATF_ADD_TEST_CASE(tcs, atffile_50); - ATF_ADD_TEST_CASE(tcs, atffile_51); - ATF_ADD_TEST_CASE(tcs, atffile_52); - ATF_ADD_TEST_CASE(tcs, atffile_53); - ATF_ADD_TEST_CASE(tcs, atffile_54); - - // Add the test cases for the atffile class. - ATF_ADD_TEST_CASE(tcs, atffile_getters); - - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, read_ok_simple); - ATF_ADD_TEST_CASE(tcs, read_ok_some_globs); - ATF_ADD_TEST_CASE(tcs, read_missing_test_suite); - ATF_ADD_TEST_CASE(tcs, read_missing_test_program); -} diff --git a/unit/atf-src/tools/auto_array.hpp b/unit/atf-src/tools/auto_array.hpp deleted file mode 100644 index 773f875524..0000000000 --- a/unit/atf-src/tools/auto_array.hpp +++ /dev/null @@ -1,179 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_AUTO_ARRAY_HPP) -#define TOOLS_AUTO_ARRAY_HPP - -#include - -namespace tools { - -// ------------------------------------------------------------------------ -// The "auto_array" class. -// ------------------------------------------------------------------------ - -template< class T > -struct auto_array_ref { - T* m_ptr; - - explicit auto_array_ref(T*); -}; - -template< class T > -auto_array_ref< T >::auto_array_ref(T* ptr) : - m_ptr(ptr) -{ -} - -template< class T > -class auto_array { - T* m_ptr; - -public: - auto_array(T* = NULL) throw(); - auto_array(auto_array< T >&) throw(); - auto_array(auto_array_ref< T >) throw(); - ~auto_array(void) throw(); - - T* get(void) throw(); - const T* get(void) const throw(); - T* release(void) throw(); - void reset(T* = NULL) throw(); - - auto_array< T >& operator=(auto_array< T >&) throw(); - auto_array< T >& operator=(auto_array_ref< T >) throw(); - - T& operator[](int) throw(); - operator auto_array_ref< T >(void) throw(); -}; - -template< class T > -auto_array< T >::auto_array(T* ptr) - throw() : - m_ptr(ptr) -{ -} - -template< class T > -auto_array< T >::auto_array(auto_array< T >& ptr) - throw() : - m_ptr(ptr.release()) -{ -} - -template< class T > -auto_array< T >::auto_array(auto_array_ref< T > ref) - throw() : - m_ptr(ref.m_ptr) -{ -} - -template< class T > -auto_array< T >::~auto_array(void) - throw() -{ - if (m_ptr != NULL) - delete [] m_ptr; -} - -template< class T > -T* -auto_array< T >::get(void) - throw() -{ - return m_ptr; -} - -template< class T > -const T* -auto_array< T >::get(void) - const throw() -{ - return m_ptr; -} - -template< class T > -T* -auto_array< T >::release(void) - throw() -{ - T* ptr = m_ptr; - m_ptr = NULL; - return ptr; -} - -template< class T > -void -auto_array< T >::reset(T* ptr) - throw() -{ - if (m_ptr != NULL) - delete [] m_ptr; - m_ptr = ptr; -} - -template< class T > -auto_array< T >& -auto_array< T >::operator=(auto_array< T >& ptr) - throw() -{ - reset(ptr.release()); - return *this; -} - -template< class T > -auto_array< T >& -auto_array< T >::operator=(auto_array_ref< T > ref) - throw() -{ - if (m_ptr != ref.m_ptr) { - delete [] m_ptr; - m_ptr = ref.m_ptr; - } - return *this; -} - -template< class T > -T& -auto_array< T >::operator[](int pos) - throw() -{ - return m_ptr[pos]; -} - -template< class T > -auto_array< T >::operator auto_array_ref< T >(void) - throw() -{ - return auto_array_ref< T >(release()); -} - -} // namespace tools - -#endif // !defined(TOOLS_AUTO_ARRAY_HPP) diff --git a/unit/atf-src/tools/auto_array_test.cpp b/unit/atf-src/tools/auto_array_test.cpp deleted file mode 100644 index 56bbae5360..0000000000 --- a/unit/atf-src/tools/auto_array_test.cpp +++ /dev/null @@ -1,303 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -} - -#include - -#include - -#include "auto_array.hpp" -#include "defs.hpp" - -// ------------------------------------------------------------------------ -// Tests for the "auto_array" class. -// ------------------------------------------------------------------------ - -class test_array { -public: - int m_value; - - static ssize_t m_nblocks; - - static - tools::auto_array< test_array > - do_copy(tools::auto_array< test_array >& ta) - { - return tools::auto_array< test_array >(ta); - } - - void* operator new(size_t size ATF_DEFS_ATTRIBUTE_UNUSED) - { - ATF_FAIL("New called but should have been new[]"); - return new int(5); - } - - void* operator new[](size_t size) - { - m_nblocks++; - void* mem = ::operator new(size); - std::cout << "Allocated 'test_array' object " << mem << "\n"; - return mem; - } - - void operator delete(void* mem ATF_DEFS_ATTRIBUTE_UNUSED) - { - ATF_FAIL("Delete called but should have been delete[]"); - } - - void operator delete[](void* mem) - { - std::cout << "Releasing 'test_array' object " << mem << "\n"; - if (m_nblocks == 0) - ATF_FAIL("Unbalanced delete[]"); - m_nblocks--; - ::operator delete(mem); - } -}; - -ssize_t test_array::m_nblocks = 0; - -ATF_TEST_CASE(auto_array_scope); -ATF_TEST_CASE_HEAD(auto_array_scope) -{ - set_md_var("descr", "Tests the automatic scope handling in the " - "auto_array smart pointer class"); -} -ATF_TEST_CASE_BODY(auto_array_scope) -{ - using tools::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_copy); -ATF_TEST_CASE_HEAD(auto_array_copy) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' copy " - "constructor"); -} -ATF_TEST_CASE_BODY(auto_array_copy) -{ - using tools::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2(t1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_copy_ref); -ATF_TEST_CASE_HEAD(auto_array_copy_ref) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' copy " - "constructor through the auxiliary auto_array_ref object"); -} -ATF_TEST_CASE_BODY(auto_array_copy_ref) -{ - using tools::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2 = test_array::do_copy(t1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_get); -ATF_TEST_CASE_HEAD(auto_array_get) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' get " - "method"); -} -ATF_TEST_CASE_BODY(auto_array_get) -{ - using tools::auto_array; - - test_array* ta = new test_array[10]; - auto_array< test_array > t(ta); - ATF_REQUIRE_EQ(t.get(), ta); -} - -ATF_TEST_CASE(auto_array_release); -ATF_TEST_CASE_HEAD(auto_array_release) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' release " - "method"); -} -ATF_TEST_CASE_BODY(auto_array_release) -{ - using tools::auto_array; - - test_array* ta1 = new test_array[10]; - { - auto_array< test_array > t(ta1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - test_array* ta2 = t.release(); - ATF_REQUIRE_EQ(ta2, ta1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - delete [] ta1; -} - -ATF_TEST_CASE(auto_array_reset); -ATF_TEST_CASE_HEAD(auto_array_reset) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' reset " - "method"); -} -ATF_TEST_CASE_BODY(auto_array_reset) -{ - using tools::auto_array; - - test_array* ta1 = new test_array[10]; - test_array* ta2 = new test_array[10]; - ATF_REQUIRE_EQ(test_array::m_nblocks, 2); - - { - auto_array< test_array > t(ta1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 2); - t.reset(ta2); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - t.reset(); - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_assign); -ATF_TEST_CASE_HEAD(auto_array_assign) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' " - "assignment operator"); -} -ATF_TEST_CASE_BODY(auto_array_assign) -{ - using tools::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2; - t2 = t1; - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_assign_ref); -ATF_TEST_CASE_HEAD(auto_array_assign_ref) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' " - "assignment operator through the auxiliary auto_array_ref " - "object"); -} -ATF_TEST_CASE_BODY(auto_array_assign_ref) -{ - using tools::auto_array; - - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - { - auto_array< test_array > t1(new test_array[10]); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - - { - auto_array< test_array > t2; - t2 = test_array::do_copy(t1); - ATF_REQUIRE_EQ(test_array::m_nblocks, 1); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); - } - ATF_REQUIRE_EQ(test_array::m_nblocks, 0); -} - -ATF_TEST_CASE(auto_array_access); -ATF_TEST_CASE_HEAD(auto_array_access) -{ - set_md_var("descr", "Tests the auto_array smart pointer class' access " - "operator"); -} -ATF_TEST_CASE_BODY(auto_array_access) -{ - using tools::auto_array; - - auto_array< test_array > t(new test_array[10]); - - for (int i = 0; i < 10; i++) - t[i].m_value = i * 2; - - for (int i = 0; i < 10; i++) - ATF_REQUIRE_EQ(t[i].m_value, i * 2); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test for the "auto_array" class. - ATF_ADD_TEST_CASE(tcs, auto_array_scope); - ATF_ADD_TEST_CASE(tcs, auto_array_copy); - ATF_ADD_TEST_CASE(tcs, auto_array_copy_ref); - ATF_ADD_TEST_CASE(tcs, auto_array_get); - ATF_ADD_TEST_CASE(tcs, auto_array_release); - ATF_ADD_TEST_CASE(tcs, auto_array_reset); - ATF_ADD_TEST_CASE(tcs, auto_array_assign); - ATF_ADD_TEST_CASE(tcs, auto_array_assign_ref); - ATF_ADD_TEST_CASE(tcs, auto_array_access); -} diff --git a/unit/atf-src/tools/bad_metadata_helper.c b/unit/atf-src/tools/bad_metadata_helper.c deleted file mode 100644 index 0f7fcb926a..0000000000 --- a/unit/atf-src/tools/bad_metadata_helper.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Automated Testing Framework (atf) - * - * Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -int -main(void) -{ - printf("incorrectly formatted metadata\n"); - return EXIT_SUCCESS; -} diff --git a/unit/atf-src/tools/config.cpp b/unit/atf-src/tools/config.cpp deleted file mode 100644 index 95bcf55993..0000000000 --- a/unit/atf-src/tools/config.cpp +++ /dev/null @@ -1,135 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include "config.hpp" -#include "env.hpp" -#include "text.hpp" - -static std::map< std::string, std::string > m_variables; - -static struct var { - const char *name; - const char *default_value; - bool can_be_empty; -} vars[] = { - { "ATF_ARCH", ATF_ARCH, false, }, - { "ATF_BUILD_CC", ATF_BUILD_CC, false, }, - { "ATF_BUILD_CFLAGS", ATF_BUILD_CFLAGS, true, }, - { "ATF_BUILD_CPP", ATF_BUILD_CPP, false, }, - { "ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, true, }, - { "ATF_BUILD_CXX", ATF_BUILD_CXX, false, }, - { "ATF_BUILD_CXXFLAGS", ATF_BUILD_CXXFLAGS, true, }, - { "ATF_CONFDIR", ATF_CONFDIR, false, }, - { "ATF_INCLUDEDIR", ATF_INCLUDEDIR, false, }, - { "ATF_LIBDIR", ATF_LIBDIR, false, }, - { "ATF_LIBEXECDIR", ATF_LIBEXECDIR, false, }, - { "ATF_MACHINE", ATF_MACHINE, false, }, - { "ATF_PKGDATADIR", ATF_PKGDATADIR, false, }, - { "ATF_SHELL", ATF_SHELL, false, }, - { "ATF_WORKDIR", ATF_WORKDIR, false, }, - { NULL, NULL, false, }, -}; - -// -// Adds all predefined standard build-time variables to the m_variables -// map, considering the values a user may have provided in the environment. -// -// Can only be called once during the program's lifetime. -// -static -void -init_variables(void) -{ - assert(m_variables.empty()); - - for (struct var* v = vars; v->name != NULL; v++) { - const std::string varname = tools::text::to_lower(v->name); - - if (tools::env::has(v->name)) { - const std::string envval = tools::env::get(v->name); - if (envval.empty() && !v->can_be_empty) - m_variables[varname] = v->default_value; - else - m_variables[varname] = envval; - } else { - m_variables[varname] = v->default_value; - } - } - - assert(!m_variables.empty()); -} - -const std::string& -tools::config::get(const std::string& varname) -{ - if (m_variables.empty()) - init_variables(); - - assert(has(varname)); - return m_variables[varname]; -} - -const std::map< std::string, std::string >& -tools::config::get_all(void) -{ - if (m_variables.empty()) - init_variables(); - - return m_variables; -} - -bool -tools::config::has(const std::string& varname) -{ - if (m_variables.empty()) - init_variables(); - - return m_variables.find(varname) != m_variables.end(); -} - -namespace tools { -namespace config { -// -// Auxiliary function for the t_config test program so that it can -// revert the configuration's global status to an empty state and -// do new tests from there on. -// -// Ideally this shouldn't be part of the production library... but -// this is so small that it does not matter. -// -void -__reinit(void) -{ - m_variables.clear(); -} -} // namespace config -} // namespace tools diff --git a/unit/atf-src/tools/config.hpp b/unit/atf-src/tools/config.hpp deleted file mode 100644 index 0a43873d7b..0000000000 --- a/unit/atf-src/tools/config.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_CONFIG_HPP) -#define TOOLS_CONFIG_HPP - -#include -#include - -namespace tools { - -namespace config { - -//! -//! \brief Gets a build-time configuration variable's value. -//! -//! Given the name of a build-time configuration variable, returns its -//! textual value. The user is free to override these by setting their -//! corresponding environment variables. Therefore always use this -//! interface to get the value of these variables. -//! -//! \pre The variable must exist. -//! -const std::string& get(const std::string&); - -//! -//! \brief Returns all the build-time configuration variables. -//! -//! Returns a name to value map containing all build-time configuration -//! variables. -//! -const std::map< std::string, std::string >& get_all(void); - -//! -//! \brief Checks whether a build-time configuration variable exists. -//! -//! Given the name of a build-time configuration variable, checks -//! whether it is defined and returns a boolean indicating this -//! condition. The program only has to use this function to sanity-check -//! a variable name provided by the user. Otherwise it can assume that -//! the variables are defined. -//! -bool has(const std::string&); - -} // namespace config - -} // namespace tools - -#endif // !defined(TOOLS_CONFIG_HPP) diff --git a/unit/atf-src/tools/config_file.cpp b/unit/atf-src/tools/config_file.cpp deleted file mode 100644 index 3802c0679e..0000000000 --- a/unit/atf-src/tools/config_file.cpp +++ /dev/null @@ -1,223 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include -#include - -#include "config.hpp" -#include "config_file.hpp" -#include "defs.hpp" -#include "env.hpp" -#include "fs.hpp" -#include "parser.hpp" - -namespace impl = tools::config_file; -namespace detail = tools::config_file::detail; - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -namespace atf_config { - -static const tools::parser::token_type eof_type = 0; -static const tools::parser::token_type nl_type = 1; -static const tools::parser::token_type text_type = 2; -static const tools::parser::token_type dblquote_type = 3; -static const tools::parser::token_type equal_type = 4; -static const tools::parser::token_type hash_type = 5; - -class tokenizer : public tools::parser::tokenizer< std::istream > { -public: - tokenizer(std::istream& is, size_t curline) : - tools::parser::tokenizer< std::istream > - (is, true, eof_type, nl_type, text_type, curline) - { - add_delim('=', equal_type); - add_delim('#', hash_type); - add_quote('"', dblquote_type); - } -}; - -} // namespace atf_config - -class config_reader : public detail::atf_config_reader { - vars_map m_vars; - - void - got_var(const std::string& var, const std::string& name) - { - m_vars[var] = name; - } - -public: - config_reader(std::istream& is) : - atf_config_reader(is) - { - } - - const vars_map& - get_vars(void) - const - { - return m_vars; - } -}; - -template< class K, class V > -static -void -merge_maps(std::map< K, V >& dest, const std::map< K, V >& src) -{ - for (typename std::map< K, V >::const_iterator iter = src.begin(); - iter != src.end(); iter++) - dest[(*iter).first] = (*iter).second; -} - -static -void -merge_config_file(const tools::fs::path& config_path, - vars_map& config) -{ - std::ifstream is(config_path.c_str()); - if (is) { - config_reader reader(is); - reader.read(); - merge_maps(config, reader.get_vars()); - } -} - -static -std::vector< tools::fs::path > -get_config_dirs(void) -{ - std::vector< tools::fs::path > dirs; - dirs.push_back(tools::fs::path(tools::config::get("atf_confdir"))); - if (tools::env::has("HOME")) - dirs.push_back(tools::fs::path(tools::env::get("HOME")) / ".atf"); - return dirs; -} - -} // anonymous namespace - -detail::atf_config_reader::atf_config_reader(std::istream& is) : - m_is(is) -{ -} - -detail::atf_config_reader::~atf_config_reader(void) -{ -} - -void -detail::atf_config_reader::got_var( - const std::string& var ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& val ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -detail::atf_config_reader::got_eof(void) -{ -} - -void -detail::atf_config_reader::read(void) -{ - using tools::parser::parse_error; - using namespace atf_config; - - std::pair< size_t, tools::parser::headers_map > hml = - tools::parser::read_headers(m_is, 1); - tools::parser::validate_content_type(hml.second, - "application/X-atf-config", 1); - - tokenizer tkz(m_is, hml.first); - tools::parser::parser< tokenizer > p(tkz); - - for (;;) { - try { - tools::parser::token t = p.expect(eof_type, hash_type, text_type, - nl_type, - "eof, #, new line or text"); - if (t.type() == eof_type) - break; - - if (t.type() == hash_type) { - (void)p.rest_of_line(); - t = p.expect(nl_type, "new line"); - } else if (t.type() == text_type) { - std::string name = t.text(); - - t = p.expect(equal_type, "equal sign"); - - t = p.expect(text_type, "word or quoted string"); - ATF_PARSER_CALLBACK(p, got_var(name, t.text())); - - t = p.expect(nl_type, hash_type, "new line or comment"); - if (t.type() == hash_type) { - (void)p.rest_of_line(); - t = p.expect(nl_type, "new line"); - } - } else if (t.type() == nl_type) { - } else - std::abort(); - } catch (const parse_error& pe) { - p.add_error(pe); - p.reset(nl_type); - } - } - - ATF_PARSER_CALLBACK(p, got_eof()); -} - -vars_map -impl::merge_configs(const vars_map& lower, - const vars_map& upper) -{ - vars_map merged = lower; - merge_maps(merged, upper); - return merged; -} - -vars_map -impl::read_config_files(const std::string& test_suite_name) -{ - vars_map config; - - const std::vector< tools::fs::path > dirs = get_config_dirs(); - for (std::vector< tools::fs::path >::const_iterator iter = dirs.begin(); - iter != dirs.end(); iter++) { - merge_config_file((*iter) / "common.conf", config); - merge_config_file((*iter) / (test_suite_name + ".conf"), config); - } - - return config; -} diff --git a/unit/atf-src/tools/config_file.hpp b/unit/atf-src/tools/config_file.hpp deleted file mode 100644 index 0c68bcb051..0000000000 --- a/unit/atf-src/tools/config_file.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_CONFIG_FILE_HPP) -#define TOOLS_CONFIG_FILE_HPP - -#include -#include -#include - -namespace tools { -namespace config_file { - -namespace detail { - -class atf_config_reader { - std::istream& m_is; - -protected: - virtual void got_var(const std::string&, const std::string &); - virtual void got_eof(void); - -public: - atf_config_reader(std::istream&); - virtual ~atf_config_reader(void); - - void read(void); -}; - -} // namespace detail - -std::map< std::string, std::string > merge_configs( - const std::map< std::string, std::string >&, - const std::map< std::string, std::string >&); -std::map< std::string, std::string > read_config_files(const std::string&); - -} // namespace config_file -} // namespace tools - -#endif // !defined(TOOLS_CONFIG_FILE_HPP) diff --git a/unit/atf-src/tools/config_file_test.cpp b/unit/atf-src/tools/config_file_test.cpp deleted file mode 100644 index f042634303..0000000000 --- a/unit/atf-src/tools/config_file_test.cpp +++ /dev/null @@ -1,395 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include "config.hpp" -#include "config_file.hpp" -#include "env.hpp" -#include "test_helpers.hpp" - -namespace impl = tools::config_file; -namespace detail = tools::config_file::detail; - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -} // anonymous namespace - -namespace tools { -namespace config { - -void __reinit(void); - -} // namespace config -} // namespace atf - -// ------------------------------------------------------------------------- -// Tests for the "config" parser. -// ------------------------------------------------------------------------- - -class config_reader : protected detail::atf_config_reader { - void - got_var(const std::string& name, const std::string& val) - { - m_calls.push_back("got_var(" + name + ", " + val + ")"); - } - - void - got_eof(void) - { - m_calls.push_back("got_eof()"); - } - -public: - config_reader(std::istream& is) : - detail::atf_config_reader(is) - { - } - - void - read(void) - { - atf_config_reader::read(); - } - - std::vector< std::string > m_calls; -}; - -ATF_TEST_CASE_WITHOUT_HEAD(config_1); -ATF_TEST_CASE_BODY(config_1) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - ; - - const char* exp_calls[] = { - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_2); -ATF_TEST_CASE_BODY(config_2) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "# This is a comment on a line of its own.\n" - "# And this is another one.\n" - "\n" - " # Another after some whitespace.\n" - "\n" - "# The last one after an empty line.\n" - ; - - const char* exp_calls[] = { - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_3); -ATF_TEST_CASE_BODY(config_3) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "var1=value1\n" - "var2 = value2\n" - "var3 = value3\n" - "var4 = value4\n" - "\n" - "var5=value5\n" - " var6=value6\n" - "\n" - "var7 = \"This is a long value.\"\n" - "var8 = \"Single-word\"\n" - "var9 = \" Single-word \"\n" - "var10 = Single-word\n" - ; - - const char* exp_calls[] = { - "got_var(var1, value1)", - "got_var(var2, value2)", - "got_var(var3, value3)", - "got_var(var4, value4)", - "got_var(var5, value5)", - "got_var(var6, value6)", - "got_var(var7, This is a long value.)", - "got_var(var8, Single-word)", - "got_var(var9, Single-word )", - "got_var(var10, Single-word)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_4); -ATF_TEST_CASE_BODY(config_4) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "foo = bar # A comment.\n" - ; - - const char* exp_calls[] = { - "got_var(foo, bar)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_50); -ATF_TEST_CASE_BODY(config_50) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "foo\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected equal sign", - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_51); -ATF_TEST_CASE_BODY(config_51) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "foo bar\n" - "baz\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `bar'; expected equal sign", - "4: Unexpected token `<>'; expected equal sign", - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_52); -ATF_TEST_CASE_BODY(config_52) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "foo =\n" - "bar = # A comment.\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected word or quoted string", - "4: Unexpected token `#'; expected word or quoted string", - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_53); -ATF_TEST_CASE_BODY(config_53) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "foo = \"Correct value\" # With comment.\n" - "\n" - "bar = # A comment.\n" - "\n" - "baz = \"Last variable\"\n" - "\n" - "# End of file.\n" - ; - - const char* exp_calls[] = { - "got_var(foo, Correct value)", - NULL - }; - - const char* exp_errors[] = { - "5: Unexpected token `#'; expected word or quoted string", - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(config_54); -ATF_TEST_CASE_BODY(config_54) -{ - const char* input = - "Content-Type: application/X-atf-config; version=\"1\"\n" - "\n" - "foo = \"\n" - "bar = \"text\n" - "baz = \"te\\\"xt\n" - "last = \"\\\"\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Missing double quotes before end of line", - "4: Missing double quotes before end of line", - "5: Missing double quotes before end of line", - "6: Missing double quotes before end of line", - NULL - }; - - do_parser_test< config_reader >(input, exp_calls, exp_errors); -} - -// ------------------------------------------------------------------------- -// Tests for the free functions. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(merge_configs_both_empty); -ATF_TEST_CASE_HEAD(merge_configs_both_empty) {} -ATF_TEST_CASE_BODY(merge_configs_both_empty) { - vars_map lower, upper; - - ATF_REQUIRE(impl::merge_configs(lower, upper).empty()); -} - -ATF_TEST_CASE(merge_configs_lower_empty); -ATF_TEST_CASE_HEAD(merge_configs_lower_empty) {} -ATF_TEST_CASE_BODY(merge_configs_lower_empty) { - vars_map lower, upper; - upper["var"] = "value"; - - vars_map merged = impl::merge_configs(lower, upper); - ATF_REQUIRE_EQ("value", merged["var"]); -} - -ATF_TEST_CASE(merge_configs_upper_empty); -ATF_TEST_CASE_HEAD(merge_configs_upper_empty) {} -ATF_TEST_CASE_BODY(merge_configs_upper_empty) { - vars_map lower, upper; - lower["var"] = "value"; - - vars_map merged = impl::merge_configs(lower, upper); - ATF_REQUIRE_EQ("value", merged["var"]); -} - -ATF_TEST_CASE(merge_configs_mixed); -ATF_TEST_CASE_HEAD(merge_configs_mixed) {} -ATF_TEST_CASE_BODY(merge_configs_mixed) { - vars_map lower, upper; - lower["var1"] = "value1"; - lower["var2"] = "value2-l"; - upper["var2"] = "value2-u"; - upper["var3"] = "value3"; - - vars_map merged = impl::merge_configs(lower, upper); - ATF_REQUIRE_EQ("value1", merged["var1"]); - ATF_REQUIRE_EQ("value2-u", merged["var2"]); - ATF_REQUIRE_EQ("value3", merged["var3"]); -} - -ATF_TEST_CASE(read_config_files_none); -ATF_TEST_CASE_HEAD(read_config_files_none) {} -ATF_TEST_CASE_BODY(read_config_files_none) { - tools::env::set("ATF_CONFDIR", "."); - tools::config::__reinit(); - ATF_REQUIRE(vars_map() == impl::read_config_files("test-suite")); -} - -// ------------------------------------------------------------------------- -// Main. -// ------------------------------------------------------------------------- - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, config_1); - ATF_ADD_TEST_CASE(tcs, config_2); - ATF_ADD_TEST_CASE(tcs, config_3); - ATF_ADD_TEST_CASE(tcs, config_4); - ATF_ADD_TEST_CASE(tcs, config_50); - ATF_ADD_TEST_CASE(tcs, config_51); - ATF_ADD_TEST_CASE(tcs, config_52); - ATF_ADD_TEST_CASE(tcs, config_53); - ATF_ADD_TEST_CASE(tcs, config_54); - - ATF_ADD_TEST_CASE(tcs, merge_configs_both_empty); - ATF_ADD_TEST_CASE(tcs, merge_configs_lower_empty); - ATF_ADD_TEST_CASE(tcs, merge_configs_upper_empty); - ATF_ADD_TEST_CASE(tcs, merge_configs_mixed); - - ATF_ADD_TEST_CASE(tcs, read_config_files_none); -} diff --git a/unit/atf-src/tools/config_test.cpp b/unit/atf-src/tools/config_test.cpp deleted file mode 100644 index d7d67199b5..0000000000 --- a/unit/atf-src/tools/config_test.cpp +++ /dev/null @@ -1,221 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include - -#include "config.hpp" -#include "env.hpp" -#include "exceptions.hpp" - -static const char *test_value = "env-value"; - -static struct varnames { - const char *lc; - const char *uc; - bool can_be_empty; -} all_vars[] = { - { "atf_arch", "ATF_ARCH", false }, - { "atf_build_cc", "ATF_BUILD_CC", false }, - { "atf_build_cflags", "ATF_BUILD_CFLAGS", true }, - { "atf_build_cpp", "ATF_BUILD_CPP", false }, - { "atf_build_cppflags", "ATF_BUILD_CPPFLAGS", true }, - { "atf_build_cxx", "ATF_BUILD_CXX", false }, - { "atf_build_cxxflags", "ATF_BUILD_CXXFLAGS", true }, - { "atf_confdir", "ATF_CONFDIR", false }, - { "atf_includedir", "ATF_INCLUDEDIR", false }, - { "atf_libdir", "ATF_LIBDIR", false }, - { "atf_libexecdir", "ATF_LIBEXECDIR", false }, - { "atf_machine", "ATF_MACHINE", false }, - { "atf_pkgdatadir", "ATF_PKGDATADIR", false }, - { "atf_shell", "ATF_SHELL", false }, - { "atf_workdir", "ATF_WORKDIR", false }, - { NULL, NULL, false } -}; - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -namespace tools { - namespace config { - void __reinit(void); - } -} - -static -void -set_env_var(const char* name, const char* val) -{ - try { - tools::env::set(name, val); - } catch (const tools::system_error&) { - ATF_FAIL(std::string("set_env_var(") + name + ", " + val + - ") failed"); - } -} - -static -void -unset_env_var(const char* name) -{ - try { - tools::env::unset(name); - } catch (const tools::system_error&) { - ATF_FAIL(std::string("unset_env_var(") + name + ") failed"); - } -} - -static -size_t -all_vars_count(void) -{ - size_t count = 0; - for (const struct varnames* v = all_vars; v->lc != NULL; v++) - count++; - return count; -} - -static -void -unset_all(void) -{ - for (const struct varnames* v = all_vars; v->lc != NULL; v++) - unset_env_var(v->uc); -} - -static -void -compare_one(const char* var, const char* expvalue) -{ - std::cout << "Checking that " << var << " is set to " << expvalue << "\n"; - - for (const struct varnames* v = all_vars; v->lc != NULL; v++) { - if (std::strcmp(v->lc, var) == 0) - ATF_REQUIRE_EQ(tools::config::get(v->lc), test_value); - else - ATF_REQUIRE(tools::config::get(v->lc) != test_value); - } -} - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(get); -ATF_TEST_CASE_HEAD(get) -{ - set_md_var("descr", "Tests the config::get function"); -} -ATF_TEST_CASE_BODY(get) -{ - // Unset all known environment variables and make sure the built-in - // values do not match the bogus value we will use for testing. - unset_all(); - tools::config::__reinit(); - for (const struct varnames* v = all_vars; v->lc != NULL; v++) - ATF_REQUIRE(tools::config::get(v->lc) != test_value); - - // Test the behavior of empty values. - for (const struct varnames* v = all_vars; v->lc != NULL; v++) { - unset_all(); - if (!tools::config::get(v->lc).empty()) { - set_env_var(v->uc, ""); - tools::config::__reinit(); - if (v->can_be_empty) - ATF_REQUIRE(tools::config::get(v->lc).empty()); - else - ATF_REQUIRE(!tools::config::get(v->lc).empty()); - } - } - - // Check if the ATF_ARCH variable is recognized. - for (const struct varnames* v = all_vars; v->lc != NULL; v++) { - unset_all(); - set_env_var(v->uc, test_value); - tools::config::__reinit(); - compare_one(v->lc, test_value); - } -} - -ATF_TEST_CASE(get_all); -ATF_TEST_CASE_HEAD(get_all) -{ - set_md_var("descr", "Tests the config::get_all function"); -} -ATF_TEST_CASE_BODY(get_all) -{ - tools::config::__reinit(); - - // Check that the valid variables, and only those, are returned. - std::map< std::string, std::string > vars = tools::config::get_all(); - ATF_REQUIRE_EQ(vars.size(), all_vars_count()); - for (const struct varnames* v = all_vars; v->lc != NULL; v++) - ATF_REQUIRE(vars.find(v->lc) != vars.end()); -} - -ATF_TEST_CASE(has); -ATF_TEST_CASE_HEAD(has) -{ - set_md_var("descr", "Tests the config::has function"); -} -ATF_TEST_CASE_BODY(has) -{ - tools::config::__reinit(); - - // Check for all the variables that must exist. - for (const struct varnames* v = all_vars; v->lc != NULL; v++) - ATF_REQUIRE(tools::config::has(v->lc)); - - // Same as above, but using uppercase (which is incorrect). - for (const struct varnames* v = all_vars; v->lc != NULL; v++) - ATF_REQUIRE(!tools::config::has(v->uc)); - - // Check for some other variables that cannot exist. - ATF_REQUIRE(!tools::config::has("foo")); - ATF_REQUIRE(!tools::config::has("BAR")); - ATF_REQUIRE(!tools::config::has("atf_foo")); - ATF_REQUIRE(!tools::config::has("ATF_BAR")); - ATF_REQUIRE(!tools::config::has("atf_shel")); - ATF_REQUIRE(!tools::config::has("atf_shells")); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, has); - ATF_ADD_TEST_CASE(tcs, get); - ATF_ADD_TEST_CASE(tcs, get_all); -} diff --git a/unit/atf-src/tools/defs.hpp.in b/unit/atf-src/tools/defs.hpp.in deleted file mode 100644 index 9542795199..0000000000 --- a/unit/atf-src/tools/defs.hpp.in +++ /dev/null @@ -1,37 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_DEFS_HPP) -#define TOOLS_DEFS_HPP - -#define ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(a, b) @ATTRIBUTE_FORMAT_PRINTF@ -#define ATF_DEFS_ATTRIBUTE_NORETURN @ATTRIBUTE_NORETURN@ -#define ATF_DEFS_ATTRIBUTE_UNUSED @ATTRIBUTE_UNUSED@ - -#endif /* !defined(TOOLS_DEFS_HPP) */ diff --git a/unit/atf-src/tools/env.cpp b/unit/atf-src/tools/env.cpp deleted file mode 100644 index 856ef98206..0000000000 --- a/unit/atf-src/tools/env.cpp +++ /dev/null @@ -1,102 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -#include -#include -} - -#include - -#include "env.hpp" -#include "exceptions.hpp" - -namespace impl = tools::env; -#define IMPL_NAME "tools::env" - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -std::string -impl::get(const std::string& name) -{ - const char* val = getenv(name.c_str()); - assert(val != NULL); - return val; -} - -bool -impl::has(const std::string& name) -{ - return getenv(name.c_str()) != NULL; -} - -void -impl::set(const std::string& name, const std::string& val) -{ -#if defined(HAVE_SETENV) - if (setenv(name.c_str(), val.c_str(), 1) == -1) - throw tools::system_error(IMPL_NAME "::set", - "Cannot set environment variable '" + name + - "' to '" + val + "'", - errno); -#elif defined(HAVE_PUTENV) - const std::string buf = name + "=" + val; - if (putenv(strdup(buf.c_str())) == -1) - throw tools::system_error(IMPL_NAME "::set", - "Cannot set environment variable '" + name + - "' to '" + val + "'", - errno); -#else -# error "Don't know how to set an environment variable." -#endif -} - -void -impl::unset(const std::string& name) -{ -#if defined(HAVE_UNSETENV) - unsetenv(name.c_str()); -#elif defined(HAVE_PUTENV) - const std::string buf = name + "="; - - if (putenv(strdup(buf.c_str())) == -1) - throw tools::system_error(IMPL_NAME "::unset", - "Cannot unset environment variable '" + - name + "'", errno); -#else -# error "Don't know how to unset an environment variable." -#endif -} diff --git a/unit/atf-src/tools/env.hpp b/unit/atf-src/tools/env.hpp deleted file mode 100644 index f87a58f92f..0000000000 --- a/unit/atf-src/tools/env.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_ENV_HPP) -#define TOOLS_ENV_HPP - -#include - -namespace tools { -namespace env { - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -//! -//! \brief Returns the value of an environment variable. -//! -//! Returns the value of the specified environment variable. The variable -//! must be defined. -//! -std::string get(const std::string&); - -//! -//! \brief Checks if the environment has a variable. -//! -//! Checks if the environment has a given variable. -//! -bool has(const std::string&); - -//! -//! \brief Sets an environment variable to a given value. -//! -//! Sets the specified environment variable to the given value. Note that -//! variables set to the empty string are different to undefined ones. -//! -//! Be aware that this alters the program's global status, which in general -//! is a bad thing to do due to the side-effects it may have. There are -//! some legitimate usages for this function, though. -//! -void set(const std::string&, const std::string&); - -//! -//! \brief Unsets an environment variable. -//! -//! Unsets the specified environment variable Note that undefined -//! variables are different to those defined but set to an empty value. -//! -//! Be aware that this alters the program's global status, which in general -//! is a bad thing to do due to the side-effects it may have. There are -//! some legitimate usages for this function, though. -//! -void unset(const std::string&); - -} // namespace env -} // namespace tools - -#endif // !defined(TOOLS_ENV_HPP) diff --git a/unit/atf-src/tools/env_test.cpp b/unit/atf-src/tools/env_test.cpp deleted file mode 100644 index 441a16ff89..0000000000 --- a/unit/atf-src/tools/env_test.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include "env.hpp" - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(has_get); -ATF_TEST_CASE_HEAD(has_get) -{ - set_md_var("descr", "Tests the has and get functions"); -} -ATF_TEST_CASE_BODY(has_get) -{ - ATF_REQUIRE(tools::env::has("PATH")); - ATF_REQUIRE(!tools::env::get("PATH").empty()); - - ATF_REQUIRE(!tools::env::has("_UNDEFINED_VARIABLE_")); -} - -ATF_TEST_CASE(set); -ATF_TEST_CASE_HEAD(set) -{ - set_md_var("descr", "Tests the set function"); -} -ATF_TEST_CASE_BODY(set) -{ - ATF_REQUIRE(tools::env::has("PATH")); - const std::string& oldval = tools::env::get("PATH"); - tools::env::set("PATH", "foo-bar"); - ATF_REQUIRE(tools::env::get("PATH") != oldval); - ATF_REQUIRE_EQ(tools::env::get("PATH"), "foo-bar"); - - ATF_REQUIRE(!tools::env::has("_UNDEFINED_VARIABLE_")); - tools::env::set("_UNDEFINED_VARIABLE_", "foo2-bar2"); - ATF_REQUIRE_EQ(tools::env::get("_UNDEFINED_VARIABLE_"), "foo2-bar2"); -} - -ATF_TEST_CASE(unset); -ATF_TEST_CASE_HEAD(unset) -{ - set_md_var("descr", "Tests the unset function"); -} -ATF_TEST_CASE_BODY(unset) -{ - ATF_REQUIRE(tools::env::has("PATH")); - tools::env::unset("PATH"); - ATF_REQUIRE(!tools::env::has("PATH")); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, has_get); - ATF_ADD_TEST_CASE(tcs, set); - ATF_ADD_TEST_CASE(tcs, unset); -} diff --git a/unit/atf-src/tools/exceptions.cpp b/unit/atf-src/tools/exceptions.cpp deleted file mode 100644 index 8587121cef..0000000000 --- a/unit/atf-src/tools/exceptions.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include "exceptions.hpp" - -// ------------------------------------------------------------------------ -// The "system_error" type. -// ------------------------------------------------------------------------ - -tools::system_error::system_error(const std::string& who, - const std::string& message, - int sys_err) : - std::runtime_error(who + ": " + message), - m_sys_err(sys_err) -{ -} - -tools::system_error::~system_error(void) - throw() -{ -} - -int -tools::system_error::code(void) - const - throw() -{ - return m_sys_err; -} - -const char* -tools::system_error::what(void) - const - throw() -{ - try { - if (m_message.length() == 0) { - m_message = std::string(std::runtime_error::what()) + ": "; - m_message += ::strerror(m_sys_err); - } - - return m_message.c_str(); - } catch (...) { - return "Unable to format system_error message"; - } -} diff --git a/unit/atf-src/tools/exceptions.hpp b/unit/atf-src/tools/exceptions.hpp deleted file mode 100644 index 4346b7b54f..0000000000 --- a/unit/atf-src/tools/exceptions.hpp +++ /dev/null @@ -1,93 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_EXCEPTIONS_HPP) -#define TOOLS_EXCEPTIONS_HPP - -#include -#include - -namespace tools { - -template< class T > -class not_found_error : - public std::runtime_error -{ - T m_value; - -public: - not_found_error(const std::string& message, const T& value) throw(); - - virtual ~not_found_error(void) throw(); - - const T& get_value(void) const throw(); -}; - -template< class T > -inline -not_found_error< T >::not_found_error(const std::string& message, - const T& value) - throw() : - std::runtime_error(message), - m_value(value) -{ -} - -template< class T > -inline -not_found_error< T >::~not_found_error(void) - throw() -{ -} - -template< class T > -inline -const T& -not_found_error< T >::get_value(void) - const - throw() -{ - return m_value; -} - -class system_error : public std::runtime_error { - int m_sys_err; - mutable std::string m_message; - -public: - system_error(const std::string&, const std::string&, int); - ~system_error(void) throw(); - - int code(void) const throw(); - const char* what(void) const throw(); -}; - -} // namespace tools - -#endif // !defined(TOOLS_EXCEPTIONS_HPP) diff --git a/unit/atf-src/tools/expand.cpp b/unit/atf-src/tools/expand.cpp deleted file mode 100644 index 3ae27d05e5..0000000000 --- a/unit/atf-src/tools/expand.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include "expand.hpp" -#include "text.hpp" - -namespace impl = tools::expand; -#define IMPL_NAME "tools::expand" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -namespace { - -std::string -glob_to_regex(const std::string& glob) -{ - std::string regex; - regex.reserve(glob.length() * 2); - - regex += '^'; - for (std::string::const_iterator iter = glob.begin(); iter != glob.end(); - iter++) { - switch (*iter) { - case '*': regex += ".*"; break; - case '?': regex += "."; break; - default: regex += *iter; - } - } - regex += '$'; - - return regex; -} - -} // anonymous namespace - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -bool -impl::is_glob(const std::string& glob) -{ - // NOTE: Keep this in sync with glob_to_regex! - return glob.find_first_of("*?") != std::string::npos; -} - -bool -impl::matches_glob(const std::string& glob, const std::string& candidate) -{ - return tools::text::match(candidate, glob_to_regex(glob)); -} diff --git a/unit/atf-src/tools/expand.hpp b/unit/atf-src/tools/expand.hpp deleted file mode 100644 index b8135445af..0000000000 --- a/unit/atf-src/tools/expand.hpp +++ /dev/null @@ -1,82 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_EXPAND_HPP) -#define TOOLS_EXPAND_HPP - -#include -#include - -namespace tools { -namespace expand { - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -//! -//! \brief Checks if the given string is a glob pattern. -//! -//! Returns true if the given string is a glob pattern; i.e. if it contains -//! any character that will be expanded by expand_glob. -//! -bool is_glob(const std::string&); - -//! -//! \brief Checks if a given string matches a glob pattern. -//! -//! Given a glob pattern and a string, checks whether the former matches -//! the latter. Returns a boolean indicating this condition. -//! -bool matches_glob(const std::string&, const std::string&); - -//! -//! \brief Expands a glob pattern among multiple candidates. -//! -//! Given a glob pattern and a set of candidate strings, checks which of -//! those strings match the glob pattern and returns them. -//! -template< class T > -std::vector< std::string > expand_glob(const std::string& glob, - const T& candidates) -{ - std::vector< std::string > exps; - - for (typename T::const_iterator iter = candidates.begin(); - iter != candidates.end(); iter++) - if (matches_glob(glob, *iter)) - exps.push_back(*iter); - - return exps; -} - -} // namespace expand -} // namespace tools - -#endif // !defined(TOOLS_EXPAND_HPP) diff --git a/unit/atf-src/tools/expand_test.cpp b/unit/atf-src/tools/expand_test.cpp deleted file mode 100644 index fb59de8db2..0000000000 --- a/unit/atf-src/tools/expand_test.cpp +++ /dev/null @@ -1,272 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include - -#include "expand.hpp" - -// XXX Many of the tests here are duplicated in atf-c/t_expand. Should -// find a way to easily share them, or maybe remove the ones here. - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(is_glob); -ATF_TEST_CASE_HEAD(is_glob) -{ - set_md_var("descr", "Tests the is_glob function."); -} -ATF_TEST_CASE_BODY(is_glob) -{ - using tools::expand::is_glob; - - ATF_REQUIRE(!is_glob("")); - ATF_REQUIRE(!is_glob("a")); - ATF_REQUIRE(!is_glob("foo")); - - ATF_REQUIRE( is_glob("*")); - ATF_REQUIRE( is_glob("a*")); - ATF_REQUIRE( is_glob("*a")); - ATF_REQUIRE( is_glob("a*b")); - - ATF_REQUIRE( is_glob("?")); - ATF_REQUIRE( is_glob("a?")); - ATF_REQUIRE( is_glob("?a")); - ATF_REQUIRE( is_glob("a?b")); -} - -ATF_TEST_CASE(matches_glob_plain); -ATF_TEST_CASE_HEAD(matches_glob_plain) -{ - set_md_var("descr", "Tests the matches_glob function by using plain " - "text strings as patterns only."); -} -ATF_TEST_CASE_BODY(matches_glob_plain) -{ - using tools::expand::matches_glob; - - ATF_REQUIRE( matches_glob("", "")); - ATF_REQUIRE(!matches_glob("a", "")); - ATF_REQUIRE(!matches_glob("", "a")); - - ATF_REQUIRE( matches_glob("ab", "ab")); - ATF_REQUIRE(!matches_glob("abc", "ab")); - ATF_REQUIRE(!matches_glob("ab", "abc")); -} - -ATF_TEST_CASE(matches_glob_star); -ATF_TEST_CASE_HEAD(matches_glob_star) -{ - set_md_var("descr", "Tests the matches_glob function by using the '*' " - "meta-character as part of the pattern."); -} -ATF_TEST_CASE_BODY(matches_glob_star) -{ - using tools::expand::matches_glob; - - ATF_REQUIRE( matches_glob("*", "")); - ATF_REQUIRE( matches_glob("*", "a")); - ATF_REQUIRE( matches_glob("*", "ab")); - - ATF_REQUIRE(!matches_glob("a*", "")); - ATF_REQUIRE( matches_glob("a*", "a")); - ATF_REQUIRE( matches_glob("a*", "aa")); - ATF_REQUIRE( matches_glob("a*", "ab")); - ATF_REQUIRE( matches_glob("a*", "abc")); - ATF_REQUIRE(!matches_glob("a*", "ba")); - - ATF_REQUIRE( matches_glob("*a", "a")); - ATF_REQUIRE( matches_glob("*a", "ba")); - ATF_REQUIRE(!matches_glob("*a", "bc")); - ATF_REQUIRE(!matches_glob("*a", "bac")); - - ATF_REQUIRE( matches_glob("*ab", "ab")); - ATF_REQUIRE( matches_glob("*ab", "aab")); - ATF_REQUIRE( matches_glob("*ab", "aaab")); - ATF_REQUIRE( matches_glob("*ab", "bab")); - ATF_REQUIRE(!matches_glob("*ab", "bcb")); - ATF_REQUIRE(!matches_glob("*ab", "bacb")); - - ATF_REQUIRE( matches_glob("a*b", "ab")); - ATF_REQUIRE( matches_glob("a*b", "acb")); - ATF_REQUIRE( matches_glob("a*b", "acdeb")); - ATF_REQUIRE(!matches_glob("a*b", "acdebz")); - ATF_REQUIRE(!matches_glob("a*b", "zacdeb")); -} - -ATF_TEST_CASE(matches_glob_question); -ATF_TEST_CASE_HEAD(matches_glob_question) -{ - set_md_var("descr", "Tests the matches_glob function by using the '?' " - "meta-character as part of the pattern."); -} -ATF_TEST_CASE_BODY(matches_glob_question) -{ - using tools::expand::matches_glob; - - ATF_REQUIRE(!matches_glob("?", "")); - ATF_REQUIRE( matches_glob("?", "a")); - ATF_REQUIRE(!matches_glob("?", "ab")); - - ATF_REQUIRE( matches_glob("?", "b")); - ATF_REQUIRE( matches_glob("?", "c")); - - ATF_REQUIRE( matches_glob("a?", "ab")); - ATF_REQUIRE( matches_glob("a?", "ac")); - ATF_REQUIRE(!matches_glob("a?", "ca")); - - ATF_REQUIRE( matches_glob("???", "abc")); - ATF_REQUIRE( matches_glob("???", "def")); - ATF_REQUIRE(!matches_glob("???", "a")); - ATF_REQUIRE(!matches_glob("???", "ab")); - ATF_REQUIRE(!matches_glob("???", "abcd")); -} - -ATF_TEST_CASE(expand_glob_base); -ATF_TEST_CASE_HEAD(expand_glob_base) -{ - set_md_var("descr", "Tests the expand_glob function with random " - "patterns."); -} -ATF_TEST_CASE_BODY(expand_glob_base) -{ - using tools::expand::expand_glob; - - std::vector< std::string > candidates; - candidates.push_back("foo"); - candidates.push_back("bar"); - candidates.push_back("baz"); - candidates.push_back("foobar"); - candidates.push_back("foobarbaz"); - candidates.push_back("foobarbazfoo"); - - std::vector< std::string > exps; - - exps = expand_glob("foo", candidates); - ATF_REQUIRE_EQ(exps.size(), 1); - ATF_REQUIRE(exps[0] == "foo"); - - exps = expand_glob("bar", candidates); - ATF_REQUIRE_EQ(exps.size(), 1); - ATF_REQUIRE(exps[0] == "bar"); - - exps = expand_glob("foo*", candidates); - ATF_REQUIRE_EQ(exps.size(), 4); - ATF_REQUIRE(exps[0] == "foo"); - ATF_REQUIRE(exps[1] == "foobar"); - ATF_REQUIRE(exps[2] == "foobarbaz"); - ATF_REQUIRE(exps[3] == "foobarbazfoo"); - - exps = expand_glob("*foo", candidates); - ATF_REQUIRE_EQ(exps.size(), 2); - ATF_REQUIRE(exps[0] == "foo"); - ATF_REQUIRE(exps[1] == "foobarbazfoo"); - - exps = expand_glob("*foo*", candidates); - ATF_REQUIRE_EQ(exps.size(), 4); - ATF_REQUIRE(exps[0] == "foo"); - ATF_REQUIRE(exps[1] == "foobar"); - ATF_REQUIRE(exps[2] == "foobarbaz"); - ATF_REQUIRE(exps[3] == "foobarbazfoo"); - - exps = expand_glob("ba", candidates); - ATF_REQUIRE_EQ(exps.size(), 0); - - exps = expand_glob("ba*", candidates); - ATF_REQUIRE_EQ(exps.size(), 2); - ATF_REQUIRE(exps[0] == "bar"); - ATF_REQUIRE(exps[1] == "baz"); - - exps = expand_glob("*ba", candidates); - ATF_REQUIRE_EQ(exps.size(), 0); - - exps = expand_glob("*ba*", candidates); - ATF_REQUIRE_EQ(exps.size(), 5); - ATF_REQUIRE(exps[0] == "bar"); - ATF_REQUIRE(exps[1] == "baz"); - ATF_REQUIRE(exps[2] == "foobar"); - ATF_REQUIRE(exps[3] == "foobarbaz"); - ATF_REQUIRE(exps[4] == "foobarbazfoo"); -} - -ATF_TEST_CASE(expand_glob_tps); -ATF_TEST_CASE_HEAD(expand_glob_tps) -{ - set_md_var("descr", "Tests the expand_glob function with patterns that " - "match typical test program names. This is just a subcase " - "of expand_base, but it is nice to make sure that it really " - "works."); -} -ATF_TEST_CASE_BODY(expand_glob_tps) -{ - using tools::expand::expand_glob; - - std::vector< std::string > candidates; - candidates.push_back("Atffile"); - candidates.push_back("h_foo"); - candidates.push_back("t_foo"); - candidates.push_back("t_bar"); - candidates.push_back("t_baz"); - candidates.push_back("foo_helper"); - candidates.push_back("foo_test"); - candidates.push_back("bar_test"); - candidates.push_back("baz_test"); - - std::vector< std::string > exps; - - exps = expand_glob("t_*", candidates); - ATF_REQUIRE_EQ(exps.size(), 3); - ATF_REQUIRE(exps[0] == "t_foo"); - ATF_REQUIRE(exps[1] == "t_bar"); - ATF_REQUIRE(exps[2] == "t_baz"); - - exps = expand_glob("*_test", candidates); - ATF_REQUIRE_EQ(exps.size(), 3); - ATF_REQUIRE(exps[0] == "foo_test"); - ATF_REQUIRE(exps[1] == "bar_test"); - ATF_REQUIRE(exps[2] == "baz_test"); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the tests for the free functions. - ATF_ADD_TEST_CASE(tcs, is_glob); - ATF_ADD_TEST_CASE(tcs, matches_glob_plain); - ATF_ADD_TEST_CASE(tcs, matches_glob_star); - ATF_ADD_TEST_CASE(tcs, matches_glob_question); - ATF_ADD_TEST_CASE(tcs, expand_glob_base); - ATF_ADD_TEST_CASE(tcs, expand_glob_tps); -} diff --git a/unit/atf-src/tools/expect_helpers.c b/unit/atf-src/tools/expect_helpers.c deleted file mode 100644 index b38ccf574b..0000000000 --- a/unit/atf-src/tools/expect_helpers.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Automated Testing Framework (atf) - * - * Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -#include - -ATF_TC_WITHOUT_HEAD(pass_and_pass); -ATF_TC_BODY(pass_and_pass, tc) -{ - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(pass_but_fail_requirement); -ATF_TC_BODY(pass_but_fail_requirement, tc) -{ - atf_tc_expect_pass(); - atf_tc_fail("Some reason"); -} - -ATF_TC_WITHOUT_HEAD(pass_but_fail_check); -ATF_TC_BODY(pass_but_fail_check, tc) -{ - atf_tc_expect_pass(); - atf_tc_fail_nonfatal("Some reason"); -} - -ATF_TC_WITHOUT_HEAD(fail_and_fail_requirement); -ATF_TC_BODY(fail_and_fail_requirement, tc) -{ - atf_tc_expect_fail("Fail %s", "reason"); - atf_tc_fail("The failure"); - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(fail_and_fail_check); -ATF_TC_BODY(fail_and_fail_check, tc) -{ - atf_tc_expect_fail("Fail first"); - atf_tc_fail_nonfatal("abc"); - atf_tc_expect_pass(); - - atf_tc_expect_fail("And fail again"); - atf_tc_fail_nonfatal("def"); - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(fail_but_pass); -ATF_TC_BODY(fail_but_pass, tc) -{ - atf_tc_expect_fail("Fail first"); - atf_tc_fail_nonfatal("abc"); - atf_tc_expect_pass(); - - atf_tc_expect_fail("Will not fail"); - atf_tc_expect_pass(); - - atf_tc_expect_fail("And fail again"); - atf_tc_fail_nonfatal("def"); - atf_tc_expect_pass(); -} - -ATF_TC_WITHOUT_HEAD(exit_any_and_exit); -ATF_TC_BODY(exit_any_and_exit, tc) -{ - atf_tc_expect_exit(-1, "Call will exit"); - exit(EXIT_SUCCESS); -} - -ATF_TC_WITHOUT_HEAD(exit_code_and_exit); -ATF_TC_BODY(exit_code_and_exit, tc) -{ - atf_tc_expect_exit(123, "Call will exit"); - exit(123); -} - -ATF_TC_WITHOUT_HEAD(exit_but_pass); -ATF_TC_BODY(exit_but_pass, tc) -{ - atf_tc_expect_exit(-1, "Call won't exit"); -} - -ATF_TC_WITHOUT_HEAD(signal_any_and_signal); -ATF_TC_BODY(signal_any_and_signal, tc) -{ - atf_tc_expect_signal(-1, "Call will signal"); - kill(getpid(), SIGKILL); -} - -ATF_TC_WITHOUT_HEAD(signal_no_and_signal); -ATF_TC_BODY(signal_no_and_signal, tc) -{ - atf_tc_expect_signal(SIGHUP, "Call will signal"); - kill(getpid(), SIGHUP); -} - -ATF_TC_WITHOUT_HEAD(signal_but_pass); -ATF_TC_BODY(signal_but_pass, tc) -{ - atf_tc_expect_signal(-1, "Call won't signal"); -} - -ATF_TC_WITHOUT_HEAD(death_and_exit); -ATF_TC_BODY(death_and_exit, tc) -{ - atf_tc_expect_death("Exit case"); - exit(123); -} - -ATF_TC_WITHOUT_HEAD(death_and_signal); -ATF_TC_BODY(death_and_signal, tc) -{ - atf_tc_expect_death("Signal case"); - kill(getpid(), SIGKILL); -} - -ATF_TC_WITHOUT_HEAD(death_but_pass); -ATF_TC_BODY(death_but_pass, tc) -{ - atf_tc_expect_death("Call won't die"); -} - -ATF_TC(timeout_and_hang); -ATF_TC_HEAD(timeout_and_hang, tc) -{ - atf_tc_set_md_var(tc, "timeout", "1"); -} -ATF_TC_BODY(timeout_and_hang, tc) -{ - atf_tc_expect_timeout("Will overrun"); - sleep(5); -} - -ATF_TC(timeout_but_pass); -ATF_TC_HEAD(timeout_but_pass, tc) -{ - atf_tc_set_md_var(tc, "timeout", "1"); -} -ATF_TC_BODY(timeout_but_pass, tc) -{ - atf_tc_expect_timeout("Will just exit"); -} - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, pass_and_pass); - ATF_TP_ADD_TC(tp, pass_but_fail_requirement); - ATF_TP_ADD_TC(tp, pass_but_fail_check); - ATF_TP_ADD_TC(tp, fail_and_fail_requirement); - ATF_TP_ADD_TC(tp, fail_and_fail_check); - ATF_TP_ADD_TC(tp, fail_but_pass); - ATF_TP_ADD_TC(tp, exit_any_and_exit); - ATF_TP_ADD_TC(tp, exit_code_and_exit); - ATF_TP_ADD_TC(tp, exit_but_pass); - ATF_TP_ADD_TC(tp, signal_any_and_signal); - ATF_TP_ADD_TC(tp, signal_no_and_signal); - ATF_TP_ADD_TC(tp, signal_but_pass); - ATF_TP_ADD_TC(tp, death_and_exit); - ATF_TP_ADD_TC(tp, death_and_signal); - ATF_TP_ADD_TC(tp, death_but_pass); - ATF_TP_ADD_TC(tp, timeout_and_hang); - ATF_TP_ADD_TC(tp, timeout_but_pass); - - return atf_no_error(); -} diff --git a/unit/atf-src/tools/fail_helper.cpp b/unit/atf-src/tools/fail_helper.cpp deleted file mode 100644 index 736b5e8be0..0000000000 --- a/unit/atf-src/tools/fail_helper.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -ATF_TEST_CASE(main); -ATF_TEST_CASE_HEAD(main) -{ - set_md_var("descr", "Helper test case that always fails"); -} -ATF_TEST_CASE_BODY(main) -{ - fail("This always fails"); -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, main); -} diff --git a/unit/atf-src/tools/fs.cpp b/unit/atf-src/tools/fs.cpp deleted file mode 100644 index deed28c72b..0000000000 --- a/unit/atf-src/tools/fs.cpp +++ /dev/null @@ -1,744 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -#include -#include -#include -#include - -#include -#include -#include -} - -#include -#include -#include -#include - -#include "auto_array.hpp" -#include "env.hpp" -#include "exceptions.hpp" -#include "fs.hpp" -#include "process.hpp" -#include "text.hpp" -#include "user.hpp" - -namespace impl = tools::fs; -#define IMPL_NAME "tools::fs" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static void cleanup_aux(const impl::path&, dev_t, bool); -static void cleanup_aux_dir(const impl::path&, const impl::file_info&, - bool); -static void do_unmount(const impl::path&); -static bool safe_access(const impl::path&, int, int); - -static const int access_f = 1 << 0; -static const int access_r = 1 << 1; -static const int access_w = 1 << 2; -static const int access_x = 1 << 3; - -//! -//! An implementation of access(2) but using the effective user value -//! instead of the real one. Also avoids false positives for root when -//! asking for execute permissions, which appear in SunOS. -//! -static -void -eaccess(const tools::fs::path& p, int mode) -{ - assert(mode & access_f || mode & access_r || - mode & access_w || mode & access_x); - - struct stat st; - if (lstat(p.c_str(), &st) == -1) - throw tools::system_error(IMPL_NAME "::eaccess", - "Cannot get information from file " + - p.str(), errno); - - /* Early return if we are only checking for existence and the file - * exists (stat call returned). */ - if (mode & access_f) - return; - - bool ok = false; - if (tools::user::is_root()) { - if (!ok && !(mode & access_x)) { - /* Allow root to read/write any file. */ - ok = true; - } - - if (!ok && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) { - /* Allow root to execute the file if any of its execution bits - * are set. */ - ok = true; - } - } else { - if (!ok && (tools::user::euid() == st.st_uid)) { - ok = ((mode & access_r) && (st.st_mode & S_IRUSR)) || - ((mode & access_w) && (st.st_mode & S_IWUSR)) || - ((mode & access_x) && (st.st_mode & S_IXUSR)); - } - if (!ok && tools::user::is_member_of_group(st.st_gid)) { - ok = ((mode & access_r) && (st.st_mode & S_IRGRP)) || - ((mode & access_w) && (st.st_mode & S_IWGRP)) || - ((mode & access_x) && (st.st_mode & S_IXGRP)); - } - if (!ok && ((tools::user::euid() != st.st_uid) && - !tools::user::is_member_of_group(st.st_gid))) { - ok = ((mode & access_r) && (st.st_mode & S_IROTH)) || - ((mode & access_w) && (st.st_mode & S_IWOTH)) || - ((mode & access_x) && (st.st_mode & S_IXOTH)); - } - } - - if (!ok) - throw tools::system_error(IMPL_NAME "::eaccess", "Access check failed", - EACCES); -} - -//! -//! \brief A controlled version of access(2). -//! -//! This function reimplements the standard access(2) system call to -//! safely control its exit status and raise an exception in case of -//! failure. -//! -static -bool -safe_access(const impl::path& p, int mode, int experr) -{ - try { - eaccess(p, mode); - return true; - } catch (const tools::system_error& e) { - if (e.code() == experr) - return false; - else - throw e; - } -} - -// The cleanup routines below are tricky: they are executed immediately after -// a test case's death, and after we have forcibly killed any stale processes. -// However, even if the processes are dead, this does not mean that the file -// system we are scanning is stable. In particular, if the test case has -// mounted file systems through fuse/puffs, the fact that the processes died -// does not mean that the file system is truly unmounted. -// -// The code below attempts to cope with this by catching errors and either -// ignoring them or retrying the actions on the same file/directory a few times -// before giving up. -static const int max_retries = 5; -static const int retry_delay_in_seconds = 1; - -// The erase parameter in this routine is to control nested mount points. -// We want to descend into a mount point to unmount anything that is -// mounted under it, but we do not want to delete any files while doing -// this traversal. In other words, we erase files until we cross the -// first mount point, and after that point we only scan and unmount. -static -void -cleanup_aux(const impl::path& p, dev_t parent_device, bool erase) -{ - try { - impl::file_info fi(p); - - if (fi.get_type() == impl::file_info::dir_type) - cleanup_aux_dir(p, fi, fi.get_device() == parent_device); - - if (fi.get_device() != parent_device) - do_unmount(p); - - if (erase) { - if (fi.get_type() == impl::file_info::dir_type) - impl::rmdir(p); - else - impl::remove(p); - } - } catch (const tools::system_error& e) { - if (e.code() != ENOENT && e.code() != ENOTDIR) - throw e; - } -} - -static -void -cleanup_aux_dir(const impl::path& p, const impl::file_info& fi, - bool erase) -{ - if (erase && ((fi.get_mode() & S_IRWXU) != S_IRWXU)) { - int retries = max_retries; -retry_chmod: - if (chmod(p.c_str(), fi.get_mode() | S_IRWXU) == -1) { - if (retries > 0) { - retries--; - ::sleep(retry_delay_in_seconds); - goto retry_chmod; - } else { - throw tools::system_error(IMPL_NAME "::cleanup(" + - p.str() + ")", "chmod(2) failed", - errno); - } - } - } - - std::set< std::string > subdirs; - { - bool ok = false; - int retries = max_retries; - while (!ok) { - assert(retries > 0); - try { - const impl::directory d(p); - subdirs = d.names(); - ok = true; - } catch (const tools::system_error& e) { - retries--; - if (retries == 0) - throw e; - ::sleep(retry_delay_in_seconds); - } - } - assert(ok); - } - - for (std::set< std::string >::const_iterator iter = subdirs.begin(); - iter != subdirs.end(); iter++) { - const std::string& name = *iter; - if (name != "." && name != "..") - cleanup_aux(p / name, fi.get_device(), erase); - } -} - -static -void -do_unmount(const impl::path& in_path) -{ - // At least, FreeBSD's unmount(2) requires the path to be absolute. - // Let's make it absolute in all cases just to be safe that this does - // not affect other systems. - const impl::path& abs_path = in_path.is_absolute() ? - in_path : in_path.to_absolute(); - -#if defined(HAVE_UNMOUNT) - int retries = max_retries; -retry_unmount: - if (unmount(abs_path.c_str(), 0) == -1) { - if (errno == EBUSY && retries > 0) { - retries--; - ::sleep(retry_delay_in_seconds); - goto retry_unmount; - } else { - throw tools::system_error(IMPL_NAME "::cleanup(" + in_path.str() + - ")", "unmount(2) failed", errno); - } - } -#else - // We could use umount(2) instead if it was available... but - // trying to do so under, e.g. Linux, is a nightmare because we - // also have to update /etc/mtab to match what we did. It is - // stools::fser to just leave the system-specific umount(8) tool deal - // with it, at least for now. - - const impl::path prog("umount"); - tools::process::argv_array argv("umount", abs_path.c_str(), NULL); - - tools::process::status s = tools::process::exec(prog, argv, - tools::process::stream_inherit(), tools::process::stream_inherit()); - if (!s.exited() || s.exitstatus() != EXIT_SUCCESS) - throw std::runtime_error("Call to unmount failed"); -#endif -} - -static -std::string -normalize(const std::string& in) -{ - assert(!in.empty()); - - std::string out; - - std::string::size_type pos = 0; - do { - const std::string::size_type next_pos = in.find('/', pos); - - const std::string component = in.substr(pos, next_pos - pos); - if (!component.empty()) { - if (pos == 0) - out += component; - else if (component != ".") - out += "/" + component; - } - - if (next_pos == std::string::npos) - pos = next_pos; - else - pos = next_pos + 1; - } while (pos != std::string::npos); - - return out.empty() ? "/" : out; -} - -// ------------------------------------------------------------------------ -// The "path" class. -// ------------------------------------------------------------------------ - -impl::path::path(const std::string& s) : - m_data(normalize(s)) -{ -} - -impl::path::~path(void) -{ -} - -const char* -impl::path::c_str(void) - const -{ - return m_data.c_str(); -} - -std::string -impl::path::str(void) - const -{ - return m_data; -} - -bool -impl::path::is_absolute(void) - const -{ - return !m_data.empty() && m_data[0] == '/'; -} - -bool -impl::path::is_root(void) - const -{ - return m_data == "/"; -} - -impl::path -impl::path::branch_path(void) - const -{ - const std::string::size_type endpos = m_data.rfind('/'); - if (endpos == std::string::npos) - return path("."); - else if (endpos == 0) - return path("/"); - else - return path(m_data.substr(0, endpos)); -} - -std::string -impl::path::leaf_name(void) - const -{ - std::string::size_type begpos = m_data.rfind('/'); - if (begpos == std::string::npos) - begpos = 0; - else - begpos++; - - return m_data.substr(begpos); -} - -impl::path -impl::path::to_absolute(void) - const -{ - assert(!is_absolute()); - return get_current_dir() / m_data; -} - -bool -impl::path::operator==(const path& p) - const -{ - return m_data == p.m_data; -} - -bool -impl::path::operator!=(const path& p) - const -{ - return m_data != p.m_data; -} - -impl::path -impl::path::operator/(const std::string& p) - const -{ - return path(m_data + "/" + normalize(p)); -} - -impl::path -impl::path::operator/(const path& p) - const -{ - return path(m_data) / p.m_data; -} - -bool -impl::path::operator<(const path& p) - const -{ - return std::strcmp(m_data.c_str(), p.m_data.c_str()) < 0; -} - -// ------------------------------------------------------------------------ -// The "file_info" class. -// ------------------------------------------------------------------------ - -const int impl::file_info::blk_type = 1; -const int impl::file_info::chr_type = 2; -const int impl::file_info::dir_type = 3; -const int impl::file_info::fifo_type = 4; -const int impl::file_info::lnk_type = 5; -const int impl::file_info::reg_type = 6; -const int impl::file_info::sock_type = 7; -const int impl::file_info::wht_type = 8; - -impl::file_info::file_info(const path& p) -{ - if (lstat(p.c_str(), &m_sb) == -1) - throw system_error(IMPL_NAME "::file_info", - "Cannot get information of " + p.str() + "; " + - "lstat(2) failed", errno); - - int type = m_sb.st_mode & S_IFMT; - switch (type) { - case S_IFBLK: m_type = blk_type; break; - case S_IFCHR: m_type = chr_type; break; - case S_IFDIR: m_type = dir_type; break; - case S_IFIFO: m_type = fifo_type; break; - case S_IFLNK: m_type = lnk_type; break; - case S_IFREG: m_type = reg_type; break; - case S_IFSOCK: m_type = sock_type; break; -#if defined(S_IFWHT) - case S_IFWHT: m_type = wht_type; break; -#endif - default: - throw system_error(IMPL_NAME "::file_info", "Unknown file type " - "error", EINVAL); - } -} - -impl::file_info::~file_info(void) -{ -} - -dev_t -impl::file_info::get_device(void) - const -{ - return m_sb.st_dev; -} - -ino_t -impl::file_info::get_inode(void) - const -{ - return m_sb.st_ino; -} - -mode_t -impl::file_info::get_mode(void) - const -{ - return m_sb.st_mode & ~S_IFMT; -} - -off_t -impl::file_info::get_size(void) - const -{ - return m_sb.st_size; -} - -int -impl::file_info::get_type(void) - const -{ - return m_type; -} - -bool -impl::file_info::is_owner_readable(void) - const -{ - return m_sb.st_mode & S_IRUSR; -} - -bool -impl::file_info::is_owner_writable(void) - const -{ - return m_sb.st_mode & S_IWUSR; -} - -bool -impl::file_info::is_owner_executable(void) - const -{ - return m_sb.st_mode & S_IXUSR; -} - -bool -impl::file_info::is_group_readable(void) - const -{ - return m_sb.st_mode & S_IRGRP; -} - -bool -impl::file_info::is_group_writable(void) - const -{ - return m_sb.st_mode & S_IWGRP; -} - -bool -impl::file_info::is_group_executable(void) - const -{ - return m_sb.st_mode & S_IXGRP; -} - -bool -impl::file_info::is_other_readable(void) - const -{ - return m_sb.st_mode & S_IROTH; -} - -bool -impl::file_info::is_other_writable(void) - const -{ - return m_sb.st_mode & S_IWOTH; -} - -bool -impl::file_info::is_other_executable(void) - const -{ - return m_sb.st_mode & S_IXOTH; -} - -// ------------------------------------------------------------------------ -// The "directory" class. -// ------------------------------------------------------------------------ - -impl::directory::directory(const path& p) -{ - DIR* dp = ::opendir(p.c_str()); - if (dp == NULL) - throw system_error(IMPL_NAME "::directory::directory(" + - p.str() + ")", "opendir(3) failed", errno); - - struct dirent* dep; - while ((dep = ::readdir(dp)) != NULL) { - path entryp = p / dep->d_name; - insert(value_type(dep->d_name, file_info(entryp))); - } - - if (::closedir(dp) == -1) - throw system_error(IMPL_NAME "::directory::directory(" + - p.str() + ")", "closedir(3) failed", errno); -} - -std::set< std::string > -impl::directory::names(void) - const -{ - std::set< std::string > ns; - - for (const_iterator iter = begin(); iter != end(); iter++) - ns.insert((*iter).first); - - return ns; -} - -// ------------------------------------------------------------------------ -// The "temp_dir" class. -// ------------------------------------------------------------------------ - -impl::temp_dir::temp_dir(const path& p) -{ - tools::auto_array< char > buf(new char[p.str().length() + 1]); - std::strcpy(buf.get(), p.c_str()); - if (::mkdtemp(buf.get()) == NULL) - throw tools::system_error(IMPL_NAME "::temp_dir::temp_dir(" + - p.str() + ")", "mkdtemp(3) failed", - errno); - - m_path.reset(new path(buf.get())); -} - -impl::temp_dir::~temp_dir(void) -{ - cleanup(*m_path); -} - -const impl::path& -impl::temp_dir::get_path(void) - const -{ - return *m_path; -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -bool -impl::exists(const path& p) -{ - try { - eaccess(p, access_f); - return true; - } catch (const system_error& e) { - if (e.code() == ENOENT) - return false; - else - throw; - } -} - -bool -impl::have_prog_in_path(const std::string& prog) -{ - assert(prog.find('/') == std::string::npos); - - // Do not bother to provide a default value for PATH. If it is not - // there something is broken in the user's environment. - if (!tools::env::has("PATH")) - throw std::runtime_error("PATH not defined in the environment"); - std::vector< std::string > dirs = - tools::text::split(tools::env::get("PATH"), ":"); - - bool found = false; - for (std::vector< std::string >::const_iterator iter = dirs.begin(); - !found && iter != dirs.end(); iter++) { - const path& dir = path(*iter); - - if (is_executable(dir / prog)) - found = true; - } - return found; -} - -bool -impl::is_executable(const path& p) -{ - if (!exists(p)) - return false; - return safe_access(p, access_x, EACCES); -} - -void -impl::remove(const path& p) -{ - if (file_info(p).get_type() == file_info::dir_type) - throw tools::system_error(IMPL_NAME "::remove(" + p.str() + ")", - "Is a directory", - EPERM); - if (::unlink(p.c_str()) == -1) - throw tools::system_error(IMPL_NAME "::remove(" + p.str() + ")", - "unlink(" + p.str() + ") failed", - errno); -} - -void -impl::rmdir(const path& p) -{ - if (::rmdir(p.c_str())) { - if (errno == EEXIST) { - /* Some operating systems (e.g. OpenSolaris 200906) return - * EEXIST instead of ENOTEMPTY for non-empty directories. - * Homogenize the return value so that callers don't need - * to bother about differences in operating systems. */ - errno = ENOTEMPTY; - } - throw system_error(IMPL_NAME "::rmdir", "Cannot remove directory", - errno); - } -} - -impl::path -impl::change_directory(const path& dir) -{ - path olddir = get_current_dir(); - - if (olddir != dir) { - if (::chdir(dir.c_str()) == -1) - throw tools::system_error(IMPL_NAME "::chdir(" + dir.str() + ")", - "chdir(2) failed", errno); - } - - return olddir; -} - -void -impl::cleanup(const path& p) -{ - impl::file_info fi(p); - cleanup_aux(p, fi.get_device(), true); -} - -impl::path -impl::get_current_dir(void) -{ - std::auto_ptr< char > cwd; -#if defined(HAVE_GETCWD_DYN) - cwd.reset(getcwd(NULL, 0)); -#else - cwd.reset(getcwd(NULL, MAXPATHLEN)); -#endif - if (cwd.get() == NULL) - throw tools::system_error(IMPL_NAME "::get_current_dir()", - "getcwd() failed", errno); - - return path(cwd.get()); -} diff --git a/unit/atf-src/tools/fs.hpp b/unit/atf-src/tools/fs.hpp deleted file mode 100644 index f45f8f1f27..0000000000 --- a/unit/atf-src/tools/fs.hpp +++ /dev/null @@ -1,377 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_FS_HPP) -#define TOOLS_FS_HPP - -extern "C" { -#include -#include -} - -#include -#include -#include -#include -#include -#include - -namespace tools { -namespace fs { - -// ------------------------------------------------------------------------ -// The "path" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A class to represent a path to a file. -//! -//! The path class represents the route to a file or directory in the -//! file system. All file manipulation operations use this class to -//! represent their arguments as it takes care of normalizing user-provided -//! strings and ensures they are valid. -//! -//! It is important to note that the file pointed to by a path need not -//! exist. -//! -class path { - //! - //! \brief Internal representation of a path. - //! - std::string m_data; - -public: - //! \brief Constructs a new path from a user-provided string. - //! - //! This constructor takes a string, either provided by the program's - //! code or by the user and constructs a new path object. The string - //! is normalized to not contain multiple delimiters together and to - //! remove any trailing one. - //! - //! The input string cannot be empty. - //! - explicit path(const std::string&); - - //! - //! \brief Destructor for the path class. - //! - ~path(void); - - //! - //! \brief Returns a pointer to a C-style string representing this path. - //! - const char* c_str(void) const; - - //! - //! \brief Returns a string representing this path. - //! XXX Really needed? - //! - std::string str(void) const; - - //! - //! \brief Returns the branch path of this path. - //! - //! Calculates and returns the branch path of this path. In other - //! words, it returns what the standard ::dirname function would return. - //! - path branch_path(void) const; - - //! - //! \brief Returns the leaf name of this path. - //! - //! Calculates and returns the leaf name of this path. In other words, - //! it returns what the standard ::basename function would return. - //! - std::string leaf_name(void) const; - - //! - //! \brief Checks whether this path is absolute or not. - //! - //! Returns a boolean indicating if this is an absolute path or not; - //! i.e. if it starts with a slash. - //! - bool is_absolute(void) const; - - //! - //! \brief Checks whether this path points to the root directory or not. - //! - //! Returns a boolean indicating if this is path points to the root - //! directory or not. The checks made by this are extremely simple (so - //! the results cannot always be trusted) but they are enough for our - //! modest sanity-checking needs. I.e. "/../" could return false. - //! - bool is_root(void) const; - - //! - //! \brief Converts the path to be absolute. - //! - //! \pre The path was not absolute. - //! - path to_absolute(void) const; - - //! - //! \brief Checks if two paths are equal. - //! - bool operator==(const path&) const; - - //! - //! \brief Checks if two paths are different. - //! - bool operator!=(const path&) const; - - //! - //! \brief Concatenates a path with a string. - //! - //! Constructs a new path object that is the concatenation of the - //! left-hand path with the right-hand string. The string is normalized - //! before the concatenation, and a path delimiter is introduced between - //! the two components if needed. - //! - path operator/(const std::string&) const; - - //! - //! \brief Concatenates a path with another path. - //! - //! Constructs a new path object that is the concatenation of the - //! left-hand path with the right-hand one. A path delimiter is - //! introduced between the two components if needed. - //! - path operator/(const path&) const; - - //! - //! \brief Checks if a path has to be sorted before another one - //! lexicographically. - //! - bool operator<(const path&) const; -}; - -// ------------------------------------------------------------------------ -// The "file_info" class. -// ------------------------------------------------------------------------ - -class directory; - -//! -//! \brief A class that contains information about a file. -//! -//! The file_info class holds information about an specific file that -//! exists in the file system. -//! -class file_info { - int m_type; - struct stat m_sb; - -public: - //! - //! \brief The file's type. - //! - static const int blk_type; - static const int chr_type; - static const int dir_type; - static const int fifo_type; - static const int lnk_type; - static const int reg_type; - static const int sock_type; - static const int wht_type; - - //! - //! \brief Constructs a new file_info based on a given file. - //! - //! This constructor creates a new file_info object and fills it with - //! the data returned by ::stat when run on the given file, which must - //! exist. - //! - explicit file_info(const path&); - - //! - //! \brief The destructor. - //! - ~file_info(void); - - //! - //! \brief Returns the device containing the file. - //! - dev_t get_device(void) const; - - //! - //! \brief Returns the file's inode. - //! - ino_t get_inode(void) const; - - //! - //! \brief Returns the file's permissions. - //! - mode_t get_mode(void) const; - - //! - //! \brief Returns the file's size. - //! - off_t get_size(void) const; - - //! - //! \brief Returns the file's type. - //! - int get_type(void) const; - - //! - //! \brief Returns whether the file is readable by its owner or not. - //! - bool is_owner_readable(void) const; - - //! - //! \brief Returns whether the file is writable by its owner or not. - //! - bool is_owner_writable(void) const; - - //! - //! \brief Returns whether the file is executable by its owner or not. - //! - bool is_owner_executable(void) const; - - //! - //! \brief Returns whether the file is readable by the users belonging - //! to its group or not. - //! - bool is_group_readable(void) const; - - //! - //! \brief Returns whether the file is writable the users belonging to - //! its group or not. - //! - bool is_group_writable(void) const; - - //! - //! \brief Returns whether the file is executable by the users - //! belonging to its group or not. - //! - bool is_group_executable(void) const; - - //! - //! \brief Returns whether the file is readable by people different - //! than the owner and those belonging to the group or not. - //! - bool is_other_readable(void) const; - - //! - //! \brief Returns whether the file is write by people different - //! than the owner and those belonging to the group or not. - //! - bool is_other_writable(void) const; - - //! - //! \brief Returns whether the file is executable by people different - //! than the owner and those belonging to the group or not. - //! - bool is_other_executable(void) const; -}; - -// ------------------------------------------------------------------------ -// The "directory" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A class representing a file system directory. -//! -//! The directory class represents a group of files in the file system and -//! corresponds to exactly one directory. -//! -class directory : public std::map< std::string, file_info > { -public: - //! - //! \brief Constructs a new directory. - //! - //! Constructs a new directory object representing the given path. - //! The directory must exist at creation time as the contents of the - //! class are gathered from it. - //! - directory(const path&); - - //! - //! \brief Returns the file names of the files in the directory. - //! - //! Returns the leaf names of all files contained in the directory. - //! I.e. the keys of the directory map. - //! - std::set< std::string > names(void) const; -}; - -// ------------------------------------------------------------------------ -// The "temp_dir" class. -// ------------------------------------------------------------------------ - -class temp_dir { - std::auto_ptr< tools::fs::path > m_path; - -public: - temp_dir(const tools::fs::path&); - ~temp_dir(void); - - const tools::fs::path& get_path(void) const; -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -//! -//! \brief Checks if the given path exists. -//! -bool exists(const path&); - -//! -//! \brief Looks for the given program in the PATH. -//! -//! Given a program name (without slashes) looks for it in the path and -//! returns its full path name if found, otherwise an empty path. -//! -bool have_prog_in_path(const std::string&); - -//! -//! \brief Checks if the given path exists, is accessible and is executable. -//! -bool is_executable(const path&); - -//! -//! \brief Removes a given file. -//! -void remove(const path&); - -//! -//! \brief Removes an empty directory. -//! -void rmdir(const path&); - -tools::fs::path change_directory(const tools::fs::path&); -void cleanup(const tools::fs::path&); -tools::fs::path get_current_dir(void); - -} // namespace fs -} // namespace tools - -#endif // !defined(TOOLS_FS_HPP) diff --git a/unit/atf-src/tools/fs_test.cpp b/unit/atf-src/tools/fs_test.cpp deleted file mode 100644 index 5f482a4cdb..0000000000 --- a/unit/atf-src/tools/fs_test.cpp +++ /dev/null @@ -1,743 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -} - -#include -#include -#include - -#include - -#include "exceptions.hpp" -#include "fs.hpp" -#include "user.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -void -create_file(const char *name) -{ - std::ofstream os(name); - os.close(); -} - -static -void -create_files(void) -{ - ::mkdir("files", 0755); - ::mkdir("files/dir", 0755); - - std::ofstream os("files/reg"); - os.close(); - - // TODO: Should create all other file types (blk, chr, fifo, lnk, sock) - // and test for them... but the underlying file system may not support - // most of these. Specially as we are working on /tmp, which can be - // mounted with flags such as "nodev". See how to deal with this - // situation. -} - -// ------------------------------------------------------------------------ -// Test cases for the "path" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(path_normalize); -ATF_TEST_CASE_HEAD(path_normalize) -{ - set_md_var("descr", "Tests the path's normalization"); -} -ATF_TEST_CASE_BODY(path_normalize) -{ - using tools::fs::path; - - ATF_REQUIRE_EQ(path(".").str(), "."); - ATF_REQUIRE_EQ(path("..").str(), ".."); - - ATF_REQUIRE_EQ(path("foo").str(), "foo"); - ATF_REQUIRE_EQ(path("foo/bar").str(), "foo/bar"); - ATF_REQUIRE_EQ(path("foo/bar/").str(), "foo/bar"); - - ATF_REQUIRE_EQ(path("/foo").str(), "/foo"); - ATF_REQUIRE_EQ(path("/foo/bar").str(), "/foo/bar"); - ATF_REQUIRE_EQ(path("/foo/bar/").str(), "/foo/bar"); - - ATF_REQUIRE_EQ(path("///foo").str(), "/foo"); - ATF_REQUIRE_EQ(path("///foo///bar").str(), "/foo/bar"); - ATF_REQUIRE_EQ(path("///foo///bar///").str(), "/foo/bar"); -} - -ATF_TEST_CASE(path_is_absolute); -ATF_TEST_CASE_HEAD(path_is_absolute) -{ - set_md_var("descr", "Tests the path::is_absolute function"); -} -ATF_TEST_CASE_BODY(path_is_absolute) -{ - using tools::fs::path; - - ATF_REQUIRE( path("/").is_absolute()); - ATF_REQUIRE( path("////").is_absolute()); - ATF_REQUIRE( path("////a").is_absolute()); - ATF_REQUIRE( path("//a//").is_absolute()); - ATF_REQUIRE(!path("a////").is_absolute()); - ATF_REQUIRE(!path("../foo").is_absolute()); -} - -ATF_TEST_CASE(path_is_root); -ATF_TEST_CASE_HEAD(path_is_root) -{ - set_md_var("descr", "Tests the path::is_root function"); -} -ATF_TEST_CASE_BODY(path_is_root) -{ - using tools::fs::path; - - ATF_REQUIRE( path("/").is_root()); - ATF_REQUIRE( path("////").is_root()); - ATF_REQUIRE(!path("////a").is_root()); - ATF_REQUIRE(!path("//a//").is_root()); - ATF_REQUIRE(!path("a////").is_root()); - ATF_REQUIRE(!path("../foo").is_root()); -} - -ATF_TEST_CASE(path_branch_path); -ATF_TEST_CASE_HEAD(path_branch_path) -{ - set_md_var("descr", "Tests the path::branch_path function"); -} -ATF_TEST_CASE_BODY(path_branch_path) -{ - using tools::fs::path; - - ATF_REQUIRE_EQ(path(".").branch_path().str(), "."); - ATF_REQUIRE_EQ(path("foo").branch_path().str(), "."); - ATF_REQUIRE_EQ(path("foo/bar").branch_path().str(), "foo"); - ATF_REQUIRE_EQ(path("/foo").branch_path().str(), "/"); - ATF_REQUIRE_EQ(path("/foo/bar").branch_path().str(), "/foo"); -} - -ATF_TEST_CASE(path_leaf_name); -ATF_TEST_CASE_HEAD(path_leaf_name) -{ - set_md_var("descr", "Tests the path::leaf_name function"); -} -ATF_TEST_CASE_BODY(path_leaf_name) -{ - using tools::fs::path; - - ATF_REQUIRE_EQ(path(".").leaf_name(), "."); - ATF_REQUIRE_EQ(path("foo").leaf_name(), "foo"); - ATF_REQUIRE_EQ(path("foo/bar").leaf_name(), "bar"); - ATF_REQUIRE_EQ(path("/foo").leaf_name(), "foo"); - ATF_REQUIRE_EQ(path("/foo/bar").leaf_name(), "bar"); -} - -ATF_TEST_CASE(path_compare_equal); -ATF_TEST_CASE_HEAD(path_compare_equal) -{ - set_md_var("descr", "Tests the comparison for equality between paths"); -} -ATF_TEST_CASE_BODY(path_compare_equal) -{ - using tools::fs::path; - - ATF_REQUIRE(path("/") == path("///")); - ATF_REQUIRE(path("/a") == path("///a")); - ATF_REQUIRE(path("/a") == path("///a///")); - - ATF_REQUIRE(path("a/b/c") == path("a//b//c")); - ATF_REQUIRE(path("a/b/c") == path("a//b//c///")); -} - -ATF_TEST_CASE(path_compare_different); -ATF_TEST_CASE_HEAD(path_compare_different) -{ - set_md_var("descr", "Tests the comparison for difference between paths"); -} -ATF_TEST_CASE_BODY(path_compare_different) -{ - using tools::fs::path; - - ATF_REQUIRE(path("/") != path("//a/")); - ATF_REQUIRE(path("/a") != path("a///")); - - ATF_REQUIRE(path("a/b/c") != path("a/b")); - ATF_REQUIRE(path("a/b/c") != path("a//b")); - ATF_REQUIRE(path("a/b/c") != path("/a/b/c")); - ATF_REQUIRE(path("a/b/c") != path("/a//b//c")); -} - -ATF_TEST_CASE(path_concat); -ATF_TEST_CASE_HEAD(path_concat) -{ - set_md_var("descr", "Tests the concatenation of multiple paths"); -} -ATF_TEST_CASE_BODY(path_concat) -{ - using tools::fs::path; - - ATF_REQUIRE_EQ((path("foo") / "bar").str(), "foo/bar"); - ATF_REQUIRE_EQ((path("foo/") / "/bar").str(), "foo/bar"); - ATF_REQUIRE_EQ((path("foo/") / "/bar/baz").str(), "foo/bar/baz"); - ATF_REQUIRE_EQ((path("foo/") / "///bar///baz").str(), "foo/bar/baz"); -} - -ATF_TEST_CASE(path_to_absolute); -ATF_TEST_CASE_HEAD(path_to_absolute) -{ - set_md_var("descr", "Tests the conversion of a relative path to an " - "absolute one"); -} -ATF_TEST_CASE_BODY(path_to_absolute) -{ - using tools::fs::file_info; - using tools::fs::path; - - create_files(); - - { - const path p("."); - path pa = p.to_absolute(); - ATF_REQUIRE(pa.is_absolute()); - - file_info fi(p); - file_info fia(pa); - ATF_REQUIRE_EQ(fi.get_device(), fia.get_device()); - ATF_REQUIRE_EQ(fi.get_inode(), fia.get_inode()); - } - - { - const path p("files/reg"); - path pa = p.to_absolute(); - ATF_REQUIRE(pa.is_absolute()); - - file_info fi(p); - file_info fia(pa); - ATF_REQUIRE_EQ(fi.get_device(), fia.get_device()); - ATF_REQUIRE_EQ(fi.get_inode(), fia.get_inode()); - } -} - -ATF_TEST_CASE(path_op_less); -ATF_TEST_CASE_HEAD(path_op_less) -{ - set_md_var("descr", "Tests that the path's less-than operator works"); -} -ATF_TEST_CASE_BODY(path_op_less) -{ - using tools::fs::path; - - create_files(); - - ATF_REQUIRE(!(path("aaa") < path("aaa"))); - - ATF_REQUIRE( path("aab") < path("abc")); - ATF_REQUIRE(!(path("abc") < path("aab"))); -} - -// ------------------------------------------------------------------------ -// Test cases for the "directory" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(directory_read); -ATF_TEST_CASE_HEAD(directory_read) -{ - set_md_var("descr", "Tests the directory class creation, which reads " - "the contents of a directory"); -} -ATF_TEST_CASE_BODY(directory_read) -{ - using tools::fs::directory; - using tools::fs::path; - - create_files(); - - directory d(path("files")); - ATF_REQUIRE_EQ(d.size(), 4); - ATF_REQUIRE(d.find(".") != d.end()); - ATF_REQUIRE(d.find("..") != d.end()); - ATF_REQUIRE(d.find("dir") != d.end()); - ATF_REQUIRE(d.find("reg") != d.end()); -} - -ATF_TEST_CASE(directory_file_info); -ATF_TEST_CASE_HEAD(directory_file_info) -{ - set_md_var("descr", "Tests that the file_info objects attached to the " - "directory are valid"); -} -ATF_TEST_CASE_BODY(directory_file_info) -{ - using tools::fs::directory; - using tools::fs::file_info; - using tools::fs::path; - - create_files(); - - directory d(path("files")); - - { - directory::const_iterator iter = d.find("dir"); - ATF_REQUIRE(iter != d.end()); - const file_info& fi = (*iter).second; - ATF_REQUIRE(fi.get_type() == file_info::dir_type); - } - - { - directory::const_iterator iter = d.find("reg"); - ATF_REQUIRE(iter != d.end()); - const file_info& fi = (*iter).second; - ATF_REQUIRE(fi.get_type() == file_info::reg_type); - } -} - -ATF_TEST_CASE(directory_names); -ATF_TEST_CASE_HEAD(directory_names) -{ - set_md_var("descr", "Tests the directory's names method"); -} -ATF_TEST_CASE_BODY(directory_names) -{ - using tools::fs::directory; - using tools::fs::path; - - create_files(); - - directory d(path("files")); - std::set< std::string > ns = d.names(); - ATF_REQUIRE_EQ(ns.size(), 4); - ATF_REQUIRE(ns.find(".") != ns.end()); - ATF_REQUIRE(ns.find("..") != ns.end()); - ATF_REQUIRE(ns.find("dir") != ns.end()); - ATF_REQUIRE(ns.find("reg") != ns.end()); -} - -// ------------------------------------------------------------------------ -// Test cases for the "file_info" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(file_info_stat); -ATF_TEST_CASE_HEAD(file_info_stat) -{ - set_md_var("descr", "Tests the file_info creation and its basic contents"); -} -ATF_TEST_CASE_BODY(file_info_stat) -{ - using tools::fs::file_info; - using tools::fs::path; - - create_files(); - - { - path p("files/dir"); - file_info fi(p); - ATF_REQUIRE(fi.get_type() == file_info::dir_type); - } - - { - path p("files/reg"); - file_info fi(p); - ATF_REQUIRE(fi.get_type() == file_info::reg_type); - } -} - -ATF_TEST_CASE(file_info_perms); -ATF_TEST_CASE_HEAD(file_info_perms) -{ - set_md_var("descr", "Tests the file_info methods to get the file's " - "permissions"); -} -ATF_TEST_CASE_BODY(file_info_perms) -{ - using tools::fs::file_info; - using tools::fs::path; - - path p("file"); - - std::ofstream os(p.c_str()); - os.close(); - -#define perms(ur, uw, ux, gr, gw, gx, othr, othw, othx) \ - { \ - file_info fi(p); \ - ATF_REQUIRE(fi.is_owner_readable() == ur); \ - ATF_REQUIRE(fi.is_owner_writable() == uw); \ - ATF_REQUIRE(fi.is_owner_executable() == ux); \ - ATF_REQUIRE(fi.is_group_readable() == gr); \ - ATF_REQUIRE(fi.is_group_writable() == gw); \ - ATF_REQUIRE(fi.is_group_executable() == gx); \ - ATF_REQUIRE(fi.is_other_readable() == othr); \ - ATF_REQUIRE(fi.is_other_writable() == othw); \ - ATF_REQUIRE(fi.is_other_executable() == othx); \ - } - - ::chmod(p.c_str(), 0000); - perms(false, false, false, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0001); - perms(false, false, false, false, false, false, false, false, true); - - ::chmod(p.c_str(), 0010); - perms(false, false, false, false, false, true, false, false, false); - - ::chmod(p.c_str(), 0100); - perms(false, false, true, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0002); - perms(false, false, false, false, false, false, false, true, false); - - ::chmod(p.c_str(), 0020); - perms(false, false, false, false, true, false, false, false, false); - - ::chmod(p.c_str(), 0200); - perms(false, true, false, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0004); - perms(false, false, false, false, false, false, true, false, false); - - ::chmod(p.c_str(), 0040); - perms(false, false, false, true, false, false, false, false, false); - - ::chmod(p.c_str(), 0400); - perms(true, false, false, false, false, false, false, false, false); - - ::chmod(p.c_str(), 0644); - perms(true, true, false, true, false, false, true, false, false); - - ::chmod(p.c_str(), 0755); - perms(true, true, true, true, false, true, true, false, true); - - ::chmod(p.c_str(), 0777); - perms(true, true, true, true, true, true, true, true, true); - -#undef perms -} - -// ------------------------------------------------------------------------ -// Test cases for the "temp_dir" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(temp_dir_raii); -ATF_TEST_CASE_HEAD(temp_dir_raii) -{ - set_md_var("descr", "Tests the RAII behavior of the temp_dir class"); -} -ATF_TEST_CASE_BODY(temp_dir_raii) -{ - tools::fs::path t1("non-existent"); - tools::fs::path t2("non-existent"); - - { - tools::fs::path tmpl("testdir.XXXXXX"); - tools::fs::temp_dir td1(tmpl); - tools::fs::temp_dir td2(tmpl); - t1 = td1.get_path(); - t2 = td2.get_path(); - ATF_REQUIRE(t1.str().find("XXXXXX") == std::string::npos); - ATF_REQUIRE(t2.str().find("XXXXXX") == std::string::npos); - ATF_REQUIRE(t1 != t2); - ATF_REQUIRE(!tools::fs::exists(tmpl)); - ATF_REQUIRE( tools::fs::exists(t1)); - ATF_REQUIRE( tools::fs::exists(t2)); - - tools::fs::file_info fi1(t1); - ATF_REQUIRE( fi1.is_owner_readable()); - ATF_REQUIRE( fi1.is_owner_writable()); - ATF_REQUIRE( fi1.is_owner_executable()); - ATF_REQUIRE(!fi1.is_group_readable()); - ATF_REQUIRE(!fi1.is_group_writable()); - ATF_REQUIRE(!fi1.is_group_executable()); - ATF_REQUIRE(!fi1.is_other_readable()); - ATF_REQUIRE(!fi1.is_other_writable()); - ATF_REQUIRE(!fi1.is_other_executable()); - - tools::fs::file_info fi2(t2); - ATF_REQUIRE( fi2.is_owner_readable()); - ATF_REQUIRE( fi2.is_owner_writable()); - ATF_REQUIRE( fi2.is_owner_executable()); - ATF_REQUIRE(!fi2.is_group_readable()); - ATF_REQUIRE(!fi2.is_group_writable()); - ATF_REQUIRE(!fi2.is_group_executable()); - ATF_REQUIRE(!fi2.is_other_readable()); - ATF_REQUIRE(!fi2.is_other_writable()); - ATF_REQUIRE(!fi2.is_other_executable()); - } - - ATF_REQUIRE(t1.str() != "non-existent"); - ATF_REQUIRE(!tools::fs::exists(t1)); - ATF_REQUIRE(t2.str() != "non-existent"); - ATF_REQUIRE(!tools::fs::exists(t2)); -} - - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(exists); -ATF_TEST_CASE_HEAD(exists) -{ - set_md_var("descr", "Tests the exists function"); -} -ATF_TEST_CASE_BODY(exists) -{ - using tools::fs::exists; - using tools::fs::path; - - create_files(); - - ATF_REQUIRE( exists(path("files"))); - ATF_REQUIRE(!exists(path("file"))); - ATF_REQUIRE(!exists(path("files2"))); - - ATF_REQUIRE( exists(path("files/."))); - ATF_REQUIRE( exists(path("files/.."))); - ATF_REQUIRE( exists(path("files/dir"))); - ATF_REQUIRE( exists(path("files/reg"))); - ATF_REQUIRE(!exists(path("files/foo"))); -} - -ATF_TEST_CASE(is_executable); -ATF_TEST_CASE_HEAD(is_executable) -{ - set_md_var("descr", "Tests the is_executable function"); -} -ATF_TEST_CASE_BODY(is_executable) -{ - using tools::fs::is_executable; - using tools::fs::path; - - create_files(); - - ATF_REQUIRE( is_executable(path("files"))); - ATF_REQUIRE( is_executable(path("files/."))); - ATF_REQUIRE( is_executable(path("files/.."))); - ATF_REQUIRE( is_executable(path("files/dir"))); - - ATF_REQUIRE(!is_executable(path("non-existent"))); - - ATF_REQUIRE(!is_executable(path("files/reg"))); - ATF_REQUIRE(::chmod("files/reg", 0755) != -1); - ATF_REQUIRE( is_executable(path("files/reg"))); -} - -ATF_TEST_CASE(remove); -ATF_TEST_CASE_HEAD(remove) -{ - set_md_var("descr", "Tests the remove function"); -} -ATF_TEST_CASE_BODY(remove) -{ - using tools::fs::exists; - using tools::fs::path; - using tools::fs::remove; - - create_files(); - - ATF_REQUIRE( exists(path("files/reg"))); - remove(path("files/reg")); - ATF_REQUIRE(!exists(path("files/reg"))); - - ATF_REQUIRE( exists(path("files/dir"))); - ATF_REQUIRE_THROW(tools::system_error, remove(path("files/dir"))); - ATF_REQUIRE( exists(path("files/dir"))); -} - -ATF_TEST_CASE(cleanup); -ATF_TEST_CASE_HEAD(cleanup) -{ - set_md_var("descr", "Tests the cleanup function"); -} -ATF_TEST_CASE_BODY(cleanup) -{ - using tools::fs::cleanup; - - ::mkdir("root", 0755); - ::mkdir("root/dir", 0755); - ::mkdir("root/dir/1", 0100); - ::mkdir("root/dir/2", 0644); - create_file("root/reg"); - - tools::fs::path p("root"); - ATF_REQUIRE(tools::fs::exists(p)); - ATF_REQUIRE(tools::fs::exists(p / "dir")); - ATF_REQUIRE(tools::fs::exists(p / "dir/1")); - ATF_REQUIRE(tools::fs::exists(p / "dir/2")); - ATF_REQUIRE(tools::fs::exists(p / "reg")); - cleanup(p); - ATF_REQUIRE(!tools::fs::exists(p)); -} - -ATF_TEST_CASE(cleanup_eacces_on_root); -ATF_TEST_CASE_HEAD(cleanup_eacces_on_root) -{ - set_md_var("descr", "Tests the cleanup function"); -} -ATF_TEST_CASE_BODY(cleanup_eacces_on_root) -{ - using tools::fs::cleanup; - - ::mkdir("aux", 0755); - ::mkdir("aux/root", 0755); - ATF_REQUIRE(::chmod("aux", 0555) != -1); - - try { - cleanup(tools::fs::path("aux/root")); - ATF_REQUIRE(tools::user::is_root()); - } catch (const tools::system_error& e) { - ATF_REQUIRE(!tools::user::is_root()); - ATF_REQUIRE_EQ(EACCES, e.code()); - } -} - -ATF_TEST_CASE(cleanup_eacces_on_subdir); -ATF_TEST_CASE_HEAD(cleanup_eacces_on_subdir) -{ - set_md_var("descr", "Tests the cleanup function"); -} -ATF_TEST_CASE_BODY(cleanup_eacces_on_subdir) -{ - using tools::fs::cleanup; - - ::mkdir("root", 0755); - ::mkdir("root/1", 0755); - ::mkdir("root/1/2", 0755); - ::mkdir("root/1/2/3", 0755); - ATF_REQUIRE(::chmod("root/1/2", 0555) != -1); - ATF_REQUIRE(::chmod("root/1", 0555) != -1); - - const tools::fs::path p("root"); - cleanup(p); - ATF_REQUIRE(!tools::fs::exists(p)); -} - -ATF_TEST_CASE(change_directory); -ATF_TEST_CASE_HEAD(change_directory) -{ - set_md_var("descr", "Tests the change_directory function"); -} -ATF_TEST_CASE_BODY(change_directory) -{ - using tools::fs::change_directory; - using tools::fs::get_current_dir; - - ::mkdir("files", 0755); - ::mkdir("files/dir", 0755); - create_file("files/reg"); - - const tools::fs::path old = get_current_dir(); - - ATF_REQUIRE_THROW(tools::system_error, - change_directory(tools::fs::path("files/reg"))); - ATF_REQUIRE(get_current_dir() == old); - - tools::fs::path old2 = change_directory(tools::fs::path("files")); - ATF_REQUIRE(old2 == old); - tools::fs::path old3 = change_directory(tools::fs::path("dir")); - ATF_REQUIRE(old3 == old2 / "files"); - tools::fs::path old4 = change_directory(tools::fs::path("../..")); - ATF_REQUIRE(old4 == old3 / "dir"); - ATF_REQUIRE(get_current_dir() == old); -} - -ATF_TEST_CASE(get_current_dir); -ATF_TEST_CASE_HEAD(get_current_dir) -{ - set_md_var("descr", "Tests the get_current_dir function"); -} -ATF_TEST_CASE_BODY(get_current_dir) -{ - using tools::fs::change_directory; - using tools::fs::get_current_dir; - - ::mkdir("files", 0755); - ::mkdir("files/dir", 0755); - create_file("files/reg"); - - tools::fs::path curdir = get_current_dir(); - change_directory(tools::fs::path(".")); - ATF_REQUIRE(get_current_dir() == curdir); - change_directory(tools::fs::path("files")); - ATF_REQUIRE(get_current_dir() == curdir / "files"); - change_directory(tools::fs::path("dir")); - ATF_REQUIRE(get_current_dir() == curdir / "files/dir"); - change_directory(tools::fs::path("..")); - ATF_REQUIRE(get_current_dir() == curdir / "files"); - change_directory(tools::fs::path("..")); - ATF_REQUIRE(get_current_dir() == curdir); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the tests for the "path" class. - ATF_ADD_TEST_CASE(tcs, path_normalize); - ATF_ADD_TEST_CASE(tcs, path_is_absolute); - ATF_ADD_TEST_CASE(tcs, path_is_root); - ATF_ADD_TEST_CASE(tcs, path_branch_path); - ATF_ADD_TEST_CASE(tcs, path_leaf_name); - ATF_ADD_TEST_CASE(tcs, path_compare_equal); - ATF_ADD_TEST_CASE(tcs, path_compare_different); - ATF_ADD_TEST_CASE(tcs, path_concat); - ATF_ADD_TEST_CASE(tcs, path_to_absolute); - ATF_ADD_TEST_CASE(tcs, path_op_less); - - // Add the tests for the "file_info" class. - ATF_ADD_TEST_CASE(tcs, file_info_stat); - ATF_ADD_TEST_CASE(tcs, file_info_perms); - - // Add the tests for the "directory" class. - ATF_ADD_TEST_CASE(tcs, directory_read); - ATF_ADD_TEST_CASE(tcs, directory_names); - ATF_ADD_TEST_CASE(tcs, directory_file_info); - - // Add the tests for the "temp_dir" class. - ATF_ADD_TEST_CASE(tcs, temp_dir_raii); - - // Add the tests for the free functions. - ATF_ADD_TEST_CASE(tcs, exists); - ATF_ADD_TEST_CASE(tcs, is_executable); - ATF_ADD_TEST_CASE(tcs, remove); - ATF_ADD_TEST_CASE(tcs, cleanup); - ATF_ADD_TEST_CASE(tcs, cleanup_eacces_on_root); - ATF_ADD_TEST_CASE(tcs, cleanup_eacces_on_subdir); - ATF_ADD_TEST_CASE(tcs, change_directory); - ATF_ADD_TEST_CASE(tcs, get_current_dir); -} diff --git a/unit/atf-src/tools/generate-revision.sh b/unit/atf-src/tools/generate-revision.sh deleted file mode 100755 index 169be85f94..0000000000 --- a/unit/atf-src/tools/generate-revision.sh +++ /dev/null @@ -1,142 +0,0 @@ -#! /bin/sh -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -# Generates a header file with information about the revision used to -# build ATF. -# - -set -e - -Prog_Name=${0##*/} - -GIT= -ROOT= - -# -# err message -# -err() { - echo "${Prog_Name}: ${@}" 1>&2 - exit 1 -} - -# -# call_git args -# -call_git() { - ( cd "${ROOT}" && "${GIT}" "${@}" ) -} - -# -# generate_from_dist revfile version -# -generate_from_dist() { - revfile=${1}; shift - version=${1}; shift - - >${revfile} - - echo "#define PACKAGE_REVISION_TYPE_DIST" >>${revfile} -} - -# -# generate_from_git revfile -# -generate_from_git() { - revfile=${1} - - rev_base_id=$(call_git rev-parse HEAD) - rev_branch=$(call_git branch | grep '^\* ' | cut -d ' ' -f 2-) - rev_date=$(call_git log -1 | grep '^Date:' | sed -e 's,^Date:[ \t]*,,') - if [ -z "$(call_git status -s)" ]; then - rev_modified=false - else - rev_modified=true - fi - - >${revfile} - - echo "#define PACKAGE_REVISION_TYPE_GIT" >>${revfile} - - echo "#define PACKAGE_REVISION_BRANCH \"${rev_branch}\"" >>${revfile} - echo "#define PACKAGE_REVISION_BASE \"${rev_base_id}\"" >>${revfile} - - if [ ${rev_modified} = true ]; then - echo "#define PACKAGE_REVISION_MODIFIED 1" >>${revfile} - fi - - echo "#define PACKAGE_REVISION_DATE \"${rev_date}\"" >>${revfile} -} - -# -# main -# -# Entry point. -# -main() { - outfile= - version= - while getopts :g:r:o:v: arg; do - case ${arg} in - g) - GIT=${OPTARG} - ;; - o) - outfile=${OPTARG} - ;; - r) - ROOT=${OPTARG} - ;; - v) - version=${OPTARG} - ;; - *) - err "Unknown option ${arg}" - ;; - esac - done - [ -n "${ROOT}" ] || \ - err "Must specify the top-level source directory with -r" - [ -n "${outfile}" ] || \ - err "Must specify an output file with -o" - [ -n "${version}" ] || \ - err "Must specify a version number with -v" - - if [ -n "${GIT}" -a -d ${ROOT}/.git ]; then - generate_from_git ${outfile} - else - generate_from_dist ${outfile} ${version} - fi -} - -main "${@}" - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/tools/io.cpp b/unit/atf-src/tools/io.cpp deleted file mode 100644 index 4cf8f6a4bf..0000000000 --- a/unit/atf-src/tools/io.cpp +++ /dev/null @@ -1,356 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -#include -#include -} - -#include -#include -#include - -#include "auto_array.hpp" -#include "exceptions.hpp" -#include "io.hpp" - -namespace impl = tools::io; -#define IMPL_NAME "tools::io" - -// ------------------------------------------------------------------------ -// The "file_handle" class. -// ------------------------------------------------------------------------ - -impl::file_handle::file_handle(void) : - m_handle(invalid_value()) -{ -} - -impl::file_handle::file_handle(handle_type h) : - m_handle(h) -{ - assert(m_handle != invalid_value()); -} - -impl::file_handle::file_handle(const file_handle& fh) : - m_handle(fh.m_handle) -{ - fh.m_handle = invalid_value(); -} - -impl::file_handle::~file_handle(void) -{ - if (is_valid()) - close(); -} - -impl::file_handle& -impl::file_handle::operator=(const file_handle& fh) -{ - m_handle = fh.m_handle; - fh.m_handle = invalid_value(); - - return *this; -} - -bool -impl::file_handle::is_valid(void) - const -{ - return m_handle != invalid_value(); -} - -void -impl::file_handle::close(void) -{ - assert(is_valid()); - - ::close(m_handle); - - m_handle = invalid_value(); -} - -impl::file_handle::handle_type -impl::file_handle::disown(void) -{ - assert(is_valid()); - - handle_type h = m_handle; - m_handle = invalid_value(); - return h; -} - -impl::file_handle::handle_type -impl::file_handle::get(void) - const -{ - assert(is_valid()); - - return m_handle; -} - -void -impl::file_handle::posix_remap(handle_type h) -{ - assert(is_valid()); - - if (m_handle == h) - return; - - if (::dup2(m_handle, h) == -1) - throw tools::system_error(IMPL_NAME "::file_handle::posix_remap", - "dup2(2) failed", errno); - - if (::close(m_handle) == -1) { - ::close(h); - throw tools::system_error(IMPL_NAME "::file_handle::posix_remap", - "close(2) failed", errno); - } - - m_handle = h; -} - -impl::file_handle::handle_type -impl::file_handle::invalid_value(void) -{ - return -1; -} - -// ------------------------------------------------------------------------ -// The "systembuf" class. -// ------------------------------------------------------------------------ - -impl::systembuf::systembuf(handle_type h, std::size_t bufsize) : - m_handle(h), - m_bufsize(bufsize), - m_read_buf(NULL), - m_write_buf(NULL) -{ - assert(m_handle >= 0); - assert(m_bufsize > 0); - - try { - m_read_buf = new char[bufsize]; - m_write_buf = new char[bufsize]; - } catch (...) { - if (m_read_buf != NULL) - delete [] m_read_buf; - if (m_write_buf != NULL) - delete [] m_write_buf; - throw; - } - - setp(m_write_buf, m_write_buf + m_bufsize); -} - -impl::systembuf::~systembuf(void) -{ - delete [] m_read_buf; - delete [] m_write_buf; -} - -impl::systembuf::int_type -impl::systembuf::underflow(void) -{ - assert(gptr() >= egptr()); - - bool ok; - ssize_t cnt = ::read(m_handle, m_read_buf, m_bufsize); - ok = (cnt != -1 && cnt != 0); - - if (!ok) - return traits_type::eof(); - else { - setg(m_read_buf, m_read_buf, m_read_buf + cnt); - return traits_type::to_int_type(*gptr()); - } -} - -impl::systembuf::int_type -impl::systembuf::overflow(int c) -{ - assert(pptr() >= epptr()); - if (sync() == -1) - return traits_type::eof(); - if (!traits_type::eq_int_type(c, traits_type::eof())) { - traits_type::assign(*pptr(), c); - pbump(1); - } - return traits_type::not_eof(c); -} - -int -impl::systembuf::sync(void) -{ - ssize_t cnt = pptr() - pbase(); - - bool ok; - ok = ::write(m_handle, pbase(), cnt) == cnt; - - if (ok) - pbump(-cnt); - return ok ? 0 : -1; -} - -// ------------------------------------------------------------------------ -// The "pistream" class. -// ------------------------------------------------------------------------ - -impl::pistream::pistream(const int fd) : - std::istream(NULL), - m_systembuf(fd) -{ - rdbuf(&m_systembuf); -} - -// ------------------------------------------------------------------------ -// The "muxer" class. -// ------------------------------------------------------------------------ - -static int -safe_poll(struct pollfd fds[], nfds_t nfds, int timeout) -{ - int ret = ::poll(fds, nfds, timeout); - if (ret == -1) { - if (errno == EINTR) - ret = 0; - else - throw tools::system_error(IMPL_NAME "::safe_poll", "poll(2) failed", - errno); - } - assert(ret >= 0); - return ret; -} - -static size_t -safe_read(const int fd, void* buffer, const size_t nbytes, - const bool report_errors) -{ - int ret; - while ((ret = ::read(fd, buffer, nbytes)) == -1 && errno == EINTR) {} - if (ret == -1) { - assert(errno != EINTR); - - if (report_errors) - throw tools::system_error(IMPL_NAME "::safe_read", "read(2) failed", - errno); - else - ret = 0; - } - assert(ret >= 0); - return static_cast< size_t >(ret); -} - -impl::muxer::muxer(const int* fds, const size_t nfds, const size_t bufsize) : - m_fds(fds), - m_nfds(nfds), - m_bufsize(bufsize), - m_buffers(new std::string[nfds]) -{ -} - -impl::muxer::~muxer(void) -{ -} - -size_t -impl::muxer::read_one(const size_t index, const int fd, std::string& accum, - const bool report_errors) -{ - tools::auto_array< char > buffer(new char[m_bufsize]); - const size_t nbytes = safe_read(fd, buffer.get(), m_bufsize - 1, - report_errors); - assert(nbytes < m_bufsize); - buffer[nbytes] = '\0'; - - std::string line(accum); - - size_t line_start = 0; - for (size_t i = 0; i < nbytes; i++) { - if (buffer[i] == '\n') { - line_callback(index, line); - line.clear(); - accum.clear(); - line_start = i + 1; - } else if (buffer[i] == '\r') { - // Do nothing. - } else { - line.append(1, buffer[i]); - } - } - accum.append(&buffer[line_start]); - - return nbytes; -} - -void -impl::muxer::mux(volatile const bool& terminate) -{ - tools::auto_array< struct pollfd > poll_fds(new struct pollfd[m_nfds]); - for (size_t i = 0; i < m_nfds; i++) { - poll_fds[i].fd = m_fds[i]; - poll_fds[i].events = POLLIN; - } - - size_t nactive = m_nfds; - while (nactive > 0 && !terminate) { - int ret; - while (!terminate && (ret = safe_poll(poll_fds.get(), 2, 250)) == 0) {} - - for (size_t i = 0; !terminate && i < m_nfds; i++) { - if (poll_fds[i].events == 0) - continue; - - if (poll_fds[i].revents & POLLHUP) { - // Any data still available at this point will be processed by - // a call to the flush method. - poll_fds[i].events = 0; - - assert(nactive >= 1); - nactive--; - } else if (poll_fds[i].revents & (POLLIN | POLLRDNORM | POLLRDBAND | - POLLPRI)) { - (void)read_one(i, poll_fds[i].fd, m_buffers[i], true); - } - } - } -} - -void -impl::muxer::flush(void) -{ - for (size_t i = 0; i < m_nfds; i++) { - while (read_one(i, m_fds[i], m_buffers[i], false) > 0) {} - - if (!m_buffers[i].empty()) - line_callback(i, m_buffers[i]); - } -} diff --git a/unit/atf-src/tools/io.hpp b/unit/atf-src/tools/io.hpp deleted file mode 100644 index 3fb417b8db..0000000000 --- a/unit/atf-src/tools/io.hpp +++ /dev/null @@ -1,436 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_IO_HPP) -#define TOOLS_IO_HPP - -#include -#include -#include - -#include "auto_array.hpp" -#include "fs.hpp" - -namespace tools { -namespace io { - -// ------------------------------------------------------------------------ -// The "file_handle" class. -// ------------------------------------------------------------------------ - -//! -//! \brief Simple RAII model for system file handles. -//! -//! The \a file_handle class is a simple RAII model for native system file -//! handles. This class wraps one of such handles grabbing its ownership, -//! and automaticaly closes it upon destruction. It is basically used -//! inside the library to avoid leaking open file handles, shall an -//! unexpected execution trace occur. -//! -//! A \a file_handle object can be copied but doing so invalidates the -//! source object. There can only be a single valid \a file_handle object -//! for a given system file handle. This is similar to std::auto_ptr\<\>'s -//! semantics. -//! -//! This class also provides some convenience methods to issue special file -//! operations under their respective platforms. -//! -class file_handle -{ -public: - //! - //! \brief Opaque name for the native handle type. - //! - //! Each operating system identifies file handles using a specific type. - //! The \a handle_type type is used to transparently refer to file - //! handles regarless of the operating system in which this class is - //! used. - //! - //! If this class is used in a POSIX system, \a NativeSystemHandle is - //! an integer type while it is a \a HANDLE in a Win32 system. - //! - typedef int handle_type; - - //! - //! \brief Constructs an invalid file handle. - //! - //! This constructor creates a new \a file_handle object that represents - //! an invalid file handle. An invalid file handle can be copied but - //! cannot be manipulated in any way (except checking for its validity). - //! - //! \see is_valid() - //! - file_handle(void); - - //! - //! \brief Constructs a new file handle from a native file handle. - //! - //! This constructor creates a new \a file_handle object that takes - //! ownership of the given \a h native file handle. The user must not - //! close \a h on his own during the lifetime of the new object. - //! Ownership can be reclaimed using disown(). - //! - //! \pre The native file handle must be valid; a close operation must - //! succeed on it. - //! - //! \see disown() - //! - file_handle(handle_type h); - - //! - //! \brief Copy constructor; invalidates the source handle. - //! - //! This copy constructor creates a new file handle from a given one. - //! Ownership of the native file handle is transferred to the new - //! object, effectively invalidating the source file handle. This - //! avoids having two live \a file_handle objects referring to the - //! same native file handle. The source file handle need not be - //! valid in the name of simplicity. - //! - //! \post The source file handle is invalid. - //! \post The new file handle owns the source's native file handle. - //! - file_handle(const file_handle& fh); - - //! - //! \brief Releases resources if the handle is valid. - //! - //! If the file handle is valid, the destructor closes it. - //! - //! \see is_valid() - //! - ~file_handle(void); - - //! - //! \brief Assignment operator; invalidates the source handle. - //! - //! This assignment operator transfers ownership of the RHS file - //! handle to the LHS one, effectively invalidating the source file - //! handle. This avoids having two live \a file_handle objects - //! referring to the same native file handle. The source file - //! handle need not be valid in the name of simplicity. - //! - //! \post The RHS file handle is invalid. - //! \post The LHS file handle owns RHS' native file handle. - //! \return A reference to the LHS file handle. - //! - file_handle& operator=(const file_handle& fh); - - //! - //! \brief Checks whether the file handle is valid or not. - //! - //! Returns a boolean indicating whether the file handle is valid or - //! not. If the file handle is invalid, no other applications can be - //! executed other than the destructor. - //! - //! \return True if the file handle is valid; false otherwise. - //! - bool is_valid(void) const; - - //! - //! \brief Closes the file handle. - //! - //! Explicitly closes the file handle, which must be valid. Upon - //! exit, the handle is not valid any more. - //! - //! \pre The file handle is valid. - //! \post The file handle is invalid. - //! \post The native file handle is closed. - //! - void close(void); - - //! - //! \brief Reclaims ownership of the native file handle. - //! - //! Explicitly reclaims ownership of the native file handle contained - //! in the \a file_handle object, returning the native file handle. - //! The caller is responsible of closing it later on. - //! - //! \pre The file handle is valid. - //! \post The file handle is invalid. - //! \return The native file handle. - //! - handle_type disown(void); - - //! - //! \brief Gets the native file handle. - //! - //! Returns the native file handle for the \a file_handle object. - //! The caller can issue any operation on it except closing it. - //! If closing is required, disown() shall be used. - //! - //! \pre The file handle is valid. - //! \return The native file handle. - //! - handle_type get(void) const; - - //! - //! \brief Changes the native file handle to the given one. - //! - //! Given a new native file handle \a h, this operation assigns this - //! handle to the current object, closing its old native file handle. - //! In other words, it first calls dup2() to remap the old handle to - //! the new one and then closes the old handle. - //! - //! If \a h matches the current value of the handle, this is a no-op. - //! This is done for simplicity, to avoid the caller having to check - //! this condition on its own. - //! - //! If \a h is open, it is automatically closed by dup2(). - //! - //! This operation is only available in POSIX systems. - //! - //! \pre The file handle is valid. - //! \pre The native file handle \a h is valid; i.e., it must be - //! closeable. - //! \post The file handle's native file handle is \a h. - //! \throw system_error If the internal remapping operation fails. - //! - void posix_remap(handle_type h); - -private: - //! - //! \brief Internal handle value. - //! - //! This variable holds the native handle value for the file handle - //! hold by this object. It is interesting to note that this needs - //! to be mutable because the copy constructor and the assignment - //! operator invalidate the source object. - //! - mutable handle_type m_handle; - - //! - //! \brief Constant function representing an invalid handle value. - //! - //! Returns the platform-specific handle value that represents an - //! invalid handle. This is a constant function rather than a regular - //! constant because, in the latter case, we cannot define it under - //! Win32 due to the value being of a complex type. - //! - static handle_type invalid_value(void); -}; - -// ------------------------------------------------------------------------ -// The "systembuf" class. -// ------------------------------------------------------------------------ - -//! -//! \brief std::streambuf implementation for system file handles. -//! -//! systembuf provides a std::streambuf implementation for system file -//! handles. Contrarywise to file_handle, this class does \b not take -//! ownership of the native file handle; this should be taken care of -//! somewhere else. -//! -//! This class follows the expected semantics of a std::streambuf object. -//! However, it is not copyable to avoid introducing inconsistences with -//! the on-disk file and the in-memory buffers. -//! -class systembuf : public std::streambuf -{ - // Non-copyable. - systembuf(const systembuf&); - systembuf& operator=(const systembuf&); - -public: - typedef int handle_type; - - //! - //! \brief Constructs a new systembuf for the given file handle. - //! - //! This constructor creates a new systembuf object that reads or - //! writes data from/to the \a h native file handle. This handle - //! is \b not owned by the created systembuf object; the code - //! should take care of it externally. - //! - //! This class buffers input and output; the buffer size may be - //! tuned through the \a bufsize parameter, which defaults to 8192 - //! bytes. - //! - //! \see pistream. - //! - explicit systembuf(handle_type h, std::size_t bufsize = 8192); - ~systembuf(void); - -private: - //! - //! \brief Native file handle used by the systembuf object. - //! - handle_type m_handle; - - //! - //! \brief Internal buffer size used during read and write operations. - //! - std::size_t m_bufsize; - - //! - //! \brief Internal buffer used during read operations. - //! - char* m_read_buf; - - //! - //! \brief Internal buffer used during write operations. - //! - char* m_write_buf; - -protected: - //! - //! \brief Reads new data from the native file handle. - //! - //! This operation is called by input methods when there are no more - //! data in the input buffer. The function fills the buffer with new - //! data, if available. - //! - //! \pre All input positions are exhausted (gptr() >= egptr()). - //! \post The input buffer has new data, if available. - //! \returns traits_type::eof() if a read error occurrs or there are - //! no more data to be read. Otherwise returns - //! traits_type::to_int_type(*gptr()). - //! - virtual int_type underflow(void); - - //! - //! \brief Makes room in the write buffer for additional data. - //! - //! This operation is called by output methods when there is no more - //! space in the output buffer to hold a new element. The function - //! first flushes the buffer's contents to disk and then clears it to - //! leave room for more characters. The given \a c character is - //! stored at the beginning of the new space. - //! - //! \pre All output positions are exhausted (pptr() >= epptr()). - //! \post The output buffer has more space if no errors occurred - //! during the write to disk. - //! \post *(pptr() - 1) is \a c. - //! \returns traits_type::eof() if a write error occurrs. Otherwise - //! returns traits_type::not_eof(c). - //! - virtual int_type overflow(int c); - - //! - //! \brief Flushes the output buffer to disk. - //! - //! Synchronizes the systembuf buffers with the contents of the file - //! associated to this object through the native file handle. The - //! output buffer is flushed to disk and cleared to leave new room - //! for more data. - //! - //! \returns 0 on success, -1 if an error occurred. - //! - virtual int sync(void); -}; - -// ------------------------------------------------------------------------ -// The "pistream" class. -// ------------------------------------------------------------------------ - -//! -//! \brief Child process' output stream. -//! -//! The pistream class represents an output communication channel with the -//! child process. The child process writes data to this stream and the -//! parent process can read it through the pistream object. In other -//! words, from the child's point of view, the communication channel is an -//! output one, but from the parent's point of view it is an input one; -//! hence the confusing pistream name. -//! -//! pistream objects cannot be copied because they own the file handle -//! they use to communicate with the child and because they buffer data -//! that flows through the communication channel. -//! -//! A pistream object behaves as a std::istream stream in all senses. -//! The class is only provided because it must provide a method to let -//! the caller explicitly close the communication channel. -//! -//! \remark Blocking remarks: Functions that read data from this -//! stream can block if the associated file handle blocks during the read. -//! As this class is used to communicate with child processes through -//! anonymous pipes, the most typical blocking condition happens when the -//! child has no more data to send to the pipe's system buffer. When -//! this happens, the buffer eventually empties and the system blocks -//! until the writer generates some data. -//! -class pistream : public std::istream -{ - // Non-copyable. - pistream(const pistream&); - pistream& operator=(const pistream&); - - //! - //! \brief The systembuf object used to manage this stream's data. - //! - systembuf m_systembuf; - -public: - //! - //! \brief Creates a new process' output stream. - //! - //! Given a file handle, this constructor creates a new pistream - //! object that owns the given file handle \a fh. Ownership of - //! \a fh is transferred to the created pistream object. - //! - //! \pre \a fh is valid. - //! \post \a fh is invalid. - //! \post The new pistream object owns \a fh. - //! - explicit pistream(const int); -}; - -// ------------------------------------------------------------------------ -// The "muxer" class. -// ------------------------------------------------------------------------ - -class muxer { - // Non-copyable. - muxer(const muxer&); - muxer& operator=(const muxer&); - - const int* m_fds; - const size_t m_nfds; - - const size_t m_bufsize; - tools::auto_array< std::string > m_buffers; - -protected: - virtual void line_callback(const size_t, const std::string&) = 0; - - size_t read_one(const size_t, const int, std::string&, const bool); - -public: - muxer(const int*, const size_t, const size_t bufsize = 1024); - virtual ~muxer(void); - - void mux(volatile const bool&); - void flush(void); -}; - -} // namespace io -} // namespace tools - -#endif // !defined(TOOLS_IO_HPP) diff --git a/unit/atf-src/tools/io_test.cpp b/unit/atf-src/tools/io_test.cpp deleted file mode 100644 index b55428f282..0000000000 --- a/unit/atf-src/tools/io_test.cpp +++ /dev/null @@ -1,471 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include - -#include -#include -} - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "io.hpp" -#include "signals.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -void -systembuf_check_data(std::istream& is, std::size_t length) -{ - char ch = 'A', chr; - std::size_t cnt = 0; - while (is >> chr) { - ATF_REQUIRE_EQ(ch, chr); - if (ch == 'Z') - ch = 'A'; - else - ch++; - cnt++; - } - ATF_REQUIRE_EQ(cnt, length); -} - -static -void -systembuf_write_data(std::ostream& os, std::size_t length) -{ - char ch = 'A'; - for (std::size_t i = 0; i < length; i++) { - os << ch; - if (ch == 'Z') - ch = 'A'; - else - ch++; - } - os.flush(); -} - -static -void -systembuf_test_read(std::size_t length, std::size_t bufsize) -{ - using tools::io::systembuf; - - std::ofstream f("test_read.txt"); - systembuf_write_data(f, length); - f.close(); - - int fd = ::open("test_read.txt", O_RDONLY); - ATF_REQUIRE(fd != -1); - systembuf sb(fd, bufsize); - std::istream is(&sb); - systembuf_check_data(is, length); - ::close(fd); - ::unlink("test_read.txt"); -} - -static -void -systembuf_test_write(std::size_t length, std::size_t bufsize) -{ - using tools::io::systembuf; - - int fd = ::open("test_write.txt", O_WRONLY | O_CREAT | O_TRUNC, - S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - ATF_REQUIRE(fd != -1); - systembuf sb(fd, bufsize); - std::ostream os(&sb); - systembuf_write_data(os, length); - ::close(fd); - - std::ifstream is("test_write.txt"); - systembuf_check_data(is, length); - is.close(); - ::unlink("test_write.txt"); -} - -// ------------------------------------------------------------------------ -// Test cases for the "file_handle" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(file_handle_ctor); -ATF_TEST_CASE_HEAD(file_handle_ctor) -{ - set_md_var("descr", "Tests file_handle's constructors"); -} -ATF_TEST_CASE_BODY(file_handle_ctor) -{ - using tools::io::file_handle; - - file_handle fh1; - ATF_REQUIRE(!fh1.is_valid()); - - file_handle fh2(STDOUT_FILENO); - ATF_REQUIRE(fh2.is_valid()); - fh2.disown(); -} - -ATF_TEST_CASE(file_handle_copy); -ATF_TEST_CASE_HEAD(file_handle_copy) -{ - set_md_var("descr", "Tests file_handle's copy constructor"); -} -ATF_TEST_CASE_BODY(file_handle_copy) -{ - using tools::io::file_handle; - - file_handle fh1; - file_handle fh2(STDOUT_FILENO); - - file_handle fh3(fh2); - ATF_REQUIRE(!fh2.is_valid()); - ATF_REQUIRE(fh3.is_valid()); - - fh1 = fh3; - ATF_REQUIRE(!fh3.is_valid()); - ATF_REQUIRE(fh1.is_valid()); - - fh1.disown(); -} - -ATF_TEST_CASE(file_handle_get); -ATF_TEST_CASE_HEAD(file_handle_get) -{ - set_md_var("descr", "Tests the file_handle::get method"); -} -ATF_TEST_CASE_BODY(file_handle_get) -{ - using tools::io::file_handle; - - file_handle fh1(STDOUT_FILENO); - ATF_REQUIRE_EQ(fh1.get(), STDOUT_FILENO); -} - -ATF_TEST_CASE(file_handle_posix_remap); -ATF_TEST_CASE_HEAD(file_handle_posix_remap) -{ - set_md_var("descr", "Tests the file_handle::posix_remap method"); -} -ATF_TEST_CASE_BODY(file_handle_posix_remap) -{ - using tools::io::file_handle; - - int pfd[2]; - - ATF_REQUIRE(::pipe(pfd) != -1); - file_handle rend(pfd[0]); - file_handle wend(pfd[1]); - - ATF_REQUIRE(rend.get() != 10); - ATF_REQUIRE(wend.get() != 10); - wend.posix_remap(10); - ATF_REQUIRE_EQ(wend.get(), 10); - ATF_REQUIRE(::write(wend.get(), "test-posix-remap", 16) != -1); - { - char buf[17]; - ATF_REQUIRE_EQ(::read(rend.get(), buf, sizeof(buf)), 16); - buf[16] = '\0'; - ATF_REQUIRE(std::strcmp(buf, "test-posix-remap") == 0); - } - - // Redo previous to ensure that remapping over the same descriptor - // has no side-effects. - ATF_REQUIRE_EQ(wend.get(), 10); - wend.posix_remap(10); - ATF_REQUIRE_EQ(wend.get(), 10); - ATF_REQUIRE(::write(wend.get(), "test-posix-remap", 16) != -1); - { - char buf[17]; - ATF_REQUIRE_EQ(::read(rend.get(), buf, sizeof(buf)), 16); - buf[16] = '\0'; - ATF_REQUIRE(std::strcmp(buf, "test-posix-remap") == 0); - } -} - -// ------------------------------------------------------------------------ -// Test cases for the "systembuf" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(systembuf_short_read); -ATF_TEST_CASE_HEAD(systembuf_short_read) -{ - set_md_var("descr", "Tests that a short read (one that fits in the " - "internal buffer) works when using systembuf"); -} -ATF_TEST_CASE_BODY(systembuf_short_read) -{ - systembuf_test_read(64, 1024); -} - -ATF_TEST_CASE(systembuf_long_read); -ATF_TEST_CASE_HEAD(systembuf_long_read) -{ - set_md_var("descr", "Tests that a long read (one that does not fit in " - "the internal buffer) works when using systembuf"); -} -ATF_TEST_CASE_BODY(systembuf_long_read) -{ - systembuf_test_read(64 * 1024, 1024); -} - -ATF_TEST_CASE(systembuf_short_write); -ATF_TEST_CASE_HEAD(systembuf_short_write) -{ - set_md_var("descr", "Tests that a short write (one that fits in the " - "internal buffer) works when using systembuf"); -} -ATF_TEST_CASE_BODY(systembuf_short_write) -{ - systembuf_test_write(64, 1024); -} - -ATF_TEST_CASE(systembuf_long_write); -ATF_TEST_CASE_HEAD(systembuf_long_write) -{ - set_md_var("descr", "Tests that a long write (one that does not fit " - "in the internal buffer) works when using systembuf"); -} -ATF_TEST_CASE_BODY(systembuf_long_write) -{ - systembuf_test_write(64 * 1024, 1024); -} - -// ------------------------------------------------------------------------ -// Test cases for the "pistream" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(pistream); -ATF_TEST_CASE_HEAD(pistream) -{ - set_md_var("descr", "Tests the pistream class"); -} -ATF_TEST_CASE_BODY(pistream) -{ - using tools::io::file_handle; - using tools::io::pistream; - using tools::io::systembuf; - - int fds[2]; - ATF_REQUIRE(::pipe(fds) != -1); - - pistream rend(fds[0]); - - systembuf wbuf(fds[1]); - std::ostream wend(&wbuf); - - // XXX This assumes that the pipe's buffer is big enough to accept - // the data written without blocking! - wend << "1Test 1message\n"; - wend.flush(); - std::string tmp; - rend >> tmp; - ATF_REQUIRE_EQ(tmp, "1Test"); - rend >> tmp; - ATF_REQUIRE_EQ(tmp, "1message"); -} - -// ------------------------------------------------------------------------ -// Tests for the "muxer" class. -// ------------------------------------------------------------------------ - -namespace { - -static void -check_stream(std::ostream& os) -{ - // If we receive a signal while writing to the stream, the bad bit gets set. - // Things seem to behave fine afterwards if we clear such error condition. - // However, I'm not sure if it's safe to query errno at this point. - ATF_REQUIRE(os.good() || (os.bad() && errno == EINTR)); - os.clear(); -} - -class mock_muxer : public tools::io::muxer { - void line_callback(const size_t index, const std::string& line) - { - // The following should be enabled but causes the output to be so big - // that it is annoying. Reenable at some point if we make atf store - // the output of the test cases in some other way (e.g. only if a test - // failes), because this message is the only help in seeing how the - // test fails. - //std::cout << "line_callback(" << index << ", " << line << ")\n"; - check_stream(std::cout); - switch (index) { - case 0: lines0.push_back(line); break; - case 1: lines1.push_back(line); break; - default: ATF_REQUIRE(false); - } - } - -public: - mock_muxer(const int* fds, const size_t nfds, const size_t bufsize) : - muxer(fds, nfds, bufsize) {} - - std::vector< std::string > lines0; - std::vector< std::string > lines1; -}; - -static bool child_finished = false; -static void sigchld_handler(int signo) -{ - assert(signo == SIGCHLD); - child_finished = true; -} - -static void -child_printer(const int pipeout[2], const int pipeerr[2], - const size_t iterations) -{ - ::close(pipeout[0]); - ::close(pipeerr[0]); - ATF_REQUIRE(::dup2(pipeout[1], STDOUT_FILENO) != -1); - ATF_REQUIRE(::dup2(pipeerr[1], STDERR_FILENO) != -1); - ::close(pipeout[1]); - ::close(pipeerr[1]); - - for (size_t i = 0; i < iterations; i++) { - std::cout << "stdout " << i << "\n"; - std::cerr << "stderr " << i << "\n"; - } - - std::cout << "stdout eof\n"; - std::cerr << "stderr eof\n"; - std::exit(EXIT_SUCCESS); -} - -static void -muxer_test(const size_t bufsize, const size_t iterations) -{ - int pipeout[2], pipeerr[2]; - ATF_REQUIRE(pipe(pipeout) != -1); - ATF_REQUIRE(pipe(pipeerr) != -1); - - tools::signals::signal_programmer sigchld(SIGCHLD, sigchld_handler); - - std::cout.flush(); - std::cerr.flush(); - - pid_t pid = ::fork(); - ATF_REQUIRE(pid != -1); - if (pid == 0) { - sigchld.unprogram(); - child_printer(pipeout, pipeerr, iterations); - std::abort(); - } - ::close(pipeout[1]); - ::close(pipeerr[1]); - - int fds[2] = {pipeout[0], pipeerr[0]}; - mock_muxer mux(fds, 2, bufsize); - - mux.mux(child_finished); - check_stream(std::cout); - std::cout << "mux done\n"; - - mux.flush(); - std::cout << "flush done\n"; - check_stream(std::cout); - - sigchld.unprogram(); - int status; - ATF_REQUIRE(::waitpid(pid, &status, 0) != -1); - ATF_REQUIRE(WIFEXITED(status)); - ATF_REQUIRE(WEXITSTATUS(status) == EXIT_SUCCESS); - - ATF_REQUIRE(std::cout.good()); - ATF_REQUIRE(std::cerr.good()); - for (size_t i = 0; i < iterations; i++) { - std::ostringstream exp0, exp1; - exp0 << "stdout " << i; - exp1 << "stderr " << i; - - ATF_REQUIRE(mux.lines0.size() > i); - ATF_REQUIRE_EQ(exp0.str(), mux.lines0[i]); - ATF_REQUIRE(mux.lines1.size() > i); - ATF_REQUIRE_EQ(exp1.str(), mux.lines1[i]); - } - ATF_REQUIRE_EQ("stdout eof", mux.lines0[iterations]); - ATF_REQUIRE_EQ("stderr eof", mux.lines1[iterations]); - std::cout << "all done\n"; -} - -} // anonymous namespace - -ATF_TEST_CASE_WITHOUT_HEAD(muxer_small_buffer); -ATF_TEST_CASE_BODY(muxer_small_buffer) -{ - muxer_test(4, 20000); -} - -ATF_TEST_CASE_WITHOUT_HEAD(muxer_large_buffer); -ATF_TEST_CASE_BODY(muxer_large_buffer) -{ - muxer_test(1024, 50000); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the tests for the "file_handle" class. - ATF_ADD_TEST_CASE(tcs, file_handle_ctor); - ATF_ADD_TEST_CASE(tcs, file_handle_copy); - ATF_ADD_TEST_CASE(tcs, file_handle_get); - ATF_ADD_TEST_CASE(tcs, file_handle_posix_remap); - - // Add the tests for the "systembuf" class. - ATF_ADD_TEST_CASE(tcs, systembuf_short_read); - ATF_ADD_TEST_CASE(tcs, systembuf_long_read); - ATF_ADD_TEST_CASE(tcs, systembuf_short_write); - ATF_ADD_TEST_CASE(tcs, systembuf_long_write); - - // Add the tests for the "pistream" class. - ATF_ADD_TEST_CASE(tcs, pistream); - - // Add the tests for the "muxer" class. - ATF_ADD_TEST_CASE(tcs, muxer_small_buffer); - ATF_ADD_TEST_CASE(tcs, muxer_large_buffer); -} diff --git a/unit/atf-src/tools/misc_helpers.cpp b/unit/atf-src/tools/misc_helpers.cpp deleted file mode 100644 index 8ec4ddefcd..0000000000 --- a/unit/atf-src/tools/misc_helpers.cpp +++ /dev/null @@ -1,448 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include - -#include -#include -} - -#include -#include -#include -#include -#include -#include - -#include - -#include "env.hpp" -#include "fs.hpp" -#include "process.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -void -touch(const std::string& path) -{ - std::ofstream os(path.c_str()); - if (!os) - ATF_FAIL("Could not create file " + path); - os.close(); -} - -// ------------------------------------------------------------------------ -// Helper tests for "atf-run_test". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(pass); -ATF_TEST_CASE_HEAD(pass) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(pass) -{ -} - -ATF_TEST_CASE(config); -ATF_TEST_CASE_HEAD(config) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(config) -{ - std::cout << "1st: " << get_config_var("1st") << "\n"; - std::cout << "2nd: " << get_config_var("2nd") << "\n"; - std::cout << "3rd: " << get_config_var("3rd") << "\n"; - std::cout << "4th: " << get_config_var("4th") << "\n"; -} - -ATF_TEST_CASE(fds); -ATF_TEST_CASE_HEAD(fds) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(fds) -{ - std::cout << "msg1 to stdout" << "\n"; - std::cout << "msg2 to stdout" << "\n"; - std::cerr << "msg1 to stderr" << "\n"; - std::cerr << "msg2 to stderr" << "\n"; -} - -ATF_TEST_CASE_WITHOUT_HEAD(mux_streams); -ATF_TEST_CASE_BODY(mux_streams) -{ - for (size_t i = 0; i < 10000; i++) { - switch (i % 5) { - case 0: - std::cout << "stdout " << i << "\n"; - break; - case 1: - std::cerr << "stderr " << i << "\n"; - break; - case 2: - std::cout << "stdout " << i << "\n"; - std::cerr << "stderr " << i << "\n"; - break; - case 3: - std::cout << "stdout " << i << "\n"; - std::cout << "stdout " << i << "\n"; - std::cerr << "stderr " << i << "\n"; - break; - case 4: - std::cout << "stdout " << i << "\n"; - std::cerr << "stderr " << i << "\n"; - std::cerr << "stderr " << i << "\n"; - break; - default: - std::abort(); - } - } -} - -ATF_TEST_CASE(testvar); -ATF_TEST_CASE_HEAD(testvar) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(testvar) -{ - if (!has_config_var("testvar")) - fail("testvar variable not defined"); - std::cout << "testvar: " << get_config_var("testvar") << "\n"; -} - -ATF_TEST_CASE(env_list); -ATF_TEST_CASE_HEAD(env_list) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(env_list) -{ - const tools::process::status s = - tools::process::exec(tools::fs::path("env"), - tools::process::argv_array("env", NULL), - tools::process::stream_inherit(), - tools::process::stream_inherit()); - ATF_REQUIRE(s.exited()); - ATF_REQUIRE(s.exitstatus() == EXIT_SUCCESS); -} - -ATF_TEST_CASE(env_home); -ATF_TEST_CASE_HEAD(env_home) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(env_home) -{ - ATF_REQUIRE(tools::env::has("HOME")); - tools::fs::path p(tools::env::get("HOME")); - tools::fs::file_info fi1(p); - tools::fs::file_info fi2(tools::fs::path(".")); - ATF_REQUIRE_EQ(fi1.get_device(), fi2.get_device()); - ATF_REQUIRE_EQ(fi1.get_inode(), fi2.get_inode()); -} - -ATF_TEST_CASE(read_stdin); -ATF_TEST_CASE_HEAD(read_stdin) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(read_stdin) -{ - char buf[100]; - ssize_t len = ::read(STDIN_FILENO, buf, sizeof(buf) - 1); - ATF_REQUIRE(len != -1); - - buf[len + 1] = '\0'; - for (ssize_t i = 0; i < len; i++) { - if (buf[i] != '\0') { - fail("The stdin of the test case does not seem to be /dev/zero; " - "got '" + std::string(buf) + "'"); - } - } -} - -ATF_TEST_CASE(umask); -ATF_TEST_CASE_HEAD(umask) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(umask) -{ - mode_t m = ::umask(0); - std::cout << "umask: " << std::setw(4) << std::setfill('0') - << std::oct << m << "\n"; - (void)::umask(m); -} - -ATF_TEST_CASE_WITH_CLEANUP(cleanup_states); -ATF_TEST_CASE_HEAD(cleanup_states) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(cleanup_states) -{ - touch(get_config_var("statedir") + "/to-delete"); - touch(get_config_var("statedir") + "/to-stay"); - - if (get_config_var("state") == "fail") - ATF_FAIL("On purpose"); - else if (get_config_var("state") == "skip") - ATF_SKIP("On purpose"); -} -ATF_TEST_CASE_CLEANUP(cleanup_states) -{ - tools::fs::remove(tools::fs::path(get_config_var("statedir") + "/to-delete")); -} - -ATF_TEST_CASE_WITH_CLEANUP(cleanup_curdir); -ATF_TEST_CASE_HEAD(cleanup_curdir) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(cleanup_curdir) -{ - std::ofstream os("oldvalue"); - if (!os) - ATF_FAIL("Failed to create oldvalue file"); - os << 1234; - os.close(); -} -ATF_TEST_CASE_CLEANUP(cleanup_curdir) -{ - std::ifstream is("oldvalue"); - if (is) { - int i; - is >> i; - std::cout << "Old value: " << i << "\n"; - is.close(); - } -} - -ATF_TEST_CASE(require_arch); -ATF_TEST_CASE_HEAD(require_arch) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("require.arch", get_config_var("arch", "not-set")); -} -ATF_TEST_CASE_BODY(require_arch) -{ -} - -ATF_TEST_CASE(require_config); -ATF_TEST_CASE_HEAD(require_config) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("require.config", "var1 var2"); -} -ATF_TEST_CASE_BODY(require_config) -{ - std::cout << "var1: " << get_config_var("var1") << "\n"; - std::cout << "var2: " << get_config_var("var2") << "\n"; -} - -ATF_TEST_CASE(require_files); -ATF_TEST_CASE_HEAD(require_files) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("require.files", get_config_var("files", "not-set")); -} -ATF_TEST_CASE_BODY(require_files) -{ -} - -ATF_TEST_CASE(require_machine); -ATF_TEST_CASE_HEAD(require_machine) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("require.machine", get_config_var("machine", "not-set")); -} -ATF_TEST_CASE_BODY(require_machine) -{ -} - -ATF_TEST_CASE(require_progs); -ATF_TEST_CASE_HEAD(require_progs) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("require.progs", get_config_var("progs", "not-set")); -} -ATF_TEST_CASE_BODY(require_progs) -{ -} - -ATF_TEST_CASE(require_user); -ATF_TEST_CASE_HEAD(require_user) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("require.user", get_config_var("user", "not-set")); -} -ATF_TEST_CASE_BODY(require_user) -{ -} - -ATF_TEST_CASE(timeout); -ATF_TEST_CASE_HEAD(timeout) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("timeout", "1"); -} -ATF_TEST_CASE_BODY(timeout) -{ - sleep(10); - touch(get_config_var("statedir") + "/finished"); -} - -ATF_TEST_CASE(timeout_forkexit); -ATF_TEST_CASE_HEAD(timeout_forkexit) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); -} -ATF_TEST_CASE_BODY(timeout_forkexit) -{ - pid_t pid = fork(); - ATF_REQUIRE(pid != -1); - - if (pid == 0) { - sigset_t mask; - sigemptyset(&mask); - - std::cout << "Waiting in subprocess\n"; - std::cout.flush(); - ::sigsuspend(&mask); - - touch(get_config_var("statedir") + "/child-finished"); - std::cout << "Subprocess exiting\n"; - std::cout.flush(); - exit(EXIT_SUCCESS); - } else { - // Don't wait for the child process and let atf-run deal with it. - touch(get_config_var("statedir") + "/parent-finished"); - std::cout << "Parent process exiting\n"; - ATF_PASS(); - } -} - -ATF_TEST_CASE(use_fs); -ATF_TEST_CASE_HEAD(use_fs) -{ - set_md_var("descr", "Helper test case for the t_integration test program"); - set_md_var("use.fs", "this-is-deprecated"); -} -ATF_TEST_CASE_BODY(use_fs) -{ - touch("test-file"); -} - -// ------------------------------------------------------------------------ -// Helper tests for "atf-report_test". -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(diff); -ATF_TEST_CASE_HEAD(diff) -{ - set_md_var("descr", "Helper test case for the t_integration program"); -} -ATF_TEST_CASE_BODY(diff) -{ - std::cout << "--- a 2007-11-04 14:00:41.000000000 +0100\n"; - std::cout << "+++ b 2007-11-04 14:00:48.000000000 +0100\n"; - std::cout << "@@ -1,7 +1,7 @@\n"; - std::cout << " This test is meant to simulate a diff.\n"; - std::cout << " Blank space at beginning of context lines must be " - "preserved.\n"; - std::cout << " \n"; - std::cout << "-First original line.\n"; - std::cout << "-Second original line.\n"; - std::cout << "+First modified line.\n"; - std::cout << "+Second modified line.\n"; - std::cout << " \n"; - std::cout << " EOF\n"; -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - std::string which = tools::env::get("TESTCASE"); - - // Add helper tests for atf-run_test. - if (which == "pass") - ATF_ADD_TEST_CASE(tcs, pass); - if (which == "config") - ATF_ADD_TEST_CASE(tcs, config); - if (which == "fds") - ATF_ADD_TEST_CASE(tcs, fds); - if (which == "mux_streams") - ATF_ADD_TEST_CASE(tcs, mux_streams); - if (which == "testvar") - ATF_ADD_TEST_CASE(tcs, testvar); - if (which == "env_list") - ATF_ADD_TEST_CASE(tcs, env_list); - if (which == "env_home") - ATF_ADD_TEST_CASE(tcs, env_home); - if (which == "read_stdin") - ATF_ADD_TEST_CASE(tcs, read_stdin); - if (which == "umask") - ATF_ADD_TEST_CASE(tcs, umask); - if (which == "cleanup_states") - ATF_ADD_TEST_CASE(tcs, cleanup_states); - if (which == "cleanup_curdir") - ATF_ADD_TEST_CASE(tcs, cleanup_curdir); - if (which == "require_arch") - ATF_ADD_TEST_CASE(tcs, require_arch); - if (which == "require_config") - ATF_ADD_TEST_CASE(tcs, require_config); - if (which == "require_files") - ATF_ADD_TEST_CASE(tcs, require_files); - if (which == "require_machine") - ATF_ADD_TEST_CASE(tcs, require_machine); - if (which == "require_progs") - ATF_ADD_TEST_CASE(tcs, require_progs); - if (which == "require_user") - ATF_ADD_TEST_CASE(tcs, require_user); - if (which == "timeout") - ATF_ADD_TEST_CASE(tcs, timeout); - if (which == "timeout_forkexit") - ATF_ADD_TEST_CASE(tcs, timeout_forkexit); - if (which == "use_fs") - ATF_ADD_TEST_CASE(tcs, use_fs); - - // Add helper tests for atf-report_test. - if (which == "diff") - ATF_ADD_TEST_CASE(tcs, diff); -} diff --git a/unit/atf-src/tools/parser.cpp b/unit/atf-src/tools/parser.cpp deleted file mode 100644 index e6b3a3b750..0000000000 --- a/unit/atf-src/tools/parser.cpp +++ /dev/null @@ -1,384 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include "parser.hpp" -#include "text.hpp" - -namespace impl = tools::parser; -#define IMPL_NAME "tools::parser" - -// ------------------------------------------------------------------------ -// The "parse_error" class. -// ------------------------------------------------------------------------ - -impl::parse_error::parse_error(size_t line, std::string msg) : - std::runtime_error(msg), - std::pair< size_t, std::string >(line, msg) -{ -} - -impl::parse_error::~parse_error(void) - throw() -{ -} - -const char* -impl::parse_error::what(void) - const throw() -{ - try { - std::ostringstream oss; - oss << "LONELY PARSE ERROR: " << first << ": " << second; - m_msg = oss.str(); - return m_msg.c_str(); - } catch (...) { - return "Could not format message for parsing error."; - } -} - -impl::parse_error::operator std::string(void) - const -{ - return tools::text::to_string(first) + ": " + second; -} - -// ------------------------------------------------------------------------ -// The "parse_errors" class. -// ------------------------------------------------------------------------ - -impl::parse_errors::parse_errors(void) : - std::runtime_error("No parsing errors yet") -{ - m_msg.clear(); -} - -impl::parse_errors::~parse_errors(void) - throw() -{ -} - -const char* -impl::parse_errors::what(void) - const throw() -{ - try { - m_msg = tools::text::join(*this, "\n"); - return m_msg.c_str(); - } catch (...) { - return "Could not format messages for parsing errors."; - } -} - -// ------------------------------------------------------------------------ -// The "format_error" class. -// ------------------------------------------------------------------------ - -impl::format_error::format_error(const std::string& w) : - std::runtime_error(w.c_str()) -{ -} - -// ------------------------------------------------------------------------ -// The "token" class. -// ------------------------------------------------------------------------ - -impl::token::token(void) : - m_inited(false) -{ -} - -impl::token::token(size_t p_line, - const token_type& p_type, - const std::string& p_text) : - m_inited(true), - m_line(p_line), - m_type(p_type), - m_text(p_text) -{ -} - -size_t -impl::token::lineno(void) - const -{ - return m_line; -} - -const impl::token_type& -impl::token::type(void) - const -{ - return m_type; -} - -const std::string& -impl::token::text(void) - const -{ - return m_text; -} - -impl::token::operator bool(void) - const -{ - return m_inited; -} - -bool -impl::token::operator!(void) - const -{ - return !m_inited; -} - -// ------------------------------------------------------------------------ -// The "header_entry" class. -// ------------------------------------------------------------------------ - -impl::header_entry::header_entry(void) -{ -} - -impl::header_entry::header_entry(const std::string& n, const std::string& v, - attrs_map as) : - m_name(n), - m_value(v), - m_attrs(as) -{ -} - -const std::string& -impl::header_entry::name(void) const -{ - return m_name; -} - -const std::string& -impl::header_entry::value(void) const -{ - return m_value; -} - -const impl::attrs_map& -impl::header_entry::attrs(void) const -{ - return m_attrs; -} - -bool -impl::header_entry::has_attr(const std::string& n) const -{ - return m_attrs.find(n) != m_attrs.end(); -} - -const std::string& -impl::header_entry::get_attr(const std::string& n) const -{ - attrs_map::const_iterator iter = m_attrs.find(n); - assert(iter != m_attrs.end()); - return (*iter).second; -} - -// ------------------------------------------------------------------------ -// The header tokenizer. -// ------------------------------------------------------------------------ - -namespace header { - -static const impl::token_type eof_type = 0; -static const impl::token_type nl_type = 1; -static const impl::token_type text_type = 2; -static const impl::token_type colon_type = 3; -static const impl::token_type semicolon_type = 4; -static const impl::token_type dblquote_type = 5; -static const impl::token_type equal_type = 6; - -class tokenizer : public impl::tokenizer< std::istream > { -public: - tokenizer(std::istream& is, size_t curline) : - impl::tokenizer< std::istream > - (is, true, eof_type, nl_type, text_type, curline) - { - add_delim(';', semicolon_type); - add_delim(':', colon_type); - add_delim('=', equal_type); - add_quote('"', dblquote_type); - } -}; - -static -impl::parser< header::tokenizer >& -read(impl::parser< header::tokenizer >& p, impl::header_entry& he) -{ - using namespace header; - - impl::token t = p.expect(text_type, nl_type, "a header name"); - if (t.type() == nl_type) { - he = impl::header_entry(); - return p; - } - std::string hdr_name = t.text(); - - t = p.expect(colon_type, "`:'"); - - t = p.expect(text_type, "a textual value"); - std::string hdr_value = t.text(); - - impl::attrs_map attrs; - - for (;;) { - t = p.expect(eof_type, semicolon_type, nl_type, - "eof, `;' or new line"); - if (t.type() == eof_type || t.type() == nl_type) - break; - - t = p.expect(text_type, "an attribute name"); - std::string attr_name = t.text(); - - t = p.expect(equal_type, "`='"); - - t = p.expect(text_type, "word or quoted string"); - std::string attr_value = t.text(); - attrs[attr_name] = attr_value; - } - - he = impl::header_entry(hdr_name, hdr_value, attrs); - - return p; -} - -static -std::ostream& -write(std::ostream& os, const impl::header_entry& he) -{ - std::string line = he.name() + ": " + he.value(); - impl::attrs_map as = he.attrs(); - for (impl::attrs_map::const_iterator iter = as.begin(); iter != as.end(); - iter++) { - assert((*iter).second.find('\"') == std::string::npos); - line += "; " + (*iter).first + "=\"" + (*iter).second + "\""; - } - - os << line << "\n"; - - return os; -} - -} // namespace header - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -std::pair< size_t, impl::headers_map > -impl::read_headers(std::istream& is, size_t curline) -{ - using impl::format_error; - - headers_map hm; - - // - // Grammar - // - // header = entry+ nl - // entry = line nl - // line = text colon text - // (semicolon (text equal (text | dblquote string dblquote)))* - // string = quoted_string - // - - header::tokenizer tkz(is, curline); - impl::parser< header::tokenizer > p(tkz); - - bool first = true; - for (;;) { - try { - header_entry he; - if (!header::read(p, he).good() || he.name().empty()) - break; - - if (first && he.name() != "Content-Type") - throw format_error("Could not determine content type"); - else - first = false; - - hm[he.name()] = he; - } catch (const impl::parse_error& pe) { - p.add_error(pe); - p.reset(header::nl_type); - } - } - - if (!is.good()) - throw format_error("Unexpected end of stream"); - - return std::pair< size_t, headers_map >(tkz.lineno(), hm); -} - -void -impl::write_headers(const impl::headers_map& hm, std::ostream& os) -{ - assert(!hm.empty()); - headers_map::const_iterator ct = hm.find("Content-Type"); - assert(ct != hm.end()); - header::write(os, (*ct).second); - for (headers_map::const_iterator iter = hm.begin(); iter != hm.end(); - iter++) { - if ((*iter).first != "Content-Type") - header::write(os, (*iter).second); - } - os << "\n"; -} - -void -impl::validate_content_type(const impl::headers_map& hm, const std::string& fmt, - int version) -{ - using impl::format_error; - - headers_map::const_iterator iter = hm.find("Content-Type"); - if (iter == hm.end()) - throw format_error("Could not determine content type"); - - const header_entry& he = (*iter).second; - if (he.value() != fmt) - throw format_error("Mismatched content type: expected `" + fmt + - "' but got `" + he.value() + "'"); - - if (!he.has_attr("version")) - throw format_error("Could not determine version"); - const std::string& vstr = tools::text::to_string(version); - if (he.get_attr("version") != vstr) - throw format_error("Mismatched version: expected `" + - vstr + "' but got `" + - he.get_attr("version") + "'"); -} diff --git a/unit/atf-src/tools/parser.hpp b/unit/atf-src/tools/parser.hpp deleted file mode 100644 index eb00cb466d..0000000000 --- a/unit/atf-src/tools/parser.hpp +++ /dev/null @@ -1,607 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_PARSER_HPP) -#define TOOLS_PARSER_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace tools { -namespace parser { - -// ------------------------------------------------------------------------ -// The "parse_error" class. -// ------------------------------------------------------------------------ - -class parse_error : public std::runtime_error, - public std::pair< size_t, std::string > { - mutable std::string m_msg; - -public: - parse_error(size_t, std::string); - ~parse_error(void) throw(); - - const char* what(void) const throw(); - - operator std::string(void) const; -}; - -// ------------------------------------------------------------------------ -// The "parse_errors" class. -// ------------------------------------------------------------------------ - -class parse_errors : public std::runtime_error, - public std::vector< parse_error > { - std::vector< parse_error > m_errors; - mutable std::string m_msg; - -public: - parse_errors(void); - ~parse_errors(void) throw(); - - const char* what(void) const throw(); -}; - -// ------------------------------------------------------------------------ -// The "format_error" class. -// ------------------------------------------------------------------------ - -class format_error : public std::runtime_error { -public: - format_error(const std::string&); -}; - -// ------------------------------------------------------------------------ -// The "token" class. -// ------------------------------------------------------------------------ - -typedef int token_type; - -//! -//! \brief Representation of a read token. -//! -//! A pair that contains the information of a token read from a stream. -//! It contains the token's type and its associated data, if any. -//! -struct token { - bool m_inited; - size_t m_line; - token_type m_type; - std::string m_text; - -public: - token(void); - token(size_t, const token_type&, const std::string& = ""); - - size_t lineno(void) const; - const token_type& type(void) const; - const std::string& text(void) const; - - operator bool(void) const; - bool operator!(void) const; -}; - -// ------------------------------------------------------------------------ -// The "tokenizer" class. -// ------------------------------------------------------------------------ - -//! -//! \brief A stream tokenizer. -//! -//! This template implements an extremely simple, line-oriented stream -//! tokenizer. It is only able to recognize one character-long delimiters, -//! random-length keywords, skip whitespace and, anything that does not -//! match these rules is supposed to be a word. -//! -//! Parameter IS: The input stream's type. -//! -template< class IS > -class tokenizer { - IS& m_is; - size_t m_lineno; - token m_la; - - bool m_skipws; - token_type m_eof_type, m_nl_type, m_text_type; - - std::map< char, token_type > m_delims_map; - std::string m_delims_str; - - char m_quotech; - token_type m_quotetype; - - std::map< std::string, token_type > m_keywords_map; - - token_type alloc_type(void); - - template< class TKZ > - friend - class parser; - -public: - tokenizer(IS&, bool, const token_type&, const token_type&, - const token_type&, size_t = 1); - - size_t lineno(void) const; - - void add_delim(char, const token_type&); - void add_keyword(const std::string&, const token_type&); - void add_quote(char, const token_type&); - - token next(void); - std::string rest_of_line(void); -}; - -template< class IS > -tokenizer< IS >::tokenizer(IS& p_is, - bool p_skipws, - const token_type& p_eof_type, - const token_type& p_nl_type, - const token_type& p_text_type, - size_t p_lineno) : - m_is(p_is), - m_lineno(p_lineno), - m_skipws(p_skipws), - m_eof_type(p_eof_type), - m_nl_type(p_nl_type), - m_text_type(p_text_type), - m_quotech(-1) -{ -} - -template< class IS > -size_t -tokenizer< IS >::lineno(void) - const -{ - return m_lineno; -} - -template< class IS > -void -tokenizer< IS >::add_delim(char delim, const token_type& type) -{ - m_delims_map[delim] = type; - m_delims_str += delim; -} - -template< class IS > -void -tokenizer< IS >::add_keyword(const std::string& keyword, - const token_type& type) -{ - m_keywords_map[keyword] = type; -} - -template< class IS > -void -tokenizer< IS >::add_quote(char ch, const token_type& type) -{ - m_quotech = ch; - m_quotetype = type; -} - -template< class IS > -token -tokenizer< IS >::next(void) -{ - if (m_la) { - token t = m_la; - m_la = token(); - if (t.type() == m_nl_type) - m_lineno++; - return t; - } - - char ch; - std::string text; - - bool done = false, quoted = false; - token t(m_lineno, m_eof_type, "<>"); - while (!done && m_is.get(ch).good()) { - if (ch == m_quotech) { - if (text.empty()) { - bool escaped = false; - while (!done && m_is.get(ch).good()) { - if (!escaped) { - if (ch == '\\') - escaped = true; - else if (ch == '\n') { - m_la = token(m_lineno, m_nl_type, "<>"); - throw parse_error(t.lineno(), - "Missing double quotes before " - "end of line"); - } else if (ch == m_quotech) - done = true; - else - text += ch; - } else { - text += ch; - escaped = false; - } - } - if (!m_is.good()) - throw parse_error(t.lineno(), - "Missing double quotes before " - "end of file"); - t = token(m_lineno, m_text_type, text); - quoted = true; - } else { - m_is.putback(ch); - done = true; - } - } else { - typename std::map< char, token_type >::const_iterator idelim; - idelim = m_delims_map.find(ch); - if (idelim != m_delims_map.end()) { - done = true; - if (text.empty()) - t = token(m_lineno, (*idelim).second, - std::string("") + ch); - else - m_is.putback(ch); - } else if (ch == '\n') { - done = true; - if (text.empty()) - t = token(m_lineno, m_nl_type, "<>"); - else - m_is.putback(ch); - } else if (m_skipws && (ch == ' ' || ch == '\t')) { - if (!text.empty()) - done = true; - } else - text += ch; - } - } - - if (!quoted && !text.empty()) { - typename std::map< std::string, token_type >::const_iterator ikw; - ikw = m_keywords_map.find(text); - if (ikw != m_keywords_map.end()) - t = token(m_lineno, (*ikw).second, text); - else - t = token(m_lineno, m_text_type, text); - } - - if (t.type() == m_nl_type) - m_lineno++; - - return t; -} - -template< class IS > -std::string -tokenizer< IS >::rest_of_line(void) -{ - std::string str; - while (m_is.good() && m_is.peek() != '\n') - str += m_is.get(); - return str; -} - -// ------------------------------------------------------------------------ -// The "parser" class. -// ------------------------------------------------------------------------ - -template< class TKZ > -class parser { - TKZ& m_tkz; - token m_last; - parse_errors m_errors; - bool m_thrown; - -public: - parser(TKZ& tkz); - ~parser(void); - - bool good(void) const; - void add_error(const parse_error&); - bool has_errors(void) const; - - token next(void); - std::string rest_of_line(void); - token reset(const token_type&); - - token - expect(const token_type&, - const std::string&); - - token - expect(const token_type&, - const token_type&, - const std::string&); - - token - expect(const token_type&, - const token_type&, - const token_type&, - const std::string&); - - token - expect(const token_type&, - const token_type&, - const token_type&, - const token_type&, - const std::string&); - - token - expect(const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const std::string&); - - token - expect(const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const token_type&, - const std::string&); -}; - -template< class TKZ > -parser< TKZ >::parser(TKZ& tkz) : - m_tkz(tkz), - m_thrown(false) -{ -} - -template< class TKZ > -parser< TKZ >::~parser(void) -{ - if (!m_errors.empty() && !m_thrown) - throw m_errors; -} - -template< class TKZ > -bool -parser< TKZ >::good(void) - const -{ - return m_tkz.m_is.good(); -} - -template< class TKZ > -void -parser< TKZ >::add_error(const parse_error& pe) -{ - m_errors.push_back(pe); -} - -template< class TKZ > -bool -parser< TKZ >::has_errors(void) - const -{ - return !m_errors.empty(); -} - -template< class TKZ > -token -parser< TKZ >::next(void) -{ - token t = m_tkz.next(); - - m_last = t; - - if (t.type() == m_tkz.m_eof_type) { - if (!m_errors.empty()) { - m_thrown = true; - throw m_errors; - } - } - - return t; -} - -template< class TKZ > -std::string -parser< TKZ >::rest_of_line(void) -{ - return m_tkz.rest_of_line(); -} - -template< class TKZ > -token -parser< TKZ >::reset(const token_type& stop) -{ - token t = m_last; - - while (t.type() != m_tkz.m_eof_type && t.type() != stop) - t = next(); - - return t; -} - -template< class TKZ > -token -parser< TKZ >::expect(const token_type& t1, - const std::string& textual) -{ - token t = next(); - - if (t.type() != t1) - throw parse_error(t.lineno(), - "Unexpected token `" + t.text() + - "'; expected " + textual); - - return t; -} - -template< class TKZ > -token -parser< TKZ >::expect(const token_type& t1, - const token_type& t2, - const std::string& textual) -{ - token t = next(); - - if (t.type() != t1 && t.type() != t2) - throw parse_error(t.lineno(), - "Unexpected token `" + t.text() + - "'; expected " + textual); - - return t; -} - -template< class TKZ > -token -parser< TKZ >::expect(const token_type& t1, - const token_type& t2, - const token_type& t3, - const std::string& textual) -{ - token t = next(); - - if (t.type() != t1 && t.type() != t2 && t.type() != t3) - throw parse_error(t.lineno(), - "Unexpected token `" + t.text() + - "'; expected " + textual); - - return t; -} - -template< class TKZ > -token -parser< TKZ >::expect(const token_type& t1, - const token_type& t2, - const token_type& t3, - const token_type& t4, - const std::string& textual) -{ - token t = next(); - - if (t.type() != t1 && t.type() != t2 && t.type() != t3 && - t.type() != t4) - throw parse_error(t.lineno(), - "Unexpected token `" + t.text() + - "'; expected " + textual); - - return t; -} - -template< class TKZ > -token -parser< TKZ >::expect(const token_type& t1, - const token_type& t2, - const token_type& t3, - const token_type& t4, - const token_type& t5, - const token_type& t6, - const token_type& t7, - const std::string& textual) -{ - token t = next(); - - if (t.type() != t1 && t.type() != t2 && t.type() != t3 && - t.type() != t4 && t.type() != t5 && t.type() != t6 && - t.type() != t7) - throw parse_error(t.lineno(), - "Unexpected token `" + t.text() + - "'; expected " + textual); - - return t; -} - -template< class TKZ > -token -parser< TKZ >::expect(const token_type& t1, - const token_type& t2, - const token_type& t3, - const token_type& t4, - const token_type& t5, - const token_type& t6, - const token_type& t7, - const token_type& t8, - const std::string& textual) -{ - token t = next(); - - if (t.type() != t1 && t.type() != t2 && t.type() != t3 && - t.type() != t4 && t.type() != t5 && t.type() != t6 && - t.type() != t7 && t.type() != t8) - throw parse_error(t.lineno(), - "Unexpected token `" + t.text() + - "'; expected " + textual); - - return t; -} - -#define ATF_PARSER_CALLBACK(parser, func) \ - do { \ - if (!(parser).has_errors()) \ - func; \ - } while (false) - -// ------------------------------------------------------------------------ -// Header parsing. -// ------------------------------------------------------------------------ - -typedef std::map< std::string, std::string > attrs_map; - -class header_entry { - std::string m_name; - std::string m_value; - attrs_map m_attrs; - -public: - header_entry(void); - header_entry(const std::string&, const std::string&, - attrs_map = attrs_map()); - - const std::string& name(void) const; - const std::string& value(void) const; - const attrs_map& attrs(void) const; - bool has_attr(const std::string&) const; - const std::string& get_attr(const std::string&) const; -}; - -typedef std::map< std::string, header_entry > headers_map; - -std::pair< size_t, headers_map > read_headers(std::istream&, size_t); -void write_headers(const headers_map&, std::ostream&); -void validate_content_type(const headers_map&, const std::string&, int); - -} // namespace parser -} // namespace tools - -#endif // !defined(TOOLS_PARSER_HPP) diff --git a/unit/atf-src/tools/parser_test.cpp b/unit/atf-src/tools/parser_test.cpp deleted file mode 100644 index 434a1a6780..0000000000 --- a/unit/atf-src/tools/parser_test.cpp +++ /dev/null @@ -1,1043 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include - -#include "parser.hpp" -#include "test_helpers.hpp" - -// ------------------------------------------------------------------------ -// Tests for the "parse_error" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(parse_error_to_string); -ATF_TEST_CASE_HEAD(parse_error_to_string) -{ - set_md_var("descr", "Tests the parse_error conversion to strings"); -} -ATF_TEST_CASE_BODY(parse_error_to_string) -{ - using tools::parser::parse_error; - - const parse_error e(123, "This is the message"); - ATF_REQUIRE_EQ("123: This is the message", std::string(e)); -} - -// ------------------------------------------------------------------------ -// Tests for the "parse_errors" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(parse_errors_what); -ATF_TEST_CASE_HEAD(parse_errors_what) -{ - set_md_var("descr", "Tests the parse_errors description"); -} -ATF_TEST_CASE_BODY(parse_errors_what) -{ - using tools::parser::parse_error; - using tools::parser::parse_errors; - - parse_errors es; - es.push_back(parse_error(2, "Second error")); - es.push_back(parse_error(1, "First error")); - - ATF_REQUIRE_EQ("2: Second error\n1: First error", std::string(es.what())); -} - -// ------------------------------------------------------------------------ -// Tests for the "token" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(token_getters); -ATF_TEST_CASE_HEAD(token_getters) -{ - set_md_var("descr", "Tests the token getters"); -} -ATF_TEST_CASE_BODY(token_getters) -{ - using tools::parser::token; - - { - token t(10, 0); - ATF_REQUIRE_EQ(t.lineno(), 10); - ATF_REQUIRE_EQ(t.type(), 0); - ATF_REQUIRE(t.text().empty()); - } - - { - token t(10, 0, "foo"); - ATF_REQUIRE_EQ(t.lineno(), 10); - ATF_REQUIRE_EQ(t.type(), 0); - ATF_REQUIRE_EQ(t.text(), "foo"); - } - - { - token t(20, 1); - ATF_REQUIRE_EQ(t.lineno(), 20); - ATF_REQUIRE_EQ(t.type(), 1); - ATF_REQUIRE(t.text().empty()); - } - - { - token t(20, 1, "bar"); - ATF_REQUIRE_EQ(t.lineno(), 20); - ATF_REQUIRE_EQ(t.type(), 1); - ATF_REQUIRE_EQ(t.text(), "bar"); - } -} - -// ------------------------------------------------------------------------ -// Tests for the "tokenizer" class. -// ------------------------------------------------------------------------ - -#define EXPECT(tkz, ttype, ttext) \ - do { \ - tools::parser::token t = tkz.next(); \ - ATF_REQUIRE(t.type() == ttype); \ - ATF_REQUIRE_EQ(t.text(), ttext); \ - } while (false); - -namespace minimal { - - static const tools::parser::token_type eof_type = 0; - static const tools::parser::token_type nl_type = 1; - static const tools::parser::token_type word_type = 2; - - class tokenizer : public tools::parser::tokenizer< std::istream > { - public: - tokenizer(std::istream& is, bool skipws) : - tools::parser::tokenizer< std::istream > - (is, skipws, eof_type, nl_type, word_type) - { - } - }; - -} - -namespace delims { - - static const tools::parser::token_type eof_type = 0; - static const tools::parser::token_type nl_type = 1; - static const tools::parser::token_type word_type = 2; - static const tools::parser::token_type plus_type = 3; - static const tools::parser::token_type minus_type = 4; - static const tools::parser::token_type equal_type = 5; - - class tokenizer : public tools::parser::tokenizer< std::istream > { - public: - tokenizer(std::istream& is, bool skipws) : - tools::parser::tokenizer< std::istream > - (is, skipws, eof_type, nl_type, word_type) - { - add_delim('+', plus_type); - add_delim('-', minus_type); - add_delim('=', equal_type); - } - }; - -} - -namespace keywords { - - static const tools::parser::token_type eof_type = 0; - static const tools::parser::token_type nl_type = 1; - static const tools::parser::token_type word_type = 2; - static const tools::parser::token_type var_type = 3; - static const tools::parser::token_type loop_type = 4; - static const tools::parser::token_type endloop_type = 5; - - class tokenizer : public tools::parser::tokenizer< std::istream > { - public: - tokenizer(std::istream& is, bool skipws) : - tools::parser::tokenizer< std::istream > - (is, skipws, eof_type, nl_type, word_type) - { - add_keyword("var", var_type); - add_keyword("loop", loop_type); - add_keyword("endloop", endloop_type); - } - }; - -} - -namespace quotes { - - static const tools::parser::token_type eof_type = 0; - static const tools::parser::token_type nl_type = 1; - static const tools::parser::token_type word_type = 2; - static const tools::parser::token_type dblquote_type = 3; - - class tokenizer : public tools::parser::tokenizer< std::istream > { - public: - tokenizer(std::istream& is, bool skipws) : - tools::parser::tokenizer< std::istream > - (is, skipws, eof_type, nl_type, word_type) - { - add_quote('"', dblquote_type); - } - }; - -} - -ATF_TEST_CASE(tokenizer_minimal_nows); -ATF_TEST_CASE_HEAD(tokenizer_minimal_nows) -{ - set_md_var("descr", "Tests the tokenizer class using a minimal parser " - "and not skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_minimal_nows) -{ - using namespace minimal; - - { - std::istringstream iss(""); - tokenizer mt(iss, false); - - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("\n"); - tokenizer mt(iss, false); - - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("\n\n\n"); - tokenizer mt(iss, false); - - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "line 1"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1\n"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "line 1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1\nline 2"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "line 1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line 2"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1\nline 2\nline 3\n"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "line 1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line 2"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line 3"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_minimal_ws); -ATF_TEST_CASE_HEAD(tokenizer_minimal_ws) -{ - set_md_var("descr", "Tests the tokenizer class using a minimal parser " - "and skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_minimal_ws) -{ - using namespace minimal; - - { - std::istringstream iss(""); - minimal::tokenizer mt(iss, true); - - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" \t "); - tokenizer mt(iss, true); - - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("\n"); - tokenizer mt(iss, true); - - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" \t \n \t "); - tokenizer mt(iss, true); - - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("\n\n\n"); - tokenizer mt(iss, true); - - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1"); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "1"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" \tline\t 1\t"); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "1"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1\n"); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1\nline 2"); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "2"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("line 1\nline 2\nline 3\n"); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "2"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "3"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" \t line \t 1\n\tline\t2\n line 3 \n"); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "1"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "2"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, word_type, "line"); - EXPECT(mt, word_type, "3"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_delims_nows); -ATF_TEST_CASE_HEAD(tokenizer_delims_nows) -{ - set_md_var("descr", "Tests the tokenizer class using a parser with some " - "additional delimiters and not skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_delims_nows) -{ - using namespace delims; - - { - std::istringstream iss("+-="); - tokenizer mt(iss, false); - - EXPECT(mt, plus_type, "+"); - EXPECT(mt, minus_type, "-"); - EXPECT(mt, equal_type, "="); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("+++"); - tokenizer mt(iss, false); - - EXPECT(mt, plus_type, "+"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("\n+\n++\n"); - tokenizer mt(iss, false); - - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("foo+bar=baz"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "foo"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, word_type, "bar"); - EXPECT(mt, equal_type, "="); - EXPECT(mt, word_type, "baz"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" foo\t+\tbar = baz "); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, " foo\t"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, word_type, "\tbar "); - EXPECT(mt, equal_type, "="); - EXPECT(mt, word_type, " baz "); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_delims_ws); -ATF_TEST_CASE_HEAD(tokenizer_delims_ws) -{ - set_md_var("descr", "Tests the tokenizer class using a parser with some " - "additional delimiters and skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_delims_ws) -{ - using namespace delims; - - { - std::istringstream iss(" foo\t+\tbar = baz "); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "foo"); - EXPECT(mt, plus_type, "+"); - EXPECT(mt, word_type, "bar"); - EXPECT(mt, equal_type, "="); - EXPECT(mt, word_type, "baz"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_keywords_nows); -ATF_TEST_CASE_HEAD(tokenizer_keywords_nows) -{ - set_md_var("descr", "Tests the tokenizer class using a parser with some " - "additional keywords and not skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_keywords_nows) -{ - using namespace keywords; - - { - std::istringstream iss("var"); - tokenizer mt(iss, false); - - EXPECT(mt, var_type, "var"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("va"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "va"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("vara"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "vara"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("var "); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "var "); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("var\nloop\nendloop"); - tokenizer mt(iss, false); - - EXPECT(mt, var_type, "var"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, loop_type, "loop"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, endloop_type, "endloop"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_keywords_ws); -ATF_TEST_CASE_HEAD(tokenizer_keywords_ws) -{ - set_md_var("descr", "Tests the tokenizer class using a parser with some " - "additional keywords and not skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_keywords_ws) -{ - using namespace keywords; - - { - std::istringstream iss("var "); - tokenizer mt(iss, true); - - EXPECT(mt, var_type, "var"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" var \n\tloop\t\n \tendloop \t"); - tokenizer mt(iss, true); - - EXPECT(mt, var_type, "var"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, loop_type, "loop"); - EXPECT(mt, nl_type, "<>"); - EXPECT(mt, endloop_type, "endloop"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("var loop endloop"); - tokenizer mt(iss, true); - - EXPECT(mt, var_type, "var"); - EXPECT(mt, loop_type, "loop"); - EXPECT(mt, endloop_type, "endloop"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_quotes_nows); -ATF_TEST_CASE_HEAD(tokenizer_quotes_nows) -{ - set_md_var("descr", "Tests the tokenizer class using a parser with " - "quoted strings and not skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_quotes_nows) -{ - using namespace quotes; - - { - std::istringstream iss("var"); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "var"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("\"var\""); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "var"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("var1\"var2\""); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "var1"); - EXPECT(mt, word_type, "var2"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss("var1\" var2 \""); - tokenizer mt(iss, false); - - EXPECT(mt, word_type, "var1"); - EXPECT(mt, word_type, " var2 "); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -ATF_TEST_CASE(tokenizer_quotes_ws); -ATF_TEST_CASE_HEAD(tokenizer_quotes_ws) -{ - set_md_var("descr", "Tests the tokenizer class using a parser with " - "quoted strings and skipping whitespace"); -} -ATF_TEST_CASE_BODY(tokenizer_quotes_ws) -{ - using namespace quotes; - - { - std::istringstream iss(" var "); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "var"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" \"var\" "); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "var"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" var1 \"var2\" "); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "var1"); - EXPECT(mt, word_type, "var2"); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } - - { - std::istringstream iss(" var1 \" var2 \" "); - tokenizer mt(iss, true); - - EXPECT(mt, word_type, "var1"); - EXPECT(mt, word_type, " var2 "); - EXPECT(mt, eof_type, "<>"); - EXPECT(mt, eof_type, "<>"); - } -} - -// ------------------------------------------------------------------------ -// Tests for the headers parser. -// ------------------------------------------------------------------------ - -class header_reader { - std::istream& m_is; - -public: - header_reader(std::istream& is) : - m_is(is) - { - } - - void - read(void) - { - std::pair< size_t, tools::parser::headers_map > hml = - tools::parser::read_headers(m_is, 1); - tools::parser::validate_content_type(hml.second, - "application/X-atf-headers-test", 1234); - } - - std::vector< std::string > m_calls; -}; - -ATF_TEST_CASE_WITHOUT_HEAD(headers_1); -ATF_TEST_CASE_BODY(headers_1) -{ - const char* input = - "" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Unexpected token `<>'; expected a header name", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_2); -ATF_TEST_CASE_BODY(headers_2) -{ - const char* input = - "Content-Type\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Unexpected token `<>'; expected `:'", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_3); -ATF_TEST_CASE_BODY(headers_3) -{ - const char* input = - "Content-Type:\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Unexpected token `<>'; expected a textual value", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_4); -ATF_TEST_CASE_BODY(headers_4) -{ - const char* input = - "Content-Type: application/X-atf-headers-test\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "2: Unexpected token `<>'; expected a header name", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_5); -ATF_TEST_CASE_BODY(headers_5) -{ - const char* input = - "Content-Type: application/X-atf-headers-test;\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Unexpected token `<>'; expected an attribute name", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_6); -ATF_TEST_CASE_BODY(headers_6) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Unexpected token `<>'; expected `='", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_7); -ATF_TEST_CASE_BODY(headers_7) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version=\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Unexpected token `<>'; expected word or quoted string", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_8); -ATF_TEST_CASE_BODY(headers_8) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version=\"1234\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Missing double quotes before end of line", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_9); -ATF_TEST_CASE_BODY(headers_9) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version=1234\"\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "1: Missing double quotes before end of line", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_10); -ATF_TEST_CASE_BODY(headers_10) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version=1234\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "2: Unexpected token `<>'; expected a header name", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_11); -ATF_TEST_CASE_BODY(headers_11) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version=\"1234\"\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "2: Unexpected token `<>'; expected a header name", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(headers_12); -ATF_TEST_CASE_BODY(headers_12) -{ - const char* input = - "Content-Type: application/X-atf-headers-test; version=\"1234\"\n" - "a b\n" - "a-b:\n" - "a-b: foo;\n" - "a-b: foo; var\n" - "a-b: foo; var=\n" - "a-b: foo; var=\"a\n" - "a-b: foo; var=a\"\n" - "a-b: foo; var=\"a\";\n" - "a-b: foo; var=\"a\"; second\n" - "a-b: foo; var=\"a\"; second=\n" - "a-b: foo; var=\"a\"; second=\"b\n" - "a-b: foo; var=\"a\"; second=b\"\n" - "a-b: foo; var=\"a\"; second=\"b\"\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "2: Unexpected token `b'; expected `:'", - "3: Unexpected token `<>'; expected a textual value", - "4: Unexpected token `<>'; expected an attribute name", - "5: Unexpected token `<>'; expected `='", - "6: Unexpected token `<>'; expected word or quoted string", - "7: Missing double quotes before end of line", - "8: Missing double quotes before end of line", - "9: Unexpected token `<>'; expected an attribute name", - "10: Unexpected token `<>'; expected `='", - "11: Unexpected token `<>'; expected word or quoted string", - "12: Missing double quotes before end of line", - "13: Missing double quotes before end of line", - NULL - }; - - do_parser_test< header_reader >(input, exp_calls, exp_errors); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add test cases for the "parse_error" class. - ATF_ADD_TEST_CASE(tcs, parse_error_to_string); - - // Add test cases for the "parse_errors" class. - ATF_ADD_TEST_CASE(tcs, parse_errors_what); - - // Add test cases for the "token" class. - ATF_ADD_TEST_CASE(tcs, token_getters); - - // Add test cases for the "tokenizer" class. - ATF_ADD_TEST_CASE(tcs, tokenizer_minimal_nows); - ATF_ADD_TEST_CASE(tcs, tokenizer_minimal_ws); - ATF_ADD_TEST_CASE(tcs, tokenizer_delims_nows); - ATF_ADD_TEST_CASE(tcs, tokenizer_delims_ws); - ATF_ADD_TEST_CASE(tcs, tokenizer_keywords_nows); - ATF_ADD_TEST_CASE(tcs, tokenizer_keywords_ws); - ATF_ADD_TEST_CASE(tcs, tokenizer_quotes_nows); - ATF_ADD_TEST_CASE(tcs, tokenizer_quotes_ws); - - // Add the tests for the headers parser. - - // Add the test cases for the header file. - ATF_ADD_TEST_CASE(tcs, headers_1); - ATF_ADD_TEST_CASE(tcs, headers_2); - ATF_ADD_TEST_CASE(tcs, headers_3); - ATF_ADD_TEST_CASE(tcs, headers_4); - ATF_ADD_TEST_CASE(tcs, headers_5); - ATF_ADD_TEST_CASE(tcs, headers_6); - ATF_ADD_TEST_CASE(tcs, headers_7); - ATF_ADD_TEST_CASE(tcs, headers_8); - ATF_ADD_TEST_CASE(tcs, headers_9); - ATF_ADD_TEST_CASE(tcs, headers_10); - ATF_ADD_TEST_CASE(tcs, headers_11); - ATF_ADD_TEST_CASE(tcs, headers_12); -} diff --git a/unit/atf-src/tools/pass_helper.cpp b/unit/atf-src/tools/pass_helper.cpp deleted file mode 100644 index 4fa75b4e93..0000000000 --- a/unit/atf-src/tools/pass_helper.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -ATF_TEST_CASE(main); -ATF_TEST_CASE_HEAD(main) -{ - set_md_var("descr", "Helper test case that always passes"); -} -ATF_TEST_CASE_BODY(main) -{ -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, main); -} diff --git a/unit/atf-src/tools/process.cpp b/unit/atf-src/tools/process.cpp deleted file mode 100644 index 987a60e14e..0000000000 --- a/unit/atf-src/tools/process.cpp +++ /dev/null @@ -1,492 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include - -#include -#include -} - -#include -#include -#include -#include -#include - -#include "defs.hpp" -#include "exceptions.hpp" -#include "text.hpp" -#include "process.hpp" - -namespace detail = tools::process::detail; -namespace impl = tools::process; -#define IMPL_NAME "tools::process" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -template< class C > -tools::auto_array< const char* > -collection_to_argv(const C& c) -{ - tools::auto_array< const char* > argv(new const char*[c.size() + 1]); - - std::size_t pos = 0; - for (typename C::const_iterator iter = c.begin(); iter != c.end(); - iter++) { - argv[pos] = (*iter).c_str(); - pos++; - } - assert(pos == c.size()); - argv[pos] = NULL; - - return argv; -} - -template< class C > -C -argv_to_collection(const char* const* argv) -{ - C c; - - for (const char* const* iter = argv; *iter != NULL; iter++) - c.push_back(std::string(*iter)); - - return c; -} - -static -void -safe_dup(const int oldfd, const int newfd) -{ - if (oldfd != newfd) { - if (dup2(oldfd, newfd) == -1) { - throw tools::system_error(IMPL_NAME "::safe_dup", - "Could not allocate file descriptor", - errno); - } else { - ::close(oldfd); - } - } -} - -static -int -const_execvp(const char *file, const char *const *argv) -{ -#define UNCONST(a) ((void *)(unsigned long)(const void *)(a)) - return ::execvp(file, (char* const*)(UNCONST(argv))); -#undef UNCONST -} - -void -detail::do_exec(void *v) -{ - struct exec_args *ea = reinterpret_cast(v); - - if (ea->m_prehook != NULL) - ea->m_prehook(); - - const int ret = const_execvp(ea->m_prog.c_str(), ea->m_argv.exec_argv()); - const int errnocopy = errno; - assert(ret == -1); - std::cerr << "exec(" << ea->m_prog.str() << ") failed: " - << std::strerror(errnocopy) << "\n"; - std::exit(EXIT_FAILURE); -} - -// ------------------------------------------------------------------------ -// The "argv_array" type. -// ------------------------------------------------------------------------ - -impl::argv_array::argv_array(void) : - m_exec_argv(collection_to_argv(m_args)) -{ -} - -impl::argv_array::argv_array(const char* arg1, ...) -{ - m_args.push_back(arg1); - - { - va_list ap; - const char* nextarg; - - va_start(ap, arg1); - while ((nextarg = va_arg(ap, const char*)) != NULL) - m_args.push_back(nextarg); - va_end(ap); - } - - ctor_init_exec_argv(); -} - -impl::argv_array::argv_array(const char* const* ca) : - m_args(argv_to_collection< args_vector >(ca)), - m_exec_argv(collection_to_argv(m_args)) -{ -} - -impl::argv_array::argv_array(const argv_array& a) : - m_args(a.m_args), - m_exec_argv(collection_to_argv(m_args)) -{ -} - -void -impl::argv_array::ctor_init_exec_argv(void) -{ - m_exec_argv = collection_to_argv(m_args); -} - -const char* const* -impl::argv_array::exec_argv(void) - const -{ - return m_exec_argv.get(); -} - -impl::argv_array::size_type -impl::argv_array::size(void) - const -{ - return m_args.size(); -} - -const char* -impl::argv_array::operator[](int idx) - const -{ - return m_args[idx].c_str(); -} - -impl::argv_array::const_iterator -impl::argv_array::begin(void) - const -{ - return m_args.begin(); -} - -impl::argv_array::const_iterator -impl::argv_array::end(void) - const -{ - return m_args.end(); -} - -impl::argv_array& -impl::argv_array::operator=(const argv_array& a) -{ - if (this != &a) { - m_args = a.m_args; - m_exec_argv = collection_to_argv(m_args); - } - return *this; -} - -// ------------------------------------------------------------------------ -// The "stream" types. -// ------------------------------------------------------------------------ - -impl::stream_capture::stream_capture(void) -{ - for (int i = 0; i < 2; i++) - m_pipefds[i] = -1; -} - -impl::stream_capture::~stream_capture(void) -{ - for (int i = 0; i < 2; i++) - if (m_pipefds[i] != -1) - ::close(m_pipefds[i]); -} - -void -impl::stream_capture::prepare(void) -{ - if (pipe(m_pipefds) == -1) - throw system_error(IMPL_NAME "::stream_capture::prepare", - "Failed to create pipe", errno); -} - -int -impl::stream_capture::connect_parent(void) -{ - ::close(m_pipefds[1]); m_pipefds[1] = -1; - const int fd = m_pipefds[0]; - m_pipefds[0] = -1; - return fd; -} - -void -impl::stream_capture::connect_child(const int fd) -{ - ::close(m_pipefds[0]); m_pipefds[0] = -1; - if (m_pipefds[1] != fd) { - safe_dup(m_pipefds[1], fd); - } - m_pipefds[1] = -1; -} - -impl::stream_connect::stream_connect(const int src_fd, const int tgt_fd) : - m_src_fd(src_fd), m_tgt_fd(tgt_fd) -{ -} - -void -impl::stream_connect::prepare(void) -{ -} - -int -impl::stream_connect::connect_parent(void) -{ - return -1; -} - -void -impl::stream_connect::connect_child(const int fd ATF_DEFS_ATTRIBUTE_UNUSED) -{ - safe_dup(m_tgt_fd, m_src_fd); -} - -impl::stream_inherit::stream_inherit(void) -{ -} - -void -impl::stream_inherit::prepare(void) -{ -} - -int -impl::stream_inherit::connect_parent(void) -{ - return -1; -} - -void -impl::stream_inherit::connect_child(const int fd ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -impl::stream_redirect_fd::stream_redirect_fd(const int fd) : - m_fd(fd) -{ -} - -void -impl::stream_redirect_fd::prepare(void) -{ -} - -int -impl::stream_redirect_fd::connect_parent(void) -{ - return -1; -} - -void -impl::stream_redirect_fd::connect_child(const int fd) -{ - safe_dup(m_fd, fd); -} - -impl::stream_redirect_path::stream_redirect_path(const tools::fs::path& p) : - m_path(p) -{ -} - -void -impl::stream_redirect_path::prepare(void) -{ -} - -int -impl::stream_redirect_path::connect_parent(void) -{ - return -1; -} - -void -impl::stream_redirect_path::connect_child(const int fd) -{ - const int aux = ::open(m_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (aux == -1) - throw system_error(IMPL_NAME "::stream_redirect_path::connect_child", - "Could not create " + m_path.str(), errno); - else - safe_dup(aux, fd); -} - -// ------------------------------------------------------------------------ -// The "status" type. -// ------------------------------------------------------------------------ - -impl::status::status(int s) : - m_status(s) -{ -} - -impl::status::~status(void) -{ -} - -bool -impl::status::exited(void) - const -{ - int mutable_status = m_status; - return WIFEXITED(mutable_status); -} - -int -impl::status::exitstatus(void) - const -{ - assert(exited()); - int mutable_status = m_status; - return WEXITSTATUS(mutable_status); -} - -bool -impl::status::signaled(void) - const -{ - int mutable_status = m_status; - return WIFSIGNALED(mutable_status); -} - -int -impl::status::termsig(void) - const -{ - assert(signaled()); - int mutable_status = m_status; - return WTERMSIG(mutable_status); -} - -bool -impl::status::coredump(void) - const -{ - assert(signaled()); -#if defined(WCOREDUMP) - int mutable_status = m_status; - return WCOREDUMP(mutable_status); -#else - return false; -#endif -} - -// ------------------------------------------------------------------------ -// The "child" type. -// ------------------------------------------------------------------------ - -impl::child::child(const pid_t pid_arg, const int stdout_fd_arg, - const int stderr_fd_arg) : - m_pid(pid_arg), - m_stdout(stdout_fd_arg), - m_stderr(stderr_fd_arg), - m_waited(false) -{ -} - -impl::child::~child(void) -{ - if (!m_waited) { - ::kill(m_pid, SIGTERM); - (void)wait(); - - if (m_stdout != -1) - ::close(m_stdout); - if (m_stderr != -1) - ::close(m_stderr); - } -} - -impl::status -impl::child::wait(void) -{ - int s; - - if (::waitpid(m_pid, &s, 0) == -1) - throw system_error(IMPL_NAME "::child::wait", "Failed waiting for " - "process " + text::to_string(m_pid), errno); - - if (m_stdout != -1) - ::close(m_stdout); m_stdout = -1; - if (m_stderr != -1) - ::close(m_stderr); m_stderr = -1; - - m_waited = true; - return status(s); -} - -pid_t -impl::child::pid(void) - const -{ - return m_pid; -} - -int -impl::child::stdout_fd(void) -{ - return m_stdout; -} - -int -impl::child::stderr_fd(void) -{ - return m_stderr; -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -void -detail::flush_streams(void) -{ - // This is a weird hack to ensure that the output of the parent process - // is flushed before executing a child which prevents, for example, the - // output of the atf-run hooks to appear before the output of atf-run - // itself. - // - // TODO: This should only be executed when inheriting the stdout or - // stderr file descriptors. However, the flushing is specific to the - // iostreams, so we cannot do it from the C library where all the process - // logic is performed. Come up with a better design. - std::cout.flush(); - std::cerr.flush(); -} diff --git a/unit/atf-src/tools/process.hpp b/unit/atf-src/tools/process.hpp deleted file mode 100644 index 2ebd865a8d..0000000000 --- a/unit/atf-src/tools/process.hpp +++ /dev/null @@ -1,324 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_PROCESS_HPP) -#define TOOLS_PROCESS_HPP - -extern "C" { -#include - -#include -} - -#include -#include -#include -#include -#include - -#include "auto_array.hpp" -#include "exceptions.hpp" -#include "fs.hpp" - -namespace tools { -namespace process { - -class child; -class status; - -// ------------------------------------------------------------------------ -// The "argv_array" type. -// ------------------------------------------------------------------------ - -class argv_array { - typedef std::vector< std::string > args_vector; - args_vector m_args; - - // TODO: This is immutable, so we should be able to use - // std::tr1::shared_array instead when it becomes widely available. - // The reason would be to remove all copy constructors and assignment - // operators from this class. - auto_array< const char* > m_exec_argv; - void ctor_init_exec_argv(void); - -public: - typedef args_vector::const_iterator const_iterator; - typedef args_vector::size_type size_type; - - argv_array(void); - argv_array(const char*, ...); - explicit argv_array(const char* const*); - template< class C > explicit argv_array(const C&); - argv_array(const argv_array&); - - const char* const* exec_argv(void) const; - size_type size(void) const; - const char* operator[](int) const; - - const_iterator begin(void) const; - const_iterator end(void) const; - - argv_array& operator=(const argv_array&); -}; - -template< class C > -argv_array::argv_array(const C& c) -{ - for (typename C::const_iterator iter = c.begin(); iter != c.end(); - iter++) - m_args.push_back(*iter); - ctor_init_exec_argv(); -} - -// ------------------------------------------------------------------------ -// The "stream" types. -// ------------------------------------------------------------------------ - -class stream_capture { - int m_pipefds[2]; - - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), OutStream, ErrStream, void*); - template< class OutStream, class ErrStream > friend - status exec(const tools::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - void prepare(void); - int connect_parent(void); - void connect_child(const int); - -public: - stream_capture(void); - ~stream_capture(void); -}; - -class stream_connect { - int m_src_fd; - int m_tgt_fd; - - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), OutStream, ErrStream, void*); - template< class OutStream, class ErrStream > friend - status exec(const tools::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - void prepare(void); - int connect_parent(void); - void connect_child(const int); - -public: - stream_connect(const int, const int); -}; - -class stream_inherit { - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), OutStream, ErrStream, void*); - template< class OutStream, class ErrStream > friend - status exec(const tools::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - void prepare(void); - int connect_parent(void); - void connect_child(const int); - -public: - stream_inherit(void); -}; - -class stream_redirect_fd { - int m_fd; - - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), OutStream, ErrStream, void*); - template< class OutStream, class ErrStream > friend - status exec(const tools::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - void prepare(void); - int connect_parent(void); - void connect_child(const int); - -public: - stream_redirect_fd(const int); -}; - -class stream_redirect_path { - const tools::fs::path m_path; - - // Allow access to the getters. - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), OutStream, ErrStream, void*); - template< class OutStream, class ErrStream > friend - status exec(const tools::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - void prepare(void); - int connect_parent(void); - void connect_child(const int); - -public: - stream_redirect_path(const tools::fs::path&); -}; - -// ------------------------------------------------------------------------ -// The "status" type. -// ------------------------------------------------------------------------ - -class status { - int m_status; - - friend class child; - template< class OutStream, class ErrStream > friend - status exec(const tools::fs::path&, const argv_array&, - const OutStream&, const ErrStream&, void (*)(void)); - - status(int); - -public: - ~status(void); - - bool exited(void) const; - int exitstatus(void) const; - - bool signaled(void) const; - int termsig(void) const; - bool coredump(void) const; -}; - -// ------------------------------------------------------------------------ -// The "child" type. -// ------------------------------------------------------------------------ - -class child { - pid_t m_pid; - - int m_stdout; - int m_stderr; - - bool m_waited; - - template< class OutStream, class ErrStream > friend - child fork(void (*)(void*), OutStream, ErrStream, void*); - - child(const pid_t, const int, const int); - -public: - ~child(void); - - status wait(void); - - pid_t pid(void) const; - int stdout_fd(void); - int stderr_fd(void); -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -namespace detail { -void flush_streams(void); - -struct exec_args { - const tools::fs::path m_prog; - const argv_array& m_argv; - void (*m_prehook)(void); -}; - -void do_exec(void *); -} // namespace detail - -// TODO: The void* cookie can probably be templatized, thus also allowing -// const data structures. -template< class OutStream, class ErrStream > -child -fork(void (*start)(void*), OutStream outsb, ErrStream errsb, void* v) -{ - detail::flush_streams(); - - outsb.prepare(); - errsb.prepare(); - - pid_t pid = ::fork(); - if (pid == -1) { - throw system_error("tools::process::child::fork", - "Failed to fork", errno); - } else if (pid == 0) { - try { - outsb.connect_child(STDOUT_FILENO); - errsb.connect_child(STDERR_FILENO); - start(v); - std::abort(); - } catch (...) { - std::cerr << "Unhandled error while running subprocess\n"; - std::exit(EXIT_FAILURE); - } - } else { - const int stdout_fd = outsb.connect_parent(); - const int stderr_fd = errsb.connect_parent(); - return child(pid, stdout_fd, stderr_fd); - } -} - -template< class OutStream, class ErrStream > -status -exec(const tools::fs::path& prog, const argv_array& argv, - const OutStream& outsb, const ErrStream& errsb, - void (*prehook)(void)) -{ - struct detail::exec_args ea = { prog, argv, prehook }; - child c = fork(detail::do_exec, outsb, errsb, &ea); - -again: - try { - return c.wait(); - } catch (const system_error& e) { - if (e.code() == EINTR) - goto again; - else - throw e; - } -} - -template< class OutStream, class ErrStream > -status -exec(const tools::fs::path& prog, const argv_array& argv, - const OutStream& outsb, const ErrStream& errsb) -{ - return exec(prog, argv, outsb, errsb, NULL); -} - -} // namespace process -} // namespace tools - -#endif // !defined(TOOLS_PROCESS_HPP) diff --git a/unit/atf-src/tools/process_helpers.c b/unit/atf-src/tools/process_helpers.c deleted file mode 100644 index 61f1b67c98..0000000000 --- a/unit/atf-src/tools/process_helpers.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Automated Testing Framework (atf) - * - * Copyright (c) 2008 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -#include /* NO_CHECK_STYLE */ -#include -#include -#include -#include -#include - -static -int -h_echo(const char *msg) -{ - printf("%s\n", msg); - return EXIT_SUCCESS; -} - -static -int -h_exit_failure(void) -{ - return EXIT_FAILURE; -} - -static -int -h_exit_signal(void) -{ - kill(getpid(), SIGKILL); - assert(0); /* NO_CHECK_STYLE */ - return EXIT_FAILURE; -} - -static -int -h_exit_success(void) -{ - return EXIT_SUCCESS; -} - -static -int -h_stdout_stderr(const char *id) -{ - fprintf(stdout, "Line 1 to stdout for %s\n", id); - fprintf(stdout, "Line 2 to stdout for %s\n", id); - fprintf(stderr, "Line 1 to stderr for %s\n", id); - fprintf(stderr, "Line 2 to stderr for %s\n", id); - - return EXIT_SUCCESS; -} - -static -void -check_args(const int argc, const char *const argv[], const int required) -{ - if (argc < required) { - fprintf(stderr, "Usage: %s helper-name [args]\n", argv[0]); - exit(EXIT_FAILURE); - } -} - -int -main(int argc, const char *const argv[]) -{ - int exitcode; - - check_args(argc, argv, 2); - - if (strcmp(argv[1], "echo") == 0) { - check_args(argc, argv, 3); - exitcode = h_echo(argv[2]); - } else if (strcmp(argv[1], "exit-failure") == 0) - exitcode = h_exit_failure(); - else if (strcmp(argv[1], "exit-signal") == 0) - exitcode = h_exit_signal(); - else if (strcmp(argv[1], "exit-success") == 0) - exitcode = h_exit_success(); - else if (strcmp(argv[1], "stdout-stderr") == 0) { - check_args(argc, argv, 3); - exitcode = h_stdout_stderr(argv[2]); - } else { - fprintf(stderr, "%s: Unknown helper %s\n", argv[0], argv[1]); - exitcode = EXIT_FAILURE; - } - - return exitcode; -} diff --git a/unit/atf-src/tools/process_test.cpp b/unit/atf-src/tools/process_test.cpp deleted file mode 100644 index 70da919dd0..0000000000 --- a/unit/atf-src/tools/process_test.cpp +++ /dev/null @@ -1,360 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include - -#include "process.hpp" -#include "test_helpers.hpp" - -// TODO: Testing the fork function is a huge task and I'm afraid of -// copy/pasting tons of stuff from the C version. I'd rather not do that -// until some code can be shared, which cannot happen until the C++ binding -// is cleaned by a fair amount. Instead... just rely (at the moment) on -// the system tests for the tools using this module. - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -static -std::size_t -array_size(const char* const* array) -{ - std::size_t size = 0; - - for (const char* const* ptr = array; *ptr != NULL; ptr++) - size++; - - return size; -} - -static -tools::process::status -exec_process_helpers(const atf::tests::tc& tc, const char* helper_name) -{ - using tools::process::exec; - - const tools::fs::path helpers = tools::fs::path(tc.get_config_var("srcdir")) / - "process_helpers"; - - std::vector< std::string > argv; - argv.push_back(helpers.leaf_name()); - argv.push_back(helper_name); - - return exec(helpers, - tools::process::argv_array(argv), - tools::process::stream_inherit(), - tools::process::stream_inherit()); -} - -// ------------------------------------------------------------------------ -// Tests for the "argv_array" type. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(argv_array_init_carray); -ATF_TEST_CASE_HEAD(argv_array_init_carray) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "from a C-style array of strings"); -} -ATF_TEST_CASE_BODY(argv_array_init_carray) -{ - { - const char* const carray[] = { NULL }; - tools::process::argv_array argv(carray); - - ATF_REQUIRE_EQ(argv.size(), 0); - } - - { - const char* const carray[] = { "arg0", NULL }; - tools::process::argv_array argv(carray); - - ATF_REQUIRE_EQ(argv.size(), 1); - ATF_REQUIRE(std::strcmp(argv[0], carray[0]) == 0); - } - - { - const char* const carray[] = { "arg0", "arg1", "arg2", NULL }; - tools::process::argv_array argv(carray); - - ATF_REQUIRE_EQ(argv.size(), 3); - ATF_REQUIRE(std::strcmp(argv[0], carray[0]) == 0); - ATF_REQUIRE(std::strcmp(argv[1], carray[1]) == 0); - ATF_REQUIRE(std::strcmp(argv[2], carray[2]) == 0); - } -} - -ATF_TEST_CASE(argv_array_init_col); -ATF_TEST_CASE_HEAD(argv_array_init_col) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "from a string collection"); -} -ATF_TEST_CASE_BODY(argv_array_init_col) -{ - { - std::vector< std::string > col; - tools::process::argv_array argv(col); - - ATF_REQUIRE_EQ(argv.size(), 0); - } - - { - std::vector< std::string > col; - col.push_back("arg0"); - tools::process::argv_array argv(col); - - ATF_REQUIRE_EQ(argv.size(), 1); - ATF_REQUIRE_EQ(argv[0], col[0]); - } - - { - std::vector< std::string > col; - col.push_back("arg0"); - col.push_back("arg1"); - col.push_back("arg2"); - tools::process::argv_array argv(col); - - ATF_REQUIRE_EQ(argv.size(), 3); - ATF_REQUIRE_EQ(argv[0], col[0]); - ATF_REQUIRE_EQ(argv[1], col[1]); - ATF_REQUIRE_EQ(argv[2], col[2]); - } -} - -ATF_TEST_CASE(argv_array_init_empty); -ATF_TEST_CASE_HEAD(argv_array_init_empty) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "by the default constructor"); -} -ATF_TEST_CASE_BODY(argv_array_init_empty) -{ - tools::process::argv_array argv; - - ATF_REQUIRE_EQ(argv.size(), 0); -} - -ATF_TEST_CASE(argv_array_init_varargs); -ATF_TEST_CASE_HEAD(argv_array_init_varargs) -{ - set_md_var("descr", "Tests that argv_array is correctly constructed " - "from a variable list of arguments"); -} -ATF_TEST_CASE_BODY(argv_array_init_varargs) -{ - { - tools::process::argv_array argv("arg0", NULL); - - ATF_REQUIRE_EQ(argv.size(), 1); - ATF_REQUIRE_EQ(argv[0], std::string("arg0")); - } - - { - tools::process::argv_array argv("arg0", "arg1", "arg2", NULL); - - ATF_REQUIRE_EQ(argv.size(), 3); - ATF_REQUIRE_EQ(argv[0], std::string("arg0")); - ATF_REQUIRE_EQ(argv[1], std::string("arg1")); - ATF_REQUIRE_EQ(argv[2], std::string("arg2")); - } -} - -ATF_TEST_CASE(argv_array_assign); -ATF_TEST_CASE_HEAD(argv_array_assign) -{ - set_md_var("descr", "Tests that assigning an argv_array works"); -} -ATF_TEST_CASE_BODY(argv_array_assign) -{ - using tools::process::argv_array; - - const char* const carray1[] = { "arg1", NULL }; - const char* const carray2[] = { "arg1", "arg2", NULL }; - - std::auto_ptr< argv_array > argv1(new argv_array(carray1)); - std::auto_ptr< argv_array > argv2(new argv_array(carray2)); - - *argv2 = *argv1; - ATF_REQUIRE_EQ(argv2->size(), argv1->size()); - ATF_REQUIRE(std::strcmp((*argv2)[0], (*argv1)[0]) == 0); - - ATF_REQUIRE(argv2->exec_argv() != argv1->exec_argv()); - argv1.release(); - { - const char* const* eargv2 = argv2->exec_argv(); - ATF_REQUIRE(std::strcmp(eargv2[0], carray1[0]) == 0); - ATF_REQUIRE_EQ(eargv2[1], static_cast< const char* >(NULL)); - } - - argv2.release(); -} - -ATF_TEST_CASE(argv_array_copy); -ATF_TEST_CASE_HEAD(argv_array_copy) -{ - set_md_var("descr", "Tests that copying an argv_array constructed from " - "a C-style array of strings works"); -} -ATF_TEST_CASE_BODY(argv_array_copy) -{ - using tools::process::argv_array; - - const char* const carray[] = { "arg0", NULL }; - - std::auto_ptr< argv_array > argv1(new argv_array(carray)); - std::auto_ptr< argv_array > argv2(new argv_array(*argv1)); - - ATF_REQUIRE_EQ(argv2->size(), argv1->size()); - ATF_REQUIRE(std::strcmp((*argv2)[0], (*argv1)[0]) == 0); - - ATF_REQUIRE(argv2->exec_argv() != argv1->exec_argv()); - argv1.release(); - { - const char* const* eargv2 = argv2->exec_argv(); - ATF_REQUIRE(std::strcmp(eargv2[0], carray[0]) == 0); - ATF_REQUIRE_EQ(eargv2[1], static_cast< const char* >(NULL)); - } - - argv2.release(); -} - -ATF_TEST_CASE(argv_array_exec_argv); -ATF_TEST_CASE_HEAD(argv_array_exec_argv) -{ - set_md_var("descr", "Tests that the exec argv provided by an argv_array " - "is correct"); -} -ATF_TEST_CASE_BODY(argv_array_exec_argv) -{ - using tools::process::argv_array; - - { - argv_array argv; - const char* const* eargv = argv.exec_argv(); - ATF_REQUIRE_EQ(array_size(eargv), 0); - ATF_REQUIRE_EQ(eargv[0], static_cast< const char* >(NULL)); - } - - { - const char* const carray[] = { "arg0", NULL }; - argv_array argv(carray); - const char* const* eargv = argv.exec_argv(); - ATF_REQUIRE_EQ(array_size(eargv), 1); - ATF_REQUIRE(std::strcmp(eargv[0], "arg0") == 0); - ATF_REQUIRE_EQ(eargv[1], static_cast< const char* >(NULL)); - } - - { - std::vector< std::string > col; - col.push_back("arg0"); - argv_array argv(col); - const char* const* eargv = argv.exec_argv(); - ATF_REQUIRE_EQ(array_size(eargv), 1); - ATF_REQUIRE(std::strcmp(eargv[0], "arg0") == 0); - ATF_REQUIRE_EQ(eargv[1], static_cast< const char* >(NULL)); - } -} - -ATF_TEST_CASE(argv_array_iter); -ATF_TEST_CASE_HEAD(argv_array_iter) -{ - set_md_var("descr", "Tests that an argv_array can be iterated"); -} -ATF_TEST_CASE_BODY(argv_array_iter) -{ - using tools::process::argv_array; - - std::vector< std::string > vector; - vector.push_back("arg0"); - vector.push_back("arg1"); - vector.push_back("arg2"); - - argv_array argv(vector); - ATF_REQUIRE_EQ(argv.size(), 3); - std::vector< std::string >::size_type pos = 0; - for (argv_array::const_iterator iter = argv.begin(); iter != argv.end(); - iter++) { - ATF_REQUIRE_EQ(*iter, vector[pos]); - pos++; - } -} - -// ------------------------------------------------------------------------ -// Tests cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(exec_failure); -ATF_TEST_CASE_HEAD(exec_failure) -{ - set_md_var("descr", "Tests execing a command that reports failure"); -} -ATF_TEST_CASE_BODY(exec_failure) -{ - const tools::process::status s = exec_process_helpers(*this, "exit-failure"); - ATF_REQUIRE(s.exited()); - ATF_REQUIRE_EQ(s.exitstatus(), EXIT_FAILURE); -} - -ATF_TEST_CASE(exec_success); -ATF_TEST_CASE_HEAD(exec_success) -{ - set_md_var("descr", "Tests execing a command that reports success"); -} -ATF_TEST_CASE_BODY(exec_success) -{ - const tools::process::status s = exec_process_helpers(*this, "exit-success"); - ATF_REQUIRE(s.exited()); - ATF_REQUIRE_EQ(s.exitstatus(), EXIT_SUCCESS); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the "argv_array" type. - ATF_ADD_TEST_CASE(tcs, argv_array_assign); - ATF_ADD_TEST_CASE(tcs, argv_array_copy); - ATF_ADD_TEST_CASE(tcs, argv_array_exec_argv); - ATF_ADD_TEST_CASE(tcs, argv_array_init_carray); - ATF_ADD_TEST_CASE(tcs, argv_array_init_col); - ATF_ADD_TEST_CASE(tcs, argv_array_init_empty); - ATF_ADD_TEST_CASE(tcs, argv_array_init_varargs); - ATF_ADD_TEST_CASE(tcs, argv_array_iter); - - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, exec_failure); - ATF_ADD_TEST_CASE(tcs, exec_success); -} diff --git a/unit/atf-src/tools/reader.cpp b/unit/atf-src/tools/reader.cpp deleted file mode 100644 index 67fce662a1..0000000000 --- a/unit/atf-src/tools/reader.cpp +++ /dev/null @@ -1,440 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -} - -#include -#include -#include -#include -#include - -#include "defs.hpp" -#include "parser.hpp" -#include "reader.hpp" -#include "text.hpp" - -namespace impl = tools::atf_report; -#define IMPL_NAME "tools::atf_report" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -template< typename Type > -Type -string_to_int(const std::string& str) -{ - std::istringstream ss(str); - Type s; - ss >> s; - - return s; -} - -// ------------------------------------------------------------------------ -// The "atf_tps" auxiliary parser. -// ------------------------------------------------------------------------ - -namespace atf_tps { - -static const tools::parser::token_type eof_type = 0; -static const tools::parser::token_type nl_type = 1; -static const tools::parser::token_type text_type = 2; -static const tools::parser::token_type colon_type = 3; -static const tools::parser::token_type comma_type = 4; -static const tools::parser::token_type tps_count_type = 5; -static const tools::parser::token_type tp_start_type = 6; -static const tools::parser::token_type tp_end_type = 7; -static const tools::parser::token_type tc_start_type = 8; -static const tools::parser::token_type tc_so_type = 9; -static const tools::parser::token_type tc_se_type = 10; -static const tools::parser::token_type tc_end_type = 11; -static const tools::parser::token_type passed_type = 12; -static const tools::parser::token_type failed_type = 13; -static const tools::parser::token_type skipped_type = 14; -static const tools::parser::token_type info_type = 16; -static const tools::parser::token_type expected_death_type = 17; -static const tools::parser::token_type expected_exit_type = 18; -static const tools::parser::token_type expected_failure_type = 19; -static const tools::parser::token_type expected_signal_type = 20; -static const tools::parser::token_type expected_timeout_type = 21; - -class tokenizer : public tools::parser::tokenizer< std::istream > { -public: - tokenizer(std::istream& is, size_t curline) : - tools::parser::tokenizer< std::istream > - (is, true, eof_type, nl_type, text_type, curline) - { - add_delim(':', colon_type); - add_delim(',', comma_type); - add_keyword("tps-count", tps_count_type); - add_keyword("tp-start", tp_start_type); - add_keyword("tp-end", tp_end_type); - add_keyword("tc-start", tc_start_type); - add_keyword("tc-so", tc_so_type); - add_keyword("tc-se", tc_se_type); - add_keyword("tc-end", tc_end_type); - add_keyword("passed", passed_type); - add_keyword("failed", failed_type); - add_keyword("skipped", skipped_type); - add_keyword("info", info_type); - add_keyword("expected_death", expected_death_type); - add_keyword("expected_exit", expected_exit_type); - add_keyword("expected_failure", expected_failure_type); - add_keyword("expected_signal", expected_signal_type); - add_keyword("expected_timeout", expected_timeout_type); - } -}; - -} // namespace atf_tps - -struct timeval -read_timeval(tools::parser::parser< atf_tps::tokenizer >& parser) -{ - using namespace atf_tps; - - tools::parser::token t = parser.expect(text_type, "timestamp"); - const std::string::size_type divider = t.text().find('.'); - if (divider == std::string::npos || divider == 0 || - divider == t.text().length() - 1) - throw tools::parser::parse_error(t.lineno(), - "Malformed timestamp value " + t.text()); - - struct timeval tv; - tv.tv_sec = string_to_int< long >(t.text().substr(0, divider)); - tv.tv_usec = string_to_int< long >(t.text().substr(divider + 1)); - return tv; -} - -// ------------------------------------------------------------------------ -// The "atf_tps_reader" class. -// ------------------------------------------------------------------------ - -impl::atf_tps_reader::atf_tps_reader(std::istream& is) : - m_is(is) -{ -} - -impl::atf_tps_reader::~atf_tps_reader(void) -{ -} - -void -impl::atf_tps_reader::got_info( - const std::string& what ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& val ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_ntps(size_t ntps ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_tp_start( - const std::string& tp ATF_DEFS_ATTRIBUTE_UNUSED, - size_t ntcs ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_tp_end( - struct timeval* tv ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& reason ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_tc_start( - const std::string& tcname ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_tc_stdout_line( - const std::string& line ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_tc_stderr_line( - const std::string& line ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_tc_end( - const std::string& state ATF_DEFS_ATTRIBUTE_UNUSED, - struct timeval* tv ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& reason ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -impl::atf_tps_reader::got_eof(void) -{ -} - -void -impl::atf_tps_reader::read_info(void* pptr) -{ - using tools::parser::parse_error; - using namespace atf_tps; - - tools::parser::parser< tokenizer >& p = - *reinterpret_cast< tools::parser::parser< tokenizer >* > - (pptr); - - (void)p.expect(colon_type, "`:'"); - - tools::parser::token t = p.expect(text_type, "info property name"); - (void)p.expect(comma_type, "`,'"); - got_info(t.text(), tools::text::trim(p.rest_of_line())); - - (void)p.expect(nl_type, "new line"); -} - -void -impl::atf_tps_reader::read_tp(void* pptr) -{ - using tools::parser::parse_error; - using namespace atf_tps; - - tools::parser::parser< tokenizer >& p = - *reinterpret_cast< tools::parser::parser< tokenizer >* > - (pptr); - - tools::parser::token t = p.expect(tp_start_type, - "start of test program"); - - t = p.expect(colon_type, "`:'"); - - struct timeval s1 = read_timeval(p); - - t = p.expect(comma_type, "`,'"); - - t = p.expect(text_type, "test program name"); - std::string tpname = t.text(); - - t = p.expect(comma_type, "`,'"); - - t = p.expect(text_type, "number of test programs"); - size_t ntcs = string_to_int< std::size_t >(t.text()); - - t = p.expect(nl_type, "new line"); - - ATF_PARSER_CALLBACK(p, got_tp_start(tpname, ntcs)); - - size_t i = 0; - while (p.good() && i < ntcs) { - try { - read_tc(&p); - i++; - } catch (const parse_error& pe) { - p.add_error(pe); - p.reset(nl_type); - } - } - t = p.expect(tp_end_type, "end of test program"); - - t = p.expect(colon_type, "`:'"); - - struct timeval s2 = read_timeval(p); - - struct timeval s3; - timersub(&s2, &s1, &s3); - - t = p.expect(comma_type, "`,'"); - - t = p.expect(text_type, "test program name"); - if (t.text() != tpname) - throw parse_error(t.lineno(), "Test program name used in " - "terminator does not match " - "opening"); - - t = p.expect(nl_type, comma_type, - "new line or comma_type"); - std::string reason; - if (t.type() == comma_type) { - reason = tools::text::trim(p.rest_of_line()); - if (reason.empty()) - throw parse_error(t.lineno(), - "Empty reason for failed test program"); - t = p.next(); - } - - ATF_PARSER_CALLBACK(p, got_tp_end(&s3, reason)); -} - -void -impl::atf_tps_reader::read_tc(void* pptr) -{ - using tools::parser::parse_error; - using namespace atf_tps; - - tools::parser::parser< tokenizer >& p = - *reinterpret_cast< tools::parser::parser< tokenizer >* > - (pptr); - - tools::parser::token t = p.expect(tc_start_type, "start of test case"); - - t = p.expect(colon_type, "`:'"); - - struct timeval s1 = read_timeval(p); - - t = p.expect(comma_type, "`,'"); - - t = p.expect(text_type, "test case name"); - std::string tcname = t.text(); - - ATF_PARSER_CALLBACK(p, got_tc_start(tcname)); - - t = p.expect(nl_type, "new line"); - - t = p.expect(tc_end_type, tc_so_type, tc_se_type, - "end of test case or test case's stdout/stderr line"); - while (t.type() != tc_end_type && - (t.type() == tc_so_type || t.type() == tc_se_type)) { - tools::parser::token t2 = t; - - t = p.expect(colon_type, "`:'"); - - std::string line = p.rest_of_line(); - - if (t2.type() == tc_so_type) { - ATF_PARSER_CALLBACK(p, got_tc_stdout_line(line)); - } else { - assert(t2.type() == tc_se_type); - ATF_PARSER_CALLBACK(p, got_tc_stderr_line(line)); - } - - t = p.expect(nl_type, "new line"); - - t = p.expect(tc_end_type, tc_so_type, tc_se_type, - "end of test case or test case's stdout/stderr line"); - } - - t = p.expect(colon_type, "`:'"); - - struct timeval s2 = read_timeval(p); - - struct timeval s3; - timersub(&s2, &s1, &s3); - - t = p.expect(comma_type, "`,'"); - - t = p.expect(text_type, "test case name"); - if (t.text() != tcname) - throw parse_error(t.lineno(), - "Test case name used in terminator does not " - "match opening"); - - t = p.expect(comma_type, "`,'"); - - t = p.expect(expected_death_type, expected_exit_type, expected_failure_type, - expected_signal_type, expected_timeout_type, passed_type, failed_type, - skipped_type, "expected_{death,exit,failure,signal,timeout}, failed, " - "passed or skipped"); - if (t.type() == passed_type) { - ATF_PARSER_CALLBACK(p, got_tc_end("passed", &s3, "")); - } else { - std::string state; - if (t.type() == expected_death_type) state = "expected_death"; - else if (t.type() == expected_exit_type) state = "expected_exit"; - else if (t.type() == expected_failure_type) state = "expected_failure"; - else if (t.type() == expected_signal_type) state = "expected_signal"; - else if (t.type() == expected_timeout_type) state = "expected_timeout"; - else if (t.type() == failed_type) state = "failed"; - else if (t.type() == skipped_type) state = "skipped"; - else std::abort(); - - t = p.expect(comma_type, "`,'"); - std::string reason = tools::text::trim(p.rest_of_line()); - if (reason.empty()) - throw parse_error(t.lineno(), "Empty reason for " + state + - " test case result"); - ATF_PARSER_CALLBACK(p, got_tc_end(state, &s3, reason)); - } - - t = p.expect(nl_type, "new line"); -} - -void -impl::atf_tps_reader::read(void) -{ - using tools::parser::parse_error; - using namespace atf_tps; - - std::pair< size_t, tools::parser::headers_map > hml = - tools::parser::read_headers(m_is, 1); - tools::parser::validate_content_type(hml.second, - "application/X-atf-tps", 3); - - tokenizer tkz(m_is, hml.first); - tools::parser::parser< tokenizer > p(tkz); - - try { - tools::parser::token t; - - while ((t = p.expect(tps_count_type, info_type, "tps-count or info " - "field")).type() == info_type) - read_info(&p); - - t = p.expect(colon_type, "`:'"); - - t = p.expect(text_type, "number of test programs"); - size_t ntps = string_to_int< std::size_t >(t.text()); - ATF_PARSER_CALLBACK(p, got_ntps(ntps)); - - t = p.expect(nl_type, "new line"); - - size_t i = 0; - while (p.good() && i < ntps) { - try { - read_tp(&p); - i++; - } catch (const parse_error& pe) { - p.add_error(pe); - p.reset(nl_type); - } - } - - while ((t = p.expect(eof_type, info_type, "end of stream or info " - "field")).type() == info_type) - read_info(&p); - ATF_PARSER_CALLBACK(p, got_eof()); - } catch (const parse_error& pe) { - p.add_error(pe); - p.reset(nl_type); - } -} diff --git a/unit/atf-src/tools/reader.hpp b/unit/atf-src/tools/reader.hpp deleted file mode 100644 index 34d5d25f01..0000000000 --- a/unit/atf-src/tools/reader.hpp +++ /dev/null @@ -1,89 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_FORMATS_HPP) -#define TOOLS_FORMATS_HPP - -extern "C" { -#include -} - -#include -#include - -namespace tools { -namespace atf_report { - -struct test_case_result { - enum state_enum { - PASSED, - FAILED, - SKIPPED, - }; - const state_enum state; - const std::string& reason; - - test_case_result(const state_enum p_state, const std::string& p_reason) : - state(p_state), - reason(p_reason) - { - } -}; - -class atf_tps_reader { - std::istream& m_is; - - void read_info(void*); - void read_tp(void*); - void read_tc(void*); - -protected: - virtual void got_info(const std::string&, const std::string&); - virtual void got_ntps(size_t); - virtual void got_tp_start(const std::string&, size_t); - virtual void got_tp_end(struct timeval*, const std::string&); - - virtual void got_tc_start(const std::string&); - virtual void got_tc_stdout_line(const std::string&); - virtual void got_tc_stderr_line(const std::string&); - virtual void got_tc_end(const std::string&, struct timeval*, - const std::string&); - virtual void got_eof(void); - -public: - atf_tps_reader(std::istream&); - virtual ~atf_tps_reader(void); - - void read(void); -}; - -} // namespace atf_report -} // namespace tools - -#endif // !defined(TOOLS_FORMATS_HPP) diff --git a/unit/atf-src/tools/reader_test.cpp b/unit/atf-src/tools/reader_test.cpp deleted file mode 100644 index 745b0bb8cc..0000000000 --- a/unit/atf-src/tools/reader_test.cpp +++ /dev/null @@ -1,986 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include -#include -#include -#include - -#include - -#include "parser.hpp" -#include "reader.hpp" -#include "test_helpers.hpp" -#include "text.hpp" - -namespace impl = tools::atf_report; - -class tps_reader : protected impl::atf_tps_reader { - void - got_info(const std::string& what, const std::string& val) - { - m_calls.push_back("got_info(" + what + ", " + val + ")"); - } - - void - got_ntps(size_t ntps) - { - m_calls.push_back("got_ntps(" + tools::text::to_string(ntps) + ")"); - } - - void - got_tp_start(const std::string& tpname, size_t ntcs) - { - m_calls.push_back("got_tp_start(" + tpname + ", " + - tools::text::to_string(ntcs) + ")"); - } - - void - got_tp_end(struct timeval* tv ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& reason) - { - m_calls.push_back("got_tp_end(" + reason + ")"); - } - - void - got_tc_start(const std::string& tcname) - { - m_calls.push_back("got_tc_start(" + tcname + ")"); - } - - void - got_tc_end(const std::string& state, - struct timeval* tv ATF_DEFS_ATTRIBUTE_UNUSED, - const std::string& reason) - { - const std::string r = state + (reason.empty() ? "" : ", " + reason); - m_calls.push_back("got_tc_end(" + r + ")"); - } - - void - got_tc_stdout_line(const std::string& line) - { - m_calls.push_back("got_tc_stdout_line(" + line + ")"); - } - - void - got_tc_stderr_line(const std::string& line) - { - m_calls.push_back("got_tc_stderr_line(" + line + ")"); - } - - void - got_eof(void) - { - m_calls.push_back("got_eof()"); - } - -public: - tps_reader(std::istream& is) : - impl::atf_tps_reader(is) - { - } - - void - read(void) - { - atf_tps_reader::read(); - } - - std::vector< std::string > m_calls; -}; - -ATF_TEST_CASE_WITHOUT_HEAD(tps_1); -ATF_TEST_CASE_BODY(tps_1) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 0\n" - ; - - const char* exp_calls[] = { - "got_ntps(0)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_2); -ATF_TEST_CASE_BODY(tps_2) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 2\n" - "tp-start: 123.456, first-prog, 0\n" - "tp-end: 123.567, first-prog\n" - "tp-start: 123.678, second-prog, 0\n" - "tp-end: 123.789, second-prog, This program failed\n" - ; - - const char* exp_calls[] = { - "got_ntps(2)", - "got_tp_start(first-prog, 0)", - "got_tp_end()", - "got_tp_start(second-prog, 0)", - "got_tp_end(This program failed)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_3); -ATF_TEST_CASE_BODY(tps_3) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 2\n" - "tp-start: 123.123, first-prog, 3\n" - "tc-start: 123.234, first-test\n" - "tc-end: 123.345, first-test, passed\n" - "tc-start: 123.456, second-test\n" - "tc-end: 123.567, second-test, skipped, Testing skipped reason\n" - "tc-start: 123.678, third.test\n" - "tc-end: 123.789, third.test, failed, Testing failed reason\n" - "tp-end: 123.890, first-prog\n" - "tp-start: 124.901, second-prog, 3\n" - "tc-start: 124.1012, first-test\n" - "tc-so:first stdout line for 1st test\n" - "tc-se:first stderr line for 1st test\n" - "tc-so:second stdout line for 1st test\n" - "tc-se:second stderr line for 1st test\n" - "tc-end: 124.1123, first-test, passed\n" - "tc-start: 124.1234, second-test\n" - "tc-so:first stdout line for 2nd test\n" - "tc-se:first stderr line for 2nd test\n" - "tc-so:second stdout line for 2nd test\n" - "tc-se:second stderr line for 2nd test\n" - "tc-end: 124.1345, second-test, skipped, Testing skipped reason\n" - "tc-start: 124.1456, third.test\n" - "tc-so:first stdout line for 3rd test\n" - "tc-se:first stderr line for 3rd test\n" - "tc-so:second stdout line for 3rd test\n" - "tc-se:second stderr line for 3rd test\n" - "tc-end: 124.1567, third.test, failed, Testing failed reason\n" - "tp-end: 124.1678, second-prog, This program failed\n" - ; - - const char* exp_calls[] = { - "got_ntps(2)", - "got_tp_start(first-prog, 3)", - "got_tc_start(first-test)", - "got_tc_end(passed)", - "got_tc_start(second-test)", - "got_tc_end(skipped, Testing skipped reason)", - "got_tc_start(third.test)", - "got_tc_end(failed, Testing failed reason)", - "got_tp_end()", - "got_tp_start(second-prog, 3)", - "got_tc_start(first-test)", - "got_tc_stdout_line(first stdout line for 1st test)", - "got_tc_stderr_line(first stderr line for 1st test)", - "got_tc_stdout_line(second stdout line for 1st test)", - "got_tc_stderr_line(second stderr line for 1st test)", - "got_tc_end(passed)", - "got_tc_start(second-test)", - "got_tc_stdout_line(first stdout line for 2nd test)", - "got_tc_stderr_line(first stderr line for 2nd test)", - "got_tc_stdout_line(second stdout line for 2nd test)", - "got_tc_stderr_line(second stderr line for 2nd test)", - "got_tc_end(skipped, Testing skipped reason)", - "got_tc_start(third.test)", - "got_tc_stdout_line(first stdout line for 3rd test)", - "got_tc_stderr_line(first stderr line for 3rd test)", - "got_tc_stdout_line(second stdout line for 3rd test)", - "got_tc_stderr_line(second stderr line for 3rd test)", - "got_tc_end(failed, Testing failed reason)", - "got_tp_end(This program failed)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_4); -ATF_TEST_CASE_BODY(tps_4) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a, foo\n" - "info: b, bar\n" - "info: c, baz\n" - "tps-count: 2\n" - "tp-start: 234.1, first-prog, 3\n" - "tc-start: 234.12, first-test\n" - "tc-end: 234.23, first-test, passed\n" - "tc-start: 234.34, second-test\n" - "tc-end: 234.45, second-test, skipped, Testing skipped reason\n" - "tc-start: 234.56, third-test\n" - "tc-end: 234.67, third-test, failed, Testing failed reason\n" - "tp-end: 234.78, first-prog\n" - "tp-start: 234.89, second-prog, 3\n" - "tc-start: 234.90, first-test\n" - "tc-so:first stdout line for 1st test\n" - "tc-se:first stderr line for 1st test\n" - "tc-so:second stdout line for 1st test\n" - "tc-se:second stderr line for 1st test\n" - "tc-end: 234.101, first-test, passed\n" - "tc-start: 234.112, second-test\n" - "tc-so:first stdout line for 2nd test\n" - "tc-se:first stderr line for 2nd test\n" - "tc-so:second stdout line for 2nd test\n" - "tc-se:second stderr line for 2nd test\n" - "tc-end: 234.123, second-test, skipped, Testing skipped reason\n" - "tc-start: 234.134, third-test\n" - "tc-so:first stdout line for 3rd test\n" - "tc-se:first stderr line for 3rd test\n" - "tc-so:second stdout line for 3rd test\n" - "tc-se:second stderr line for 3rd test\n" - "tc-end: 234.145, third-test, failed, Testing failed reason\n" - "tp-end: 234.156, second-prog, This program failed\n" - "info: d, foo\n" - "info: e, bar\n" - "info: f, baz\n" - ; - - const char* exp_calls[] = { - "got_info(a, foo)", - "got_info(b, bar)", - "got_info(c, baz)", - "got_ntps(2)", - "got_tp_start(first-prog, 3)", - "got_tc_start(first-test)", - "got_tc_end(passed)", - "got_tc_start(second-test)", - "got_tc_end(skipped, Testing skipped reason)", - "got_tc_start(third-test)", - "got_tc_end(failed, Testing failed reason)", - "got_tp_end()", - "got_tp_start(second-prog, 3)", - "got_tc_start(first-test)", - "got_tc_stdout_line(first stdout line for 1st test)", - "got_tc_stderr_line(first stderr line for 1st test)", - "got_tc_stdout_line(second stdout line for 1st test)", - "got_tc_stderr_line(second stderr line for 1st test)", - "got_tc_end(passed)", - "got_tc_start(second-test)", - "got_tc_stdout_line(first stdout line for 2nd test)", - "got_tc_stderr_line(first stderr line for 2nd test)", - "got_tc_stdout_line(second stdout line for 2nd test)", - "got_tc_stderr_line(second stderr line for 2nd test)", - "got_tc_end(skipped, Testing skipped reason)", - "got_tc_start(third-test)", - "got_tc_stdout_line(first stdout line for 3rd test)", - "got_tc_stderr_line(first stderr line for 3rd test)", - "got_tc_stdout_line(second stdout line for 3rd test)", - "got_tc_stderr_line(second stderr line for 3rd test)", - "got_tc_end(failed, Testing failed reason)", - "got_tp_end(This program failed)", - "got_info(d, foo)", - "got_info(e, bar)", - "got_info(f, baz)", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_5); -ATF_TEST_CASE_BODY(tps_5) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "tp-start: 345.123, the-prog, 1\n" - "tc-start: 345.134, the-test\n" - "tc-so:--- a 2007-11-04 14:00:41.000000000 +0100\n" - "tc-so:+++ b 2007-11-04 14:00:48.000000000 +0100\n" - "tc-so:@@ -1,7 +1,7 @@\n" - "tc-so: This test is meant to simulate a diff.\n" - "tc-so: Blank space at beginning of context lines must be preserved.\n" - "tc-so: \n" - "tc-so:-First original line.\n" - "tc-so:-Second original line.\n" - "tc-so:+First modified line.\n" - "tc-so:+Second modified line.\n" - "tc-so: \n" - "tc-so: EOF\n" - "tc-end: 345.145, the-test, passed\n" - "tp-end: 345.156, the-prog\n" - ; - - // NO_CHECK_STYLE_BEGIN - const char* exp_calls[] = { - "got_ntps(1)", - "got_tp_start(the-prog, 1)", - "got_tc_start(the-test)", - "got_tc_stdout_line(--- a 2007-11-04 14:00:41.000000000 +0100)", - "got_tc_stdout_line(+++ b 2007-11-04 14:00:48.000000000 +0100)", - "got_tc_stdout_line(@@ -1,7 +1,7 @@)", - "got_tc_stdout_line( This test is meant to simulate a diff.)", - "got_tc_stdout_line( Blank space at beginning of context lines must be preserved.)", - "got_tc_stdout_line( )", - "got_tc_stdout_line(-First original line.)", - "got_tc_stdout_line(-Second original line.)", - "got_tc_stdout_line(+First modified line.)", - "got_tc_stdout_line(+Second modified line.)", - "got_tc_stdout_line( )", - "got_tc_stdout_line( EOF)", - "got_tc_end(passed)", - "got_tp_end()", - "got_eof()", - NULL - }; - // NO_CHECK_STYLE_END - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_6); -ATF_TEST_CASE_BODY(tps_6) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "tp-start: 321.1, the-prog, 8\n" - "tc-start: 321.12, one\n" - "tc-end: 321.23, one, expected_death, The reason\n" - "tc-start: 321.34, two\n" - "tc-end: 321.45, two, expected_exit, This would be an exit\n" - "tc-start: 321.56, three\n" - "tc-end: 321.67, three, expected_failure, And this a failure\n" - "tc-start: 321.78, four\n" - "tc-end: 321.89, four, expected_signal, And this a signal\n" - "tc-start: 321.90, five\n" - "tc-end: 321.101, five, failed, Another reason\n" - "tc-start: 321.112, six\n" - "tc-end: 321.123, six, passed\n" - "tc-start: 321.134, seven\n" - "tc-end: 321.145, seven, skipped, Skipping it\n" - "tc-start: 321.156, eight\n" - "tc-end: 321.167, eight, expected_timeout, Some hang reason\n" - "tp-end: 321.178, the-prog\n" - ; - - // NO_CHECK_STYLE_BEGIN - const char* exp_calls[] = { - "got_ntps(1)", - "got_tp_start(the-prog, 8)", - "got_tc_start(one)", - "got_tc_end(expected_death, The reason)", - "got_tc_start(two)", - "got_tc_end(expected_exit, This would be an exit)", - "got_tc_start(three)", - "got_tc_end(expected_failure, And this a failure)", - "got_tc_start(four)", - "got_tc_end(expected_signal, And this a signal)", - "got_tc_start(five)", - "got_tc_end(failed, Another reason)", - "got_tc_start(six)", - "got_tc_end(passed)", - "got_tc_start(seven)", - "got_tc_end(skipped, Skipping it)", - "got_tc_start(eight)", - "got_tc_end(expected_timeout, Some hang reason)", - "got_tp_end()", - "got_eof()", - NULL - }; - // NO_CHECK_STYLE_END - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - - -ATF_TEST_CASE_WITHOUT_HEAD(tps_50); -ATF_TEST_CASE_BODY(tps_50) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "foo\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `foo'; expected tps-count or info field", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_51); -ATF_TEST_CASE_BODY(tps_51) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected `:'", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_52); -ATF_TEST_CASE_BODY(tps_52) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count:\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected number of test programs", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_53); -ATF_TEST_CASE_BODY(tps_53) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "foo\n" - ; - - const char* exp_calls[] = { - "got_ntps(1)", - NULL - }; - - const char* exp_errors[] = { - "4: Unexpected token `foo'; expected start of test program", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_54); -ATF_TEST_CASE_BODY(tps_54) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "foo\n" - "tp-start\n" - "tp-start:\n" - "tp-start: 123\n" - "tp-start: 123.\n" - "tp-start: 123.456\n" - "tp-start: 123.456,\n" - "tp-start: 123.456, foo\n" - "tp-start: 123.456, foo,\n" - "tp-start: 123.456, foo, 0\n" - "bar\n" - "tp-start: 456.789, foo, 0\n" - "tp-end\n" - "tp-start: 777.777, foo, 0\n" - "tp-end:\n" - "tp-start: 777.777, foo, 0\n" - "tp-end: 777\n" - "tp-start: 777.777, foo, 0\n" - "tp-end: 777.\n" - "tp-start: 777.777, foo, 0\n" - "tp-end: 777.888\n" - "tp-start: 777.777, foo, 0\n" - "tp-end: 777.888, \n" - "tp-start: 777.777, foo, 0\n" - "tp-end: 777.888, bar\n" - "tp-start: 777.777, foo, 0\n" - "tp-end: 777.888, foo,\n" - ; - - const char* exp_calls[] = { - "got_ntps(1)", - NULL - }; - - const char* exp_errors[] = { - "4: Unexpected token `foo'; expected start of test program", - "5: Unexpected token `<>'; expected `:'", - "6: Unexpected token `<>'; expected timestamp", - "7: Malformed timestamp value 123", - "8: Malformed timestamp value 123.", - "9: Unexpected token `<>'; expected `,'", - "10: Unexpected token `<>'; expected test program name", - "11: Unexpected token `<>'; expected `,'", - "12: Unexpected token `<>'; expected number of test programs", - "14: Unexpected token `bar'; expected end of test program", - "16: Unexpected token `<>'; expected `:'", - "18: Unexpected token `<>'; expected timestamp", - "20: Malformed timestamp value 777", - "22: Malformed timestamp value 777.", - "24: Unexpected token `<>'; expected `,'", - - "26: Unexpected token `<>'; expected test program name", - "28: Test program name used in terminator does not match opening", - "30: Empty reason for failed test program", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_55); -ATF_TEST_CASE_BODY(tps_55) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "tp-start: 100.200, foo, 1\n" - "foo\n" - "tc-start\n" - "tc-start:\n" - "tc-start: 111\n" - "tc-start: 111.\n" - "tc-start: 111.222\n" - "tc-start: 111.222,\n" - "tc-start: 111.222, foo\n" - "bar\n" - "tc-start: 111.333, foo\n" - "tc-end\n" - "tc-start: 111.444, foo\n" - "tc-end:\n" - "tc-start: 111.444, foo\n" - "tc-end: 111\n" - "tc-start: 111.444, foo\n" - "tc-end: 111.\n" - "tc-start: 111.444, foo\n" - "tc-end: 111.555\n" - "tc-start: 111.444, foo\n" - "tc-end: 111.555, \n" - "tc-start: 111.444, foo\n" - "tc-end: 111.555, bar\n" - "tc-start: 111.444, foo\n" - "tc-end: 111.555, foo\n" - "tc-start: 111.444, foo\n" - "tc-end: 111.555, foo,\n" - "tp-end: 111.666, foo\n" - ; - - const char* exp_calls[] = { - "got_ntps(1)", - "got_tp_start(foo, 1)", - NULL - }; - - // NO_CHECK_STYLE_BEGIN - const char* exp_errors[] = { - "5: Unexpected token `foo'; expected start of test case", - "6: Unexpected token `<>'; expected `:'", - "7: Unexpected token `<>'; expected timestamp", - "8: Malformed timestamp value 111", - "9: Malformed timestamp value 111.", - "10: Unexpected token `<>'; expected `,'", - "11: Unexpected token `<>'; expected test case name", - "13: Unexpected token `bar'; expected end of test case or test case's stdout/stderr line", - "15: Unexpected token `<>'; expected `:'", - "17: Unexpected token `<>'; expected timestamp", - "19: Malformed timestamp value 111", - "21: Malformed timestamp value 111.", - "23: Unexpected token `<>'; expected `,'", - "25: Unexpected token `<>'; expected test case name", - "27: Test case name used in terminator does not match opening", - "29: Unexpected token `<>'; expected `,'", - "31: Unexpected token `<>'; expected expected_{death,exit,failure,signal,timeout}, failed, passed or skipped", - "32: Unexpected token `tp-end'; expected start of test case", - NULL - }; - // NO_CHECK_STYLE_END - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_56); -ATF_TEST_CASE_BODY(tps_56) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "tp-start: 111.222, foo, 1\n" - "tc-start: 111.333, foo\n" - "tc-end: 111.444, foo, passe\n" - "tc-start: 111.333, foo\n" - "tc-end: 111.444, foo, passed,\n" - "tc-start: 111.555, bar\n" - "tc-end: 111.666, bar, failed\n" - "tc-start: 111.555, bar\n" - "tc-end: 111.666, bar, failed,\n" - "tc-start: 111.555, baz\n" - "tc-end: 111.666, baz, skipped\n" - "tc-start: 111.555, baz\n" - "tc-end: 111.666, baz, skipped,\n" - "tp-end: 111.777, foo\n" - ; - - const char* exp_calls[] = { - "got_ntps(1)", - "got_tp_start(foo, 1)", - "got_tc_start(foo)", - NULL - }; - - // NO_CHECK_STYLE_BEGIN - const char* exp_errors[] = { - "6: Unexpected token `passe'; expected expected_{death,exit,failure,signal,timeout}, failed, passed or skipped", - "8: Unexpected token `,'; expected new line", - "10: Unexpected token `<>'; expected `,'", - "12: Empty reason for failed test case result", - "14: Unexpected token `<>'; expected `,'", - "16: Empty reason for skipped test case result", - "17: Unexpected token `tp-end'; expected start of test case", - NULL - }; - // NO_CHECK_STYLE_END - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_57); -ATF_TEST_CASE_BODY(tps_57) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 2\n" - "tp-start: 111.222, foo, 0\n" - "tp-end: 111.333, foo\n" - ; - - const char* exp_calls[] = { - "got_ntps(2)", - "got_tp_start(foo, 0)", - "got_tp_end()", - NULL - }; - - const char* exp_errors[] = { - "6: Unexpected token `<>'; expected start of test program", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_58); -ATF_TEST_CASE_BODY(tps_58) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "tps-count: 1\n" - "tp-start: 111.222, foo, 0\n" - "tp-end: 111.333, foo\n" - "tp-start: 111.444, bar, 0\n" - "tp-end: 111.555, bar\n" - ; - - const char* exp_calls[] = { - "got_ntps(1)", - "got_tp_start(foo, 0)", - "got_tp_end()", - NULL - }; - - const char* exp_errors[] = { - "6: Unexpected token `tp-start'; expected end of stream or info field", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_59); -ATF_TEST_CASE_BODY(tps_59) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected `:'", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_60); -ATF_TEST_CASE_BODY(tps_60) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info:\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected info property name", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_61); -ATF_TEST_CASE_BODY(tps_61) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected `,'", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_62); -ATF_TEST_CASE_BODY(tps_62) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a,\n" - ; - - const char* exp_calls[] = { - "got_info(a, )", - NULL - }; - - const char* exp_errors[] = { - "4: Unexpected token `<>'; expected tps-count or info field", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_63); -ATF_TEST_CASE_BODY(tps_63) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a, b\n" - ; - - const char* exp_calls[] = { - "got_info(a, b)", - NULL - }; - - const char* exp_errors[] = { - "4: Unexpected token `<>'; expected tps-count or info field", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_64); -ATF_TEST_CASE_BODY(tps_64) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a, b\n" - "info: a.b.c.def, g\n" - "tps-count\n" - ; - - const char* exp_calls[] = { - "got_info(a, b)", - "got_info(a.b.c.def, g)", - NULL - }; - - const char* exp_errors[] = { - "5: Unexpected token `<>'; expected `:'", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_65); -ATF_TEST_CASE_BODY(tps_65) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a, b\n" - "tps-count:\n" - ; - - const char* exp_calls[] = { - "got_info(a, b)", - NULL - }; - - const char* exp_errors[] = { - "4: Unexpected token `<>'; expected number of test programs", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tps_66); -ATF_TEST_CASE_BODY(tps_66) -{ - const char* input = - "Content-Type: application/X-atf-tps; version=\"3\"\n" - "\n" - "info: a, b\n" - "tps-count: 0\n" - "info\n" - ; - - const char* exp_calls[] = { - "got_info(a, b)", - "got_ntps(0)", - NULL - }; - - const char* exp_errors[] = { - "5: Unexpected token `<>'; expected `:'", - NULL - }; - - do_parser_test< tps_reader >(input, exp_calls, exp_errors); -} - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, tps_1); - ATF_ADD_TEST_CASE(tcs, tps_2); - ATF_ADD_TEST_CASE(tcs, tps_3); - ATF_ADD_TEST_CASE(tcs, tps_4); - ATF_ADD_TEST_CASE(tcs, tps_5); - ATF_ADD_TEST_CASE(tcs, tps_6); - ATF_ADD_TEST_CASE(tcs, tps_50); - ATF_ADD_TEST_CASE(tcs, tps_51); - ATF_ADD_TEST_CASE(tcs, tps_52); - ATF_ADD_TEST_CASE(tcs, tps_53); - ATF_ADD_TEST_CASE(tcs, tps_54); - ATF_ADD_TEST_CASE(tcs, tps_55); - ATF_ADD_TEST_CASE(tcs, tps_56); - ATF_ADD_TEST_CASE(tcs, tps_57); - ATF_ADD_TEST_CASE(tcs, tps_58); - ATF_ADD_TEST_CASE(tcs, tps_59); - ATF_ADD_TEST_CASE(tcs, tps_60); - ATF_ADD_TEST_CASE(tcs, tps_61); - ATF_ADD_TEST_CASE(tcs, tps_62); - ATF_ADD_TEST_CASE(tcs, tps_63); - ATF_ADD_TEST_CASE(tcs, tps_64); - ATF_ADD_TEST_CASE(tcs, tps_65); - ATF_ADD_TEST_CASE(tcs, tps_66); -} diff --git a/unit/atf-src/tools/requirements.cpp b/unit/atf-src/tools/requirements.cpp deleted file mode 100644 index 97fcdc8b5e..0000000000 --- a/unit/atf-src/tools/requirements.cpp +++ /dev/null @@ -1,325 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -} - -#include -#include -#include -#include -#include - -#include "config.hpp" -#include "defs.hpp" -#include "env.hpp" -#include "fs.hpp" -#include "requirements.hpp" -#include "text.hpp" -#include "user.hpp" - -namespace impl = tools; - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -static -bool -has_program(const tools::fs::path& program) -{ - bool found = false; - - if (program.is_absolute()) { - found = tools::fs::is_executable(program); - } else { - if (program.str().find('/') != std::string::npos) - throw std::runtime_error("Relative paths are not allowed " - "when searching for a program (" + - program.str() + ")"); - - const std::vector< std::string > dirs = tools::text::split( - tools::env::get("PATH"), ":"); - for (std::vector< std::string >::const_iterator iter = dirs.begin(); - !found && iter != dirs.end(); iter++) { - const tools::fs::path& p = tools::fs::path(*iter) / program; - if (tools::fs::is_executable(p)) - found = true; - } - } - - return found; -} - -static -std::string -check_arch(const std::string& arches) -{ - const std::vector< std::string > v = tools::text::split(arches, " "); - - for (std::vector< std::string >::const_iterator iter = v.begin(); - iter != v.end(); iter++) { - if ((*iter) == tools::config::get("atf_arch")) - return ""; - } - - if (v.size() == 1) - return "Requires the '" + arches + "' architecture"; - else - return "Requires one of the '" + arches + "' architectures"; -} - -static -std::string -check_config(const std::string& variables, const vars_map& config) -{ - const std::vector< std::string > v = tools::text::split(variables, " "); - for (std::vector< std::string >::const_iterator iter = v.begin(); - iter != v.end(); iter++) { - if (config.find((*iter)) == config.end()) - return "Required configuration variable '" + (*iter) + "' not " - "defined"; - } - return ""; -} - -static -std::string -check_files(const std::string& progs) -{ - const std::vector< std::string > v = tools::text::split(progs, " "); - for (std::vector< std::string >::const_iterator iter = v.begin(); - iter != v.end(); iter++) { - const tools::fs::path file(*iter); - if (!file.is_absolute()) - throw std::runtime_error("Relative paths are not allowed when " - "checking for a required file (" + file.str() + ")"); - if (!tools::fs::exists(file)) - return "Required file '" + file.str() + "' not found"; - } - return ""; -} - -static -std::string -check_machine(const std::string& machines) -{ - const std::vector< std::string > v = tools::text::split(machines, " "); - - for (std::vector< std::string >::const_iterator iter = v.begin(); - iter != v.end(); iter++) { - if ((*iter) == tools::config::get("atf_machine")) - return ""; - } - - if (v.size() == 1) - return "Requires the '" + machines + "' machine type"; - else - return "Requires one of the '" + machines + "' machine types"; -} - -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) -static -std::string -check_memory_sysctl(const int64_t needed, const char* sysctl_variable) -{ - int64_t available; - std::size_t available_length = sizeof(available); - if (::sysctlbyname(sysctl_variable, &available, &available_length, - NULL, 0) == -1) { - const char* e = std::strerror(errno); - return "Failed to get sysctl(hw.usermem64) value: " + std::string(e); - } - - if (available < needed) { - return "Not enough memory; needed " + tools::text::to_string(needed) + - ", available " + tools::text::to_string(available); - } else - return ""; -} -# if defined(__APPLE__) -static -std::string -check_memory_darwin(const int64_t needed) -{ - return check_memory_sysctl(needed, "hw.usermem"); -} -# elif defined(__FreeBSD__) -static -std::string -check_memory_freebsd(const int64_t needed) -{ - return check_memory_sysctl(needed, "hw.usermem"); -} -# elif defined(__NetBSD__) -static -std::string -check_memory_netbsd(const int64_t needed) -{ - return check_memory_sysctl(needed, "hw.usermem64"); -} -# else -# error "Conditional error" -# endif -#else -static -std::string -check_memory_unknown(const int64_t needed ATF_DEFS_ATTRIBUTE_UNUSED) -{ - return ""; -} -#endif - -static -std::string -check_memory(const std::string& raw_memory) -{ - const int64_t needed = tools::text::to_bytes(raw_memory); - -#if defined(__APPLE__) - return check_memory_darwin(needed); -#elif defined(__FreeBSD__) - return check_memory_freebsd(needed); -#elif defined(__NetBSD__) - return check_memory_netbsd(needed); -#else - return check_memory_unknown(needed); -#endif -} - -static -std::string -check_progs(const std::string& progs) -{ - const std::vector< std::string > v = tools::text::split(progs, " "); - for (std::vector< std::string >::const_iterator iter = v.begin(); - iter != v.end(); iter++) { - if (!has_program(tools::fs::path(*iter))) - return "Required program '" + (*iter) + "' not found in the PATH"; - } - return ""; -} - -static -std::string -check_user(const std::string& user, const vars_map& config) -{ - if (user == "root") { - if (!tools::user::is_root()) - return "Requires root privileges"; - else - return ""; - } else if (user == "unprivileged") { - if (tools::user::is_root()) { - const vars_map::const_iterator iter = config.find( - "unprivileged-user"); - if (iter == config.end()) - return "Requires an unprivileged user and the " - "'unprivileged-user' configuration variable is not set"; - else { - const std::string& unprivileged_user = (*iter).second; - try { - (void)tools::user::get_user_ids(unprivileged_user); - return ""; - } catch (const std::runtime_error& e) { - return "Failed to get information for user " + - unprivileged_user; - } - } - } else - return ""; - } else - throw std::runtime_error("Invalid value '" + user + "' for property " - "require.user"); -} - -} // anonymous namespace - -std::string -impl::check_requirements(const vars_map& metadata, - const vars_map& config) -{ - std::string failure_reason = ""; - - for (vars_map::const_iterator iter = metadata.begin(); - failure_reason.empty() && iter != metadata.end(); iter++) { - const std::string& name = (*iter).first; - const std::string& value = (*iter).second; - assert(!value.empty()); // Enforced by application/X-atf-tp parser. - - if (name == "require.arch") - failure_reason = check_arch(value); - else if (name == "require.config") - failure_reason = check_config(value, config); - else if (name == "require.files") - failure_reason = check_files(value); - else if (name == "require.machine") - failure_reason = check_machine(value); - else if (name == "require.memory") - failure_reason = check_memory(value); - else if (name == "require.progs") - failure_reason = check_progs(value); - else if (name == "require.user") - failure_reason = check_user(value, config); - else { - // Unknown require.* properties are forbidden by the - // application/X-atf-tp parser. - assert(failure_reason.find("require.") != 0); - } - } - - return failure_reason; -} - -std::pair< int, int > -impl::get_required_user(const vars_map& metadata, - const vars_map& config) -{ - const vars_map::const_iterator user = metadata.find( - "require.user"); - if (user == metadata.end()) - return std::make_pair(-1, -1); - - if ((*user).second == "unprivileged") { - if (tools::user::is_root()) { - const vars_map::const_iterator iter = config.find( - "unprivileged-user"); - try { - return tools::user::get_user_ids((*iter).second); - } catch (const std::exception& e) { - std::abort(); // This has been validated by check_user. - } - } else { - return std::make_pair(-1, -1); - } - } else - return std::make_pair(-1, -1); -} diff --git a/unit/atf-src/tools/requirements.hpp b/unit/atf-src/tools/requirements.hpp deleted file mode 100644 index 1eefdaf555..0000000000 --- a/unit/atf-src/tools/requirements.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_REQUIREMENTS_HPP) -#define TOOLS_REQUIREMENTS_HPP - -#include -#include -#include - -namespace tools { - -std::string check_requirements(const std::map< std::string, std::string >&, - const std::map< std::string, std::string >&); -std::pair< int, int > get_required_user( - const std::map< std::string, std::string >&, - const std::map< std::string, std::string >&); - -} // namespace tools - -#endif // !defined(TOOLS_REQUIREMENTS_HPP) diff --git a/unit/atf-src/tools/requirements_test.cpp b/unit/atf-src/tools/requirements_test.cpp deleted file mode 100644 index 6d37d758cb..0000000000 --- a/unit/atf-src/tools/requirements_test.cpp +++ /dev/null @@ -1,400 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include - -#include "config.hpp" -#include "requirements.hpp" -#include "text.hpp" -#include "user.hpp" - -namespace impl = tools; - -// ------------------------------------------------------------------------- -// Auxiliary functions. -// ------------------------------------------------------------------------- - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -const vars_map no_config; - -void -do_check(const std::string& expected, const vars_map& metadata, - const vars_map& config = no_config) -{ - const std::string actual = impl::check_requirements(metadata, config); - if (!tools::text::match(actual, expected)) - ATF_FAIL("Requirements failure reason \"" + actual + "\" does not " - "match \"" + expected + "\""); -} - -} // anonymous namespace - -// ------------------------------------------------------------------------- -// Tests for the require.arch metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(require_arch_one_ok); -ATF_TEST_CASE_HEAD(require_arch_one_ok) {} -ATF_TEST_CASE_BODY(require_arch_one_ok) { - vars_map metadata; - metadata["require.arch"] = tools::config::get("atf_arch"); - do_check("", metadata); -} - -ATF_TEST_CASE(require_arch_one_fail); -ATF_TEST_CASE_HEAD(require_arch_one_fail) {} -ATF_TEST_CASE_BODY(require_arch_one_fail) { - vars_map metadata; - metadata["require.arch"] = "__fake_arch__"; - do_check("Requires the '__fake_arch__' architecture", metadata); -} - -ATF_TEST_CASE(require_arch_many_ok); -ATF_TEST_CASE_HEAD(require_arch_many_ok) {} -ATF_TEST_CASE_BODY(require_arch_many_ok) { - vars_map metadata; - metadata["require.arch"] = "__foo__ " + tools::config::get("atf_arch") + - " __bar__"; - do_check("", metadata); -} - -ATF_TEST_CASE(require_arch_many_fail); -ATF_TEST_CASE_HEAD(require_arch_many_fail) {} -ATF_TEST_CASE_BODY(require_arch_many_fail) { - vars_map metadata; - metadata["require.arch"] = "__foo__ __bar__ __baz__"; - do_check("Requires one of the '__foo__ __bar__ __baz__' architectures", - metadata); -} - -// ------------------------------------------------------------------------- -// Tests for the require.config metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(require_config_one_ok); -ATF_TEST_CASE_HEAD(require_config_one_ok) {} -ATF_TEST_CASE_BODY(require_config_one_ok) { - vars_map metadata, config; - metadata["require.config"] = "var1"; - config["var1"] = "some-value"; - do_check("", metadata, config); -} - -ATF_TEST_CASE(require_config_one_fail); -ATF_TEST_CASE_HEAD(require_config_one_fail) {} -ATF_TEST_CASE_BODY(require_config_one_fail) { - vars_map metadata, config; - metadata["require.config"] = "var1"; - do_check("Required configuration variable 'var1' not defined", metadata, - config); -} - -ATF_TEST_CASE(require_config_many_ok); -ATF_TEST_CASE_HEAD(require_config_many_ok) {} -ATF_TEST_CASE_BODY(require_config_many_ok) { - vars_map metadata, config; - metadata["require.config"] = "var1 var2 var3"; - config["var1"] = "first-value"; - config["var2"] = "second-value"; - config["var3"] = "third-value"; - do_check("", metadata, config); -} - -ATF_TEST_CASE(require_config_many_fail); -ATF_TEST_CASE_HEAD(require_config_many_fail) {} -ATF_TEST_CASE_BODY(require_config_many_fail) { - vars_map metadata, config; - metadata["require.config"] = "var1 var2 var3"; - config["var1"] = "first-value"; - config["var3"] = "third-value"; - do_check("Required configuration variable 'var2' not defined", metadata, - config); -} - -// ------------------------------------------------------------------------- -// Tests for the require.files metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE_WITHOUT_HEAD(require_files_one_ok); -ATF_TEST_CASE_BODY(require_files_one_ok) { - vars_map metadata; - metadata["require.files"] = "/bin/ls"; - do_check("", metadata); -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_files_one_missing); -ATF_TEST_CASE_BODY(require_files_one_missing) { - vars_map metadata; - metadata["require.files"] = "/non-existent/foo"; - do_check("Required file '/non-existent/foo' not found", metadata); -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_files_one_fail); -ATF_TEST_CASE_BODY(require_files_one_fail) { - vars_map metadata; - metadata["require.files"] = "/bin/cp this-is-relative"; - ATF_REQUIRE_THROW_RE(std::runtime_error, "Relative.*(this-is-relative)", - impl::check_requirements(metadata, no_config)); -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_files_many_ok); -ATF_TEST_CASE_BODY(require_files_many_ok) { - vars_map metadata; - metadata["require.files"] = "/bin/ls /bin/cp"; - do_check("", metadata); -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_files_many_missing); -ATF_TEST_CASE_BODY(require_files_many_missing) { - vars_map metadata; - metadata["require.files"] = "/bin/ls /non-existent/bar /bin/cp"; - do_check("Required file '/non-existent/bar' not found", metadata); -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_files_many_fail); -ATF_TEST_CASE_BODY(require_files_many_fail) { - vars_map metadata; - metadata["require.files"] = "/bin/cp also-relative"; - ATF_REQUIRE_THROW_RE(std::runtime_error, "Relative.*(also-relative)", - impl::check_requirements(metadata, no_config)); -} - -// ------------------------------------------------------------------------- -// Tests for the require.machine metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(require_machine_one_ok); -ATF_TEST_CASE_HEAD(require_machine_one_ok) {} -ATF_TEST_CASE_BODY(require_machine_one_ok) { - vars_map metadata; - metadata["require.machine"] = tools::config::get("atf_machine"); - do_check("", metadata); -} - -ATF_TEST_CASE(require_machine_one_fail); -ATF_TEST_CASE_HEAD(require_machine_one_fail) {} -ATF_TEST_CASE_BODY(require_machine_one_fail) { - vars_map metadata; - metadata["require.machine"] = "__fake_machine__"; - do_check("Requires the '__fake_machine__' machine type", metadata); -} - -ATF_TEST_CASE(require_machine_many_ok); -ATF_TEST_CASE_HEAD(require_machine_many_ok) {} -ATF_TEST_CASE_BODY(require_machine_many_ok) { - vars_map metadata; - metadata["require.machine"] = "__foo__ " + - tools::config::get("atf_machine") + " __bar__"; - do_check("", metadata); -} - -ATF_TEST_CASE(require_machine_many_fail); -ATF_TEST_CASE_HEAD(require_machine_many_fail) {} -ATF_TEST_CASE_BODY(require_machine_many_fail) { - vars_map metadata; - metadata["require.machine"] = "__foo__ __bar__ __baz__"; - do_check("Requires one of the '__foo__ __bar__ __baz__' machine types", - metadata); -} - -// ------------------------------------------------------------------------- -// Tests for the require.memory metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE_WITHOUT_HEAD(require_memory_ok); -ATF_TEST_CASE_BODY(require_memory_ok) { - vars_map metadata; - metadata["require.memory"] = "1m"; - do_check("", metadata); -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_memory_not_enough); -ATF_TEST_CASE_BODY(require_memory_not_enough) { - vars_map metadata; - metadata["require.memory"] = "128t"; -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) - do_check("Not enough memory; needed 140737488355328, available [0-9]*", - metadata); -#else - skip("Don't know how to check for the amount of physical memory"); -#endif -} - -ATF_TEST_CASE_WITHOUT_HEAD(require_memory_fail); -ATF_TEST_CASE_BODY(require_memory_fail) { - vars_map metadata; - metadata["require.memory"] = "foo"; - ATF_REQUIRE_THROW(std::runtime_error, - impl::check_requirements(metadata, no_config)); -} - -// ------------------------------------------------------------------------- -// Tests for the require.progs metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(require_progs_one_ok); -ATF_TEST_CASE_HEAD(require_progs_one_ok) {} -ATF_TEST_CASE_BODY(require_progs_one_ok) { - vars_map metadata; - metadata["require.progs"] = "cp"; - do_check("", metadata); -} - -ATF_TEST_CASE(require_progs_one_missing); -ATF_TEST_CASE_HEAD(require_progs_one_missing) {} -ATF_TEST_CASE_BODY(require_progs_one_missing) { - vars_map metadata; - metadata["require.progs"] = "cp __non-existent__"; - do_check("Required program '__non-existent__' not found in the PATH", - metadata); -} - -ATF_TEST_CASE(require_progs_one_fail); -ATF_TEST_CASE_HEAD(require_progs_one_fail) {} -ATF_TEST_CASE_BODY(require_progs_one_fail) { - vars_map metadata; - metadata["require.progs"] = "bin/cp"; - ATF_REQUIRE_THROW(std::runtime_error, - impl::check_requirements(metadata, no_config)); -} - -ATF_TEST_CASE(require_progs_many_ok); -ATF_TEST_CASE_HEAD(require_progs_many_ok) {} -ATF_TEST_CASE_BODY(require_progs_many_ok) { - vars_map metadata; - metadata["require.progs"] = "cp ls mv"; - do_check("", metadata); -} - -ATF_TEST_CASE(require_progs_many_missing); -ATF_TEST_CASE_HEAD(require_progs_many_missing) {} -ATF_TEST_CASE_BODY(require_progs_many_missing) { - vars_map metadata; - metadata["require.progs"] = "mv ls __foo__ cp"; - do_check("Required program '__foo__' not found in the PATH", metadata); -} - -ATF_TEST_CASE(require_progs_many_fail); -ATF_TEST_CASE_HEAD(require_progs_many_fail) {} -ATF_TEST_CASE_BODY(require_progs_many_fail) { - vars_map metadata; - metadata["require.progs"] = "ls cp ../bin/cp"; - ATF_REQUIRE_THROW(std::runtime_error, - impl::check_requirements(metadata, no_config)); -} - -// ------------------------------------------------------------------------- -// Tests for the require.user metadata property. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(require_user_root); -ATF_TEST_CASE_HEAD(require_user_root) {} -ATF_TEST_CASE_BODY(require_user_root) { - vars_map metadata; - metadata["require.user"] = "root"; - if (tools::user::is_root()) - do_check("", metadata); - else - do_check("Requires root privileges", metadata); -} - -ATF_TEST_CASE(require_user_unprivileged); -ATF_TEST_CASE_HEAD(require_user_unprivileged) {} -ATF_TEST_CASE_BODY(require_user_unprivileged) { - vars_map metadata; - metadata["require.user"] = "unprivileged"; - if (tools::user::is_root()) - do_check("Requires an unprivileged user and the 'unprivileged-user' " - "configuration variable is not set", metadata); - else - do_check("", metadata); -} - -ATF_TEST_CASE(require_user_fail); -ATF_TEST_CASE_HEAD(require_user_fail) {} -ATF_TEST_CASE_BODY(require_user_fail) { - vars_map metadata; - metadata["require.user"] = "nobody"; - ATF_REQUIRE_THROW(std::runtime_error, - impl::check_requirements(metadata, no_config)); -} - -// ------------------------------------------------------------------------- -// Main. -// ------------------------------------------------------------------------- - -ATF_INIT_TEST_CASES(tcs) -{ - // Add test cases for require.arch. - ATF_ADD_TEST_CASE(tcs, require_arch_one_ok); - ATF_ADD_TEST_CASE(tcs, require_arch_one_fail); - ATF_ADD_TEST_CASE(tcs, require_arch_many_ok); - ATF_ADD_TEST_CASE(tcs, require_arch_many_fail); - - // Add test cases for require.config. - ATF_ADD_TEST_CASE(tcs, require_config_one_ok); - ATF_ADD_TEST_CASE(tcs, require_config_one_fail); - ATF_ADD_TEST_CASE(tcs, require_config_many_ok); - ATF_ADD_TEST_CASE(tcs, require_config_many_fail); - - // Add test cases for require.files. - ATF_ADD_TEST_CASE(tcs, require_files_one_ok); - ATF_ADD_TEST_CASE(tcs, require_files_one_missing); - ATF_ADD_TEST_CASE(tcs, require_files_one_fail); - ATF_ADD_TEST_CASE(tcs, require_files_many_ok); - ATF_ADD_TEST_CASE(tcs, require_files_many_missing); - ATF_ADD_TEST_CASE(tcs, require_files_many_fail); - - // Add test cases for require.machine. - ATF_ADD_TEST_CASE(tcs, require_machine_one_ok); - ATF_ADD_TEST_CASE(tcs, require_machine_one_fail); - ATF_ADD_TEST_CASE(tcs, require_machine_many_ok); - ATF_ADD_TEST_CASE(tcs, require_machine_many_fail); - - // Add test cases for require.memory. - ATF_ADD_TEST_CASE(tcs, require_memory_ok); - ATF_ADD_TEST_CASE(tcs, require_memory_not_enough); - ATF_ADD_TEST_CASE(tcs, require_memory_fail); - - // Add test cases for require.progs. - ATF_ADD_TEST_CASE(tcs, require_progs_one_ok); - ATF_ADD_TEST_CASE(tcs, require_progs_one_missing); - ATF_ADD_TEST_CASE(tcs, require_progs_one_fail); - ATF_ADD_TEST_CASE(tcs, require_progs_many_ok); - ATF_ADD_TEST_CASE(tcs, require_progs_many_missing); - ATF_ADD_TEST_CASE(tcs, require_progs_many_fail); - - // Add test cases for require.user. - ATF_ADD_TEST_CASE(tcs, require_user_root); - ATF_ADD_TEST_CASE(tcs, require_user_unprivileged); - ATF_ADD_TEST_CASE(tcs, require_user_fail); -} diff --git a/unit/atf-src/tools/sample/atf-run.hooks b/unit/atf-src/tools/sample/atf-run.hooks deleted file mode 100644 index 86d187d3de..0000000000 --- a/unit/atf-src/tools/sample/atf-run.hooks +++ /dev/null @@ -1,23 +0,0 @@ -# -# Definition of custom hooks for atf-run. -# -# Uncomment any hooks that you want to override and add your own code -# to them. Some sample calls are included in them. Be very careful -# with what you print from here. -# -# See atf-run(1) for more details. -# - -#info_start_hook() -#{ -# default_info_start_hook "${@}" -# -# atf_tps_writer_info "extra.info" "An example" -#} - -#info_end_hook() -#{ -# default_info_end_hook "${@}" -# -# atf_tps_writer_info "extra.info" "An example" -#} diff --git a/unit/atf-src/tools/sample/common.conf b/unit/atf-src/tools/sample/common.conf deleted file mode 100644 index 464ee96d09..0000000000 --- a/unit/atf-src/tools/sample/common.conf +++ /dev/null @@ -1,11 +0,0 @@ -Content-Type: application/X-atf-config; version="1" - -# -# Sample configuration file for properties affecting all test suites. -# - -# When running the test suite as root, some tests require to switch to -# an unprivileged user to perform extra checks. Set this variable to -# the user you want to use in those cases. If not set, those tests will -# be skipped. -#unprivileged-user = "_atf" diff --git a/unit/atf-src/tools/several_tcs_helper.c b/unit/atf-src/tools/several_tcs_helper.c deleted file mode 100644 index d287c8193a..0000000000 --- a/unit/atf-src/tools/several_tcs_helper.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Automated Testing Framework (atf) - * - * Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -ATF_TC(first); -ATF_TC_HEAD(first, tc) -{ - atf_tc_set_md_var(tc, "descr", "Description 1"); -} -ATF_TC_BODY(first, tc) -{ -} - -ATF_TC_WITH_CLEANUP(second); -ATF_TC_HEAD(second, tc) -{ - atf_tc_set_md_var(tc, "descr", "Description 2"); - atf_tc_set_md_var(tc, "timeout", "500"); - atf_tc_set_md_var(tc, "X-property", "Custom property"); -} -ATF_TC_BODY(second, tc) -{ -} -ATF_TC_CLEANUP(second, tc) -{ -} - -ATF_TC_WITHOUT_HEAD(third); -ATF_TC_BODY(third, tc) -{ -} - -ATF_TP_ADD_TCS(tp) -{ - ATF_TP_ADD_TC(tp, first); - ATF_TP_ADD_TC(tp, second); - ATF_TP_ADD_TC(tp, third); - - return atf_no_error(); -} diff --git a/unit/atf-src/tools/share/atf-run.hooks b/unit/atf-src/tools/share/atf-run.hooks deleted file mode 100644 index c94f3bcfc9..0000000000 --- a/unit/atf-src/tools/share/atf-run.hooks +++ /dev/null @@ -1,94 +0,0 @@ -# -# Automated Testing Framework (atf) -# -# Copyright (c) 2007 The NetBSD Foundation, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -atf_tps_writer_info() -{ - class=${1}; shift - echo "info: ${class}, $*" -} - -info_start_hook() -{ - default_info_start_hook "${@}" -} - -default_info_start_hook() -{ - atf_tps_writer_info "atf.version" $(atf-version | head -n 1) - - atf_tps_writer_info "tests.root" $(pwd) - - atf_tps_writer_info "time.start" $(date) - - atf_tps_writer_info "uname.sysname" $(uname -s) - atf_tps_writer_info "uname.nodename" $(uname -n) - atf_tps_writer_info "uname.release" $(uname -r) - atf_tps_writer_info "uname.version" $(uname -v) - atf_tps_writer_info "uname.machine" $(uname -m) - - # Add all the environment variables to the report. We have to be - # careful with those that span over multiple lines; otherwise their - # values could be printed as multiple different variables (one per - # line), which is incorrect. - oldifs="${IFS}" - IFS=' -' - set -- $(env) - val=${1}; shift - while [ ${#} -gt 0 ]; do - if echo "${1}" | grep '^[a-zA-Z0-0_][a-zA-Z0-9_]*=' >/dev/null; then - atf_tps_writer_info "env" "${val}" - val="${1}" - else - val="${val} ${1}" - fi - shift - done - atf_tps_writer_info "env" "${val}" - IFS="${oldifs}" -} - -info_end_hook() -{ - default_info_end_hook "${@}" -} - -default_info_end_hook() -{ - atf_tps_writer_info "time.end" $(date) -} - -sitehooks=$(atf-config -t atf_confdir)/atf-run.hooks -userhooks=${HOME}/.atf/atf-run.hooks -[ -f ${sitehooks} ] && . ${sitehooks} -[ -f ${userhooks} ] && . ${userhooks} - -eval ${1} - -# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/unit/atf-src/tools/signals.cpp b/unit/atf-src/tools/signals.cpp deleted file mode 100644 index 1e6c1ff37e..0000000000 --- a/unit/atf-src/tools/signals.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -extern "C" { -#include -#include -} - -#include -#include - -#include "exceptions.hpp" -#include "signals.hpp" - -namespace impl = tools::signals; -#define IMPL_NAME "tools::signals" - -const int impl::last_signo = LAST_SIGNO; - -// ------------------------------------------------------------------------ -// The "signal_holder" class. -// ------------------------------------------------------------------------ - -namespace { - -static bool happened[LAST_SIGNO + 1]; - -static -void -holder_handler(const int signo) -{ - happened[signo] = true; -} - -} // anonymous namespace - -impl::signal_holder::signal_holder(const int signo) : - m_signo(signo), - m_sp(NULL) -{ - happened[signo] = false; - m_sp = new signal_programmer(m_signo, holder_handler); -} - -impl::signal_holder::~signal_holder(void) -{ - if (m_sp != NULL) - delete m_sp; - - if (happened[m_signo]) - ::kill(::getpid(), m_signo); -} - -void -impl::signal_holder::process(void) -{ - if (happened[m_signo]) { - delete m_sp; - m_sp = NULL; - happened[m_signo] = false; - ::kill(::getpid(), m_signo); - m_sp = new signal_programmer(m_signo, holder_handler); - } -} - -// ------------------------------------------------------------------------ -// The "signal_programmer" class. -// ------------------------------------------------------------------------ - -impl::signal_programmer::signal_programmer(const int signo, const handler h) : - m_signo(signo), - m_handler(h), - m_programmed(false) -{ - struct ::sigaction sa; - - sa.sa_handler = m_handler; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - - if (::sigaction(m_signo, &sa, &m_oldsa) == -1) - throw tools::system_error(IMPL_NAME, "Could not install handler for " - "signal", errno); - m_programmed = true; -} - -impl::signal_programmer::~signal_programmer(void) -{ - unprogram(); -} - -void -impl::signal_programmer::unprogram(void) -{ - if (m_programmed) { - if (::sigaction(m_signo, &m_oldsa, NULL) == -1) - std::abort(); - m_programmed = false; - } -} - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -void -impl::reset(const int signo) -{ - struct ::sigaction sa; - - sa.sa_handler = SIG_DFL; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - - (void)::sigaction(signo, &sa, NULL); -} diff --git a/unit/atf-src/tools/signals.hpp b/unit/atf-src/tools/signals.hpp deleted file mode 100644 index 549a2cad09..0000000000 --- a/unit/atf-src/tools/signals.hpp +++ /dev/null @@ -1,92 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_SIGNALS_HPP) -#define TOOLS_SIGNALS_HPP - -extern "C" { -#include -} - -namespace tools { -namespace signals { - -extern const int last_signo; -typedef void (*handler)(const int); - -class signal_programmer; - -// ------------------------------------------------------------------------ -// The "signal_holder" class. -// ------------------------------------------------------------------------ - -// -// A RAII model to hold a signal while the object is alive. -// -class signal_holder { - const int m_signo; - signal_programmer* m_sp; - -public: - signal_holder(const int); - ~signal_holder(void); - - void process(void); -}; - -// ------------------------------------------------------------------------ -// The "signal_programmer" class. -// ------------------------------------------------------------------------ - -// -// A RAII model to program a signal while the object is alive. -// -class signal_programmer { - const int m_signo; - const handler m_handler; - bool m_programmed; - struct sigaction m_oldsa; - -public: - signal_programmer(const int, const handler); - ~signal_programmer(void); - - void unprogram(void); -}; - -// ------------------------------------------------------------------------ -// Free functions. -// ------------------------------------------------------------------------ - -void reset(const int); - -} // namespace signals -} // namespace tools - -#endif // !defined(TOOLS_SIGNALS_HPP) diff --git a/unit/atf-src/tools/signals_test.cpp b/unit/atf-src/tools/signals_test.cpp deleted file mode 100644 index aa6a8e5a8e..0000000000 --- a/unit/atf-src/tools/signals_test.cpp +++ /dev/null @@ -1,275 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2008 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -#include -} - -#include -#include -#include - -#include - -#include "defs.hpp" -#include "exceptions.hpp" -#include "process.hpp" -#include "signals.hpp" - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -namespace sigusr1 { - static bool happened = false; - - static - void - handler(int signo ATF_DEFS_ATTRIBUTE_UNUSED) - { - happened = true; - } - - static - void - program(void) - { - struct sigaction sa; - sa.sa_handler = handler; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - if (::sigaction(SIGUSR1, &sa, NULL) == -1) - throw tools::system_error("sigusr1::program", - "sigaction(2) failed", errno); - } -} // namespace sigusr1 - -namespace sigusr1_2 { - static bool happened = false; - - static - void - handler(int signo ATF_DEFS_ATTRIBUTE_UNUSED) - { - happened = true; - } -} // namespace sigusr1_2 - -// ------------------------------------------------------------------------ -// Tests for the "signal_holder" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(signal_holder_preserve); -ATF_TEST_CASE_HEAD(signal_holder_preserve) -{ - set_md_var("descr", "Tests that signal_holder preserves the original " - "signal handler and restores it upon destruction"); -} -ATF_TEST_CASE_BODY(signal_holder_preserve) -{ - using tools::signals::signal_holder; - - sigusr1::program(); - - sigusr1::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1::happened); - - { - signal_holder hld(SIGUSR1); - ::kill(::getpid(), SIGUSR1); - } - - sigusr1::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1::happened); -} - -ATF_TEST_CASE(signal_holder_destructor); -ATF_TEST_CASE_HEAD(signal_holder_destructor) -{ - set_md_var("descr", "Tests that signal_holder processes a pending " - "signal upon destruction"); -} -ATF_TEST_CASE_BODY(signal_holder_destructor) -{ - using tools::signals::signal_holder; - - sigusr1::program(); - - sigusr1::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1::happened); - - { - signal_holder hld(SIGUSR1); - - sigusr1::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(!sigusr1::happened); - } - ATF_REQUIRE(sigusr1::happened); -} - -ATF_TEST_CASE(signal_holder_process); -ATF_TEST_CASE_HEAD(signal_holder_process) -{ - set_md_var("descr", "Tests that signal_holder's process method works " - "to process a delayed signal explicitly"); -} -ATF_TEST_CASE_BODY(signal_holder_process) -{ - using tools::signals::signal_holder; - - sigusr1::program(); - - sigusr1::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1::happened); - - { - signal_holder hld(SIGUSR1); - - sigusr1::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(!sigusr1::happened); - - hld.process(); - ATF_REQUIRE(sigusr1::happened); - - sigusr1::happened = false; - } - ATF_REQUIRE(!sigusr1::happened); -} - -// ------------------------------------------------------------------------ -// Tests for the "signal_programmer" class. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(signal_programmer_program); -ATF_TEST_CASE_HEAD(signal_programmer_program) -{ - set_md_var("descr", "Tests that signal_programmer correctly installs a " - "handler"); -} -ATF_TEST_CASE_BODY(signal_programmer_program) -{ - using tools::signals::signal_programmer; - - signal_programmer sp(SIGUSR1, sigusr1_2::handler); - - sigusr1_2::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1_2::happened); -} - -ATF_TEST_CASE(signal_programmer_preserve); -ATF_TEST_CASE_HEAD(signal_programmer_preserve) -{ - set_md_var("descr", "Tests that signal_programmer uninstalls the " - "handler during destruction"); -} -ATF_TEST_CASE_BODY(signal_programmer_preserve) -{ - using tools::signals::signal_programmer; - - sigusr1::program(); - sigusr1::happened = false; - - { - signal_programmer sp(SIGUSR1, sigusr1_2::handler); - - sigusr1_2::happened = false; - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1_2::happened); - } - - ATF_REQUIRE(!sigusr1::happened); - ::kill(::getpid(), SIGUSR1); - ATF_REQUIRE(sigusr1::happened); -} - -// ------------------------------------------------------------------------ -// Tests cases for the free functions. -// ------------------------------------------------------------------------ - -static -void -reset_child(void *v ATF_DEFS_ATTRIBUTE_UNUSED) -{ - sigusr1::program(); - - sigusr1::happened = false; - tools::signals::reset(SIGUSR1); - kill(::getpid(), SIGUSR1); - - if (sigusr1::happened) { - std::cerr << "Signal was not resetted correctly\n"; - std::abort(); - } else { - std::exit(EXIT_SUCCESS); - } -} - -ATF_TEST_CASE(reset); -ATF_TEST_CASE_HEAD(reset) -{ - set_md_var("descr", "Tests the reset function"); -} -ATF_TEST_CASE_BODY(reset) -{ - tools::process::child c = - tools::process::fork(reset_child, tools::process::stream_inherit(), - tools::process::stream_inherit(), NULL); - - const tools::process::status s = c.wait(); - ATF_REQUIRE(s.exited() || s.signaled()); - ATF_REQUIRE(!s.signaled() || s.termsig() == SIGUSR1); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the tests for the "signal_holder" class. - ATF_ADD_TEST_CASE(tcs, signal_holder_preserve); - ATF_ADD_TEST_CASE(tcs, signal_holder_destructor); - ATF_ADD_TEST_CASE(tcs, signal_holder_process); - - // Add the tests for the "signal_programmer" class. - ATF_ADD_TEST_CASE(tcs, signal_programmer_program); - ATF_ADD_TEST_CASE(tcs, signal_programmer_preserve); - - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, reset); -} diff --git a/unit/atf-src/tools/test-program.cpp b/unit/atf-src/tools/test-program.cpp deleted file mode 100644 index 91ad78acb4..0000000000 --- a/unit/atf-src/tools/test-program.cpp +++ /dev/null @@ -1,790 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -#include - -#include -#include -#include -} - -#include -#include -#include -#include -#include -#include - -#include "config_file.hpp" -#include "defs.hpp" -#include "env.hpp" -#include "fs.hpp" -#include "io.hpp" -#include "parser.hpp" -#include "process.hpp" -#include "requirements.hpp" -#include "signals.hpp" -#include "test-program.hpp" -#include "text.hpp" -#include "timers.hpp" -#include "user.hpp" - -namespace impl = tools::test_program; -namespace detail = tools::test_program::detail; - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -static void -check_stream(std::ostream& os) -{ - // If we receive a signal while writing to the stream, the bad bit gets set. - // Things seem to behave fine afterwards if we clear such error condition. - // However, I'm not sure if it's safe to query errno at this point. - if (os.bad()) { - if (errno == EINTR) - os.clear(); - else - throw std::runtime_error("Failed"); - } -} - -namespace atf_tp { - -static const tools::parser::token_type eof_type = 0; -static const tools::parser::token_type nl_type = 1; -static const tools::parser::token_type text_type = 2; -static const tools::parser::token_type colon_type = 3; -static const tools::parser::token_type dblquote_type = 4; - -class tokenizer : public tools::parser::tokenizer< std::istream > { -public: - tokenizer(std::istream& is, size_t curline) : - tools::parser::tokenizer< std::istream > - (is, true, eof_type, nl_type, text_type, curline) - { - add_delim(':', colon_type); - add_quote('"', dblquote_type); - } -}; - -} // namespace atf_tp - -class metadata_reader : public detail::atf_tp_reader { - impl::test_cases_map m_tcs; - - void got_tc(const std::string& ident, const vars_map& props) - { - if (m_tcs.find(ident) != m_tcs.end()) - throw(std::runtime_error("Duplicate test case " + ident + - " in test program")); - m_tcs[ident] = props; - - if (m_tcs[ident].find("has.cleanup") == m_tcs[ident].end()) - m_tcs[ident].insert(std::make_pair("has.cleanup", "false")); - - if (m_tcs[ident].find("timeout") == m_tcs[ident].end()) - m_tcs[ident].insert(std::make_pair("timeout", "300")); - } - -public: - metadata_reader(std::istream& is) : - detail::atf_tp_reader(is) - { - } - - const impl::test_cases_map& - get_tcs(void) - const - { - return m_tcs; - } -}; - -struct get_metadata_params { - const tools::fs::path& executable; - const vars_map& config; - - get_metadata_params(const tools::fs::path& p_executable, - const vars_map& p_config) : - executable(p_executable), - config(p_config) - { - } -}; - -struct test_case_params { - const tools::fs::path& executable; - const std::string& test_case_name; - const std::string& test_case_part; - const vars_map& metadata; - const vars_map& config; - const tools::fs::path& resfile; - const tools::fs::path& workdir; - - test_case_params(const tools::fs::path& p_executable, - const std::string& p_test_case_name, - const std::string& p_test_case_part, - const vars_map& p_metadata, - const vars_map& p_config, - const tools::fs::path& p_resfile, - const tools::fs::path& p_workdir) : - executable(p_executable), - test_case_name(p_test_case_name), - test_case_part(p_test_case_part), - metadata(p_metadata), - config(p_config), - resfile(p_resfile), - workdir(p_workdir) - { - } -}; - -static -std::string -generate_timestamp(void) -{ - struct timeval tv; - if (gettimeofday(&tv, NULL) == -1) - return "0.0"; - - char buf[32]; - const int len = snprintf(buf, sizeof(buf), "%ld.%ld", - static_cast< long >(tv.tv_sec), - static_cast< long >(tv.tv_usec)); - if (len >= static_cast< int >(sizeof(buf)) || len < 0) - return "0.0"; - else - return buf; -} - -static -void -append_to_vector(std::vector< std::string >& v1, - const std::vector< std::string >& v2) -{ - std::copy(v2.begin(), v2.end(), - std::back_insert_iterator< std::vector< std::string > >(v1)); -} - -static -char** -vector_to_argv(const std::vector< std::string >& v) -{ - char** argv = new char*[v.size() + 1]; - for (std::vector< std::string >::size_type i = 0; i < v.size(); i++) { - argv[i] = strdup(v[i].c_str()); - } - argv[v.size()] = NULL; - return argv; -} - -static -void -exec_or_exit(const tools::fs::path& executable, - const std::vector< std::string >& argv) -{ - // This leaks memory in case of a failure, but it is OK. Exiting will - // do the necessary cleanup. - char* const* native_argv = vector_to_argv(argv); - - ::execv(executable.c_str(), native_argv); - - const std::string message = "Failed to execute '" + executable.str() + - "': " + std::strerror(errno) + "\n"; - if (::write(STDERR_FILENO, message.c_str(), message.length()) == -1) - std::abort(); - std::exit(EXIT_FAILURE); -} - -static -std::vector< std::string > -config_to_args(const vars_map& config) -{ - std::vector< std::string > args; - - for (vars_map::const_iterator iter = config.begin(); - iter != config.end(); iter++) - args.push_back("-v" + (*iter).first + "=" + (*iter).second); - - return args; -} - -static -void -silence_stdin(void) -{ - ::close(STDIN_FILENO); - int fd = ::open("/dev/null", O_RDONLY); - if (fd == -1) - throw std::runtime_error("Could not open /dev/null"); - assert(fd == STDIN_FILENO); -} - -static -void -prepare_child(const tools::fs::path& workdir) -{ - const int ret = ::setpgid(::getpid(), 0); - assert(ret != -1); - - ::umask(S_IWGRP | S_IWOTH); - - for (int i = 1; i <= tools::signals::last_signo; i++) - tools::signals::reset(i); - - tools::env::set("HOME", workdir.str()); - tools::env::unset("LANG"); - tools::env::unset("LC_ALL"); - tools::env::unset("LC_COLLATE"); - tools::env::unset("LC_CTYPE"); - tools::env::unset("LC_MESSAGES"); - tools::env::unset("LC_MONETARY"); - tools::env::unset("LC_NUMERIC"); - tools::env::unset("LC_TIME"); - tools::env::set("TZ", "UTC"); - - tools::env::set("__RUNNING_INSIDE_ATF_RUN", "internal-yes-value"); - - tools::fs::change_directory(workdir); - - silence_stdin(); -} - -static -void -get_metadata_child(void* raw_params) -{ - const get_metadata_params* params = - static_cast< const get_metadata_params* >(raw_params); - - std::vector< std::string > argv; - argv.push_back(params->executable.leaf_name()); - argv.push_back("-l"); - argv.push_back("-s" + params->executable.branch_path().str()); - append_to_vector(argv, config_to_args(params->config)); - - exec_or_exit(params->executable, argv); -} - -void -run_test_case_child(void* raw_params) -{ - const test_case_params* params = - static_cast< const test_case_params* >(raw_params); - - const std::pair< int, int > user = tools::get_required_user( - params->metadata, params->config); - if (user.first != -1 && user.second != -1) - tools::user::drop_privileges(user); - - // The input 'tp' parameter may be relative and become invalid once - // we change the current working directory. - const tools::fs::path absolute_executable = params->executable.to_absolute(); - - // Prepare the test program's arguments. We use dynamic memory and - // do not care to release it. We are going to die anyway very soon, - // either due to exec(2) or to exit(3). - std::vector< std::string > argv; - argv.push_back(absolute_executable.leaf_name()); - argv.push_back("-r" + params->resfile.str()); - argv.push_back("-s" + absolute_executable.branch_path().str()); - append_to_vector(argv, config_to_args(params->config)); - argv.push_back(params->test_case_name + ":" + params->test_case_part); - - prepare_child(params->workdir); - exec_or_exit(absolute_executable, argv); -} - -static void -tokenize_result(const std::string& line, std::string& out_state, - std::string& out_arg, std::string& out_reason) -{ - const std::string::size_type pos = line.find_first_of(":("); - if (pos == std::string::npos) { - out_state = line; - out_arg = ""; - out_reason = ""; - } else if (line[pos] == ':') { - out_state = line.substr(0, pos); - out_arg = ""; - out_reason = tools::text::trim(line.substr(pos + 1)); - } else if (line[pos] == '(') { - const std::string::size_type pos2 = line.find("):", pos); - if (pos2 == std::string::npos) - throw std::runtime_error("Invalid test case result '" + line + - "': unclosed optional argument"); - out_state = line.substr(0, pos); - out_arg = line.substr(pos + 1, pos2 - pos - 1); - out_reason = tools::text::trim(line.substr(pos2 + 2)); - } else - std::abort(); -} - -static impl::test_case_result -handle_result(const std::string& state, const std::string& arg, - const std::string& reason) -{ - assert(state == "passed"); - - if (!arg.empty() || !reason.empty()) - throw std::runtime_error("The test case result '" + state + "' cannot " - "be accompanied by a reason nor an expected value"); - - return impl::test_case_result(state, -1, reason); -} - -static impl::test_case_result -handle_result_with_reason(const std::string& state, const std::string& arg, - const std::string& reason) -{ - assert(state == "expected_death" || state == "expected_failure" || - state == "expected_timeout" || state == "failed" || state == "skipped"); - - if (!arg.empty() || reason.empty()) - throw std::runtime_error("The test case result '" + state + "' must " - "be accompanied by a reason but not by an expected value"); - - return impl::test_case_result(state, -1, reason); -} - -static impl::test_case_result -handle_result_with_reason_and_arg(const std::string& state, - const std::string& arg, - const std::string& reason) -{ - assert(state == "expected_exit" || state == "expected_signal"); - - if (reason.empty()) - throw std::runtime_error("The test case result '" + state + "' must " - "be accompanied by a reason"); - - int value; - if (arg.empty()) { - value = -1; - } else { - try { - value = tools::text::to_type< int >(arg); - } catch (const std::runtime_error&) { - throw std::runtime_error("The value '" + arg + "' passed to the '" + - state + "' state must be an integer"); - } - } - - return impl::test_case_result(state, value, reason); -} - -} // anonymous namespace - -detail::atf_tp_reader::atf_tp_reader(std::istream& is) : - m_is(is) -{ -} - -detail::atf_tp_reader::~atf_tp_reader(void) -{ -} - -void -detail::atf_tp_reader::got_tc( - const std::string& ident ATF_DEFS_ATTRIBUTE_UNUSED, - const std::map< std::string, std::string >& md ATF_DEFS_ATTRIBUTE_UNUSED) -{ -} - -void -detail::atf_tp_reader::got_eof(void) -{ -} - -void -detail::atf_tp_reader::validate_and_insert(const std::string& name, - const std::string& value, const size_t lineno, - std::map< std::string, std::string >& md) -{ - using tools::parser::parse_error; - - if (value.empty()) - throw parse_error(lineno, "The value for '" + name +"' cannot be " - "empty"); - - const std::string ident_regex = "^[_A-Za-z0-9]+$"; - const std::string integer_regex = "^[0-9]+$"; - - if (name == "descr") { - // Any non-empty value is valid. - } else if (name == "has.cleanup") { - try { - (void)tools::text::to_bool(value); - } catch (const std::runtime_error&) { - throw parse_error(lineno, "The has.cleanup property requires a" - " boolean value"); - } - } else if (name == "ident") { - if (!tools::text::match(value, ident_regex)) - throw parse_error(lineno, "The identifier must match " + - ident_regex + "; was '" + value + "'"); - } else if (name == "require.arch") { - } else if (name == "require.config") { - } else if (name == "require.files") { - } else if (name == "require.machine") { - } else if (name == "require.memory") { - try { - (void)tools::text::to_bytes(value); - } catch (const std::runtime_error&) { - throw parse_error(lineno, "The require.memory property requires an " - "integer value representing an amount of bytes"); - } - } else if (name == "require.progs") { - } else if (name == "require.user") { - } else if (name == "timeout") { - if (!tools::text::match(value, integer_regex)) - throw parse_error(lineno, "The timeout property requires an integer" - " value"); - } else if (name == "use.fs") { - // Deprecated; ignore it. - } else if (name.size() > 2 && name[0] == 'X' && name[1] == '-') { - // Any non-empty value is valid. - } else { - throw parse_error(lineno, "Unknown property '" + name + "'"); - } - - md.insert(std::make_pair(name, value)); -} - -void -detail::atf_tp_reader::read(void) -{ - using tools::parser::parse_error; - using namespace atf_tp; - - std::pair< size_t, tools::parser::headers_map > hml = - tools::parser::read_headers(m_is, 1); - tools::parser::validate_content_type(hml.second, - "application/X-atf-tp", 1); - - tokenizer tkz(m_is, hml.first); - tools::parser::parser< tokenizer > p(tkz); - - try { - tools::parser::token t = p.expect(text_type, "property name"); - if (t.text() != "ident") - throw parse_error(t.lineno(), "First property of a test case " - "must be 'ident'"); - - std::map< std::string, std::string > props; - do { - const std::string name = t.text(); - t = p.expect(colon_type, "`:'"); - const std::string value = tools::text::trim(p.rest_of_line()); - t = p.expect(nl_type, "new line"); - validate_and_insert(name, value, t.lineno(), props); - - t = p.expect(eof_type, nl_type, text_type, "property name, new " - "line or eof"); - if (t.type() == nl_type || t.type() == eof_type) { - const std::map< std::string, std::string >::const_iterator - iter = props.find("ident"); - if (iter == props.end()) - throw parse_error(t.lineno(), "Test case definition did " - "not define an 'ident' property"); - ATF_PARSER_CALLBACK(p, got_tc((*iter).second, props)); - props.clear(); - - if (t.type() == nl_type) { - t = p.expect(text_type, "property name"); - if (t.text() != "ident") - throw parse_error(t.lineno(), "First property of a " - "test case must be 'ident'"); - } - } - } while (t.type() != eof_type); - ATF_PARSER_CALLBACK(p, got_eof()); - } catch (const parse_error& pe) { - p.add_error(pe); - p.reset(nl_type); - } -} - -impl::test_case_result -detail::parse_test_case_result(const std::string& line) -{ - std::string state, arg, reason; - tokenize_result(line, state, arg, reason); - - if (state == "expected_death") - return handle_result_with_reason(state, arg, reason); - else if (state.compare(0, 13, "expected_exit") == 0) - return handle_result_with_reason_and_arg(state, arg, reason); - else if (state.compare(0, 16, "expected_failure") == 0) - return handle_result_with_reason(state, arg, reason); - else if (state.compare(0, 15, "expected_signal") == 0) - return handle_result_with_reason_and_arg(state, arg, reason); - else if (state.compare(0, 16, "expected_timeout") == 0) - return handle_result_with_reason(state, arg, reason); - else if (state == "failed") - return handle_result_with_reason(state, arg, reason); - else if (state == "passed") - return handle_result(state, arg, reason); - else if (state == "skipped") - return handle_result_with_reason(state, arg, reason); - else - throw std::runtime_error("Unknown test case result type in: " + line); -} - -impl::atf_tps_writer::atf_tps_writer(std::ostream& os) : - m_os(os) -{ - tools::parser::headers_map hm; - tools::parser::attrs_map ct_attrs; - ct_attrs["version"] = "3"; - hm["Content-Type"] = - tools::parser::header_entry("Content-Type", "application/X-atf-tps", - ct_attrs); - tools::parser::write_headers(hm, m_os); -} - -void -impl::atf_tps_writer::info(const std::string& what, const std::string& val) -{ - m_os << "info: " << what << ", " << val << "\n"; - m_os.flush(); -} - -void -impl::atf_tps_writer::ntps(size_t p_ntps) -{ - m_os << "tps-count: " << p_ntps << "\n"; - m_os.flush(); -} - -void -impl::atf_tps_writer::start_tp(const std::string& tp, size_t ntcs) -{ - m_tpname = tp; - m_os << "tp-start: " << generate_timestamp() << ", " << tp << ", " - << ntcs << "\n"; - m_os.flush(); -} - -void -impl::atf_tps_writer::end_tp(const std::string& reason) -{ - assert(reason.find('\n') == std::string::npos); - if (reason.empty()) - m_os << "tp-end: " << generate_timestamp() << ", " << m_tpname << "\n"; - else - m_os << "tp-end: " << generate_timestamp() << ", " << m_tpname - << ", " << reason << "\n"; - m_os.flush(); -} - -void -impl::atf_tps_writer::start_tc(const std::string& tcname) -{ - m_tcname = tcname; - m_os << "tc-start: " << generate_timestamp() << ", " << tcname << "\n"; - m_os.flush(); -} - -void -impl::atf_tps_writer::stdout_tc(const std::string& line) -{ - m_os << "tc-so:" << line << "\n"; - check_stream(m_os); - m_os.flush(); - check_stream(m_os); -} - -void -impl::atf_tps_writer::stderr_tc(const std::string& line) -{ - m_os << "tc-se:" << line << "\n"; - check_stream(m_os); - m_os.flush(); - check_stream(m_os); -} - -void -impl::atf_tps_writer::end_tc(const std::string& state, - const std::string& reason) -{ - std::string str = ", " + m_tcname + ", " + state; - if (!reason.empty()) - str += ", " + reason; - m_os << "tc-end: " << generate_timestamp() << str << "\n"; - m_os.flush(); -} - -impl::metadata -impl::get_metadata(const tools::fs::path& executable, - const vars_map& config) -{ - get_metadata_params params(executable, config); - tools::process::child child = - tools::process::fork(get_metadata_child, - tools::process::stream_capture(), - tools::process::stream_inherit(), - static_cast< void * >(¶ms)); - - tools::io::pistream outin(child.stdout_fd()); - - metadata_reader parser(outin); - parser.read(); - - const tools::process::status status = child.wait(); - if (!status.exited() || status.exitstatus() != EXIT_SUCCESS) - throw tools::parser::format_error("Test program returned failure " - "exit status for test case list"); - - return metadata(parser.get_tcs()); -} - -impl::test_case_result -impl::read_test_case_result(const tools::fs::path& results_path) -{ - std::ifstream results_file(results_path.c_str()); - if (!results_file) - throw std::runtime_error("Failed to open " + results_path.str()); - - std::string line, extra_line; - std::getline(results_file, line); - if (!results_file.good()) - throw std::runtime_error("Results file is empty"); - - while (std::getline(results_file, extra_line).good()) - line += "<>" + extra_line; - - results_file.close(); - - return detail::parse_test_case_result(line); -} - -namespace { - -static volatile bool terminate_poll; - -static void -sigchld_handler(const int signo ATF_DEFS_ATTRIBUTE_UNUSED) -{ - terminate_poll = true; -} - -class child_muxer : public tools::io::muxer { - impl::atf_tps_writer& m_writer; - - void - line_callback(const size_t index, const std::string& line) - { - switch (index) { - case 0: m_writer.stdout_tc(line); break; - case 1: m_writer.stderr_tc(line); break; - default: std::abort(); - } - } - -public: - child_muxer(const int* fds, const size_t nfds, - impl::atf_tps_writer& writer) : - muxer(fds, nfds), - m_writer(writer) - { - } -}; - -} // anonymous namespace - -std::pair< std::string, tools::process::status > -impl::run_test_case(const tools::fs::path& executable, - const std::string& test_case_name, - const std::string& test_case_part, - const vars_map& metadata, - const vars_map& config, - const tools::fs::path& resfile, - const tools::fs::path& workdir, - atf_tps_writer& writer) -{ - // TODO: Capture termination signals and deliver them to the subprocess - // instead. Or maybe do something else; think about it. - - test_case_params params(executable, test_case_name, test_case_part, - metadata, config, resfile, workdir); - tools::process::child child = - tools::process::fork(run_test_case_child, - tools::process::stream_capture(), - tools::process::stream_capture(), - static_cast< void * >(¶ms)); - - terminate_poll = false; - - const vars_map::const_iterator iter = metadata.find("timeout"); - assert(iter != metadata.end()); - const unsigned int timeout = - tools::text::to_type< unsigned int >((*iter).second); - const pid_t child_pid = child.pid(); - - // Get the input stream of stdout and stderr. - tools::io::file_handle outfh = child.stdout_fd(); - tools::io::file_handle errfh = child.stderr_fd(); - - bool timed_out = false; - - // Process the test case's output and multiplex it into our output - // stream as we read it. - int fds[2] = {outfh.get(), errfh.get()}; - child_muxer mux(fds, 2, writer); - try { - timers::child_timer timeout_timer(timeout, child_pid, terminate_poll); - signals::signal_programmer sigchld(SIGCHLD, sigchld_handler); - mux.mux(terminate_poll); - timed_out = timeout_timer.fired(); - } catch (...) { - std::abort(); - } - - ::killpg(child_pid, SIGKILL); - mux.flush(); - tools::process::status status = child.wait(); - - std::string reason; - - if (timed_out) { - // Don't assume the child process has been signaled due to the timeout - // expiration as older versions did. The child process may have exited - // but we may have timed out due to a subchild process getting stuck. - reason = "Test case timed out after " + tools::text::to_string(timeout) + - " " + (timeout == 1 ? "second" : "seconds"); - } - - return std::make_pair(reason, status); -} diff --git a/unit/atf-src/tools/test-program.hpp b/unit/atf-src/tools/test-program.hpp deleted file mode 100644 index f2f1972896..0000000000 --- a/unit/atf-src/tools/test-program.hpp +++ /dev/null @@ -1,157 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_TEST_PROGRAM_HPP) -#define TOOLS_TEST_PROGRAM_HPP - -#include -#include - -#include "fs.hpp" -#include "process.hpp" - -namespace tools { -namespace test_program { - -struct test_case_result { - std::string m_state; - int m_value; - std::string m_reason; - -public: - test_case_result(void) : - m_state("UNINITIALIZED"), - m_value(-1), - m_reason("") - { - } - - test_case_result(const std::string& p_state, const int p_value, - const std::string& p_reason) : - m_state(p_state), - m_value(p_value), - m_reason(p_reason) - { - } - - const std::string& - state(void) const - { - return m_state; - } - - int - value(void) const - { - return m_value; - } - - const std::string& - reason(void) const - { - return m_reason; - } -}; - -namespace detail { - -class atf_tp_reader { - std::istream& m_is; - - void validate_and_insert(const std::string&, const std::string&, - const size_t, - std::map< std::string, std::string >&); - -protected: - virtual void got_tc(const std::string&, - const std::map< std::string, std::string >&); - virtual void got_eof(void); - -public: - atf_tp_reader(std::istream&); - virtual ~atf_tp_reader(void); - - void read(void); -}; - -test_case_result parse_test_case_result(const std::string&); - -} // namespace detail - -class atf_tps_writer { - std::ostream& m_os; - - std::string m_tpname, m_tcname; - -public: - atf_tps_writer(std::ostream&); - - void info(const std::string&, const std::string&); - void ntps(size_t); - - void start_tp(const std::string&, size_t); - void end_tp(const std::string&); - - void start_tc(const std::string&); - void stdout_tc(const std::string&); - void stderr_tc(const std::string&); - void end_tc(const std::string&, const std::string&); -}; - -typedef std::map< std::string, std::map< std::string, std::string > > - test_cases_map; - -struct metadata { - test_cases_map test_cases; - - metadata(void) - { - } - - metadata(const test_cases_map& p_test_cases) : - test_cases(p_test_cases) - { - } -}; - -class atf_tps_writer; - -metadata get_metadata(const tools::fs::path&, - const std::map< std::string, std::string >&); -test_case_result read_test_case_result(const tools::fs::path&); -std::pair< std::string, tools::process::status > run_test_case( - const tools::fs::path&, const std::string&, const std::string&, - const std::map< std::string, std::string >&, - const std::map< std::string, std::string >&, - const tools::fs::path&, const tools::fs::path&, atf_tps_writer&); - -} // namespace test_program -} // namespace tools - -#endif // !defined(TOOLS_TEST_PROGRAM_HPP) diff --git a/unit/atf-src/tools/test_helpers.hpp b/unit/atf-src/tools/test_helpers.hpp deleted file mode 100644 index 3ac92d0ea7..0000000000 --- a/unit/atf-src/tools/test_helpers.hpp +++ /dev/null @@ -1,116 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(TOOLS_TEST_HELPERS_H) -# error "Cannot include test_helpers.hpp more than once." -#else -# define TOOLS_TEST_HELPERS_H -#endif - -#include -#include -#include - -#include - -#include "parser.hpp" -#include "text.hpp" - -namespace test_helpers_detail { - -typedef std::vector< std::string > string_vector; - -template< class Reader > -std::pair< string_vector, string_vector > -do_read(const char* input) -{ - string_vector errors; - - std::istringstream is(input); - Reader reader(is); - try { - reader.read(); - } catch (const tools::parser::parse_errors& pes) { - for (std::vector< tools::parser::parse_error >::const_iterator iter = - pes.begin(); iter != pes.end(); iter++) - errors.push_back(*iter); - } catch (const tools::parser::parse_error& pe) { - ATF_FAIL("Raised a lonely parse error: " + - tools::text::to_string(pe.first) + ": " + pe.second); - } - - return std::make_pair(reader.m_calls, errors); -} - -void -check_equal(const char* expected[], const string_vector& actual) -{ - const char** expected_iter = expected; - string_vector::const_iterator actual_iter = actual.begin(); - - bool equals = true; - while (equals && *expected_iter != NULL && actual_iter != actual.end()) { - if (*expected_iter != *actual_iter) { - equals = false; - } else { - expected_iter++; - actual_iter++; - } - } - if (equals && ((*expected_iter == NULL && actual_iter != actual.end()) || - (*expected_iter != NULL && actual_iter == actual.end()))) - equals = false; - - if (!equals) { - std::cerr << "EXPECTED:\n"; - for (expected_iter = expected; *expected_iter != NULL; expected_iter++) - std::cerr << *expected_iter << "\n"; - - std::cerr << "ACTUAL:\n"; - for (actual_iter = actual.begin(); actual_iter != actual.end(); - actual_iter++) - std::cerr << *actual_iter << "\n"; - - ATF_FAIL("Expected results differ to actual values"); - } -} - -} // namespace test_helpers_detail - -template< class Reader > -void -do_parser_test(const char* input, const char* exp_calls[], - const char* exp_errors[]) -{ - const std::pair< test_helpers_detail::string_vector, - test_helpers_detail::string_vector > - actual = test_helpers_detail::do_read< Reader >(input); - test_helpers_detail::check_equal(exp_calls, actual.first); - test_helpers_detail::check_equal(exp_errors, actual.second); -} diff --git a/unit/atf-src/tools/test_program_test.cpp b/unit/atf-src/tools/test_program_test.cpp deleted file mode 100644 index 693790d8d4..0000000000 --- a/unit/atf-src/tools/test_program_test.cpp +++ /dev/null @@ -1,1023 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include - -#include "parser.hpp" -#include "test-program.hpp" -#include "test_helpers.hpp" -#include "text.hpp" - -namespace impl = tools::test_program; -namespace detail = tools::test_program::detail; - -// ------------------------------------------------------------------------- -// Auxiliary functions. -// ------------------------------------------------------------------------- - -namespace { - -typedef std::map< std::string, std::string > vars_map; - -static -tools::fs::path -get_helper(const atf::tests::tc& tc, const char* name) -{ - return tools::fs::path(tc.get_config_var("srcdir")) / name; -} - -static -void -check_property(const vars_map& props, const char* name, const char* value) -{ - const vars_map::const_iterator iter = props.find(name); - ATF_REQUIRE(iter != props.end()); - ATF_REQUIRE_EQ(value, (*iter).second); -} - -static void -check_result(const char* exp_state, const int exp_value, const char* exp_reason, - const impl::test_case_result& tcr) -{ - ATF_REQUIRE_EQ(exp_state, tcr.state()); - ATF_REQUIRE_EQ(exp_value, tcr.value()); - ATF_REQUIRE_EQ(exp_reason, tcr.reason()); -} - -static -void -write_test_case_result(const char *results_path, const std::string& contents) -{ - std::ofstream results_file(results_path); - ATF_REQUIRE(results_file); - - results_file << contents; -} - -static -void -print_indented(const std::string& str) -{ - std::vector< std::string > ws = tools::text::split(str, "\n"); - for (std::vector< std::string >::const_iterator iter = ws.begin(); - iter != ws.end(); iter++) - std::cout << ">>" << *iter << "<<\n"; -} - -// XXX Should this string handling and verbosity level be part of the -// ATF_REQUIRE_EQ macro? It may be hard to predict sometimes that a -// string can have newlines in it, and so the error message generated -// at the moment will be bogus if there are some. -static -void -check_match(const atf::tests::tc& tc, const std::string& str, - const std::string& exp) -{ - if (!tools::text::match(str, exp)) { - std::cout << "String match check failed.\n" - << "Adding >> and << to delimit the string boundaries " - "below.\n"; - std::cout << "GOT:\n"; - print_indented(str); - std::cout << "EXPECTED:\n"; - print_indented(exp); - tc.fail("Constructed string differs from the expected one"); - } -} - -} // anonymous namespace - -// ------------------------------------------------------------------------- -// Tests for the "tp" reader. -// ------------------------------------------------------------------------- - -class tp_reader : protected detail::atf_tp_reader { - void - got_tc(const std::string& ident, - const std::map< std::string, std::string >& md) - { - std::string call = "got_tc(" + ident + ", {"; - for (std::map< std::string, std::string >::const_iterator iter = - md.begin(); iter != md.end(); iter++) { - if (iter != md.begin()) - call += ", "; - call += (*iter).first + '=' + (*iter).second; - } - call += "})"; - m_calls.push_back(call); - } - - void - got_eof(void) - { - m_calls.push_back("got_eof()"); - } - -public: - tp_reader(std::istream& is) : - detail::atf_tp_reader(is) - { - } - - void - read(void) - { - atf_tp_reader::read(); - } - - std::vector< std::string > m_calls; -}; - -ATF_TEST_CASE_WITHOUT_HEAD(tp_1); -ATF_TEST_CASE_BODY(tp_1) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test_case_1\n" - "\n" - "ident: test_case_2\n" - "\n" - "ident: test_case_3\n" - ; - - const char* exp_calls[] = { - "got_tc(test_case_1, {ident=test_case_1})", - "got_tc(test_case_2, {ident=test_case_2})", - "got_tc(test_case_3, {ident=test_case_3})", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_2); -ATF_TEST_CASE_BODY(tp_2) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test_case_1\n" - "descr: This is the description\n" - "timeout: 300\n" - "\n" - "ident: test_case_2\n" - "\n" - "ident: test_case_3\n" - "X-prop1: A custom property\n" - "descr: Third test case\n" - ; - - // NO_CHECK_STYLE_BEGIN - const char* exp_calls[] = { - "got_tc(test_case_1, {descr=This is the description, ident=test_case_1, timeout=300})", - "got_tc(test_case_2, {ident=test_case_2})", - "got_tc(test_case_3, {X-prop1=A custom property, descr=Third test case, ident=test_case_3})", - "got_eof()", - NULL - }; - // NO_CHECK_STYLE_END - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_3); -ATF_TEST_CASE_BODY(tp_3) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: single_test\n" - "descr: Some description\n" - "timeout: 300\n" - "require.arch: thearch\n" - "require.config: foo-bar\n" - "require.files: /a/1 /b/2\n" - "require.machine: themachine\n" - "require.progs: /bin/cp mv\n" - "require.user: root\n" - ; - - // NO_CHECK_STYLE_BEGIN - const char* exp_calls[] = { - "got_tc(single_test, {descr=Some description, ident=single_test, require.arch=thearch, require.config=foo-bar, require.files=/a/1 /b/2, require.machine=themachine, require.progs=/bin/cp mv, require.user=root, timeout=300})", - "got_eof()", - NULL - }; - // NO_CHECK_STYLE_END - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_4); -ATF_TEST_CASE_BODY(tp_4) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: single_test \n" - "descr: Some description \n" - ; - - const char* exp_calls[] = { - "got_tc(single_test, {descr=Some description, ident=single_test})", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_50); -ATF_TEST_CASE_BODY(tp_50) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected property name", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_51); -ATF_TEST_CASE_BODY(tp_51) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "\n" - "\n" - "\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected property name", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_52); -ATF_TEST_CASE_BODY(tp_52) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test1\n" - "ident: test2\n" - ; - - const char* exp_calls[] = { - "got_tc(test1, {ident=test1})", - "got_eof()", - NULL - }; - - const char* exp_errors[] = { - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_53); -ATF_TEST_CASE_BODY(tp_53) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "descr: Out of order\n" - "ident: test1\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: First property of a test case must be 'ident'", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_54); -ATF_TEST_CASE_BODY(tp_54) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident:\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: The value for 'ident' cannot be empty", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_55); -ATF_TEST_CASE_BODY(tp_55) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: +*,\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: The identifier must match ^[_A-Za-z0-9]+$; was '+*,'", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_56); -ATF_TEST_CASE_BODY(tp_56) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test\n" - "timeout: hello\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "4: The timeout property requires an integer value", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_57); -ATF_TEST_CASE_BODY(tp_57) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test\n" - "unknown: property\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "4: Unknown property 'unknown'", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_58); -ATF_TEST_CASE_BODY(tp_58) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test\n" - "X-foo:\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "4: The value for 'X-foo' cannot be empty", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_59); -ATF_TEST_CASE_BODY(tp_59) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "\n" - "ident: test\n" - "timeout: 300\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "3: Unexpected token `<>'; expected property name", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -ATF_TEST_CASE_WITHOUT_HEAD(tp_60); -ATF_TEST_CASE_BODY(tp_60) -{ - const char* input = - "Content-Type: application/X-atf-tp; version=\"1\"\n" - "\n" - "ident: test\n" - "require.memory: 12345D\n" - ; - - const char* exp_calls[] = { - NULL - }; - - const char* exp_errors[] = { - "4: The require.memory property requires an integer value representing" - " an amount of bytes", - NULL - }; - - do_parser_test< tp_reader >(input, exp_calls, exp_errors); -} - -// ------------------------------------------------------------------------- -// Tests for the "tps" writer. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(atf_tps_writer); -ATF_TEST_CASE_HEAD(atf_tps_writer) -{ - set_md_var("descr", "Verifies the application/X-atf-tps writer"); -} -ATF_TEST_CASE_BODY(atf_tps_writer) -{ - std::ostringstream expss; - std::ostringstream ss; - const char *ts_regex = "[0-9]+\\.[0-9]{1,6}, "; - -#define RESET \ - expss.str(""); \ - ss.str("") - -#define CHECK \ - check_match(*this, ss.str(), expss.str()) - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.info("foo", "bar"); - expss << "info: foo, bar\n"; - CHECK; - - w.info("baz", "second info"); - expss << "info: baz, second info\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(0); - expss << "tps-count: 0\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(123); - expss << "tps-count: 123\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(2); - expss << "tps-count: 2\n"; - CHECK; - - w.start_tp("foo", 0); - expss << "tp-start: " << ts_regex << "foo, 0\n"; - CHECK; - - w.end_tp(""); - expss << "tp-end: " << ts_regex << "foo\n"; - CHECK; - - w.start_tp("bar", 0); - expss << "tp-start: " << ts_regex << "bar, 0\n"; - CHECK; - - w.end_tp("failed program"); - expss << "tp-end: " << ts_regex << "bar, failed program\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(1); - expss << "tps-count: 1\n"; - CHECK; - - w.start_tp("foo", 1); - expss << "tp-start: " << ts_regex << "foo, 1\n"; - CHECK; - - w.start_tc("brokentc"); - expss << "tc-start: " << ts_regex << "brokentc\n"; - CHECK; - - w.end_tp("aborted"); - expss << "tp-end: " << ts_regex << "foo, aborted\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(1); - expss << "tps-count: 1\n"; - CHECK; - - w.start_tp("thetp", 3); - expss << "tp-start: " << ts_regex << "thetp, 3\n"; - CHECK; - - w.start_tc("passtc"); - expss << "tc-start: " << ts_regex << "passtc\n"; - CHECK; - - w.end_tc("passed", ""); - expss << "tc-end: " << ts_regex << "passtc, passed\n"; - CHECK; - - w.start_tc("failtc"); - expss << "tc-start: " << ts_regex << "failtc\n"; - CHECK; - - w.end_tc("failed", "The reason"); - expss << "tc-end: " << ts_regex << "failtc, failed, The reason\n"; - CHECK; - - w.start_tc("skiptc"); - expss << "tc-start: " << ts_regex << "skiptc\n"; - CHECK; - - w.end_tc("skipped", "The reason"); - expss << "tc-end: " << ts_regex << "skiptc, skipped, The reason\n"; - CHECK; - - w.end_tp(""); - expss << "tp-end: " << ts_regex << "thetp\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(1); - expss << "tps-count: 1\n"; - CHECK; - - w.start_tp("thetp", 1); - expss << "tp-start: " << ts_regex << "thetp, 1\n"; - CHECK; - - w.start_tc("thetc"); - expss << "tc-start: " << ts_regex << "thetc\n"; - CHECK; - - w.stdout_tc("a line"); - expss << "tc-so:a line\n"; - CHECK; - - w.stdout_tc("another line"); - expss << "tc-so:another line\n"; - CHECK; - - w.stderr_tc("an error message"); - expss << "tc-se:an error message\n"; - CHECK; - - w.end_tc("passed", ""); - expss << "tc-end: " << ts_regex << "thetc, passed\n"; - CHECK; - - w.end_tp(""); - expss << "tp-end: " << ts_regex << "thetp\n"; - CHECK; - } - - { - RESET; - - impl::atf_tps_writer w(ss); - expss << "Content-Type: application/X-atf-tps; version=\"3\"\n\n"; - CHECK; - - w.ntps(1); - expss << "tps-count: 1\n"; - CHECK; - - w.start_tp("thetp", 0); - expss << "tp-start: " << ts_regex << "thetp, 0\n"; - CHECK; - - w.end_tp(""); - expss << "tp-end: " << ts_regex << "thetp\n"; - CHECK; - - w.info("foo", "bar"); - expss << "info: foo, bar\n"; - CHECK; - - w.info("baz", "second value"); - expss << "info: baz, second value\n"; - CHECK; - } - -#undef CHECK -#undef RESET -} - -// ------------------------------------------------------------------------- -// Tests for the free functions. -// ------------------------------------------------------------------------- - -ATF_TEST_CASE(get_metadata_bad); -ATF_TEST_CASE_HEAD(get_metadata_bad) {} -ATF_TEST_CASE_BODY(get_metadata_bad) { - const tools::fs::path executable = get_helper(*this, "bad_metadata_helper"); - ATF_REQUIRE_THROW(tools::parser::parse_errors, - impl::get_metadata(executable, vars_map())); -} - -ATF_TEST_CASE(get_metadata_zero_tcs); -ATF_TEST_CASE_HEAD(get_metadata_zero_tcs) {} -ATF_TEST_CASE_BODY(get_metadata_zero_tcs) { - const tools::fs::path executable = get_helper(*this, "zero_tcs_helper"); - ATF_REQUIRE_THROW(tools::parser::parse_errors, - impl::get_metadata(executable, vars_map())); -} - -ATF_TEST_CASE(get_metadata_several_tcs); -ATF_TEST_CASE_HEAD(get_metadata_several_tcs) {} -ATF_TEST_CASE_BODY(get_metadata_several_tcs) { - const tools::fs::path executable = get_helper(*this, "several_tcs_helper"); - const impl::metadata md = impl::get_metadata(executable, vars_map()); - ATF_REQUIRE_EQ(3, md.test_cases.size()); - - { - const impl::test_cases_map::const_iterator iter = - md.test_cases.find("first"); - ATF_REQUIRE(iter != md.test_cases.end()); - - ATF_REQUIRE_EQ(4, (*iter).second.size()); - check_property((*iter).second, "descr", "Description 1"); - check_property((*iter).second, "has.cleanup", "false"); - check_property((*iter).second, "ident", "first"); - check_property((*iter).second, "timeout", "300"); - } - - { - const impl::test_cases_map::const_iterator iter = - md.test_cases.find("second"); - ATF_REQUIRE(iter != md.test_cases.end()); - - ATF_REQUIRE_EQ(5, (*iter).second.size()); - check_property((*iter).second, "descr", "Description 2"); - check_property((*iter).second, "has.cleanup", "true"); - check_property((*iter).second, "ident", "second"); - check_property((*iter).second, "timeout", "500"); - check_property((*iter).second, "X-property", "Custom property"); - } - - { - const impl::test_cases_map::const_iterator iter = - md.test_cases.find("third"); - ATF_REQUIRE(iter != md.test_cases.end()); - - ATF_REQUIRE_EQ(3, (*iter).second.size()); - check_property((*iter).second, "has.cleanup", "false"); - check_property((*iter).second, "ident", "third"); - check_property((*iter).second, "timeout", "300"); - } -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_expected_death); -ATF_TEST_CASE_BODY(parse_test_case_result_expected_death) { - check_result("expected_death", -1, "foo bar", - detail::parse_test_case_result("expected_death: foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_death")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_death(3): foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_expected_exit); -ATF_TEST_CASE_BODY(parse_test_case_result_expected_exit) { - check_result("expected_exit", -1, "foo bar", - detail::parse_test_case_result("expected_exit: foo bar")); - check_result("expected_exit", -1, "foo bar", - detail::parse_test_case_result("expected_exit(): foo bar")); - check_result("expected_exit", 5, "foo bar", - detail::parse_test_case_result("expected_exit(5): foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_exit")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_exit(")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_expected_failure); -ATF_TEST_CASE_BODY(parse_test_case_result_expected_failure) { - check_result("expected_failure", -1, "foo bar", - detail::parse_test_case_result("expected_failure: foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_failure")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_failure(3): foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_expected_signal); -ATF_TEST_CASE_BODY(parse_test_case_result_expected_signal) { - check_result("expected_signal", -1, "foo bar", - detail::parse_test_case_result("expected_signal: foo bar")); - check_result("expected_signal", -1, "foo bar", - detail::parse_test_case_result("expected_signal(): foo bar")); - check_result("expected_signal", 5, "foo bar", - detail::parse_test_case_result("expected_signal(5): foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_signal")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_signal(")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_expected_timeout); -ATF_TEST_CASE_BODY(parse_test_case_result_expected_timeout) { - check_result("expected_timeout", -1, "foo bar", - detail::parse_test_case_result("expected_timeout: foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_timeout")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("expected_timeout(3): foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_failed); -ATF_TEST_CASE_BODY(parse_test_case_result_failed) { - check_result("failed", -1, "foo bar", - detail::parse_test_case_result("failed: foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("failed")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("failed(3): foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_passed); -ATF_TEST_CASE_BODY(parse_test_case_result_passed) { - check_result("passed", -1, "", - detail::parse_test_case_result("passed")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("passed: foo")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("passed(3): foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_skipped); -ATF_TEST_CASE_BODY(parse_test_case_result_skipped) { - check_result("skipped", -1, "foo bar", - detail::parse_test_case_result("skipped: foo bar")); - - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("skipped")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("skipped(3): foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(parse_test_case_result_unknown); -ATF_TEST_CASE_BODY(parse_test_case_result_unknown) { - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("foo")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("bar: foo")); - ATF_REQUIRE_THROW(std::runtime_error, - detail::parse_test_case_result("baz: foo")); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_test_case_result_failed); -ATF_TEST_CASE_BODY(read_test_case_result_failed) { - write_test_case_result("resfile", "failed: foo bar\n"); - const impl::test_case_result tcr = impl::read_test_case_result( - tools::fs::path("resfile")); - ATF_REQUIRE_EQ("failed", tcr.state()); - ATF_REQUIRE_EQ("foo bar", tcr.reason()); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_test_case_result_skipped); -ATF_TEST_CASE_BODY(read_test_case_result_skipped) { - write_test_case_result("resfile", "skipped: baz bar\n"); - const impl::test_case_result tcr = impl::read_test_case_result( - tools::fs::path("resfile")); - ATF_REQUIRE_EQ("skipped", tcr.state()); - ATF_REQUIRE_EQ("baz bar", tcr.reason()); -} - - -ATF_TEST_CASE(read_test_case_result_no_file); -ATF_TEST_CASE_HEAD(read_test_case_result_no_file) {} -ATF_TEST_CASE_BODY(read_test_case_result_no_file) { - ATF_REQUIRE_THROW(std::runtime_error, - impl::read_test_case_result(tools::fs::path("resfile"))); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_test_case_result_empty_file); -ATF_TEST_CASE_BODY(read_test_case_result_empty_file) { - write_test_case_result("resfile", ""); - ATF_REQUIRE_THROW(std::runtime_error, - impl::read_test_case_result(tools::fs::path("resfile"))); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_test_case_result_invalid); -ATF_TEST_CASE_BODY(read_test_case_result_invalid) { - write_test_case_result("resfile", "passed: hello\n"); - ATF_REQUIRE_THROW(std::runtime_error, - impl::read_test_case_result(tools::fs::path("resfile"))); -} - -ATF_TEST_CASE_WITHOUT_HEAD(read_test_case_result_multiline); -ATF_TEST_CASE_BODY(read_test_case_result_multiline) { - write_test_case_result("resfile", "skipped: foo\nbar\n"); - const impl::test_case_result tcr = impl::read_test_case_result( - tools::fs::path("resfile")); - ATF_REQUIRE_EQ("skipped", tcr.state()); - ATF_REQUIRE_EQ("foo<>bar", tcr.reason()); -} - -// ------------------------------------------------------------------------- -// Main. -// ------------------------------------------------------------------------- - -ATF_INIT_TEST_CASES(tcs) -{ - ATF_ADD_TEST_CASE(tcs, tp_1); - ATF_ADD_TEST_CASE(tcs, tp_2); - ATF_ADD_TEST_CASE(tcs, tp_3); - ATF_ADD_TEST_CASE(tcs, tp_4); - ATF_ADD_TEST_CASE(tcs, tp_50); - ATF_ADD_TEST_CASE(tcs, tp_51); - ATF_ADD_TEST_CASE(tcs, tp_52); - ATF_ADD_TEST_CASE(tcs, tp_53); - ATF_ADD_TEST_CASE(tcs, tp_54); - ATF_ADD_TEST_CASE(tcs, tp_55); - ATF_ADD_TEST_CASE(tcs, tp_56); - ATF_ADD_TEST_CASE(tcs, tp_57); - ATF_ADD_TEST_CASE(tcs, tp_58); - ATF_ADD_TEST_CASE(tcs, tp_59); - ATF_ADD_TEST_CASE(tcs, tp_60); - - ATF_ADD_TEST_CASE(tcs, atf_tps_writer); - - ATF_ADD_TEST_CASE(tcs, get_metadata_bad); - ATF_ADD_TEST_CASE(tcs, get_metadata_zero_tcs); - ATF_ADD_TEST_CASE(tcs, get_metadata_several_tcs); - - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_expected_death); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_expected_exit); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_expected_failure); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_expected_signal); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_expected_timeout); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_failed); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_passed); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_skipped); - ATF_ADD_TEST_CASE(tcs, parse_test_case_result_unknown); - - ATF_ADD_TEST_CASE(tcs, read_test_case_result_failed); - ATF_ADD_TEST_CASE(tcs, read_test_case_result_skipped); - ATF_ADD_TEST_CASE(tcs, read_test_case_result_no_file); - ATF_ADD_TEST_CASE(tcs, read_test_case_result_empty_file); - ATF_ADD_TEST_CASE(tcs, read_test_case_result_multiline); - ATF_ADD_TEST_CASE(tcs, read_test_case_result_invalid); - - // TODO: Add tests for run_test_case once all the missing functionality - // is implemented. -} diff --git a/unit/atf-src/tools/tests-results.css b/unit/atf-src/tools/tests-results.css deleted file mode 100644 index 24fc12cbf3..0000000000 --- a/unit/atf-src/tools/tests-results.css +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Automated Testing Framework (atf) - * - * Copyright (c) 2007 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -body { - margin: 0 0 0 0; -} - -.nobr { - white-space: nowrap; -} - -h1 { - background: black; - color: white; - font-family: Arial; - font-size: 24pt; - padding: 5pt; -} - -h2 { - background: #eeeeee; - font-family: Arial; - font-size: 16pt; - margin-left: 10pt; - margin-right: 10pt; - padding: 3pt; -} - -h3 { - font-family: Arial; - font-size: 12pt; - margin-left: 20pt; - margin-right: 20pt; - padding: 3pt; -} - -p.details { - margin-left: 20pt; - margin-right: 20pt; -} - -p.term { - margin-left: 40pt; - margin-right: 40pt; -} - -pre.so { - margin-left: 40pt; - margin-right: 40pt; -} - -pre.se { - margin-left: 40pt; - margin-right: 40pt; -} - -table.summary { - border-collapse: collapse; - border-color: black; - border-style: solid; - border-width: 1pt; - margin-left: auto; - margin-right: auto; -} - -table.summary th { - background: #aaaadd; - border-style: solid; - border-width: 1pt; - padding: 3pt 6pt 3pt 6pt; -} - -table.summary td { - border-style: solid; - border-width: 1pt; - padding: 3pt 6pt 3pt 6pt; -} - -table.summary td.numeric p { - text-align: right; -} - -table.summary td.numeric-error p { - text-align: right; - color: red; -} - -table.summary td.numeric-warning p { - text-align: right; - color: #aaaa00; -} - -table.summary tr.group { - background: #dddddd; -} - -table.summary tr.entry td p { - margin-left: 10pt; -} - -table.tcs-summary { - border-collapse: collapse; - border-color: black; - border-style: solid; - border-width: 1pt; - margin-left: auto; - margin-right: auto; - width: 80%; -} - -table.tcs-summary td { - border-style: solid; - border-width: 1pt; - padding: 3pt 6pt 3pt 6pt; -} - -table.tcs-summary th { - background: #aaaadd; - border-style: solid; - border-width: 1pt; - padding: 3pt 6pt 3pt 6pt; -} - -table.tcs-summary td.numeric { - width: 1pt; -} - -table.tcs-summary td.numeric p { - text-align: right; -} - -table.tcs-summary td.tp-numeric { - background: #dddddd; - width: 1pt; -} - -table.tcs-summary td.tp-numeric p { - text-align: right; -} - -table.tcs-summary td.tp-id { - background: #dddddd; - font-weight: bold; - width: 1pt; -} - -table.tcs-summary td.tc-id p { - margin-left: 10pt; -} - -table.tcs-summary td.tcr-passed { - background: #aaffaa; - width: 1pt; -} - -table.tcs-summary td.tcr-failed { - background: #ffaaaa; - width: 1pt; -} - -table.tcs-summary td.tcr-skipped { - background: #ffffaa; - width: 1pt; -} - -table.tcs-summary td.tcr-xfail { - background: #ffaaff; - width: 1pt; -} - -table.tcs-summary td.tcr-reason { - width: 100%; -} diff --git a/unit/atf-src/tools/tests-results.dtd b/unit/atf-src/tools/tests-results.dtd deleted file mode 100644 index c16f7edfb5..0000000000 --- a/unit/atf-src/tools/tests-results.dtd +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/unit/atf-src/tools/tests-results.xsl b/unit/atf-src/tools/tests-results.xsl deleted file mode 100644 index 91b77c5435..0000000000 --- a/unit/atf-src/tools/tests-results.xsl +++ /dev/null @@ -1,564 +0,0 @@ - -]> - - - - - - - tests-results.css - ATF Tests Results - - - - - - - - - - - - - - - - - - - - - - <xsl:value-of select="$global.title" /> - - - -

- - - - - - - - - - - - - - - - - - - - -
- - -

Execution summary

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Item

Value

ATF

Version

Timings

Start time of tests

End time of tests

System information

Host name

Operating system

Operating system release

Operating system version

Platform

Tests results

Root

Test programs

Bogus test - programs

-

-

Bogus test programs

-

-

Test cases

Passed test cases

Failed test - cases

-

-

Failed test cases

-

-

Expected - failures

-

-

Expected failures

-

-

Skipped test - cases

-

-

Skipped test cases

-

-

See more execution - details

-
- - - -

Execution details

- -

Environment variables

- -
    - - - -
-
- - -
  • -

    -
  • -
    - - -

    Test cases summary

    - - - - - - - - - - all - -

    Test case

    Result

    Reason

    Duration

    -
    - - -
    -

    Expected failures summary

    - - - - - - - - - - xfail - -

    Test case

    Result

    Reason

    Duration

    - - - -
    -

    Failed test cases summary

    - - - - - - - - - - failed - -

    Test case

    Result

    Reason

    Duration

    - - - -
    -

    Bogus test programs summary

    - - - - - - - bogus - -
    Test program
    - - - -
    -

    Skipped test cases summary

    - - - - - - - - - - skipped - -

    Test case

    Result

    Reason

    Duration

    - - - - - - - - yes - yes - yes - yes - yes - yes - yes - yes - yes - yes - no - - - - - - -

    - - -

    s

    - - - - - - - -
    -
    - - - - - - - - - yes - yes - yes - yes - yes - yes - yes - yes - yes - no - - - - - - - - -

    - - -

    -
    - - - - -

    s

    - - - - - - -

    Passed

    -

    N/A

    -
    - - -

    Expected death

    -

    -
    - - -

    Expected exit

    -

    -
    - - -

    Expected failure

    -

    -
    - - -

    Expected timeout

    -

    -
    - - -

    Expected signal

    -

    -
    - - -

    Failed

    -

    -
    - - -

    Skipped

    -

    -
    - - - - - - -

    FAILED:

    -
    - - -

    XFAIL:

    -
    - - -

    SKIPPED:

    -
    - - - - - -

    Test case: - / -

    - - -

    Duration: -

    -
    - -

    Termination reason

    - - - -

    Standard output stream

    -
    -
    - - -

    Standard error stream

    -
    -
    -
    - - - seconds - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/unit/atf-src/tools/text.cpp b/unit/atf-src/tools/text.cpp deleted file mode 100644 index 9084f7e808..0000000000 --- a/unit/atf-src/tools/text.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -} - -#include -#include -#include - -#include "exceptions.hpp" -#include "text.hpp" - -namespace impl = tools::text; -#define IMPL_NAME "tools::text" - -char* -impl::duplicate(const char* str) -{ - char* copy = new char[std::strlen(str) + 1]; - std::strcpy(copy, str); - return copy; -} - -bool -impl::match(const std::string& str, const std::string& regex) -{ - bool found; - - // Special case: regcomp does not like empty regular expressions. - if (regex.empty()) { - found = str.empty(); - } else { - ::regex_t preg; - - if (::regcomp(&preg, regex.c_str(), REG_EXTENDED) != 0) - throw std::runtime_error("Invalid regular expression '" + regex + - "'"); - - const int res = ::regexec(&preg, str.c_str(), 0, NULL, 0); - regfree(&preg); - if (res != 0 && res != REG_NOMATCH) - throw std::runtime_error("Invalid regular expression " + regex); - - found = res == 0; - } - - return found; -} - -std::string -impl::to_lower(const std::string& str) -{ - std::string lc; - for (std::string::const_iterator iter = str.begin(); iter != str.end(); - iter++) - lc += std::tolower(*iter); - return lc; -} - -std::vector< std::string > -impl::split(const std::string& str, const std::string& delim) -{ - std::vector< std::string > words; - - std::string::size_type pos = 0, newpos = 0; - while (pos < str.length() && newpos != std::string::npos) { - newpos = str.find(delim, pos); - if (newpos != pos) - words.push_back(str.substr(pos, newpos - pos)); - pos = newpos + delim.length(); - } - - return words; -} - -std::string -impl::trim(const std::string& str) -{ - std::string::size_type pos1 = str.find_first_not_of(" \t"); - std::string::size_type pos2 = str.find_last_not_of(" \t"); - - if (pos1 == std::string::npos && pos2 == std::string::npos) - return ""; - else if (pos1 == std::string::npos) - return str.substr(0, str.length() - pos2); - else if (pos2 == std::string::npos) - return str.substr(pos1); - else - return str.substr(pos1, pos2 - pos1 + 1); -} - -bool -impl::to_bool(const std::string& str) -{ - const std::string lower = to_lower(str); - if (lower == "yes" || lower == "true") - return true; - else if (lower == "no" || lower == "false") - return false; - else { - // XXX Not really a libc error. - throw system_error(IMPL_NAME "::to_bool", "Cannot convert string " - "'" + str + "' to boolean", EINVAL); - } -} - -int64_t -impl::to_bytes(std::string str) -{ - if (str.empty()) - throw std::runtime_error("Empty value"); - - const char unit = str[str.length() - 1]; - int64_t multiplier; - switch (unit) { - case 'k': case 'K': multiplier = 1 << 10; break; - case 'm': case 'M': multiplier = 1 << 20; break; - case 'g': case 'G': multiplier = 1 << 30; break; - case 't': case 'T': multiplier = int64_t(1) << 40; break; - default: - if (!std::isdigit(unit)) - throw std::runtime_error(std::string("Unknown size unit '") + unit - + "'"); - multiplier = 1; - } - if (multiplier != 1) - str.erase(str.length() - 1); - - return to_type< int64_t >(str) * multiplier; -} diff --git a/unit/atf-src/tools/text.hpp b/unit/atf-src/tools/text.hpp deleted file mode 100644 index 0b3dbaad0f..0000000000 --- a/unit/atf-src/tools/text.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_TEXT_HPP) -#define TOOLS_TEXT_HPP - -extern "C" { -#include -} - -#include -#include -#include -#include - -namespace tools { -namespace text { - -//! -//! \brief Duplicates a C string using the new[] allocator. -//! -//! Replaces the functionality of strdup by using the new[] allocator and -//! thus allowing the resulting memory to be managed by utils::auto_array. -//! -char* duplicate(const char*); - -//! -//! \brief Joins multiple words into a string. -//! -//! Joins a list of words into a string, separating them using the provided -//! separator. Empty words are not omitted. -//! -template< class T > -std::string -join(const T& words, const std::string& separator) -{ - std::string str; - - typename T::const_iterator iter = words.begin(); - bool done = iter == words.end(); - while (!done) { - str += *iter; - iter++; - if (iter != words.end()) - str += separator; - else - done = true; - } - - return str; -} - -//! -//! \brief Checks if the string matches a regular expression. -//! -bool match(const std::string&, const std::string&); - -//! -//! \brief Splits a string into words. -//! -//! Splits the given string into multiple words, all separated by the -//! given delimiter. Multiple occurrences of the same delimiter are -//! not condensed so that rejoining the words later on using the same -//! delimiter results in the original string. -//! -std::vector< std::string > split(const std::string&, const std::string&); - -//! -//! \brief Removes whitespace from the beginning and end of a string. -//! -std::string trim(const std::string&); - -//! -//! \brief Converts a string to a boolean value. -//! -bool to_bool(const std::string&); - -//! -//! \brief Converts the given string to a bytes size. -//! -int64_t to_bytes(std::string); - -//! -//! \brief Changes the case of a string to lowercase. -//! -//! Returns a new string that is a lowercased version of the original -//! one. -//! -std::string to_lower(const std::string&); - -//! -//! \brief Converts the given object to a string. -//! -//! Returns a string with the representation of the given object. There -//! must exist an operator<< method for that object. -//! -template< class T > -std::string -to_string(const T& ob) -{ - std::ostringstream ss; - ss << ob; - return ss.str(); -} - -//! -//! \brief Converts the given string to another type. -//! -//! Attempts to convert the given string to the requested type. Throws -//! an exception if the conversion failed. -//! -template< class T > -T -to_type(const std::string& str) -{ - std::istringstream ss(str); - T value; - ss >> value; - if (!ss.eof() || (ss.eof() && (ss.fail() || ss.bad()))) - throw std::runtime_error("Cannot convert string to requested type"); - return value; -} - -} // namespace text -} // namespace tools - -#endif // !defined(TOOLS_TEXT_HPP) diff --git a/unit/atf-src/tools/text_test.cpp b/unit/atf-src/tools/text_test.cpp deleted file mode 100644 index 0fa31d8273..0000000000 --- a/unit/atf-src/tools/text_test.cpp +++ /dev/null @@ -1,390 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include -#include - -#include - -#include "text.hpp" - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(duplicate); -ATF_TEST_CASE_HEAD(duplicate) -{ - set_md_var("descr", "Tests the duplicate function"); -} -ATF_TEST_CASE_BODY(duplicate) -{ - using tools::text::duplicate; - - const char* orig = "foo"; - - char* copy = duplicate(orig); - ATF_REQUIRE_EQ(std::strlen(copy), 3); - ATF_REQUIRE(std::strcmp(copy, "foo") == 0); - - std::strcpy(copy, "bar"); - ATF_REQUIRE(std::strcmp(copy, "bar") == 0); - ATF_REQUIRE(std::strcmp(orig, "foo") == 0); -} - -ATF_TEST_CASE(join); -ATF_TEST_CASE_HEAD(join) -{ - set_md_var("descr", "Tests the join function"); -} -ATF_TEST_CASE_BODY(join) -{ - using tools::text::join; - - // First set of tests using a non-sorted collection, std::vector. - { - std::vector< std::string > words; - std::string str; - - words.clear(); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.push_back(""); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.push_back(""); - words.push_back(""); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ","); - - words.clear(); - words.push_back("foo"); - words.push_back(""); - words.push_back("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, "foo,,baz"); - - words.clear(); - words.push_back("foo"); - words.push_back("bar"); - words.push_back("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, "foo,bar,baz"); - } - - // Second set of tests using a sorted collection, std::set. - { - std::set< std::string > words; - std::string str; - - words.clear(); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.insert(""); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ""); - - words.clear(); - words.insert("foo"); - words.insert(""); - words.insert("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, ",baz,foo"); - - words.clear(); - words.insert("foo"); - words.insert("bar"); - words.insert("baz"); - str = join(words, ","); - ATF_REQUIRE_EQ(str, "bar,baz,foo"); - } -} - -ATF_TEST_CASE(match); -ATF_TEST_CASE_HEAD(match) -{ - set_md_var("descr", "Tests the match function"); -} -ATF_TEST_CASE_BODY(match) -{ - using tools::text::match; - - ATF_REQUIRE_THROW(std::runtime_error, match("", "[")); - - ATF_REQUIRE(match("", "")); - ATF_REQUIRE(!match("foo", "")); - - ATF_REQUIRE(match("", ".*")); - ATF_REQUIRE(match("", "[a-z]*")); - - ATF_REQUIRE(match("hello", "hello")); - ATF_REQUIRE(match("hello", "[a-z]+")); - ATF_REQUIRE(match("hello", "^[a-z]+$")); - - ATF_REQUIRE(!match("hello", "helooo")); - ATF_REQUIRE(!match("hello", "[a-z]+5")); - ATF_REQUIRE(!match("hello", "^ [a-z]+$")); -} - -ATF_TEST_CASE(split); -ATF_TEST_CASE_HEAD(split) -{ - set_md_var("descr", "Tests the split function"); -} -ATF_TEST_CASE_BODY(split) -{ - using tools::text::split; - - std::vector< std::string > words; - - words = split("", " "); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split(" ", " "); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split(" ", " "); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split("a b", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "b"); - - words = split("a b c d", " "); - ATF_REQUIRE_EQ(words.size(), 4); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "b"); - ATF_REQUIRE_EQ(words[2], "c"); - ATF_REQUIRE_EQ(words[3], "d"); - - words = split("foo bar", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split("foo bar baz foobar", " "); - ATF_REQUIRE_EQ(words.size(), 4); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - ATF_REQUIRE_EQ(words[2], "baz"); - ATF_REQUIRE_EQ(words[3], "foobar"); - - words = split(" foo bar", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split("foo bar", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split("foo bar ", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); - - words = split(" foo bar ", " "); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "foo"); - ATF_REQUIRE_EQ(words[1], "bar"); -} - -ATF_TEST_CASE(split_delims); -ATF_TEST_CASE_HEAD(split_delims) -{ - set_md_var("descr", "Tests the split function using different delimiters"); -} -ATF_TEST_CASE_BODY(split_delims) -{ - using tools::text::split; - - std::vector< std::string > words; - - words = split("", "/"); - ATF_REQUIRE_EQ(words.size(), 0); - - words = split(" ", "/"); - ATF_REQUIRE_EQ(words.size(), 1); - ATF_REQUIRE_EQ(words[0], " "); - - words = split(" ", "/"); - ATF_REQUIRE_EQ(words.size(), 1); - ATF_REQUIRE_EQ(words[0], " "); - - words = split("a/b", "/"); - ATF_REQUIRE_EQ(words.size(), 2); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "b"); - - words = split("aLONGDELIMbcdLONGDELIMef", "LONGDELIM"); - ATF_REQUIRE_EQ(words.size(), 3); - ATF_REQUIRE_EQ(words[0], "a"); - ATF_REQUIRE_EQ(words[1], "bcd"); - ATF_REQUIRE_EQ(words[2], "ef"); -} - -ATF_TEST_CASE(trim); -ATF_TEST_CASE_HEAD(trim) -{ - set_md_var("descr", "Tests the trim function"); -} -ATF_TEST_CASE_BODY(trim) -{ - using tools::text::trim; - - ATF_REQUIRE_EQ(trim(""), ""); - ATF_REQUIRE_EQ(trim(" "), ""); - ATF_REQUIRE_EQ(trim("\t"), ""); - - ATF_REQUIRE_EQ(trim(" foo"), "foo"); - ATF_REQUIRE_EQ(trim("\t foo"), "foo"); - ATF_REQUIRE_EQ(trim(" \tfoo"), "foo"); - ATF_REQUIRE_EQ(trim("foo\t "), "foo"); - ATF_REQUIRE_EQ(trim("foo \t"), "foo"); - - ATF_REQUIRE_EQ(trim("foo bar"), "foo bar"); - ATF_REQUIRE_EQ(trim("\t foo bar"), "foo bar"); - ATF_REQUIRE_EQ(trim(" \tfoo bar"), "foo bar"); - ATF_REQUIRE_EQ(trim("foo bar\t "), "foo bar"); - ATF_REQUIRE_EQ(trim("foo bar \t"), "foo bar"); -} - -ATF_TEST_CASE(to_bool); -ATF_TEST_CASE_HEAD(to_bool) -{ - set_md_var("descr", "Tests the to_string function"); -} -ATF_TEST_CASE_BODY(to_bool) -{ - using tools::text::to_bool; - - ATF_REQUIRE(to_bool("true")); - ATF_REQUIRE(to_bool("TRUE")); - ATF_REQUIRE(to_bool("yes")); - ATF_REQUIRE(to_bool("YES")); - - ATF_REQUIRE(!to_bool("false")); - ATF_REQUIRE(!to_bool("FALSE")); - ATF_REQUIRE(!to_bool("no")); - ATF_REQUIRE(!to_bool("NO")); - - ATF_REQUIRE_THROW(std::runtime_error, to_bool("")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("tru")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("true2")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("fals")); - ATF_REQUIRE_THROW(std::runtime_error, to_bool("false2")); -} - -ATF_TEST_CASE(to_bytes); -ATF_TEST_CASE_HEAD(to_bytes) -{ - set_md_var("descr", "Tests the to_bytes function"); -} -ATF_TEST_CASE_BODY(to_bytes) -{ - using tools::text::to_bytes; - - ATF_REQUIRE_EQ(0, to_bytes("0")); - ATF_REQUIRE_EQ(12345, to_bytes("12345")); - ATF_REQUIRE_EQ(2 * 1024, to_bytes("2k")); - ATF_REQUIRE_EQ(4 * 1024 * 1024, to_bytes("4m")); - ATF_REQUIRE_EQ(int64_t(8) * 1024 * 1024 * 1024, to_bytes("8g")); - ATF_REQUIRE_EQ(int64_t(16) * 1024 * 1024 * 1024 * 1024, to_bytes("16t")); - - ATF_REQUIRE_THROW_RE(std::runtime_error, "Empty", to_bytes("")); - ATF_REQUIRE_THROW_RE(std::runtime_error, "Unknown size unit 'd'", - to_bytes("12d")); - ATF_REQUIRE_THROW(std::runtime_error, to_bytes(" ")); - ATF_REQUIRE_THROW(std::runtime_error, to_bytes(" k")); -} - -ATF_TEST_CASE(to_string); -ATF_TEST_CASE_HEAD(to_string) -{ - set_md_var("descr", "Tests the to_string function"); -} -ATF_TEST_CASE_BODY(to_string) -{ - using tools::text::to_string; - - ATF_REQUIRE_EQ(to_string('a'), "a"); - ATF_REQUIRE_EQ(to_string("a"), "a"); - ATF_REQUIRE_EQ(to_string(5), "5"); -} - -ATF_TEST_CASE(to_type); -ATF_TEST_CASE_HEAD(to_type) -{ - set_md_var("descr", "Tests the to_type function"); -} -ATF_TEST_CASE_BODY(to_type) -{ - using tools::text::to_type; - - ATF_REQUIRE_EQ(to_type< int >("0"), 0); - ATF_REQUIRE_EQ(to_type< int >("1234"), 1234); - ATF_REQUIRE_THROW(std::runtime_error, to_type< int >(" ")); - ATF_REQUIRE_THROW(std::runtime_error, to_type< int >("0 a")); - ATF_REQUIRE_THROW(std::runtime_error, to_type< int >("a")); - - ATF_REQUIRE_EQ(to_type< float >("0.5"), 0.5); - ATF_REQUIRE_EQ(to_type< float >("1234.5"), 1234.5); - ATF_REQUIRE_THROW(std::runtime_error, to_type< float >("0.5 a")); - ATF_REQUIRE_THROW(std::runtime_error, to_type< float >("a")); - - ATF_REQUIRE_EQ(to_type< std::string >("a"), "a"); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, duplicate); - ATF_ADD_TEST_CASE(tcs, join); - ATF_ADD_TEST_CASE(tcs, match); - ATF_ADD_TEST_CASE(tcs, split); - ATF_ADD_TEST_CASE(tcs, split_delims); - ATF_ADD_TEST_CASE(tcs, trim); - ATF_ADD_TEST_CASE(tcs, to_bool); - ATF_ADD_TEST_CASE(tcs, to_bytes); - ATF_ADD_TEST_CASE(tcs, to_string); - ATF_ADD_TEST_CASE(tcs, to_type); -} diff --git a/unit/atf-src/tools/timers.cpp b/unit/atf-src/tools/timers.cpp deleted file mode 100644 index a5334f4921..0000000000 --- a/unit/atf-src/tools/timers.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if defined(HAVE_CONFIG_H) -# include -#endif - -extern "C" { -#include -} - -#include -#include -#include -#include - -#include "defs.hpp" -#include "exceptions.hpp" -#include "signals.hpp" -#include "timers.hpp" - -namespace impl = tools::timers; -#define IMPL_NAME "tools::timers" - -#if !defined(HAVE_TIMER_T) -static impl::timer* compat_handle; -#endif - -// ------------------------------------------------------------------------ -// Auxiliary functions. -// ------------------------------------------------------------------------ - -#if defined(HAVE_TIMER_T) -static -void -handler(const int signo ATF_DEFS_ATTRIBUTE_UNUSED, siginfo_t* si, - void* uc ATF_DEFS_ATTRIBUTE_UNUSED) -{ - impl::timer* timer = static_cast< impl::timer* >(si->si_value.sival_ptr); - timer->set_fired(); - timer->timeout_callback(); -} -#else -static -void -handler(const int signo ATF_DEFS_ATTRIBUTE_UNUSED, - siginfo_t* si ATF_DEFS_ATTRIBUTE_UNUSED, - void* uc ATF_DEFS_ATTRIBUTE_UNUSED) -{ - compat_handle->set_fired(); - compat_handle->timeout_callback(); -} -#endif - -// ------------------------------------------------------------------------ -// The "timer" class. -// ------------------------------------------------------------------------ - -struct impl::timer::impl { -#if defined(HAVE_TIMER_T) - ::timer_t m_timer; - ::itimerspec m_old_it; -#else - ::itimerval m_old_it; -#endif - - struct ::sigaction m_old_sa; - volatile bool m_fired; - - impl(void) : m_fired(false) - { - } -}; - -impl::timer::timer(const unsigned int seconds) : - m_pimpl(new impl()) -{ - struct ::sigaction sa; - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_SIGINFO; - sa.sa_sigaction = ::handler; - if (::sigaction(SIGALRM, &sa, &m_pimpl->m_old_sa) == -1) - throw tools::system_error(IMPL_NAME "::timer::timer", - "Failed to set signal handler", errno); - -#if defined(HAVE_TIMER_T) - struct ::sigevent se; - se.sigev_notify = SIGEV_SIGNAL; - se.sigev_signo = SIGALRM; - se.sigev_value.sival_ptr = static_cast< void* >(this); - se.sigev_notify_function = NULL; - se.sigev_notify_attributes = NULL; - if (::timer_create(CLOCK_MONOTONIC, &se, &m_pimpl->m_timer) == -1) { - ::sigaction(SIGALRM, &m_pimpl->m_old_sa, NULL); - throw tools::system_error(IMPL_NAME "::timer::timer", - "Failed to create timer", errno); - } - - struct ::itimerspec it; - it.it_interval.tv_sec = 0; - it.it_interval.tv_nsec = 0; - it.it_value.tv_sec = seconds; - it.it_value.tv_nsec = 0; - if (::timer_settime(m_pimpl->m_timer, 0, &it, &m_pimpl->m_old_it) == -1) { - ::sigaction(SIGALRM, &m_pimpl->m_old_sa, NULL); - ::timer_delete(m_pimpl->m_timer); - throw tools::system_error(IMPL_NAME "::timer::timer", - "Failed to program timer", errno); - } -#else - ::itimerval it; - it.it_interval.tv_sec = 0; - it.it_interval.tv_usec = 0; - it.it_value.tv_sec = seconds; - it.it_value.tv_usec = 0; - if (::setitimer(ITIMER_REAL, &it, &m_pimpl->m_old_it) == -1) { - ::sigaction(SIGALRM, &m_pimpl->m_old_sa, NULL); - throw tools::system_error(IMPL_NAME "::timer::timer", - "Failed to program timer", errno); - } - assert(compat_handle == NULL); - compat_handle = this; -#endif -} - -impl::timer::~timer(void) -{ -#if defined(HAVE_TIMER_T) - { - const int ret = ::timer_delete(m_pimpl->m_timer); - assert(ret != -1); - } -#else - { - const int ret = ::setitimer(ITIMER_REAL, &m_pimpl->m_old_it, NULL); - assert(ret != -1); - } -#endif - const int ret = ::sigaction(SIGALRM, &m_pimpl->m_old_sa, NULL); - assert(ret != -1); - -#if !defined(HAVE_TIMER_T) - compat_handle = NULL; -#endif -} - -bool -impl::timer::fired(void) - const -{ - return m_pimpl->m_fired; -} - -void -impl::timer::set_fired(void) -{ - m_pimpl->m_fired = true; -} - -// ------------------------------------------------------------------------ -// The "child_timer" class. -// ------------------------------------------------------------------------ - -impl::child_timer::child_timer(const unsigned int seconds, const pid_t pid, - volatile bool& terminate) : - timer(seconds), - m_pid(pid), - m_terminate(terminate) -{ -} - -impl::child_timer::~child_timer(void) -{ -} - -void -impl::child_timer::timeout_callback(void) -{ - static const timespec ts = { 1, 0 }; - m_terminate = true; - ::kill(-m_pid, SIGTERM); - ::nanosleep(&ts, NULL); - if (::kill(-m_pid, 0) != -1) - ::kill(-m_pid, SIGKILL); -} diff --git a/unit/atf-src/tools/timers.hpp b/unit/atf-src/tools/timers.hpp deleted file mode 100644 index bf43ffb03f..0000000000 --- a/unit/atf-src/tools/timers.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2010 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_TIMERS_HPP) -#define TOOLS_TIMERS_HPP - -extern "C" { -#include -} - -#include - -namespace tools { -namespace timers { - -class signal_programmer; - -// ------------------------------------------------------------------------ -// The "timer" class. -// ------------------------------------------------------------------------ - -class timer { - // Non-copyable. - timer(const timer&); - timer& operator=(const timer&); - - struct impl; - std::auto_ptr< impl > m_pimpl; - -public: - timer(const unsigned int); - virtual ~timer(void); - - bool fired(void) const; - void set_fired(void); - virtual void timeout_callback(void) = 0; -}; - -// ------------------------------------------------------------------------ -// The "child_timer" class. -// ------------------------------------------------------------------------ - -class child_timer : public timer { - const pid_t m_pid; - volatile bool& m_terminate; - -public: - child_timer(const unsigned int, const pid_t, volatile bool&); - virtual ~child_timer(void); - - void timeout_callback(void); -}; - -} // namespace timers -} // namespace tools - -#endif // !defined(TOOLS_TIMERS_HPP) diff --git a/unit/atf-src/tools/ui.cpp b/unit/atf-src/tools/ui.cpp deleted file mode 100644 index 56426ec486..0000000000 --- a/unit/atf-src/tools/ui.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include - -#include -#include -} - -#include -#include - -#include "env.hpp" -#include "text.hpp" -#include "ui.hpp" - -namespace impl = tools::ui; -#define IMPL_NAME "tools::ui" - -static -size_t -terminal_width(void) -{ - static bool done = false; - static size_t width = 0; - - if (!done) { - if (tools::env::has("COLUMNS")) { - const std::string cols = tools::env::get("COLUMNS"); - if (cols.length() > 0) { - width = tools::text::to_type< size_t >(cols); - } - } else { - struct winsize ws; - if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) != -1) - width = ws.ws_col; - } - - if (width >= 80) - width -= 5; - - done = true; - } - - return width; -} - -static -std::string -format_paragraph(const std::string& text, - const std::string& tag, - const bool first, - const bool repeat, - const size_t col) -{ - assert(text.find('\n') == std::string::npos); - - const std::string pad(col - tag.length(), ' '); - const std::string fullpad(col, ' '); - - std::string formatted; - if (first || repeat) - formatted = tag + pad; - else - formatted = fullpad; - assert(formatted.length() == col); - size_t curcol = col; - - const size_t maxcol = terminal_width(); - - std::vector< std::string > words = tools::text::split(text, " "); - for (std::vector< std::string >::const_iterator iter = words.begin(); - iter != words.end(); iter++) { - const std::string& word = *iter; - - if (iter != words.begin() && maxcol > 0 && - curcol + word.length() + 1 > maxcol) { - if (repeat) - formatted += '\n' + tag + pad; - else - formatted += '\n' + fullpad; - curcol = col; - } else if (iter != words.begin()) { - formatted += ' '; - curcol++; - } - - formatted += word; - curcol += word.length(); - } - - return formatted; -} - -std::string -impl::format_error(const std::string& prog_name, const std::string& error) -{ - return format_text_with_tag("ERROR: " + error, prog_name + ": ", true); -} - -std::string -impl::format_info(const std::string& prog_name, const std::string& msg) -{ - return format_text_with_tag(msg, prog_name + ": ", true); -} - -std::string -impl::format_text(const std::string& text) -{ - return format_text_with_tag(text, "", false, 0); -} - -std::string -impl::format_text_with_tag(const std::string& text, const std::string& tag, - bool repeat, size_t col) -{ - assert(col == 0 || col >= tag.length()); - if (col == 0) - col = tag.length(); - - std::string formatted; - - std::vector< std::string > lines = tools::text::split(text, "\n"); - for (std::vector< std::string >::const_iterator iter = lines.begin(); - iter != lines.end(); iter++) { - const std::string& line = *iter; - - formatted += format_paragraph(line, tag, iter == lines.begin(), - repeat, col); - if (iter + 1 != lines.end()) { - if (repeat) - formatted += "\n" + tag + "\n"; - else - formatted += "\n\n"; - } - } - - return formatted; -} - -std::string -impl::format_warning(const std::string& prog_name, const std::string& error) -{ - return format_text_with_tag("WARNING: " + error, prog_name + ": ", true); -} diff --git a/unit/atf-src/tools/ui.hpp b/unit/atf-src/tools/ui.hpp deleted file mode 100644 index 4e0e4318be..0000000000 --- a/unit/atf-src/tools/ui.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_UI_HPP) -#define TOOLS_UI_HPP - -#include - -namespace tools { -namespace ui { - -//! -//! \brief Formats an error message to fit on screen. -//! -//! Given the program's name and an error message, properly formats it to -//! fit on screen. -//! -//! The program's name is not stored globally to prevent the usage of this -//! function from inside the library. Making it a explicit parameter -//! restricts its usage to the frontend. -//! -std::string format_error(const std::string&, const std::string&); - -//! -//! \brief Formats an informational message to fit on screen. -//! -//! Given the program's name and an informational message, properly formats -//! it to fit on screen. -//! -//! The program's name is not stored globally to prevent the usage of this -//! function from inside the library. Making it a explicit parameter -//! restricts its usage to the frontend. -//! -std::string format_info(const std::string&, const std::string&); - -//! -//! \brief Formats a block of text to fit nicely on screen. -//! -//! Given a text, which is composed of multiple paragraphs separated by -//! a single '\n' character, reformats it to fill on the current screen's -//! width with proper line wrapping. -//! -//! This is just a special case of format_text_with_tag, provided for -//! simplicity. -//! -std::string format_text(const std::string&); - -//! -//! \brief Formats a block of text to fit nicely on screen, prepending a -//! tag to it. -//! -//! Given a text, which is composed of multiple paragraphs separated by -//! a single '\n' character, reformats it to fill on the current screen's -//! width with proper line wrapping. The text is prepended with a tag; -//! i.e. a word that is printed at the beginning of the first paragraph and -//! optionally repeated at the beginning of each word. The last parameter -//! specifies the column on which the text should start, and that position -//! must be greater than the tag's length or 0, in which case it -//! automatically takes the correct value. -//! -std::string format_text_with_tag(const std::string&, const std::string&, - bool, size_t = 0); - -//! -//! \brief Formats a warning message to fit on screen. -//! -//! Given the program's name and a warning message, properly formats it to -//! fit on screen. -//! -//! The program's name is not stored globally to prevent the usage of this -//! function from inside the library. Making it a explicit parameter -//! restricts its usage to the frontend. -//! -std::string format_warning(const std::string&, const std::string&); - -} // namespace ui -} // namespace tools - -#endif // !defined(TOOLS_UI_HPP) diff --git a/unit/atf-src/tools/ui_test.cpp b/unit/atf-src/tools/ui_test.cpp deleted file mode 100644 index e4d9050eab..0000000000 --- a/unit/atf-src/tools/ui_test.cpp +++ /dev/null @@ -1,462 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2009 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include -#include - -#include - -#include "env.hpp" -#include "ui.hpp" - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -struct test { - const char *tc; - const char *tag; - bool repeat; - size_t col; - const char *fmt; - const char *result; -} tests[] = { - // - // wo_tag - // - - { - "wo_tag", - "", - false, - 0, - "12345", - "12345", - }, - - { - "wo_tag", - "", - false, - 0, - "12345 ", - "12345", - }, - - { - "wo_tag", - "", - false, - 0, - "12345 7890", - "12345 7890", - }, - - { - "wo_tag", - "", - false, - 0, - "12345 789012 45", - "12345 789012 45", - }, - - { - "wo_tag", - "", - false, - 0, - "12345 789012 456", - "12345 789012\n456", - }, - - { - "wo_tag", - "", - false, - 0, - "1234567890123456", - "1234567890123456", - }, - - // TODO(jmmv): Fix the code to pass this test... -// { -// "wo_tag", -// "", -// false, -// 0, -// " 2345678901234567", -// "\n2345678901234567", -// }, - - { - "wo_tag", - "", - false, - 0, - "12345 789012345 78", - "12345 789012345\n78", - }, - - // - // wo_tag_col - // - - { - "wo_tag_col", - "", - false, - 10, - "12345", - " 12345", - }, - - { - "wo_tag_col", - "", - false, - 10, - "12345 7890", - " 12345\n" - " 7890", - }, - - { - "wo_tag_col", - "", - false, - 10, - "1 3 5 7 9", - " 1 3 5\n" - " 7 9", - }, - - // - // w_tag_no_repeat - // - - { - "w_tag_no_repeat", - "1234: ", - false, - 0, - "789012345", - "1234: 789012345", - }, - - { - "w_tag_no_repeat", - "1234: ", - false, - 0, - "789 1234 56789", - "1234: 789 1234\n" - " 56789", - }, - - { - "w_tag_no_repeat", - "1234: ", - false, - 0, - "789012345", - "1234: 789012345", - }, - - { - "w_tag_no_repeat", - "1234: ", - false, - 0, - "789012345 7890", - "1234: 789012345\n" - " 7890", - }, - - // - // w_tag_repeat - // - - { - "w_tag_repeat", - "1234: ", - true, - 0, - "789012345", - "1234: 789012345", - }, - - { - "w_tag_repeat", - "1234: ", - true, - 0, - "789 1234 56789", - "1234: 789 1234\n" - "1234: 56789", - }, - - { - "w_tag_repeat", - "1234: ", - true, - 0, - "789012345", - "1234: 789012345", - }, - - { - "w_tag_no_repeat", - "1234: ", - true, - 0, - "789012345 7890", - "1234: 789012345\n" - "1234: 7890", - }, - - // - // w_tag_col - // - - { - "w_tag_col", - "1234:", - false, - 10, - "1 3 5", - "1234: 1 3 5", - }, - - { - "w_tag_col", - "1234:", - false, - 10, - "1 3 5 7 9", - "1234: 1 3 5\n" - " 7 9", - }, - - { - "w_tag_col", - "1234:", - true, - 10, - "1 3 5 7 9", - "1234: 1 3 5\n" - "1234: 7 9", - }, - - // - // paragraphs - // - - { - "paragraphs", - "", - false, - 0, - "1 3 5\n\n", - "1 3 5" - }, - - { - "paragraphs", - "", - false, - 0, - "1 3 5\n2 4 6", - "1 3 5\n\n2 4 6" - }, - - { - "paragraphs", - "", - false, - 0, - "1234 6789 123456\n2 4 6", - "1234 6789\n123456\n\n2 4 6" - }, - - { - "paragraphs", - "12: ", - false, - 0, - "56789 123456\n2 4 6", - "12: 56789\n 123456\n\n 2 4 6" - }, - - { - "paragraphs", - "12: ", - true, - 0, - "56789 123456\n2 4 6", - "12: 56789\n12: 123456\n12: \n12: 2 4 6" - }, - - { - "paragraphs", - "12:", - false, - 4, - "56789 123456\n2 4 6", - "12: 56789\n 123456\n\n 2 4 6" - }, - - { - "paragraphs", - "12:", - true, - 4, - "56789 123456\n2 4 6", - "12: 56789\n12: 123456\n12:\n12: 2 4 6" - }, - - // - // end - // - - { - NULL, - NULL, - false, - 0, - NULL, - NULL, - }, -}; - -static -void -run_tests(const char *tc) -{ - struct test *t; - - std::cout << "Running tests for " << tc << "\n"; - - tools::env::set("COLUMNS", "15"); - - for (t = &tests[0]; t->tc != NULL; t++) { - if (std::strcmp(t->tc, tc) == 0) { - std::cout << "\n"; - std::cout << "Testing with tag '" << t->tag << "', '" - << (t->repeat ? "repeat" : "no repeat") << "', col " - << t->col << "\n"; - std::cout << "Input: >>>" << t->fmt << "<<<\n"; - std::cout << "Expected output: >>>" << t->result << "<<<\n"; - - std::string result = tools::ui::format_text_with_tag(t->fmt, t->tag, - t->repeat, t->col); - std::cout << "Output : >>>" << result << "<<<\n"; - ATF_REQUIRE_EQ(t->result, result); - } - } -} - -ATF_TEST_CASE(wo_tag); -ATF_TEST_CASE_HEAD(wo_tag) -{ - set_md_var("descr", "Checks formatting without tags"); -} -ATF_TEST_CASE_BODY(wo_tag) -{ - run_tests("wo_tag"); -} - -ATF_TEST_CASE(wo_tag_col); -ATF_TEST_CASE_HEAD(wo_tag_col) -{ - set_md_var("descr", "Checks formatting without tags and with a non-zero " - "starting column"); -} -ATF_TEST_CASE_BODY(wo_tag_col) -{ - run_tests("wo_tag_col"); -} - -ATF_TEST_CASE(w_tag_no_repeat); -ATF_TEST_CASE_HEAD(w_tag_no_repeat) -{ - set_md_var("descr", "Checks formatting with a tag"); -} -ATF_TEST_CASE_BODY(w_tag_no_repeat) -{ - run_tests("w_tag_no_repeat"); -} - -ATF_TEST_CASE(w_tag_repeat); -ATF_TEST_CASE_HEAD(w_tag_repeat) -{ - set_md_var("descr", "Checks formatting with a tag and repeating it on " - "each line"); -} -ATF_TEST_CASE_BODY(w_tag_repeat) -{ - run_tests("w_tag_repeat"); -} - -ATF_TEST_CASE(w_tag_col); -ATF_TEST_CASE_HEAD(w_tag_col) -{ - set_md_var("descr", "Checks formatting with a tag and starting at a " - "column greater than its length"); -} -ATF_TEST_CASE_BODY(w_tag_col) -{ - run_tests("w_tag_col"); -} - -ATF_TEST_CASE(paragraphs); -ATF_TEST_CASE_HEAD(paragraphs) -{ - set_md_var("descr", "Checks formatting a string that contains multiple " - "paragraphs"); -} -ATF_TEST_CASE_BODY(paragraphs) -{ - run_tests("paragraphs"); -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the test cases for the free functions. - ATF_ADD_TEST_CASE(tcs, wo_tag); - ATF_ADD_TEST_CASE(tcs, wo_tag_col); - ATF_ADD_TEST_CASE(tcs, w_tag_no_repeat); - ATF_ADD_TEST_CASE(tcs, w_tag_repeat); - ATF_ADD_TEST_CASE(tcs, w_tag_col); - ATF_ADD_TEST_CASE(tcs, paragraphs); -} diff --git a/unit/atf-src/tools/user.cpp b/unit/atf-src/tools/user.cpp deleted file mode 100644 index 85d7e501d1..0000000000 --- a/unit/atf-src/tools/user.cpp +++ /dev/null @@ -1,102 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include - -#include -#include -#include -} - -#include -#include -#include - -#include "user.hpp" - -namespace impl = tools::user; -#define IMPL_NAME "tools::user" - -uid_t -impl::euid(void) -{ - return ::geteuid(); -} - -void -impl::drop_privileges(const std::pair< int, int > ids) -{ - if (::setgid(ids.second) == -1) - throw std::runtime_error("Failed to drop group privileges"); - if (::setuid(ids.first) == -1) - throw std::runtime_error("Failed to drop user privileges"); -} - -std::pair< int, int > -impl::get_user_ids(const std::string& user) -{ - const struct passwd* pw = ::getpwnam(user.c_str()); - if (pw == NULL) - throw std::runtime_error("Failed to get information for user " + user); - return std::make_pair(pw->pw_uid, pw->pw_gid); -} - -bool -impl::is_member_of_group(gid_t gid) -{ - static gid_t groups[NGROUPS_MAX]; - static int ngroups = -1; - bool found; - int i; - - if (ngroups == -1) { - ngroups = getgroups(NGROUPS_MAX, groups); - assert(ngroups >= 0); - } - - found = false; - for (i = 0; !found && i < ngroups; i++) - if (groups[i] == gid) - found = true; - return found; -} - -bool -impl::is_root(void) -{ - return ::geteuid() == 0; -} - -bool -impl::is_unprivileged(void) -{ - return ::geteuid() != 0; -} diff --git a/unit/atf-src/tools/user.hpp b/unit/atf-src/tools/user.hpp deleted file mode 100644 index 1758eb01a5..0000000000 --- a/unit/atf-src/tools/user.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#if !defined(TOOLS_USER_HPP) -#define TOOLS_USER_HPP - -extern "C" { -#include -} - -#include - -namespace tools { -namespace user { - -uid_t euid(void); -void drop_privileges(const std::pair< int, int >); -std::pair< int, int > get_user_ids(const std::string&); -bool is_member_of_group(gid_t); -bool is_root(void); -bool is_unprivileged(void); - -} // namespace user -} // namespace tools - -#endif // !defined(TOOLS_USER_HPP) diff --git a/unit/atf-src/tools/user_test.cpp b/unit/atf-src/tools/user_test.cpp deleted file mode 100644 index 4c385d311e..0000000000 --- a/unit/atf-src/tools/user_test.cpp +++ /dev/null @@ -1,148 +0,0 @@ -// -// Automated Testing Framework (atf) -// -// Copyright (c) 2007 The NetBSD Foundation, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND -// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -extern "C" { -#include -#include -#include -#include -} - -#include -#include - -#include - -#include "user.hpp" - -// ------------------------------------------------------------------------ -// Test cases for the free functions. -// ------------------------------------------------------------------------ - -ATF_TEST_CASE(euid); -ATF_TEST_CASE_HEAD(euid) -{ - set_md_var("descr", "Tests the euid function"); -} -ATF_TEST_CASE_BODY(euid) -{ - using tools::user::euid; - - ATF_REQUIRE_EQ(euid(), ::geteuid()); -} - -ATF_TEST_CASE(is_member_of_group); -ATF_TEST_CASE_HEAD(is_member_of_group) -{ - set_md_var("descr", "Tests the is_member_of_group function"); -} -ATF_TEST_CASE_BODY(is_member_of_group) -{ - using tools::user::is_member_of_group; - - std::set< gid_t > groups; - gid_t maxgid = 0; - { - gid_t gids[NGROUPS_MAX]; - int ngids = ::getgroups(NGROUPS_MAX, gids); - if (ngids == -1) - ATF_FAIL("Call to ::getgroups failed"); - for (int i = 0; i < ngids; i++) { - groups.insert(gids[i]); - if (gids[i] > maxgid) - maxgid = gids[i]; - } - std::cout << "User belongs to " << ngids << " groups\n"; - std::cout << "Last GID is " << maxgid << "\n"; - } - - const gid_t maxgid_limit = 1 << 16; - if (maxgid > maxgid_limit) { - std::cout << "Test truncated from " << maxgid << " groups to " - << maxgid_limit << " to keep the run time reasonable " - "enough\n"; - maxgid = maxgid_limit; - } - - for (gid_t g = 0; g <= maxgid; g++) { - if (groups.find(g) == groups.end()) { - std::cout << "Checking if user does not belong to group " - << g << "\n"; - ATF_REQUIRE(!is_member_of_group(g)); - } else { - std::cout << "Checking if user belongs to group " << g << "\n"; - ATF_REQUIRE(is_member_of_group(g)); - } - } -} - -ATF_TEST_CASE(is_root); -ATF_TEST_CASE_HEAD(is_root) -{ - set_md_var("descr", "Tests the is_root function"); -} -ATF_TEST_CASE_BODY(is_root) -{ - using tools::user::is_root; - - if (::geteuid() == 0) { - ATF_REQUIRE(is_root()); - } else { - ATF_REQUIRE(!is_root()); - } -} - -ATF_TEST_CASE(is_unprivileged); -ATF_TEST_CASE_HEAD(is_unprivileged) -{ - set_md_var("descr", "Tests the is_unprivileged function"); -} -ATF_TEST_CASE_BODY(is_unprivileged) -{ - using tools::user::is_unprivileged; - - if (::geteuid() != 0) { - ATF_REQUIRE(is_unprivileged()); - } else { - ATF_REQUIRE(!is_unprivileged()); - } -} - -// ------------------------------------------------------------------------ -// Main. -// ------------------------------------------------------------------------ - -ATF_INIT_TEST_CASES(tcs) -{ - // Add the tests for the free functions. - ATF_ADD_TEST_CASE(tcs, euid); - ATF_ADD_TEST_CASE(tcs, is_member_of_group); - ATF_ADD_TEST_CASE(tcs, is_root); - ATF_ADD_TEST_CASE(tcs, is_unprivileged); -} diff --git a/unit/atf-src/tools/zero_tcs_helper.c b/unit/atf-src/tools/zero_tcs_helper.c deleted file mode 100644 index d4068b17a8..0000000000 --- a/unit/atf-src/tools/zero_tcs_helper.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Automated Testing Framework (atf) - * - * Copyright (c) 2010 The NetBSD Foundation, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND - * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -ATF_TP_ADD_TCS(tp) -{ - if (tp != NULL) {} /* Use tp. */ - return atf_no_error(); -} diff --git a/util/copyrights b/util/copyrights index 7d815fd02a..25ce951598 100644 --- a/util/copyrights +++ b/util/copyrights @@ -1,6 +1,5 @@ ./.gitattributes X 2015,2017,2018 ./.gitlab-ci.yml X 2018 -./Atffile X 2011,2018 ./CHANGES X 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 ./CONTRIBUTING X 2018 ./CONTRIBUTING.md MKD 2018 @@ -3081,7 +3080,6 @@ ./isc-config.sh.docbook SGML 2009,2014,2015,2016,2017,2018 ./isc-config.sh.html HTML DOCBOOK ./isc-config.sh.in SH 2000,2001,2003,2004,2007,2012,2013,2015,2016,2017,2018 -./lib/Atffile X 2011,2014,2016,2017,2018 ./lib/Kyuafile X 2017,2018 ./lib/Makefile.in MAKE 1998,1999,2000,2001,2003,2004,2007,2012,2013,2014,2016,2017,2018 ./lib/bind9/Makefile.in MAKE 2001,2004,2007,2009,2012,2014,2015,2016,2017,2018 @@ -3100,7 +3098,6 @@ ./lib/bind9/win32/libbind9.vcxproj.in X 2013,2014,2015,2016,2017,2018 ./lib/bind9/win32/libbind9.vcxproj.user X 2013,2018 ./lib/bind9/win32/version.c C 1998,1999,2000,2001,2004,2007,2016,2018 -./lib/dns/Atffile X 2011,2018 ./lib/dns/Kyuafile X 2017,2018 ./lib/dns/Makefile.in MAKE 1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 ./lib/dns/acl.c C 1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2011,2013,2014,2016,2017,2018 @@ -3481,7 +3478,6 @@ ./lib/dns/ssu_external.c C 2011,2012,2013,2016,2017,2018 ./lib/dns/stats.c C 2000,2001,2004,2005,2007,2008,2009,2012,2016,2018 ./lib/dns/tcpmsg.c C 1999,2000,2001,2004,2005,2006,2007,2015,2016,2018 -./lib/dns/tests/Atffile X 2011,2017,2018 ./lib/dns/tests/Kdh.+002+18602.key X 2014,2018 ./lib/dns/tests/Krsa.+005+29235.key X 2016,2018 ./lib/dns/tests/Kyuafile X 2017,2018 @@ -3597,7 +3593,6 @@ ./lib/dns/zone_p.h C 2018 ./lib/dns/zonekey.c C 2001,2003,2004,2005,2007,2016,2018 ./lib/dns/zt.c C 1999,2000,2001,2002,2004,2005,2006,2007,2011,2012,2013,2014,2015,2016,2017,2018 -./lib/irs/Atffile X 2016,2018 ./lib/irs/Kyuafile X 2017,2018 ./lib/irs/Makefile.in MAKE 2009,2012,2014,2015,2016,2017,2018 ./lib/irs/api X 2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 @@ -3616,7 +3611,6 @@ ./lib/irs/include/irs/types.h C 2009,2016,2018 ./lib/irs/include/irs/version.h C 2009,2016,2018 ./lib/irs/resconf.c C 2009,2011,2012,2014,2015,2016,2017,2018 -./lib/irs/tests/Atffile X 2016,2017,2018 ./lib/irs/tests/Kyuafile X 2017,2018 ./lib/irs/tests/Makefile.in MAKE 2016,2017,2018 ./lib/irs/tests/resconf_test.c C 2016,2018 @@ -3650,7 +3644,6 @@ ./lib/irs/win32/libirs.vcxproj.user X 2014,2018 ./lib/irs/win32/resconf.c C 2018 ./lib/irs/win32/version.c C 2014,2016,2018 -./lib/isc/Atffile X 2011,2018 ./lib/isc/Kyuafile X 2017,2018 ./lib/isc/Makefile.in MAKE 1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 ./lib/isc/aes.c C 2014,2016,2017,2018 @@ -3869,7 +3862,6 @@ ./lib/isc/symtab.c C 1996,1997,1998,1999,2000,2001,2004,2005,2007,2011,2012,2013,2016,2018 ./lib/isc/task.c C 1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 ./lib/isc/taskpool.c C 1999,2000,2001,2004,2005,2007,2011,2012,2013,2016,2018 -./lib/isc/tests/Atffile X 2011,2017,2018 ./lib/isc/tests/Kyuafile X 2017,2018 ./lib/isc/tests/Makefile.in MAKE 2011,2012,2013,2014,2015,2016,2017,2018 ./lib/isc/tests/aes_test.c C 2014,2016,2018 @@ -4059,7 +4051,6 @@ ./lib/isccc/win32/libisccc.vcxproj.in X 2013,2014,2015,2016,2017,2018 ./lib/isccc/win32/libisccc.vcxproj.user X 2013,2018 ./lib/isccc/win32/version.c C 2001,2004,2007,2016,2018 -./lib/isccfg/Atffile X 2016,2018 ./lib/isccfg/Kyuafile X 2017,2018 ./lib/isccfg/Makefile.in MAKE 2001,2002,2003,2004,2005,2007,2009,2011,2012,2013,2014,2015,2016,2017,2018 ./lib/isccfg/aclconf.c C 1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 @@ -4077,7 +4068,6 @@ ./lib/isccfg/log.c C 2001,2004,2005,2006,2007,2016,2018 ./lib/isccfg/namedconf.c C 2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 ./lib/isccfg/parser.c C 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 -./lib/isccfg/tests/Atffile X 2016,2017,2018 ./lib/isccfg/tests/Kyuafile X 2017,2018 ./lib/isccfg/tests/Makefile.in MAKE 2016,2017,2018 ./lib/isccfg/tests/parser_test.c C 2016,2018 @@ -4088,7 +4078,6 @@ ./lib/isccfg/win32/libisccfg.vcxproj.in X 2013,2014,2015,2016,2017,2018 ./lib/isccfg/win32/libisccfg.vcxproj.user X 2013,2018 ./lib/isccfg/win32/version.c C 1998,1999,2000,2001,2004,2007,2016,2018 -./lib/ns/Atffile X 2017,2018 ./lib/ns/Kyuafile X 2017,2018 ./lib/ns/Makefile.in MAKE 2017,2018 ./lib/ns/api X 2017,2018 @@ -4119,7 +4108,6 @@ ./lib/ns/server.c C 2017,2018 ./lib/ns/sortlist.c C 2017,2018 ./lib/ns/stats.c C 2017,2018 -./lib/ns/tests/Atffile X 2017,2018 ./lib/ns/tests/Kyuafile X 2017,2018 ./lib/ns/tests/Makefile.in MAKE 2017,2018 ./lib/ns/tests/listenlist_test.c C 2017,2018 @@ -4182,323 +4170,7 @@ ./make/mkdep.in X 1999,2000,2001,2006,2011,2014,2018 ./make/rules.in MAKE 1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018 ./mkinstalldirs X 1996,2018 -./unit/Makefile.in MAKE 2011,2012,2017,2018 ./unit/README X 2011,2013,2018 -./unit/atf-src/.travis.yml X 2018 -./unit/atf-src/AUTHORS X 2011,2013,2018 -./unit/atf-src/Atffile X 2011,2013,2018 -./unit/atf-src/COPYING X 2011,2013,2018 -./unit/atf-src/INSTALL X 2011,2013,2018 -./unit/atf-src/Kyuafile X 2013,2018 -./unit/atf-src/Makefile.am X 2011,2013,2018 -./unit/atf-src/Makefile.in X 2011,2013,2018 -./unit/atf-src/NEWS X 2011,2013,2018 -./unit/atf-src/README X 2011,2018 -./unit/atf-src/README.md X 2018 -./unit/atf-src/aclocal.m4 X 2011,2013,2018 -./unit/atf-src/admin/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/admin/ar-lib X 2018 -./unit/atf-src/admin/check-style-c.awk X 2011,2013,2018 -./unit/atf-src/admin/check-style-common.awk X 2011,2013,2018 -./unit/atf-src/admin/check-style-cpp.awk X 2011,2013,2018 -./unit/atf-src/admin/check-style-man.awk X 2011,2013,2018 -./unit/atf-src/admin/check-style-shell.awk X 2011,2013,2018 -./unit/atf-src/admin/check-style.sh X 2011,2013,2018 -./unit/atf-src/admin/compile X 2011,2013,2018 -./unit/atf-src/admin/config.guess X 2011,2018 -./unit/atf-src/admin/config.sub X 2011,2018 -./unit/atf-src/admin/depcomp X 2011,2013,2018 -./unit/atf-src/admin/install-sh X 2011,2013,2018 -./unit/atf-src/admin/ltmain.sh X 2011,2013,2018 -./unit/atf-src/admin/missing X 2011,2013,2018 -./unit/atf-src/admin/travis-build.sh X 2018 -./unit/atf-src/admin/travis-install-deps.sh X 2018 -./unit/atf-src/atf-c++.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/Atffile X 2011,2018 -./unit/atf-src/atf-c++/Kyuafile X 2013,2018 -./unit/atf-src/atf-c++/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/atf-c++/atf-c++.3 X 2018 -./unit/atf-src/atf-c++/atf-c++.m4 X 2013,2018 -./unit/atf-src/atf-c++/atf-c++.pc.in X 2011,2018 -./unit/atf-src/atf-c++/atf_c++_test.cpp X 2011,2018 -./unit/atf-src/atf-c++/build.cpp X 2011,2018 -./unit/atf-src/atf-c++/build.hpp X 2011,2018 -./unit/atf-src/atf-c++/build_test.cpp X 2011,2018 -./unit/atf-src/atf-c++/check.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/check.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/check_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/Atffile X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/Kyuafile X 2013,2018 -./unit/atf-src/atf-c++/detail/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/application.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/application.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/application_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/auto_array.hpp X 2013,2018 -./unit/atf-src/atf-c++/detail/auto_array_test.cpp X 2013,2018 -./unit/atf-src/atf-c++/detail/env.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/env.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/env_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/exceptions.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/exceptions.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/exceptions_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/fs.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/fs.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/fs_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/process.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/process.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/process_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/sanity.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/test_helpers.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/test_helpers.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/text.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/text.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/text_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/detail/version_helper.cpp X 2018 -./unit/atf-src/atf-c++/macros.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/macros_hpp_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/macros_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/pkg_config_test.sh X 2011,2013,2018 -./unit/atf-src/atf-c++/tests.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/tests.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/tests_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c++/unused_test.cpp X 2013,2018 -./unit/atf-src/atf-c++/utils.cpp X 2013,2018 -./unit/atf-src/atf-c++/utils.hpp X 2011,2013,2018 -./unit/atf-src/atf-c++/utils_test.cpp X 2011,2013,2018 -./unit/atf-src/atf-c.h X 2011,2013,2018 -./unit/atf-src/atf-c/Atffile X 2011,2013,2018 -./unit/atf-src/atf-c/Kyuafile X 2013,2018 -./unit/atf-src/atf-c/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/atf-c/atf-c.3 X 2018 -./unit/atf-src/atf-c/atf-c.m4 X 2013,2018 -./unit/atf-src/atf-c/atf-c.pc.in X 2011,2018 -./unit/atf-src/atf-c/atf-common.m4 X 2013,2018 -./unit/atf-src/atf-c/atf_c_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/build.c X 2011,2018 -./unit/atf-src/atf-c/build.h X 2011,2018 -./unit/atf-src/atf-c/build_test.c X 2011,2018 -./unit/atf-src/atf-c/check.c X 2011,2013,2018 -./unit/atf-src/atf-c/check.h X 2011,2013,2018 -./unit/atf-src/atf-c/check_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/defs.h.in X 2011,2013,2018 -./unit/atf-src/atf-c/detail/Atffile X 2011,2013,2018 -./unit/atf-src/atf-c/detail/Kyuafile X 2013,2018 -./unit/atf-src/atf-c/detail/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/atf-c/detail/dynstr.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/dynstr.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/dynstr_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/env.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/env.h X 2011,2018 -./unit/atf-src/atf-c/detail/env_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/fs.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/fs.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/fs_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/list.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/list.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/list_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/map.c X 2011,2013,2017,2018 -./unit/atf-src/atf-c/detail/map.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/map_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/process.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/process.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/process_helpers.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/process_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/sanity.c X 2011,2018 -./unit/atf-src/atf-c/detail/sanity.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/sanity_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/test_helpers.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/test_helpers.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/text.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/text.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/text_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/tp_main.c X 2011,2013,2017,2018 -./unit/atf-src/atf-c/detail/user.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/user.h X 2011,2013,2018 -./unit/atf-src/atf-c/detail/user_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/detail/version_helper.c X 2018 -./unit/atf-src/atf-c/error.c X 2011,2013,2018 -./unit/atf-src/atf-c/error.h X 2011,2013,2018 -./unit/atf-src/atf-c/error_fwd.h X 2011,2018 -./unit/atf-src/atf-c/error_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/h_build.h X 2011,2018 -./unit/atf-src/atf-c/macros.h X 2011,2013,2018 -./unit/atf-src/atf-c/macros_h_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/macros_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/pkg_config_test.sh X 2011,2013,2018 -./unit/atf-src/atf-c/tc.c X 2011,2013,2017,2018 -./unit/atf-src/atf-c/tc.h X 2011,2013,2018 -./unit/atf-src/atf-c/tc_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/tp.c X 2011,2013,2018 -./unit/atf-src/atf-c/tp.h X 2011,2013,2018 -./unit/atf-src/atf-c/tp_test.c X 2011,2013,2018 -./unit/atf-src/atf-c/unused_test.c X 2013,2018 -./unit/atf-src/atf-c/utils.c X 2011,2013,2018 -./unit/atf-src/atf-c/utils.h X 2011,2013,2018 -./unit/atf-src/atf-c/utils_test.c X 2011,2013,2018 -./unit/atf-src/atf-sh/Atffile X 2011,2018 -./unit/atf-src/atf-sh/Kyuafile X 2013,2018 -./unit/atf-src/atf-sh/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/atf-sh/atf-check.1 X 2011,2013,2018 -./unit/atf-src/atf-sh/atf-check.cpp X 2011,2013,2018 -./unit/atf-src/atf-sh/atf-check_test.sh X 2011,2013,2018 -./unit/atf-src/atf-sh/atf-sh.1 X 2011,2018 -./unit/atf-src/atf-sh/atf-sh.3 X 2018 -./unit/atf-src/atf-sh/atf-sh.cpp X 2011,2013,2018 -./unit/atf-src/atf-sh/atf-sh.m4 X 2013,2018 -./unit/atf-src/atf-sh/atf-sh.pc.in X 2013,2018 -./unit/atf-src/atf-sh/atf_check_test.sh X 2011,2013,2018 -./unit/atf-src/atf-sh/config_test.sh X 2011,2013,2018 -./unit/atf-src/atf-sh/integration_test.sh X 2011,2018 -./unit/atf-src/atf-sh/libatf-sh.subr X 2011,2013,2018 -./unit/atf-src/atf-sh/misc_helpers.sh X 2011,2013,2018 -./unit/atf-src/atf-sh/normalize_test.sh X 2011,2013,2018 -./unit/atf-src/atf-sh/tc_test.sh X 2011,2013,2018 -./unit/atf-src/atf-sh/tp_test.sh X 2011,2013,2018 -./unit/atf-src/bconfig.h.in X 2011,2018 -./unit/atf-src/bootstrap/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/bootstrap/h_app_empty.cpp X 2011,2013,2018 -./unit/atf-src/bootstrap/h_app_opts_args.cpp X 2011,2013,2018 -./unit/atf-src/bootstrap/h_tp_atf_check_sh.sh X 2011,2013,2018 -./unit/atf-src/bootstrap/h_tp_basic_c.c X 2011,2018 -./unit/atf-src/bootstrap/h_tp_basic_cpp.cpp X 2011,2013,2018 -./unit/atf-src/bootstrap/h_tp_basic_sh.sh X 2011,2013,2018 -./unit/atf-src/bootstrap/h_tp_fail.sh X 2011,2018 -./unit/atf-src/bootstrap/h_tp_pass.sh X 2011,2018 -./unit/atf-src/bootstrap/package.m4 X 2011,2013,2018 -./unit/atf-src/bootstrap/t_application_help.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_application_opts_args.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_atf_config.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_atf_run.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_subr_atf_check.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_test_program_compare.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_test_program_filter.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_test_program_list.at X 2011,2013,2018 -./unit/atf-src/bootstrap/t_test_program_run.at X 2011,2013,2018 -./unit/atf-src/bootstrap/testsuite X 2011,2013,2018 -./unit/atf-src/bootstrap/testsuite.at X 2011,2013,2018 -./unit/atf-src/config.h.in X 2018 -./unit/atf-src/configure X 2011,2013,2018 -./unit/atf-src/configure.ac X 2011,2013,2018 -./unit/atf-src/doc/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/doc/atf-test-case.4 X 2011,2013,2018 -./unit/atf-src/doc/atf-test-program.1 X 2011,2013,2018 -./unit/atf-src/doc/atf.7.in X 2011,2013,2018 -./unit/atf-src/m4/compiler-flags.m4 X 2011,2013,2018 -./unit/atf-src/m4/cxx-std-funcs.m4 X 2011,2013,2018 -./unit/atf-src/m4/developer-mode.m4 X 2011,2013,2018 -./unit/atf-src/m4/libtool.m4 X 2011,2018 -./unit/atf-src/m4/ltoptions.m4 X 2011,2018 -./unit/atf-src/m4/ltsugar.m4 X 2011,2018 -./unit/atf-src/m4/ltversion.m4 X 2011,2018 -./unit/atf-src/m4/lt~obsolete.m4 X 2011,2018 -./unit/atf-src/m4/module-application.m4 X 2011,2013,2018 -./unit/atf-src/m4/module-defs.m4 X 2011,2013,2018 -./unit/atf-src/m4/module-env.m4 X 2011,2013,2018 -./unit/atf-src/m4/module-fs.m4 X 2011,2013,2018 -./unit/atf-src/m4/module-signals.m4 X 2011,2013,2018 -./unit/atf-src/m4/runtime-tool.m4 X 2011,2018 -./unit/atf-src/test-programs/Atffile X 2011,2013,2018 -./unit/atf-src/test-programs/Kyuafile X 2013,2018 -./unit/atf-src/test-programs/Makefile.am.inc X 2011,2013,2018 -./unit/atf-src/test-programs/c_helpers.c X 2011,2013,2018 -./unit/atf-src/test-programs/common.sh X 2011,2018 -./unit/atf-src/test-programs/config_test.sh X 2011,2013,2018 -./unit/atf-src/test-programs/cpp_helpers.cpp X 2011,2013,2018 -./unit/atf-src/test-programs/expect_test.sh X 2011,2013,2018 -./unit/atf-src/test-programs/meta_data_test.sh X 2011,2013,2018 -./unit/atf-src/test-programs/result_test.sh X 2011,2013,2018 -./unit/atf-src/test-programs/sh_helpers.sh X 2011,2013,2018 -./unit/atf-src/test-programs/srcdir_test.sh X 2011,2013,2018 -./unit/atf-src/tools/Atffile X 2018 -./unit/atf-src/tools/Kyuafile X 2018 -./unit/atf-src/tools/Makefile.am.inc X 2018 -./unit/atf-src/tools/application.cpp X 2018 -./unit/atf-src/tools/application.hpp X 2018 -./unit/atf-src/tools/application_test.cpp X 2018 -./unit/atf-src/tools/atf-config.1 X 2018 -./unit/atf-src/tools/atf-config.cpp X 2018 -./unit/atf-src/tools/atf-config_test.sh X 2018 -./unit/atf-src/tools/atf-formats.5 X 2018 -./unit/atf-src/tools/atf-report.1 X 2018 -./unit/atf-src/tools/atf-report.cpp X 2018 -./unit/atf-src/tools/atf-report_test.sh X 2018 -./unit/atf-src/tools/atf-run.1 X 2018 -./unit/atf-src/tools/atf-run.cpp X 2018 -./unit/atf-src/tools/atf-run_test.sh X 2018 -./unit/atf-src/tools/atf-version.1 X 2018 -./unit/atf-src/tools/atf-version.cpp X 2018 -./unit/atf-src/tools/atf.7.in X 2018 -./unit/atf-src/tools/atffile.cpp X 2018 -./unit/atf-src/tools/atffile.hpp X 2018 -./unit/atf-src/tools/atffile_test.cpp X 2018 -./unit/atf-src/tools/auto_array.hpp X 2018 -./unit/atf-src/tools/auto_array_test.cpp X 2018 -./unit/atf-src/tools/bad_metadata_helper.c X 2018 -./unit/atf-src/tools/config.cpp X 2018 -./unit/atf-src/tools/config.hpp X 2018 -./unit/atf-src/tools/config_file.cpp X 2018 -./unit/atf-src/tools/config_file.hpp X 2018 -./unit/atf-src/tools/config_file_test.cpp X 2018 -./unit/atf-src/tools/config_test.cpp X 2018 -./unit/atf-src/tools/defs.hpp.in X 2018 -./unit/atf-src/tools/env.cpp X 2018 -./unit/atf-src/tools/env.hpp X 2018 -./unit/atf-src/tools/env_test.cpp X 2018 -./unit/atf-src/tools/exceptions.cpp X 2018 -./unit/atf-src/tools/exceptions.hpp X 2018 -./unit/atf-src/tools/expand.cpp X 2018 -./unit/atf-src/tools/expand.hpp X 2018 -./unit/atf-src/tools/expand_test.cpp X 2018 -./unit/atf-src/tools/expect_helpers.c X 2018 -./unit/atf-src/tools/fail_helper.cpp X 2018 -./unit/atf-src/tools/fs.cpp X 2018 -./unit/atf-src/tools/fs.hpp X 2018 -./unit/atf-src/tools/fs_test.cpp X 2018 -./unit/atf-src/tools/generate-revision.sh X 2018 -./unit/atf-src/tools/io.cpp X 2018 -./unit/atf-src/tools/io.hpp X 2018 -./unit/atf-src/tools/io_test.cpp X 2018 -./unit/atf-src/tools/misc_helpers.cpp X 2018 -./unit/atf-src/tools/parser.cpp X 2018 -./unit/atf-src/tools/parser.hpp X 2018 -./unit/atf-src/tools/parser_test.cpp X 2018 -./unit/atf-src/tools/pass_helper.cpp X 2018 -./unit/atf-src/tools/process.cpp X 2018 -./unit/atf-src/tools/process.hpp X 2018 -./unit/atf-src/tools/process_helpers.c X 2018 -./unit/atf-src/tools/process_test.cpp X 2018 -./unit/atf-src/tools/reader.cpp X 2018 -./unit/atf-src/tools/reader.hpp X 2018 -./unit/atf-src/tools/reader_test.cpp X 2018 -./unit/atf-src/tools/requirements.cpp X 2018 -./unit/atf-src/tools/requirements.hpp X 2018 -./unit/atf-src/tools/requirements_test.cpp X 2018 -./unit/atf-src/tools/sample/atf-run.hooks X 2018 -./unit/atf-src/tools/sample/common.conf X 2018 -./unit/atf-src/tools/several_tcs_helper.c X 2018 -./unit/atf-src/tools/share/atf-run.hooks X 2018 -./unit/atf-src/tools/signals.cpp X 2018 -./unit/atf-src/tools/signals.hpp X 2018 -./unit/atf-src/tools/signals_test.cpp X 2018 -./unit/atf-src/tools/test-program.cpp X 2018 -./unit/atf-src/tools/test-program.hpp X 2018 -./unit/atf-src/tools/test_helpers.hpp X 2018 -./unit/atf-src/tools/test_program_test.cpp X 2018 -./unit/atf-src/tools/tests-results.css X 2018 -./unit/atf-src/tools/tests-results.dtd X 2018 -./unit/atf-src/tools/tests-results.xsl X 2018 -./unit/atf-src/tools/text.cpp X 2018 -./unit/atf-src/tools/text.hpp X 2018 -./unit/atf-src/tools/text_test.cpp X 2018 -./unit/atf-src/tools/timers.cpp X 2018 -./unit/atf-src/tools/timers.hpp X 2018 -./unit/atf-src/tools/ui.cpp X 2018 -./unit/atf-src/tools/ui.hpp X 2018 -./unit/atf-src/tools/ui_test.cpp X 2018 -./unit/atf-src/tools/user.cpp X 2018 -./unit/atf-src/tools/user.hpp X 2018 -./unit/atf-src/tools/user_test.cpp X 2018 -./unit/atf-src/tools/zero_tcs_helper.c X 2018 ./unit/unittest.sh.in X 2011,2012,2015,2018 ./util/COPYRIGHT X 1996,1997,1998,1999,2000,2001,2004,2007,2016,2018 ./util/COPYRIGHT.BRIEF X 1996,1997,1998,1999,2000,2001,2004,2016,2018