summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Atffile4
-rw-r--r--Kyuafile10
-rw-r--r--Makefile.am10
-rw-r--r--Makefile.in3112
-rw-r--r--NEWS32
-rw-r--r--aclocal.m461
-rwxr-xr-xadmin/ar-lib270
-rwxr-xr-xadmin/check-style.sh3
-rw-r--r--atf-c++/Makefile.am.inc4
-rw-r--r--atf-c++/check.hpp8
-rw-r--r--atf-c++/check_test.cpp4
-rw-r--r--atf-c++/config.cpp4
-rw-r--r--atf-c++/config_test.cpp4
-rw-r--r--atf-c++/detail/Atffile3
-rw-r--r--atf-c++/detail/Kyuafile4
-rw-r--r--atf-c++/detail/Makefile.am.inc21
-rw-r--r--atf-c++/detail/application.cpp115
-rw-r--r--atf-c++/detail/application.hpp8
-rw-r--r--atf-c++/detail/application_test.cpp2
-rw-r--r--atf-c++/detail/exceptions.hpp41
-rw-r--r--atf-c++/detail/process_test.cpp4
-rw-r--r--atf-c++/detail/test_helpers.cpp82
-rw-r--r--atf-c++/detail/test_helpers.hpp63
-rw-r--r--atf-c++/detail/version_helper.cpp41
-rw-r--r--atf-c++/macros_test.cpp29
-rw-r--r--atf-c++/pkg_config_test.sh8
-rw-r--r--atf-c++/tests.cpp19
-rw-r--r--atf-c++/tests.hpp8
-rw-r--r--atf-c++/tests_test.cpp2
-rw-r--r--atf-c/Makefile.am.inc12
-rw-r--r--atf-c/config.c4
-rw-r--r--atf-c/config_test.c4
-rw-r--r--atf-c/detail/Makefile.am.inc3
-rw-r--r--atf-c/detail/test_helpers.c20
-rw-r--r--atf-c/detail/test_helpers.h17
-rw-r--r--atf-c/detail/version_helper.c43
-rw-r--r--atf-c/macros_test.c29
-rw-r--r--atf-c/pkg_config_test.sh8
-rw-r--r--atf-config/Atffile5
-rw-r--r--atf-config/Kyuafile5
-rw-r--r--atf-config/Makefile.am.inc48
-rw-r--r--atf-report/Atffile5
-rw-r--r--atf-report/Kyuafile6
-rw-r--r--atf-report/Makefile.am.inc80
-rw-r--r--atf-run/Atffile5
-rw-r--r--atf-run/Kyuafile13
-rw-r--r--atf-run/Makefile.am.inc150
-rw-r--r--atf-run/fs.cpp265
-rw-r--r--atf-run/fs_test.cpp260
-rw-r--r--atf-sh/atf-check.cpp2
-rw-r--r--atf-sh/atf-sh.cpp2
-rw-r--r--atf-sh/integration_test.sh2
-rw-r--r--atf-version/Makefile.am.inc54
-rw-r--r--bconfig.h.in15
-rw-r--r--bootstrap/Makefile.am.inc4
-rw-r--r--bootstrap/h_app_empty.cpp4
-rw-r--r--bootstrap/h_app_opts_args.cpp9
-rw-r--r--bootstrap/package.m44
-rwxr-xr-xbootstrap/testsuite2487
-rw-r--r--bootstrap/testsuite.at2
-rwxr-xr-xconfigure542
-rw-r--r--configure.ac8
-rw-r--r--doc/Makefile.am.inc17
-rw-r--r--doc/atf-test-case.45
-rw-r--r--m4/cxx-std-funcs.m429
-rw-r--r--m4/module-env.m44
-rw-r--r--m4/module-fs.m42
-rw-r--r--m4/module-sanity.m432
-rw-r--r--tools/Atffile25
-rw-r--r--tools/Kyuafile24
-rw-r--r--tools/Makefile.am.inc332
-rw-r--r--tools/application.cpp317
-rw-r--r--tools/application.hpp113
-rw-r--r--tools/application_test.cpp94
-rw-r--r--tools/atf-config.1 (renamed from atf-config/atf-config.1)0
-rw-r--r--tools/atf-config.cpp (renamed from atf-config/atf-config.cpp)23
-rwxr-xr-x[-rw-r--r--]tools/atf-config_test.sh (renamed from atf-config/integration_test.sh)0
-rw-r--r--tools/atf-formats.5 (renamed from doc/atf-formats.5)0
-rw-r--r--tools/atf-report.1 (renamed from atf-report/atf-report.1)0
-rw-r--r--tools/atf-report.cpp (renamed from atf-report/atf-report.cpp)69
-rwxr-xr-x[-rw-r--r--]tools/atf-report_test.sh (renamed from atf-report/integration_test.sh)3
-rw-r--r--tools/atf-run.1 (renamed from atf-run/atf-run.1)0
-rw-r--r--tools/atf-run.cpp (renamed from atf-run/atf-run.cpp)232
-rwxr-xr-x[-rw-r--r--]tools/atf-run_test.sh (renamed from atf-run/integration_test.sh)0
-rw-r--r--tools/atf-version.1 (renamed from atf-version/atf-version.1)0
-rw-r--r--tools/atf-version.cpp (renamed from atf-version/atf-version.cpp)11
-rw-r--r--tools/atf.7.in (renamed from doc/atf.7.in)0
-rw-r--r--tools/atffile.cpp (renamed from atf-run/atffile.cpp)101
-rw-r--r--tools/atffile.hpp (renamed from atf-run/atffile.hpp)31
-rw-r--r--tools/atffile_test.cpp (renamed from atf-run/atffile_test.cpp)34
-rw-r--r--tools/auto_array.hpp179
-rw-r--r--tools/auto_array_test.cpp303
-rw-r--r--tools/bad_metadata_helper.c (renamed from atf-run/bad_metadata_helper.c)0
-rw-r--r--tools/config.cpp135
-rw-r--r--tools/config.hpp75
-rw-r--r--tools/config_file.cpp (renamed from atf-run/config.cpp)89
-rw-r--r--tools/config_file.hpp (renamed from atf-run/config.hpp)23
-rw-r--r--tools/config_file_test.cpp (renamed from atf-run/config_test.cpp)20
-rw-r--r--tools/config_test.cpp221
-rw-r--r--tools/defs.hpp.in (renamed from atf-run/pass_helper.cpp)21
-rw-r--r--tools/env.cpp102
-rw-r--r--tools/env.hpp84
-rw-r--r--tools/env_test.cpp (renamed from atf-report/misc_helpers.cpp)67
-rw-r--r--tools/exceptions.cpp (renamed from atf-c++/noncopyable.hpp)54
-rw-r--r--tools/exceptions.hpp (renamed from atf-run/fs.hpp)72
-rw-r--r--tools/expand.cpp (renamed from atf-c++/detail/expand.cpp)6
-rw-r--r--tools/expand.hpp (renamed from atf-c++/detail/expand.hpp)10
-rw-r--r--tools/expand_test.cpp (renamed from atf-c++/detail/expand_test.cpp)14
-rw-r--r--tools/expect_helpers.c (renamed from atf-run/expect_helpers.c)0
-rw-r--r--tools/fail_helper.cpp (renamed from atf-report/fail_helper.cpp)2
-rw-r--r--tools/fs.cpp744
-rw-r--r--tools/fs.hpp377
-rw-r--r--tools/fs_test.cpp743
-rwxr-xr-xtools/generate-revision.sh (renamed from atf-version/generate-revision.sh)0
-rw-r--r--tools/io.cpp (renamed from atf-run/io.cpp)59
-rw-r--r--tools/io.hpp (renamed from atf-run/io.hpp)38
-rw-r--r--tools/io_test.cpp (renamed from atf-run/io_test.cpp)30
-rw-r--r--tools/misc_helpers.cpp (renamed from atf-run/misc_helpers.cpp)67
-rw-r--r--tools/parser.cpp (renamed from atf-c++/detail/parser.cpp)20
-rw-r--r--tools/parser.hpp (renamed from atf-c++/detail/parser.hpp)10
-rw-r--r--tools/parser_test.cpp (renamed from atf-c++/detail/parser_test.cpp)72
-rw-r--r--tools/pass_helper.cpp (renamed from atf-report/pass_helper.cpp)2
-rw-r--r--tools/process.cpp492
-rw-r--r--tools/process.hpp324
-rw-r--r--tools/process_helpers.c117
-rw-r--r--tools/process_test.cpp360
-rw-r--r--tools/reader.cpp (renamed from atf-report/reader.cpp)118
-rw-r--r--tools/reader.hpp (renamed from atf-report/reader.hpp)12
-rw-r--r--tools/reader_test.cpp (renamed from atf-report/reader_test.cpp)16
-rw-r--r--tools/requirements.cpp (renamed from atf-run/requirements.cpp)97
-rw-r--r--tools/requirements.hpp (renamed from atf-run/requirements.hpp)21
-rw-r--r--tools/requirements_test.cpp (renamed from atf-run/requirements_test.cpp)92
-rw-r--r--tools/sample/atf-run.hooks (renamed from atf-run/sample/atf-run.hooks)0
-rw-r--r--tools/sample/common.conf (renamed from atf-run/sample/common.conf)0
-rw-r--r--tools/several_tcs_helper.c (renamed from atf-run/several_tcs_helper.c)0
-rw-r--r--tools/share/atf-run.hooks (renamed from atf-run/share/atf-run.hooks)0
-rw-r--r--tools/signals.cpp (renamed from atf-run/signals.cpp)13
-rw-r--r--tools/signals.hpp (renamed from atf-run/signals.hpp)14
-rw-r--r--tools/signals_test.cpp (renamed from atf-run/signals_test.cpp)32
-rw-r--r--tools/test-program.cpp (renamed from atf-run/test-program.cpp)226
-rw-r--r--tools/test-program.hpp (renamed from atf-run/test-program.hpp)37
-rw-r--r--tools/test_helpers.hpp116
-rw-r--r--tools/test_program_test.cpp (renamed from atf-run/test_program_test.cpp)55
-rw-r--r--tools/tests-results.css (renamed from atf-report/tests-results.css)0
-rw-r--r--tools/tests-results.dtd (renamed from atf-report/tests-results.dtd)0
-rw-r--r--tools/tests-results.xsl (renamed from atf-report/tests-results.xsl)0
-rw-r--r--tools/text.cpp158
-rw-r--r--tools/text.hpp153
-rw-r--r--tools/text_test.cpp390
-rw-r--r--tools/timers.cpp (renamed from atf-run/timer.cpp)40
-rw-r--r--tools/timers.hpp (renamed from atf-run/timer.hpp)22
-rw-r--r--tools/ui.cpp (renamed from atf-c++/detail/ui.cpp)23
-rw-r--r--tools/ui.hpp (renamed from atf-c++/detail/ui.hpp)10
-rw-r--r--tools/ui_test.cpp (renamed from atf-c++/detail/ui_test.cpp)6
-rw-r--r--tools/user.cpp (renamed from atf-run/user.cpp)33
-rw-r--r--tools/user.hpp (renamed from atf-run/user.hpp)14
-rw-r--r--tools/user_test.cpp (renamed from atf-run/user_test.cpp)10
-rw-r--r--tools/zero_tcs_helper.c (renamed from atf-run/zero_tcs_helper.c)0
158 files changed, 12076 insertions, 4155 deletions
diff --git a/Atffile b/Atffile
index 9306a6c..4d7aed7 100644
--- a/Atffile
+++ b/Atffile
@@ -7,6 +7,4 @@ tp: atf-c++
tp: atf-sh
tp: test-programs
-tp-glob: atf-config*
-tp-glob: atf-report*
-tp-glob: atf-run*
+tp-glob: tools*
diff --git a/Kyuafile b/Kyuafile
index 54084cd..7712597 100644
--- a/Kyuafile
+++ b/Kyuafile
@@ -7,12 +7,6 @@ include("atf-c++/Kyuafile")
include("atf-sh/Kyuafile")
include("test-programs/Kyuafile")
-if fs.exists("atf-config/Kyuafile") then
- include("atf-config/Kyuafile")
-end
-if fs.exists("atf-report/Kyuafile") then
- include("atf-report/Kyuafile")
-end
-if fs.exists("atf-run/Kyuafile") then
- include("atf-run/Kyuafile")
+if fs.exists("tools/Kyuafile") then
+ include("tools/Kyuafile")
end
diff --git a/Makefile.am b/Makefile.am
index d5cee96..f90fc99 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,6 +30,7 @@
atf_aclocal_DATA =
BUILT_SOURCES =
CLEANFILES =
+DIST_HOOKS =
EXTRA_DIST =
bin_PROGRAMS =
dist_man_MANS =
@@ -54,10 +55,7 @@ include doc/Makefile.am.inc
include test-programs/Makefile.am.inc
if ENABLE_TOOLS
-include atf-report/Makefile.am.inc
-include atf-config/Makefile.am.inc
-include atf-run/Makefile.am.inc
-include atf-version/Makefile.am.inc
+include tools/Makefile.am.inc
endif
#
@@ -126,7 +124,7 @@ BUILD_SH_TP = \
# Custom targets.
#
-dist-hook: forbid-dist
+DIST_HOOKS += forbid-dist
if ENABLE_TOOLS
forbid-dist:
@true
@@ -151,4 +149,6 @@ release-test:
.PHONY: $(PHONY_TARGETS)
+dist-hook: $(DIST_HOOKS)
+
# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
diff --git a/Makefile.in b/Makefile.in
index 9c86107..a98fc35 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -333,92 +333,6 @@
# 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.
-#
-
-#
-# 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.
-#
-
-#
-# 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.
-#
@@ -500,17 +414,15 @@ DIST_COMMON = $(srcdir)/admin/Makefile.am.inc \
$(srcdir)/bootstrap/Makefile.am.inc \
$(srcdir)/doc/Makefile.am.inc \
$(srcdir)/test-programs/Makefile.am.inc \
- $(srcdir)/atf-report/Makefile.am.inc \
- $(srcdir)/atf-config/Makefile.am.inc \
- $(srcdir)/atf-run/Makefile.am.inc \
- $(srcdir)/atf-version/Makefile.am.inc $(srcdir)/Makefile.in \
+ $(srcdir)/tools/Makefile.am.inc $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(srcdir)/bconfig.h.in \
- $(top_srcdir)/atf-c/defs.h.in $(top_srcdir)/admin/depcomp \
- $(dist_man_MANS) $(atf_c_HEADERS) $(atf_c___HEADERS) \
- $(include_HEADERS) AUTHORS COPYING INSTALL NEWS README \
- admin/compile admin/config.guess admin/config.sub \
- admin/depcomp admin/install-sh admin/missing admin/ltmain.sh \
+ $(top_srcdir)/atf-c/defs.h.in $(top_srcdir)/tools/defs.hpp.in \
+ $(top_srcdir)/admin/depcomp $(dist_man_MANS) $(atf_c_HEADERS) \
+ $(atf_c___HEADERS) $(include_HEADERS) AUTHORS COPYING INSTALL \
+ NEWS README admin/ar-lib admin/compile admin/config.guess \
+ admin/config.sub admin/depcomp admin/install-sh admin/missing \
+ admin/ltmain.sh $(top_srcdir)/admin/ar-lib \
$(top_srcdir)/admin/compile $(top_srcdir)/admin/config.guess \
$(top_srcdir)/admin/config.sub $(top_srcdir)/admin/install-sh \
$(top_srcdir)/admin/ltmain.sh $(top_srcdir)/admin/missing
@@ -526,7 +438,8 @@ tests_atf_c_detail_PROGRAMS = atf-c/detail/dynstr_test$(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/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++/config_test$(EXEEXT) atf-c++/macros_test$(EXEEXT) \
@@ -536,69 +449,72 @@ tests_atf_c___detail_PROGRAMS = \
atf-c++/detail/auto_array_test$(EXEEXT) \
atf-c++/detail/env_test$(EXEEXT) \
atf-c++/detail/exceptions_test$(EXEEXT) \
- atf-c++/detail/expand_test$(EXEEXT) \
atf-c++/detail/fs_test$(EXEEXT) \
- atf-c++/detail/parser_test$(EXEEXT) \
atf-c++/detail/process_test$(EXEEXT) \
atf-c++/detail/sanity_test$(EXEEXT) \
atf-c++/detail/text_test$(EXEEXT) \
- atf-c++/detail/ui_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)
-@ENABLE_TOOLS_TRUE@am__append_1 = doc/atf.7
-@ENABLE_TOOLS_TRUE@am__append_2 = doc/atf.7
-@ENABLE_TOOLS_TRUE@am__append_3 = doc/atf.7.in
-@ENABLE_TOOLS_TRUE@am__append_4 = doc/atf-formats.5 \
-@ENABLE_TOOLS_TRUE@ atf-report/atf-report.1 \
-@ENABLE_TOOLS_TRUE@ atf-config/atf-config.1 atf-run/atf-run.1 \
-@ENABLE_TOOLS_TRUE@ atf-version/atf-version.1
tests_test_programs_PROGRAMS = test-programs/c_helpers$(EXEEXT) \
test-programs/cpp_helpers$(EXEEXT)
-@ENABLE_TOOLS_TRUE@am__append_5 = atf-report/atf-report \
-@ENABLE_TOOLS_TRUE@ atf-config/atf-config atf-run/atf-run \
-@ENABLE_TOOLS_TRUE@ atf-version/atf-version
-@ENABLE_TOOLS_TRUE@am__append_6 = $(css_DATA) $(dtd_DATA) $(xsl_DATA) \
-@ENABLE_TOOLS_TRUE@ $(tests_atf_report_DATA) \
-@ENABLE_TOOLS_TRUE@ atf-report/integration_test.sh \
-@ENABLE_TOOLS_TRUE@ $(tests_atf_config_DATA) \
-@ENABLE_TOOLS_TRUE@ atf-config/integration_test.sh \
-@ENABLE_TOOLS_TRUE@ $(tests_atf_run_DATA) \
-@ENABLE_TOOLS_TRUE@ atf-run/integration_test.sh $(hooks_DATA) \
-@ENABLE_TOOLS_TRUE@ $(eg_DATA) atf-version/generate-revision.sh
-@ENABLE_TOOLS_TRUE@tests_atf_report_PROGRAMS = \
-@ENABLE_TOOLS_TRUE@ atf-report/fail_helper$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-report/misc_helpers$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-report/pass_helper$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-report/reader_test$(EXEEXT)
-@ENABLE_TOOLS_TRUE@am__append_7 = atf-report/integration_test \
-@ENABLE_TOOLS_TRUE@ atf-config/integration_test \
-@ENABLE_TOOLS_TRUE@ atf-run/integration_test \
-@ENABLE_TOOLS_TRUE@ atf-version/revision.h \
-@ENABLE_TOOLS_TRUE@ atf-version/revision.h.stamp \
-@ENABLE_TOOLS_TRUE@ installcheck.fifo installcheck.log
-@ENABLE_TOOLS_TRUE@tests_atf_run_PROGRAMS = \
-@ENABLE_TOOLS_TRUE@ atf-run/atffile_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/bad_metadata_helper$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/config_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/expect_helpers$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/fs_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/io_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/misc_helpers$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/pass_helper$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/several_tcs_helper$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/signals_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/test_program_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/user_test$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/zero_tcs_helper$(EXEEXT)
-@ENABLE_TOOLS_TRUE@am__append_8 = atf-version/revision.h
-@ENABLE_TOOLS_TRUE@am__append_9 = atf-version/revision.h.stamp \
+
+# 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
+@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@ tools/atf.7.in $(css_DATA) $(dtd_DATA) \
+@ENABLE_TOOLS_TRUE@ $(eg_DATA) $(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 tools/atf.7 \
+@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@am__append_10 = installcheck-atf
-@ENABLE_TOOLS_FALSE@@HAVE_KYUA_TRUE@am__append_11 = installcheck-kyua
-@ENABLE_TOOLS_TRUE@am__append_12 = Atffile
+@ENABLE_TOOLS_TRUE@am__append_8 = tools/atf.7
+@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_9 = installcheck-atf
+@ENABLE_TOOLS_FALSE@@HAVE_KYUA_TRUE@am__append_10 = installcheck-kyua
+@ENABLE_TOOLS_TRUE@am__append_11 = Atffile
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler-flags.m4 \
@@ -609,7 +525,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler-flags.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-sanity.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) \
@@ -618,8 +533,52 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = bconfig.h
-CONFIG_CLEAN_FILES = atf-c/defs.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/||"`;; \
@@ -652,14 +611,11 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(tests_atf_c__dir)" \
"$(DESTDIR)$(tests_atf_c___detaildir)" \
"$(DESTDIR)$(tests_atf_c_detaildir)" \
- "$(DESTDIR)$(tests_atf_reportdir)" \
- "$(DESTDIR)$(tests_atf_rundir)" \
"$(DESTDIR)$(tests_test_programsdir)" \
- "$(DESTDIR)$(tests_atf_cdir)" "$(DESTDIR)$(tests_atf_c__dir)" \
- "$(DESTDIR)$(tests_atf_configdir)" \
- "$(DESTDIR)$(tests_atf_reportdir)" \
- "$(DESTDIR)$(tests_atf_rundir)" "$(DESTDIR)$(tests_atf_shdir)" \
- "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(man1dir)" \
+ "$(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)" \
@@ -672,15 +628,13 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(tests_atf_c__dir)" \
"$(DESTDIR)$(tests_atf_c___detaildir)" \
"$(DESTDIR)$(tests_atf_c_detaildir)" \
- "$(DESTDIR)$(tests_atf_configdir)" \
- "$(DESTDIR)$(tests_atf_reportdir)" \
- "$(DESTDIR)$(tests_atf_rundir)" "$(DESTDIR)$(tests_atf_shdir)" \
- "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(xsldir)" \
+ "$(DESTDIR)$(tests_atf_shdir)" \
+ "$(DESTDIR)$(tests_test_programsdir)" \
+ "$(DESTDIR)$(tests_toolsdir)" "$(DESTDIR)$(xsldir)" \
"$(DESTDIR)$(atf_cdir)" "$(DESTDIR)$(atf_c__dir)" \
"$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
atf_c___detail_libtest_helpers_la_LIBADD =
-am__dirstamp = $(am__leading_dot)dirstamp
am_atf_c___detail_libtest_helpers_la_OBJECTS = \
atf-c++/detail/test_helpers.lo
atf_c___detail_libtest_helpers_la_OBJECTS = \
@@ -698,10 +652,8 @@ libatf_c___la_DEPENDENCIES = libatf-c.la
am_libatf_c___la_OBJECTS = atf-c++/build.lo atf-c++/check.lo \
atf-c++/config.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/expand.lo \
- atf-c++/detail/fs.lo atf-c++/detail/parser.lo \
- atf-c++/detail/process.lo atf-c++/detail/text.lo \
- atf-c++/detail/ui.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) \
@@ -727,14 +679,14 @@ libatf_c_la_OBJECTS = $(am_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 = atf-report/atf-report$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-config/atf-config$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf-run$(EXEEXT) \
-@ENABLE_TOOLS_TRUE@ atf-version/atf-version$(EXEEXT)
+@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_atf_report_PROGRAMS) \
- $(tests_atf_run_PROGRAMS) $(tests_test_programs_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 \
@@ -775,22 +727,10 @@ 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_expand_test_OBJECTS = \
- atf-c++/detail/expand_test.$(OBJEXT)
-atf_c___detail_expand_test_OBJECTS = \
- $(am_atf_c___detail_expand_test_OBJECTS)
-atf_c___detail_expand_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_parser_test_OBJECTS = \
- atf-c++/detail/parser_test.$(OBJEXT)
-atf_c___detail_parser_test_OBJECTS = \
- $(am_atf_c___detail_parser_test_OBJECTS)
-atf_c___detail_parser_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 = \
@@ -809,10 +749,11 @@ 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_ui_test_OBJECTS = atf-c++/detail/ui_test.$(OBJEXT)
-atf_c___detail_ui_test_OBJECTS = $(am_atf_c___detail_ui_test_OBJECTS)
-atf_c___detail_ui_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 \
@@ -888,6 +829,11 @@ 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 \
@@ -908,206 +854,21 @@ 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_config_atf_config_SOURCES_DIST = atf-config/atf-config.cpp
-@ENABLE_TOOLS_TRUE@am_atf_config_atf_config_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-config/atf-config.$(OBJEXT)
-atf_config_atf_config_OBJECTS = $(am_atf_config_atf_config_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_config_atf_config_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_report_atf_report_SOURCES_DIST = atf-report/atf-report.cpp \
- atf-report/reader.cpp atf-report/reader.hpp
-@ENABLE_TOOLS_TRUE@am_atf_report_atf_report_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-report/atf-report.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-report/reader.$(OBJEXT)
-atf_report_atf_report_OBJECTS = $(am_atf_report_atf_report_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_report_atf_report_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_report_fail_helper_SOURCES_DIST = atf-report/fail_helper.cpp
-@ENABLE_TOOLS_TRUE@am_atf_report_fail_helper_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-report/fail_helper.$(OBJEXT)
-atf_report_fail_helper_OBJECTS = $(am_atf_report_fail_helper_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_report_fail_helper_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_report_misc_helpers_SOURCES_DIST = \
- atf-report/misc_helpers.cpp
-@ENABLE_TOOLS_TRUE@am_atf_report_misc_helpers_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-report/misc_helpers.$(OBJEXT)
-atf_report_misc_helpers_OBJECTS = \
- $(am_atf_report_misc_helpers_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_report_misc_helpers_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_report_pass_helper_SOURCES_DIST = atf-report/pass_helper.cpp
-@ENABLE_TOOLS_TRUE@am_atf_report_pass_helper_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-report/pass_helper.$(OBJEXT)
-atf_report_pass_helper_OBJECTS = $(am_atf_report_pass_helper_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_report_pass_helper_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_report_reader_test_SOURCES_DIST = atf-report/reader_test.cpp \
- atf-report/reader.cpp
-@ENABLE_TOOLS_TRUE@am_atf_report_reader_test_OBJECTS = atf-report/atf_report_reader_test-reader_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-report/atf_report_reader_test-reader.$(OBJEXT)
-atf_report_reader_test_OBJECTS = $(am_atf_report_reader_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_report_reader_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ atf-c++/detail/libtest_helpers.la \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_atf_run_SOURCES_DIST = atf-run/atf-run.cpp \
- atf-run/atffile.cpp atf-run/atffile.hpp atf-run/config.cpp \
- atf-run/config.hpp atf-run/fs.cpp atf-run/fs.hpp \
- atf-run/io.cpp atf-run/io.hpp atf-run/requirements.cpp \
- atf-run/requirements.hpp atf-run/signals.cpp \
- atf-run/signals.hpp atf-run/test-program.cpp \
- atf-run/test-program.hpp atf-run/timer.cpp atf-run/timer.hpp \
- atf-run/user.cpp atf-run/user.hpp
-@ENABLE_TOOLS_TRUE@am_atf_run_atf_run_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-atf-run.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-atffile.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-config.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-fs.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-io.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-requirements.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-signals.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-test-program.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-timer.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atf_run-user.$(OBJEXT)
-atf_run_atf_run_OBJECTS = $(am_atf_run_atf_run_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_atf_run_DEPENDENCIES = $(ATF_CXX_LIBS)
-am__atf_run_atffile_test_SOURCES_DIST = atf-run/atffile_test.cpp \
- atf-run/atffile.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_atffile_test_OBJECTS = atf-run/atf_run_atffile_test-atffile_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_atffile_test-atffile.$(OBJEXT)
-atf_run_atffile_test_OBJECTS = $(am_atf_run_atffile_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_atffile_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ atf-c++/detail/libtest_helpers.la \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_bad_metadata_helper_SOURCES_DIST = \
- atf-run/bad_metadata_helper.c
-@ENABLE_TOOLS_TRUE@am_atf_run_bad_metadata_helper_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/bad_metadata_helper.$(OBJEXT)
-atf_run_bad_metadata_helper_OBJECTS = \
- $(am_atf_run_bad_metadata_helper_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_bad_metadata_helper_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ libatf-c.la
-am__atf_run_config_test_SOURCES_DIST = atf-run/config_test.cpp \
- atf-run/config.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_config_test_OBJECTS = atf-run/atf_run_config_test-config_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_config_test-config.$(OBJEXT)
-atf_run_config_test_OBJECTS = $(am_atf_run_config_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_config_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ atf-c++/detail/libtest_helpers.la \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_expect_helpers_SOURCES_DIST = atf-run/expect_helpers.c
-@ENABLE_TOOLS_TRUE@am_atf_run_expect_helpers_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/expect_helpers.$(OBJEXT)
-atf_run_expect_helpers_OBJECTS = $(am_atf_run_expect_helpers_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_expect_helpers_DEPENDENCIES = libatf-c.la
-am__atf_run_fs_test_SOURCES_DIST = atf-run/fs_test.cpp atf-run/fs.cpp \
- atf-run/user.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_fs_test_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/fs_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/fs.$(OBJEXT) atf-run/user.$(OBJEXT)
-atf_run_fs_test_OBJECTS = $(am_atf_run_fs_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_fs_test_DEPENDENCIES = $(ATF_CXX_LIBS)
-am__atf_run_io_test_SOURCES_DIST = atf-run/io_test.cpp atf-run/io.cpp \
- atf-run/signals.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_io_test_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/io_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/io.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/signals.$(OBJEXT)
-atf_run_io_test_OBJECTS = $(am_atf_run_io_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_io_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ atf-c++/detail/libtest_helpers.la \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_misc_helpers_SOURCES_DIST = atf-run/misc_helpers.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_misc_helpers_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/misc_helpers.$(OBJEXT)
-atf_run_misc_helpers_OBJECTS = $(am_atf_run_misc_helpers_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_misc_helpers_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_pass_helper_SOURCES_DIST = atf-run/pass_helper.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_pass_helper_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/pass_helper.$(OBJEXT)
-atf_run_pass_helper_OBJECTS = $(am_atf_run_pass_helper_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_pass_helper_DEPENDENCIES = $(ATF_CXX_LIBS)
-am__atf_run_requirements_test_SOURCES_DIST = \
- atf-run/requirements_test.cpp atf-run/requirements.cpp \
- atf-run/user.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_requirements_test_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/user.$(OBJEXT)
-atf_run_requirements_test_OBJECTS = \
- $(am_atf_run_requirements_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_requirements_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_several_tcs_helper_SOURCES_DIST = \
- atf-run/several_tcs_helper.c
-@ENABLE_TOOLS_TRUE@am_atf_run_several_tcs_helper_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/several_tcs_helper.$(OBJEXT)
-atf_run_several_tcs_helper_OBJECTS = \
- $(am_atf_run_several_tcs_helper_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_several_tcs_helper_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ libatf-c.la
-am__atf_run_signals_test_SOURCES_DIST = atf-run/signals_test.cpp \
- atf-run/signals.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_signals_test_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/signals_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/signals.$(OBJEXT)
-atf_run_signals_test_OBJECTS = $(am_atf_run_signals_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_signals_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_test_program_test_SOURCES_DIST = \
- atf-run/test_program_test.cpp atf-run/fs.cpp atf-run/io.cpp \
- atf-run/requirements.cpp atf-run/signals.cpp \
- atf-run/test-program.cpp atf-run/timer.cpp atf-run/user.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_test_program_test_OBJECTS = atf-run/atf_run_test_program_test-test_program_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-fs.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-io.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-requirements.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-signals.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-test-program.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-timer.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/atf_run_test_program_test-user.$(OBJEXT)
-atf_run_test_program_test_OBJECTS = \
- $(am_atf_run_test_program_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_test_program_test_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ atf-c++/detail/libtest_helpers.la \
-@ENABLE_TOOLS_TRUE@ $(ATF_CXX_LIBS)
-am__atf_run_user_test_SOURCES_DIST = atf-run/user_test.cpp \
- atf-run/user.cpp
-@ENABLE_TOOLS_TRUE@am_atf_run_user_test_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/user_test.$(OBJEXT) \
-@ENABLE_TOOLS_TRUE@ atf-run/user.$(OBJEXT)
-atf_run_user_test_OBJECTS = $(am_atf_run_user_test_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_user_test_DEPENDENCIES = $(ATF_CXX_LIBS)
-am__atf_run_zero_tcs_helper_SOURCES_DIST = atf-run/zero_tcs_helper.c
-@ENABLE_TOOLS_TRUE@am_atf_run_zero_tcs_helper_OBJECTS = \
-@ENABLE_TOOLS_TRUE@ atf-run/zero_tcs_helper.$(OBJEXT)
-atf_run_zero_tcs_helper_OBJECTS = \
- $(am_atf_run_zero_tcs_helper_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_run_zero_tcs_helper_DEPENDENCIES = libatf-c.la
am_atf_sh_atf_check_OBJECTS = atf-sh/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.$(OBJEXT)
atf_sh_atf_sh_OBJECTS = $(am_atf_sh_atf_sh_OBJECTS)
atf_sh_atf_sh_DEPENDENCIES = $(ATF_CXX_LIBS)
-am__atf_version_atf_version_SOURCES_DIST = \
- atf-version/atf-version.cpp
-@ENABLE_TOOLS_TRUE@am_atf_version_atf_version_OBJECTS = atf-version/atf_version_atf_version-atf-version.$(OBJEXT)
-nodist_atf_version_atf_version_OBJECTS =
-atf_version_atf_version_OBJECTS = \
- $(am_atf_version_atf_version_OBJECTS) \
- $(nodist_atf_version_atf_version_OBJECTS)
-@ENABLE_TOOLS_TRUE@atf_version_atf_version_DEPENDENCIES = \
-@ENABLE_TOOLS_TRUE@ $(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 = $(ATF_CXX_LIBS)
+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 = $(ATF_CXX_LIBS)
+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
@@ -1126,10 +887,179 @@ am_test_programs_cpp_helpers_OBJECTS = \
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_config_SCRIPTS) $(tests_atf_report_SCRIPTS) \
- $(tests_atf_run_SCRIPTS) $(tests_atf_sh_SCRIPTS) \
- $(tests_test_programs_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
@@ -1182,7 +1112,9 @@ 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 = $(atf_c___detail_libtest_helpers_la_SOURCES) \
+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) \
@@ -1192,13 +1124,11 @@ SOURCES = $(atf_c___detail_libtest_helpers_la_SOURCES) \
$(atf_c___detail_auto_array_test_SOURCES) \
$(atf_c___detail_env_test_SOURCES) \
$(atf_c___detail_exceptions_test_SOURCES) \
- $(atf_c___detail_expand_test_SOURCES) \
$(atf_c___detail_fs_test_SOURCES) \
- $(atf_c___detail_parser_test_SOURCES) \
$(atf_c___detail_process_test_SOURCES) \
$(atf_c___detail_sanity_test_SOURCES) \
$(atf_c___detail_text_test_SOURCES) \
- $(atf_c___detail_ui_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) \
@@ -1212,36 +1142,38 @@ SOURCES = $(atf_c___detail_libtest_helpers_la_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_error_test_SOURCES) \
- $(atf_c_macros_test_SOURCES) $(atf_c_tc_test_SOURCES) \
- $(atf_c_tp_test_SOURCES) $(atf_c_utils_test_SOURCES) \
- $(atf_config_atf_config_SOURCES) \
- $(atf_report_atf_report_SOURCES) \
- $(atf_report_fail_helper_SOURCES) \
- $(atf_report_misc_helpers_SOURCES) \
- $(atf_report_pass_helper_SOURCES) \
- $(atf_report_reader_test_SOURCES) $(atf_run_atf_run_SOURCES) \
- $(atf_run_atffile_test_SOURCES) \
- $(atf_run_bad_metadata_helper_SOURCES) \
- $(atf_run_config_test_SOURCES) \
- $(atf_run_expect_helpers_SOURCES) $(atf_run_fs_test_SOURCES) \
- $(atf_run_io_test_SOURCES) $(atf_run_misc_helpers_SOURCES) \
- $(atf_run_pass_helper_SOURCES) \
- $(atf_run_requirements_test_SOURCES) \
- $(atf_run_several_tcs_helper_SOURCES) \
- $(atf_run_signals_test_SOURCES) \
- $(atf_run_test_program_test_SOURCES) \
- $(atf_run_user_test_SOURCES) \
- $(atf_run_zero_tcs_helper_SOURCES) $(atf_sh_atf_check_SOURCES) \
- $(atf_sh_atf_sh_SOURCES) $(atf_version_atf_version_SOURCES) \
- $(nodist_atf_version_atf_version_SOURCES) \
- $(bootstrap_h_app_empty_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)
-DIST_SOURCES = $(atf_c___detail_libtest_helpers_la_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) \
@@ -1250,13 +1182,11 @@ DIST_SOURCES = $(atf_c___detail_libtest_helpers_la_SOURCES) \
$(atf_c___detail_auto_array_test_SOURCES) \
$(atf_c___detail_env_test_SOURCES) \
$(atf_c___detail_exceptions_test_SOURCES) \
- $(atf_c___detail_expand_test_SOURCES) \
$(atf_c___detail_fs_test_SOURCES) \
- $(atf_c___detail_parser_test_SOURCES) \
$(atf_c___detail_process_test_SOURCES) \
$(atf_c___detail_sanity_test_SOURCES) \
$(atf_c___detail_text_test_SOURCES) \
- $(atf_c___detail_ui_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) \
@@ -1270,38 +1200,47 @@ DIST_SOURCES = $(atf_c___detail_libtest_helpers_la_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_error_test_SOURCES) \
- $(atf_c_macros_test_SOURCES) $(atf_c_tc_test_SOURCES) \
- $(atf_c_tp_test_SOURCES) $(atf_c_utils_test_SOURCES) \
- $(am__atf_config_atf_config_SOURCES_DIST) \
- $(am__atf_report_atf_report_SOURCES_DIST) \
- $(am__atf_report_fail_helper_SOURCES_DIST) \
- $(am__atf_report_misc_helpers_SOURCES_DIST) \
- $(am__atf_report_pass_helper_SOURCES_DIST) \
- $(am__atf_report_reader_test_SOURCES_DIST) \
- $(am__atf_run_atf_run_SOURCES_DIST) \
- $(am__atf_run_atffile_test_SOURCES_DIST) \
- $(am__atf_run_bad_metadata_helper_SOURCES_DIST) \
- $(am__atf_run_config_test_SOURCES_DIST) \
- $(am__atf_run_expect_helpers_SOURCES_DIST) \
- $(am__atf_run_fs_test_SOURCES_DIST) \
- $(am__atf_run_io_test_SOURCES_DIST) \
- $(am__atf_run_misc_helpers_SOURCES_DIST) \
- $(am__atf_run_pass_helper_SOURCES_DIST) \
- $(am__atf_run_requirements_test_SOURCES_DIST) \
- $(am__atf_run_several_tcs_helper_SOURCES_DIST) \
- $(am__atf_run_signals_test_SOURCES_DIST) \
- $(am__atf_run_test_program_test_SOURCES_DIST) \
- $(am__atf_run_user_test_SOURCES_DIST) \
- $(am__atf_run_zero_tcs_helper_SOURCES_DIST) \
- $(atf_sh_atf_check_SOURCES) $(atf_sh_atf_sh_SOURCES) \
- $(am__atf_version_atf_version_SOURCES_DIST) \
- $(bootstrap_h_app_empty_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)
+ $(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;; \
@@ -1319,9 +1258,8 @@ DATA = $(atf_aclocal_DATA) $(atf_c__dirpkgconfig_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_config_DATA) \
- $(tests_atf_report_DATA) $(tests_atf_run_DATA) \
- $(tests_atf_sh_DATA) $(tests_test_programs_DATA) $(xsl_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)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
$(LISP)bconfig.h.in
@@ -1513,17 +1451,25 @@ 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_8)
+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 $(am__append_2) test-programs/sh_helpers \
+ bootstrap/h_tp_pass 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_7)
+ 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 \
@@ -1540,24 +1486,24 @@ EXTRA_DIST = admin/check-style-common.awk admin/check-style-c.awk \
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) $(am__append_3) \
+ bootstrap/testsuite.at $(testsuite_incs) \
$(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_6) $(doc_DATA) INSTALL README $(pkgtests_DATA)
+ $(am__append_4) $(doc_DATA) INSTALL README $(pkgtests_DATA)
dist_man_MANS = atf-c/atf-c-api.3 atf-c++/atf-c++-api.3 \
atf-sh/atf-check.1 atf-sh/atf-sh.1 atf-sh/atf-sh-api.3 \
- doc/atf-test-case.4 doc/atf-test-program.1 $(am__append_4)
+ 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 = $(am__append_1)
+man_MANS = $(am__append_8)
noinst_DATA = INSTALL README
noinst_LTLIBRARIES = atf-c/detail/libtest_helpers.la \
atf-c++/detail/libtest_helpers.la
-INSTALLCHECK_TARGETS = installcheck-bootstrap $(am__append_10) \
- $(am__append_11)
-PHONY_TARGETS = check-style installcheck-bootstrap $(am__append_9) \
+INSTALLCHECK_TARGETS = installcheck-bootstrap $(am__append_9) \
+ $(am__append_10)
+PHONY_TARGETS = check-style installcheck-bootstrap $(am__append_7) \
installcheck-kyua clean-all release release-test
ACLOCAL_AMFLAGS = -I m4
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-tools
@@ -1573,23 +1519,17 @@ libatf_c_la_SOURCES = atf-c/build.c atf-c/build.h atf-c/check.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_ARCH=\"$(atf_arch)\"" \
- "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \
+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_CONFDIR=\"$(atf_confdir)\"" \
"-DATF_INCLUDEDIR=\"$(includedir)\"" \
- "-DATF_LIBDIR=\"$(libdir)\"" \
"-DATF_LIBEXECDIR=\"$(libexecdir)\"" \
- "-DATF_MACHINE=\"$(atf_machine)\"" \
- "-DATF_M4=\"$(ATF_M4)\"" \
"-DATF_PKGDATADIR=\"$(pkgdatadir)\"" \
"-DATF_SHELL=\"$(ATF_SHELL)\"" \
- "-DATF_WORKDIR=\"$(ATF_WORKDIR)\"" \
- -I$(srcdir)/atf-c
+ "-DATF_WORKDIR=\"$(ATF_WORKDIR)\""
libatf_c_la_LDFLAGS = -version-info 0:0:0
atf_c_HEADERS = atf-c/build.h \
@@ -1658,29 +1598,25 @@ 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++/config.cpp \
- atf-c++/config.hpp atf-c++/macros.hpp atf-c++/noncopyable.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/expand.cpp atf-c++/detail/expand.hpp \
- atf-c++/detail/fs.cpp atf-c++/detail/fs.hpp \
- atf-c++/detail/parser.cpp atf-c++/detail/parser.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 atf-c++/detail/ui.cpp \
- atf-c++/detail/ui.hpp
-libatf_c___la_LDFLAGS = -version-info 0:0:0
+ atf-c++/config.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 1:0:0
atf_c___HEADERS = atf-c++/build.hpp \
atf-c++/check.hpp \
atf-c++/config.hpp \
atf-c++/macros.hpp \
- atf-c++/noncopyable.hpp \
atf-c++/tests.hpp \
atf-c++/utils.hpp
@@ -1723,20 +1659,15 @@ 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_expand_test_SOURCES = atf-c++/detail/expand_test.cpp
-atf_c___detail_expand_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_parser_test_SOURCES = atf-c++/detail/parser_test.cpp
-atf_c___detail_parser_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_sanity_test_SOURCES = atf-c++/detail/sanity_test.cpp
atf_c___detail_sanity_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_ui_test_SOURCES = atf-c++/detail/ui_test.cpp
-atf_c___detail_ui_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_sh_SOURCES = atf-sh/atf-sh.cpp
@@ -1754,9 +1685,9 @@ tests_atf_sh_SCRIPTS = atf-sh/misc_helpers atf-sh/atf_check_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 = $(ATF_CXX_LIBS)
+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 = $(ATF_CXX_LIBS)
+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
@@ -1791,128 +1722,166 @@ 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@atf_report_atf_report_SOURCES = atf-report/atf-report.cpp \
-@ENABLE_TOOLS_TRUE@ atf-report/reader.cpp \
-@ENABLE_TOOLS_TRUE@ atf-report/reader.hpp
-
-@ENABLE_TOOLS_TRUE@atf_report_atf_report_LDADD = $(ATF_CXX_LIBS)
+@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 = atf-report/tests-results.css
+@ENABLE_TOOLS_TRUE@css_DATA = tools/tests-results.css
@ENABLE_TOOLS_TRUE@dtddir = $(atf_dtddir)
-@ENABLE_TOOLS_TRUE@dtd_DATA = atf-report/tests-results.dtd
-@ENABLE_TOOLS_TRUE@xsldir = $(atf_xsldir)
-@ENABLE_TOOLS_TRUE@xsl_DATA = atf-report/tests-results.xsl
-@ENABLE_TOOLS_TRUE@tests_atf_report_DATA = atf-report/Atffile \
-@ENABLE_TOOLS_TRUE@ atf-report/Kyuafile
-
-@ENABLE_TOOLS_TRUE@tests_atf_reportdir = $(pkgtestsdir)/atf-report
-@ENABLE_TOOLS_TRUE@atf_report_fail_helper_SOURCES = atf-report/fail_helper.cpp
-@ENABLE_TOOLS_TRUE@atf_report_fail_helper_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_report_misc_helpers_SOURCES = atf-report/misc_helpers.cpp
-@ENABLE_TOOLS_TRUE@atf_report_misc_helpers_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_report_pass_helper_SOURCES = atf-report/pass_helper.cpp
-@ENABLE_TOOLS_TRUE@atf_report_pass_helper_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@tests_atf_report_SCRIPTS = atf-report/integration_test
-@ENABLE_TOOLS_TRUE@atf_report_reader_test_SOURCES = atf-report/reader_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-report/reader.cpp
-
-@ENABLE_TOOLS_TRUE@atf_report_reader_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-@ENABLE_TOOLS_TRUE@atf_report_reader_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_config_atf_config_SOURCES = atf-config/atf-config.cpp
-@ENABLE_TOOLS_TRUE@atf_config_atf_config_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@tests_atf_config_DATA = atf-config/Atffile \
-@ENABLE_TOOLS_TRUE@ atf-config/Kyuafile
-
-@ENABLE_TOOLS_TRUE@tests_atf_configdir = $(pkgtestsdir)/atf-config
-@ENABLE_TOOLS_TRUE@tests_atf_config_SCRIPTS = atf-config/integration_test
-@ENABLE_TOOLS_TRUE@atf_run_atf_run_CPPFLAGS = "-DGDB=\"$(GDB)\""
-@ENABLE_TOOLS_TRUE@atf_run_atf_run_SOURCES = atf-run/atf-run.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/atffile.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/atffile.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/config.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/config.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/fs.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/fs.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/io.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/io.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/signals.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/signals.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/test-program.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/test-program.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/timer.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/timer.hpp \
-@ENABLE_TOOLS_TRUE@ atf-run/user.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/user.hpp
-
-@ENABLE_TOOLS_TRUE@atf_run_atf_run_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@tests_atf_run_DATA = atf-run/Atffile \
-@ENABLE_TOOLS_TRUE@ atf-run/Kyuafile
-
-@ENABLE_TOOLS_TRUE@tests_atf_rundir = $(pkgtestsdir)/atf-run
-@ENABLE_TOOLS_TRUE@atf_run_atffile_test_SOURCES = atf-run/atffile_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/atffile.cpp
-
-@ENABLE_TOOLS_TRUE@atf_run_atffile_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-@ENABLE_TOOLS_TRUE@atf_run_atffile_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_bad_metadata_helper_SOURCES = atf-run/bad_metadata_helper.c
-@ENABLE_TOOLS_TRUE@atf_run_bad_metadata_helper_LDADD = libatf-c.la
-@ENABLE_TOOLS_TRUE@atf_run_config_test_SOURCES = atf-run/config_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/config.cpp
-
-@ENABLE_TOOLS_TRUE@atf_run_config_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-@ENABLE_TOOLS_TRUE@atf_run_config_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_expect_helpers_SOURCES = atf-run/expect_helpers.c
-@ENABLE_TOOLS_TRUE@atf_run_expect_helpers_LDADD = libatf-c.la
-@ENABLE_TOOLS_TRUE@atf_run_fs_test_SOURCES = atf-run/fs_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/fs.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/user.cpp
-
-@ENABLE_TOOLS_TRUE@atf_run_fs_test_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_io_test_SOURCES = atf-run/io_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/io.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/signals.cpp
-
-@ENABLE_TOOLS_TRUE@atf_run_io_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_misc_helpers_SOURCES = atf-run/misc_helpers.cpp
-@ENABLE_TOOLS_TRUE@atf_run_misc_helpers_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_pass_helper_SOURCES = atf-run/pass_helper.cpp
-@ENABLE_TOOLS_TRUE@atf_run_pass_helper_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_several_tcs_helper_SOURCES = atf-run/several_tcs_helper.c
-@ENABLE_TOOLS_TRUE@atf_run_several_tcs_helper_LDADD = libatf-c.la
-@ENABLE_TOOLS_TRUE@atf_run_requirements_test_SOURCES = atf-run/requirements_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/user.cpp
-
-@ENABLE_TOOLS_TRUE@atf_run_requirements_test_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_signals_test_SOURCES = atf-run/signals_test.cpp atf-run/signals.cpp
-@ENABLE_TOOLS_TRUE@atf_run_signals_test_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_test_program_test_SOURCES = atf-run/test_program_test.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/fs.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/io.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/requirements.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/signals.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/test-program.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/timer.cpp \
-@ENABLE_TOOLS_TRUE@ atf-run/user.cpp
-
-@ENABLE_TOOLS_TRUE@atf_run_test_program_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-@ENABLE_TOOLS_TRUE@atf_run_test_program_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_user_test_SOURCES = atf-run/user_test.cpp atf-run/user.cpp
-@ENABLE_TOOLS_TRUE@atf_run_user_test_LDADD = $(ATF_CXX_LIBS)
-@ENABLE_TOOLS_TRUE@atf_run_zero_tcs_helper_SOURCES = atf-run/zero_tcs_helper.c
-@ENABLE_TOOLS_TRUE@atf_run_zero_tcs_helper_LDADD = libatf-c.la
-@ENABLE_TOOLS_TRUE@tests_atf_run_SCRIPTS = atf-run/integration_test
-@ENABLE_TOOLS_TRUE@hooksdir = $(pkgdatadir)
-@ENABLE_TOOLS_TRUE@hooks_DATA = atf-run/share/atf-run.hooks
+@ENABLE_TOOLS_TRUE@dtd_DATA = tools/tests-results.dtd
@ENABLE_TOOLS_TRUE@egdir = $(atf_egdir)
-@ENABLE_TOOLS_TRUE@eg_DATA = atf-run/sample/atf-run.hooks \
-@ENABLE_TOOLS_TRUE@ atf-run/sample/common.conf
-@ENABLE_TOOLS_TRUE@atf_version_atf_version_SOURCES = atf-version/atf-version.cpp
-@ENABLE_TOOLS_TRUE@nodist_atf_version_atf_version_SOURCES = atf-version/revision.h
-@ENABLE_TOOLS_TRUE@atf_version_atf_version_CPPFLAGS = -Iatf-version
-@ENABLE_TOOLS_TRUE@atf_version_atf_version_LDADD = $(ATF_CXX_LIBS)
+@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.
@@ -1927,7 +1896,7 @@ TESTS_ENVIRONMENT = PATH=$(prefix)/bin:$${PATH} \
testsdir = $(exec_prefix)/tests
pkgtestsdir = $(testsdir)/$(PACKAGE)
-pkgtests_DATA = Kyuafile $(am__append_12)
+pkgtests_DATA = Kyuafile $(am__append_11)
BUILD_SH_TP = \
echo "Creating $${dst}"; \
echo "\#! $(bindir)/atf-sh" >$${dst}; \
@@ -1941,7 +1910,7 @@ all: $(BUILT_SOURCES) bconfig.h
.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)/atf-report/Makefile.am.inc $(srcdir)/atf-config/Makefile.am.inc $(srcdir)/atf-run/Makefile.am.inc $(srcdir)/atf-version/Makefile.am.inc $(am__configure_deps)
+$(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*) \
@@ -1964,7 +1933,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/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)/atf-report/Makefile.am.inc $(srcdir)/atf-config/Makefile.am.inc $(srcdir)/atf-run/Makefile.am.inc $(srcdir)/atf-version/Makefile.am.inc:
+$(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:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -1991,6 +1960,60 @@ distclean-hdr:
-rm -f bconfig.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)
@@ -2082,18 +2105,12 @@ 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/expand.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/parser.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)
-atf-c++/detail/ui.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)
@@ -2443,61 +2460,12 @@ clean-tests_atf_c_detailPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
-install-tests_atf_reportPROGRAMS: $(tests_atf_report_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(tests_atf_report_PROGRAMS)'; test -n "$(tests_atf_reportdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_reportdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_reportdir)" || 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_reportdir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_atf_reportdir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-tests_atf_reportPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(tests_atf_report_PROGRAMS)'; test -n "$(tests_atf_reportdir)" || 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_reportdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(tests_atf_reportdir)" && rm -f $$files
-
-clean-tests_atf_reportPROGRAMS:
- @list='$(tests_atf_report_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_runPROGRAMS: $(tests_atf_run_PROGRAMS)
+install-tests_test_programsPROGRAMS: $(tests_test_programs_PROGRAMS)
@$(NORMAL_INSTALL)
- @list='$(tests_atf_run_PROGRAMS)'; test -n "$(tests_atf_rundir)" || list=; \
+ @list='$(tests_test_programs_PROGRAMS)'; test -n "$(tests_test_programsdir)" || list=; \
if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_rundir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_rundir)" || exit 1; \
+ 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)$$//' | \
@@ -2517,36 +2485,36 @@ install-tests_atf_runPROGRAMS: $(tests_atf_run_PROGRAMS)
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_rundir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(tests_atf_rundir)$$dir" || exit $$?; \
+ 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_atf_runPROGRAMS:
+uninstall-tests_test_programsPROGRAMS:
@$(NORMAL_UNINSTALL)
- @list='$(tests_atf_run_PROGRAMS)'; test -n "$(tests_atf_rundir)" || list=; \
+ @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_atf_rundir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(tests_atf_rundir)" && rm -f $$files
+ echo " ( cd '$(DESTDIR)$(tests_test_programsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(tests_test_programsdir)" && rm -f $$files
-clean-tests_atf_runPROGRAMS:
- @list='$(tests_atf_run_PROGRAMS)'; test -n "$$list" || exit 0; \
+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_test_programsPROGRAMS: $(tests_test_programs_PROGRAMS)
+install-tests_toolsPROGRAMS: $(tests_tools_PROGRAMS)
@$(NORMAL_INSTALL)
- @list='$(tests_test_programs_PROGRAMS)'; test -n "$(tests_test_programsdir)" || list=; \
+ @list='$(tests_tools_PROGRAMS)'; test -n "$(tests_toolsdir)" || list=; \
if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_test_programsdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_test_programsdir)" || exit 1; \
+ 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)$$//' | \
@@ -2566,24 +2534,24 @@ install-tests_test_programsPROGRAMS: $(tests_test_programs_PROGRAMS)
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 $$?; \
+ 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_test_programsPROGRAMS:
+uninstall-tests_toolsPROGRAMS:
@$(NORMAL_UNINSTALL)
- @list='$(tests_test_programs_PROGRAMS)'; test -n "$(tests_test_programsdir)" || list=; \
+ @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_test_programsdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(tests_test_programsdir)" && rm -f $$files
+ echo " ( cd '$(DESTDIR)$(tests_toolsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(tests_toolsdir)" && rm -f $$files
-clean-tests_test_programsPROGRAMS:
- @list='$(tests_test_programs_PROGRAMS)'; test -n "$$list" || exit 0; \
+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; \
@@ -2641,24 +2609,12 @@ atf-c++/detail/exceptions_test.$(OBJEXT): \
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/expand_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \
- atf-c++/detail/$(DEPDIR)/$(am__dirstamp)
-
-atf-c++/detail/expand_test$(EXEEXT): $(atf_c___detail_expand_test_OBJECTS) $(atf_c___detail_expand_test_DEPENDENCIES) $(EXTRA_atf_c___detail_expand_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp)
- @rm -f atf-c++/detail/expand_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_expand_test_OBJECTS) $(atf_c___detail_expand_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/parser_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \
- atf-c++/detail/$(DEPDIR)/$(am__dirstamp)
-
-atf-c++/detail/parser_test$(EXEEXT): $(atf_c___detail_parser_test_OBJECTS) $(atf_c___detail_parser_test_DEPENDENCIES) $(EXTRA_atf_c___detail_parser_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp)
- @rm -f atf-c++/detail/parser_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_parser_test_OBJECTS) $(atf_c___detail_parser_test_LDADD) $(LIBS)
atf-c++/detail/process_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \
atf-c++/detail/$(DEPDIR)/$(am__dirstamp)
@@ -2677,12 +2633,13 @@ atf-c++/detail/text_test.$(OBJEXT): atf-c++/detail/$(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/ui_test.$(OBJEXT): atf-c++/detail/$(am__dirstamp) \
+atf-c++/detail/version_helper.$(OBJEXT): \
+ atf-c++/detail/$(am__dirstamp) \
atf-c++/detail/$(DEPDIR)/$(am__dirstamp)
-atf-c++/detail/ui_test$(EXEEXT): $(atf_c___detail_ui_test_OBJECTS) $(atf_c___detail_ui_test_DEPENDENCIES) $(EXTRA_atf_c___detail_ui_test_DEPENDENCIES) atf-c++/detail/$(am__dirstamp)
- @rm -f atf-c++/detail/ui_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_c___detail_ui_test_OBJECTS) $(atf_c___detail_ui_test_LDADD) $(LIBS)
+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)
@@ -2785,6 +2742,12 @@ atf-c/detail/user_test.$(OBJEXT): atf-c/detail/$(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)
@@ -2815,202 +2778,6 @@ atf-c/utils_test.$(OBJEXT): atf-c/$(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-config/$(am__dirstamp):
- @$(MKDIR_P) atf-config
- @: > atf-config/$(am__dirstamp)
-atf-config/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) atf-config/$(DEPDIR)
- @: > atf-config/$(DEPDIR)/$(am__dirstamp)
-atf-config/atf-config.$(OBJEXT): atf-config/$(am__dirstamp) \
- atf-config/$(DEPDIR)/$(am__dirstamp)
-
-atf-config/atf-config$(EXEEXT): $(atf_config_atf_config_OBJECTS) $(atf_config_atf_config_DEPENDENCIES) $(EXTRA_atf_config_atf_config_DEPENDENCIES) atf-config/$(am__dirstamp)
- @rm -f atf-config/atf-config$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_config_atf_config_OBJECTS) $(atf_config_atf_config_LDADD) $(LIBS)
-atf-report/$(am__dirstamp):
- @$(MKDIR_P) atf-report
- @: > atf-report/$(am__dirstamp)
-atf-report/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) atf-report/$(DEPDIR)
- @: > atf-report/$(DEPDIR)/$(am__dirstamp)
-atf-report/atf-report.$(OBJEXT): atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-atf-report/reader.$(OBJEXT): atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-
-atf-report/atf-report$(EXEEXT): $(atf_report_atf_report_OBJECTS) $(atf_report_atf_report_DEPENDENCIES) $(EXTRA_atf_report_atf_report_DEPENDENCIES) atf-report/$(am__dirstamp)
- @rm -f atf-report/atf-report$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_report_atf_report_OBJECTS) $(atf_report_atf_report_LDADD) $(LIBS)
-atf-report/fail_helper.$(OBJEXT): atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-
-atf-report/fail_helper$(EXEEXT): $(atf_report_fail_helper_OBJECTS) $(atf_report_fail_helper_DEPENDENCIES) $(EXTRA_atf_report_fail_helper_DEPENDENCIES) atf-report/$(am__dirstamp)
- @rm -f atf-report/fail_helper$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_report_fail_helper_OBJECTS) $(atf_report_fail_helper_LDADD) $(LIBS)
-atf-report/misc_helpers.$(OBJEXT): atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-
-atf-report/misc_helpers$(EXEEXT): $(atf_report_misc_helpers_OBJECTS) $(atf_report_misc_helpers_DEPENDENCIES) $(EXTRA_atf_report_misc_helpers_DEPENDENCIES) atf-report/$(am__dirstamp)
- @rm -f atf-report/misc_helpers$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_report_misc_helpers_OBJECTS) $(atf_report_misc_helpers_LDADD) $(LIBS)
-atf-report/pass_helper.$(OBJEXT): atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-
-atf-report/pass_helper$(EXEEXT): $(atf_report_pass_helper_OBJECTS) $(atf_report_pass_helper_DEPENDENCIES) $(EXTRA_atf_report_pass_helper_DEPENDENCIES) atf-report/$(am__dirstamp)
- @rm -f atf-report/pass_helper$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_report_pass_helper_OBJECTS) $(atf_report_pass_helper_LDADD) $(LIBS)
-atf-report/atf_report_reader_test-reader_test.$(OBJEXT): \
- atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-atf-report/atf_report_reader_test-reader.$(OBJEXT): \
- atf-report/$(am__dirstamp) \
- atf-report/$(DEPDIR)/$(am__dirstamp)
-
-atf-report/reader_test$(EXEEXT): $(atf_report_reader_test_OBJECTS) $(atf_report_reader_test_DEPENDENCIES) $(EXTRA_atf_report_reader_test_DEPENDENCIES) atf-report/$(am__dirstamp)
- @rm -f atf-report/reader_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_report_reader_test_OBJECTS) $(atf_report_reader_test_LDADD) $(LIBS)
-atf-run/$(am__dirstamp):
- @$(MKDIR_P) atf-run
- @: > atf-run/$(am__dirstamp)
-atf-run/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) atf-run/$(DEPDIR)
- @: > atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-atf-run.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-atffile.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-config.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-fs.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-io.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-requirements.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-signals.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-test-program.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-timer.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atf_run-user.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/atf-run$(EXEEXT): $(atf_run_atf_run_OBJECTS) $(atf_run_atf_run_DEPENDENCIES) $(EXTRA_atf_run_atf_run_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/atf-run$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_atf_run_OBJECTS) $(atf_run_atf_run_LDADD) $(LIBS)
-atf-run/atf_run_atffile_test-atffile_test.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_atffile_test-atffile.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/atffile_test$(EXEEXT): $(atf_run_atffile_test_OBJECTS) $(atf_run_atffile_test_DEPENDENCIES) $(EXTRA_atf_run_atffile_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/atffile_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_atffile_test_OBJECTS) $(atf_run_atffile_test_LDADD) $(LIBS)
-atf-run/bad_metadata_helper.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/bad_metadata_helper$(EXEEXT): $(atf_run_bad_metadata_helper_OBJECTS) $(atf_run_bad_metadata_helper_DEPENDENCIES) $(EXTRA_atf_run_bad_metadata_helper_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/bad_metadata_helper$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(atf_run_bad_metadata_helper_OBJECTS) $(atf_run_bad_metadata_helper_LDADD) $(LIBS)
-atf-run/atf_run_config_test-config_test.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_config_test-config.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/config_test$(EXEEXT): $(atf_run_config_test_OBJECTS) $(atf_run_config_test_DEPENDENCIES) $(EXTRA_atf_run_config_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/config_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_config_test_OBJECTS) $(atf_run_config_test_LDADD) $(LIBS)
-atf-run/expect_helpers.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/expect_helpers$(EXEEXT): $(atf_run_expect_helpers_OBJECTS) $(atf_run_expect_helpers_DEPENDENCIES) $(EXTRA_atf_run_expect_helpers_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/expect_helpers$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(atf_run_expect_helpers_OBJECTS) $(atf_run_expect_helpers_LDADD) $(LIBS)
-atf-run/fs_test.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/fs.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/user.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/fs_test$(EXEEXT): $(atf_run_fs_test_OBJECTS) $(atf_run_fs_test_DEPENDENCIES) $(EXTRA_atf_run_fs_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/fs_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_fs_test_OBJECTS) $(atf_run_fs_test_LDADD) $(LIBS)
-atf-run/io_test.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/io.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/signals.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/io_test$(EXEEXT): $(atf_run_io_test_OBJECTS) $(atf_run_io_test_DEPENDENCIES) $(EXTRA_atf_run_io_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/io_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_io_test_OBJECTS) $(atf_run_io_test_LDADD) $(LIBS)
-atf-run/misc_helpers.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/misc_helpers$(EXEEXT): $(atf_run_misc_helpers_OBJECTS) $(atf_run_misc_helpers_DEPENDENCIES) $(EXTRA_atf_run_misc_helpers_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/misc_helpers$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_misc_helpers_OBJECTS) $(atf_run_misc_helpers_LDADD) $(LIBS)
-atf-run/pass_helper.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/pass_helper$(EXEEXT): $(atf_run_pass_helper_OBJECTS) $(atf_run_pass_helper_DEPENDENCIES) $(EXTRA_atf_run_pass_helper_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/pass_helper$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_pass_helper_OBJECTS) $(atf_run_pass_helper_LDADD) $(LIBS)
-atf-run/requirements_test.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/requirements.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/requirements_test$(EXEEXT): $(atf_run_requirements_test_OBJECTS) $(atf_run_requirements_test_DEPENDENCIES) $(EXTRA_atf_run_requirements_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/requirements_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_requirements_test_OBJECTS) $(atf_run_requirements_test_LDADD) $(LIBS)
-atf-run/several_tcs_helper.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/several_tcs_helper$(EXEEXT): $(atf_run_several_tcs_helper_OBJECTS) $(atf_run_several_tcs_helper_DEPENDENCIES) $(EXTRA_atf_run_several_tcs_helper_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/several_tcs_helper$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(atf_run_several_tcs_helper_OBJECTS) $(atf_run_several_tcs_helper_LDADD) $(LIBS)
-atf-run/signals_test.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/signals_test$(EXEEXT): $(atf_run_signals_test_OBJECTS) $(atf_run_signals_test_DEPENDENCIES) $(EXTRA_atf_run_signals_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/signals_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_signals_test_OBJECTS) $(atf_run_signals_test_LDADD) $(LIBS)
-atf-run/atf_run_test_program_test-test_program_test.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-fs.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-io.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-requirements.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-signals.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-test-program.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-timer.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-atf-run/atf_run_test_program_test-user.$(OBJEXT): \
- atf-run/$(am__dirstamp) atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/test_program_test$(EXEEXT): $(atf_run_test_program_test_OBJECTS) $(atf_run_test_program_test_DEPENDENCIES) $(EXTRA_atf_run_test_program_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/test_program_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_test_program_test_OBJECTS) $(atf_run_test_program_test_LDADD) $(LIBS)
-atf-run/user_test.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/user_test$(EXEEXT): $(atf_run_user_test_OBJECTS) $(atf_run_user_test_DEPENDENCIES) $(EXTRA_atf_run_user_test_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/user_test$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_run_user_test_OBJECTS) $(atf_run_user_test_LDADD) $(LIBS)
-atf-run/zero_tcs_helper.$(OBJEXT): atf-run/$(am__dirstamp) \
- atf-run/$(DEPDIR)/$(am__dirstamp)
-
-atf-run/zero_tcs_helper$(EXEEXT): $(atf_run_zero_tcs_helper_OBJECTS) $(atf_run_zero_tcs_helper_DEPENDENCIES) $(EXTRA_atf_run_zero_tcs_helper_DEPENDENCIES) atf-run/$(am__dirstamp)
- @rm -f atf-run/zero_tcs_helper$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(atf_run_zero_tcs_helper_OBJECTS) $(atf_run_zero_tcs_helper_LDADD) $(LIBS)
atf-sh/$(am__dirstamp):
@$(MKDIR_P) atf-sh
@: > atf-sh/$(am__dirstamp)
@@ -3029,19 +2796,6 @@ atf-sh/atf-sh.$(OBJEXT): atf-sh/$(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)
-atf-version/$(am__dirstamp):
- @$(MKDIR_P) atf-version
- @: > atf-version/$(am__dirstamp)
-atf-version/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) atf-version/$(DEPDIR)
- @: > atf-version/$(DEPDIR)/$(am__dirstamp)
-atf-version/atf_version_atf_version-atf-version.$(OBJEXT): \
- atf-version/$(am__dirstamp) \
- atf-version/$(DEPDIR)/$(am__dirstamp)
-
-atf-version/atf-version$(EXEEXT): $(atf_version_atf_version_OBJECTS) $(atf_version_atf_version_DEPENDENCIES) $(EXTRA_atf_version_atf_version_DEPENDENCIES) atf-version/$(am__dirstamp)
- @rm -f atf-version/atf-version$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(atf_version_atf_version_OBJECTS) $(atf_version_atf_version_LDADD) $(LIBS)
bootstrap/$(am__dirstamp):
@$(MKDIR_P) bootstrap
@: > bootstrap/$(am__dirstamp)
@@ -3090,6 +2844,194 @@ test-programs/cpp_helpers.$(OBJEXT): test-programs/$(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=; \
@@ -3160,82 +3102,12 @@ uninstall-tests_atf_c__SCRIPTS:
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_configSCRIPTS: $(tests_atf_config_SCRIPTS)
- @$(NORMAL_INSTALL)
- @list='$(tests_atf_config_SCRIPTS)'; test -n "$(tests_atf_configdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_configdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_configdir)" || 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_configdir)$$dir'"; \
- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_configdir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-tests_atf_configSCRIPTS:
- @$(NORMAL_UNINSTALL)
- @list='$(tests_atf_config_SCRIPTS)'; test -n "$(tests_atf_configdir)" || exit 0; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 's,.*/,,;$(transform)'`; \
- dir='$(DESTDIR)$(tests_atf_configdir)'; $(am__uninstall_files_from_dir)
-install-tests_atf_reportSCRIPTS: $(tests_atf_report_SCRIPTS)
- @$(NORMAL_INSTALL)
- @list='$(tests_atf_report_SCRIPTS)'; test -n "$(tests_atf_reportdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_reportdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_reportdir)" || 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_reportdir)$$dir'"; \
- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_reportdir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-tests_atf_reportSCRIPTS:
- @$(NORMAL_UNINSTALL)
- @list='$(tests_atf_report_SCRIPTS)'; test -n "$(tests_atf_reportdir)" || exit 0; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 's,.*/,,;$(transform)'`; \
- dir='$(DESTDIR)$(tests_atf_reportdir)'; $(am__uninstall_files_from_dir)
-install-tests_atf_runSCRIPTS: $(tests_atf_run_SCRIPTS)
+install-tests_atf_shSCRIPTS: $(tests_atf_sh_SCRIPTS)
@$(NORMAL_INSTALL)
- @list='$(tests_atf_run_SCRIPTS)'; test -n "$(tests_atf_rundir)" || list=; \
+ @list='$(tests_atf_sh_SCRIPTS)'; test -n "$(tests_atf_shdir)" || list=; \
if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_rundir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_rundir)" || exit 1; \
+ 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; \
@@ -3254,23 +3126,23 @@ install-tests_atf_runSCRIPTS: $(tests_atf_run_SCRIPTS)
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_rundir)$$dir'"; \
- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_rundir)$$dir" || exit $$?; \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_atf_shdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_atf_shdir)$$dir" || exit $$?; \
} \
; done
-uninstall-tests_atf_runSCRIPTS:
+uninstall-tests_atf_shSCRIPTS:
@$(NORMAL_UNINSTALL)
- @list='$(tests_atf_run_SCRIPTS)'; test -n "$(tests_atf_rundir)" || exit 0; \
+ @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_rundir)'; $(am__uninstall_files_from_dir)
-install-tests_atf_shSCRIPTS: $(tests_atf_sh_SCRIPTS)
+ dir='$(DESTDIR)$(tests_atf_shdir)'; $(am__uninstall_files_from_dir)
+install-tests_test_programsSCRIPTS: $(tests_test_programs_SCRIPTS)
@$(NORMAL_INSTALL)
- @list='$(tests_atf_sh_SCRIPTS)'; test -n "$(tests_atf_shdir)" || list=; \
+ @list='$(tests_test_programs_SCRIPTS)'; test -n "$(tests_test_programsdir)" || list=; \
if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_shdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_shdir)" || exit 1; \
+ 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; \
@@ -3289,23 +3161,23 @@ install-tests_atf_shSCRIPTS: $(tests_atf_sh_SCRIPTS)
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 $$?; \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_test_programsdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_test_programsdir)$$dir" || exit $$?; \
} \
; done
-uninstall-tests_atf_shSCRIPTS:
+uninstall-tests_test_programsSCRIPTS:
@$(NORMAL_UNINSTALL)
- @list='$(tests_atf_sh_SCRIPTS)'; test -n "$(tests_atf_shdir)" || exit 0; \
+ @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_atf_shdir)'; $(am__uninstall_files_from_dir)
-install-tests_test_programsSCRIPTS: $(tests_test_programs_SCRIPTS)
+ dir='$(DESTDIR)$(tests_test_programsdir)'; $(am__uninstall_files_from_dir)
+install-tests_toolsSCRIPTS: $(tests_tools_SCRIPTS)
@$(NORMAL_INSTALL)
- @list='$(tests_test_programs_SCRIPTS)'; test -n "$(tests_test_programsdir)" || list=; \
+ @list='$(tests_tools_SCRIPTS)'; test -n "$(tests_toolsdir)" || list=; \
if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_test_programsdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_test_programsdir)" || exit 1; \
+ 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; \
@@ -3324,17 +3196,17 @@ install-tests_test_programsSCRIPTS: $(tests_test_programs_SCRIPTS)
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 $$?; \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tests_toolsdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tests_toolsdir)$$dir" || exit $$?; \
} \
; done
-uninstall-tests_test_programsSCRIPTS:
+uninstall-tests_toolsSCRIPTS:
@$(NORMAL_UNINSTALL)
- @list='$(tests_test_programs_SCRIPTS)'; test -n "$(tests_test_programsdir)" || exit 0; \
+ @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_test_programsdir)'; $(am__uninstall_files_from_dir)
+ dir='$(DESTDIR)$(tests_toolsdir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -3346,13 +3218,10 @@ mostlyclean-compile:
-rm -f atf-c/*.lo
-rm -f atf-c/detail/*.$(OBJEXT)
-rm -f atf-c/detail/*.lo
- -rm -f atf-config/*.$(OBJEXT)
- -rm -f atf-report/*.$(OBJEXT)
- -rm -f atf-run/*.$(OBJEXT)
-rm -f atf-sh/*.$(OBJEXT)
- -rm -f atf-version/*.$(OBJEXT)
-rm -f bootstrap/*.$(OBJEXT)
-rm -f test-programs/*.$(OBJEXT)
+ -rm -f tools/*.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@@ -3376,20 +3245,15 @@ distclean-compile:
@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)/expand.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/expand_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)/parser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/parser_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)/sanity_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/test_helpers.Plo@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)/ui.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-c++/detail/$(DEPDIR)/ui_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@
@@ -3427,61 +3291,68 @@ distclean-compile:
@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-config/$(DEPDIR)/atf-config.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/atf-report.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/atf_report_reader_test-reader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/fail_helper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/misc_helpers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/pass_helper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-report/$(DEPDIR)/reader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-config.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-fs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-io.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-signals.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-timer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atf_run-user.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_config_test-config.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_config_test-config_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-io.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/atf_run_test_program_test-user.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/bad_metadata_helper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/expect_helpers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/fs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/fs_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/io.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/io_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/misc_helpers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/pass_helper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/requirements.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/requirements_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/several_tcs_helper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/signals.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/signals_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/user.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/user_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-run/$(DEPDIR)/zero_tcs_helper.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-check.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@atf-sh/$(DEPDIR)/atf-sh.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.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$$||'`;\
@@ -3657,355 +3528,649 @@ atf-c/detail/libatf_c_la-user.lo: atf-c/detail/user.c
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-atf-report/atf_report_reader_test-reader_test.o: atf-report/reader_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-report/atf_report_reader_test-reader_test.o -MD -MP -MF atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Tpo -c -o atf-report/atf_report_reader_test-reader_test.o `test -f 'atf-report/reader_test.cpp' || echo '$(srcdir)/'`atf-report/reader_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Tpo atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-report/reader_test.cpp' object='atf-report/atf_report_reader_test-reader_test.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-report/atf_report_reader_test-reader_test.o `test -f 'atf-report/reader_test.cpp' || echo '$(srcdir)/'`atf-report/reader_test.cpp
+@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
-atf-report/atf_report_reader_test-reader_test.obj: atf-report/reader_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-report/atf_report_reader_test-reader_test.obj -MD -MP -MF atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Tpo -c -o atf-report/atf_report_reader_test-reader_test.obj `if test -f 'atf-report/reader_test.cpp'; then $(CYGPATH_W) 'atf-report/reader_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-report/reader_test.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Tpo atf-report/$(DEPDIR)/atf_report_reader_test-reader_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-report/reader_test.cpp' object='atf-report/atf_report_reader_test-reader_test.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-report/atf_report_reader_test-reader_test.obj `if test -f 'atf-report/reader_test.cpp'; then $(CYGPATH_W) 'atf-report/reader_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-report/reader_test.cpp'; fi`
+@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`
-atf-report/atf_report_reader_test-reader.o: atf-report/reader.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-report/atf_report_reader_test-reader.o -MD -MP -MF atf-report/$(DEPDIR)/atf_report_reader_test-reader.Tpo -c -o atf-report/atf_report_reader_test-reader.o `test -f 'atf-report/reader.cpp' || echo '$(srcdir)/'`atf-report/reader.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-report/$(DEPDIR)/atf_report_reader_test-reader.Tpo atf-report/$(DEPDIR)/atf_report_reader_test-reader.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-report/reader.cpp' object='atf-report/atf_report_reader_test-reader.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-report/atf_report_reader_test-reader.o `test -f 'atf-report/reader.cpp' || echo '$(srcdir)/'`atf-report/reader.cpp
+@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
-atf-report/atf_report_reader_test-reader.obj: atf-report/reader.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-report/atf_report_reader_test-reader.obj -MD -MP -MF atf-report/$(DEPDIR)/atf_report_reader_test-reader.Tpo -c -o atf-report/atf_report_reader_test-reader.obj `if test -f 'atf-report/reader.cpp'; then $(CYGPATH_W) 'atf-report/reader.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-report/reader.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-report/$(DEPDIR)/atf_report_reader_test-reader.Tpo atf-report/$(DEPDIR)/atf_report_reader_test-reader.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-report/reader.cpp' object='atf-report/atf_report_reader_test-reader.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_report_reader_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-report/atf_report_reader_test-reader.obj `if test -f 'atf-report/reader.cpp'; then $(CYGPATH_W) 'atf-report/reader.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-report/reader.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-atf-run.o: atf-run/atf-run.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-atf-run.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Tpo -c -o atf-run/atf_run_atf_run-atf-run.o `test -f 'atf-run/atf-run.cpp' || echo '$(srcdir)/'`atf-run/atf-run.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atf-run.cpp' object='atf-run/atf_run_atf_run-atf-run.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-atf-run.o `test -f 'atf-run/atf-run.cpp' || echo '$(srcdir)/'`atf-run/atf-run.cpp
+@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
-atf-run/atf_run_atf_run-atf-run.obj: atf-run/atf-run.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-atf-run.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Tpo -c -o atf-run/atf_run_atf_run-atf-run.obj `if test -f 'atf-run/atf-run.cpp'; then $(CYGPATH_W) 'atf-run/atf-run.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atf-run.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-atf-run.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atf-run.cpp' object='atf-run/atf_run_atf_run-atf-run.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-atf-run.obj `if test -f 'atf-run/atf-run.cpp'; then $(CYGPATH_W) 'atf-run/atf-run.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atf-run.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-atffile.o: atf-run/atffile.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-atffile.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Tpo -c -o atf-run/atf_run_atf_run-atffile.o `test -f 'atf-run/atffile.cpp' || echo '$(srcdir)/'`atf-run/atffile.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atffile.cpp' object='atf-run/atf_run_atf_run-atffile.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-atffile.o `test -f 'atf-run/atffile.cpp' || echo '$(srcdir)/'`atf-run/atffile.cpp
+@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
-atf-run/atf_run_atf_run-atffile.obj: atf-run/atffile.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-atffile.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Tpo -c -o atf-run/atf_run_atf_run-atffile.obj `if test -f 'atf-run/atffile.cpp'; then $(CYGPATH_W) 'atf-run/atffile.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atffile.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-atffile.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atffile.cpp' object='atf-run/atf_run_atf_run-atffile.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-atffile.obj `if test -f 'atf-run/atffile.cpp'; then $(CYGPATH_W) 'atf-run/atffile.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atffile.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-config.o: atf-run/config.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-config.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-config.Tpo -c -o atf-run/atf_run_atf_run-config.o `test -f 'atf-run/config.cpp' || echo '$(srcdir)/'`atf-run/config.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-config.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-config.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/config.cpp' object='atf-run/atf_run_atf_run-config.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-config.o `test -f 'atf-run/config.cpp' || echo '$(srcdir)/'`atf-run/config.cpp
+@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
-atf-run/atf_run_atf_run-config.obj: atf-run/config.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-config.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-config.Tpo -c -o atf-run/atf_run_atf_run-config.obj `if test -f 'atf-run/config.cpp'; then $(CYGPATH_W) 'atf-run/config.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/config.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-config.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-config.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/config.cpp' object='atf-run/atf_run_atf_run-config.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-config.obj `if test -f 'atf-run/config.cpp'; then $(CYGPATH_W) 'atf-run/config.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/config.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-fs.o: atf-run/fs.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-fs.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-fs.Tpo -c -o atf-run/atf_run_atf_run-fs.o `test -f 'atf-run/fs.cpp' || echo '$(srcdir)/'`atf-run/fs.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-fs.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-fs.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/fs.cpp' object='atf-run/atf_run_atf_run-fs.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-fs.o `test -f 'atf-run/fs.cpp' || echo '$(srcdir)/'`atf-run/fs.cpp
+@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
-atf-run/atf_run_atf_run-fs.obj: atf-run/fs.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-fs.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-fs.Tpo -c -o atf-run/atf_run_atf_run-fs.obj `if test -f 'atf-run/fs.cpp'; then $(CYGPATH_W) 'atf-run/fs.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/fs.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-fs.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-fs.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/fs.cpp' object='atf-run/atf_run_atf_run-fs.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-fs.obj `if test -f 'atf-run/fs.cpp'; then $(CYGPATH_W) 'atf-run/fs.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/fs.cpp'; fi`
+@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-run/atf_run_atf_run-io.o: atf-run/io.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-io.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-io.Tpo -c -o atf-run/atf_run_atf_run-io.o `test -f 'atf-run/io.cpp' || echo '$(srcdir)/'`atf-run/io.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-io.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-io.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/io.cpp' object='atf-run/atf_run_atf_run-io.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-io.o `test -f 'atf-run/io.cpp' || echo '$(srcdir)/'`atf-run/io.cpp
+@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
-atf-run/atf_run_atf_run-io.obj: atf-run/io.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-io.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-io.Tpo -c -o atf-run/atf_run_atf_run-io.obj `if test -f 'atf-run/io.cpp'; then $(CYGPATH_W) 'atf-run/io.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/io.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-io.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-io.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/io.cpp' object='atf-run/atf_run_atf_run-io.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-io.obj `if test -f 'atf-run/io.cpp'; then $(CYGPATH_W) 'atf-run/io.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/io.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-requirements.o: atf-run/requirements.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-requirements.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Tpo -c -o atf-run/atf_run_atf_run-requirements.o `test -f 'atf-run/requirements.cpp' || echo '$(srcdir)/'`atf-run/requirements.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/requirements.cpp' object='atf-run/atf_run_atf_run-requirements.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-requirements.o `test -f 'atf-run/requirements.cpp' || echo '$(srcdir)/'`atf-run/requirements.cpp
+@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
-atf-run/atf_run_atf_run-requirements.obj: atf-run/requirements.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-requirements.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Tpo -c -o atf-run/atf_run_atf_run-requirements.obj `if test -f 'atf-run/requirements.cpp'; then $(CYGPATH_W) 'atf-run/requirements.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/requirements.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-requirements.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/requirements.cpp' object='atf-run/atf_run_atf_run-requirements.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-requirements.obj `if test -f 'atf-run/requirements.cpp'; then $(CYGPATH_W) 'atf-run/requirements.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/requirements.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-signals.o: atf-run/signals.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-signals.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-signals.Tpo -c -o atf-run/atf_run_atf_run-signals.o `test -f 'atf-run/signals.cpp' || echo '$(srcdir)/'`atf-run/signals.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-signals.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-signals.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/signals.cpp' object='atf-run/atf_run_atf_run-signals.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-signals.o `test -f 'atf-run/signals.cpp' || echo '$(srcdir)/'`atf-run/signals.cpp
+@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
-atf-run/atf_run_atf_run-signals.obj: atf-run/signals.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-signals.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-signals.Tpo -c -o atf-run/atf_run_atf_run-signals.obj `if test -f 'atf-run/signals.cpp'; then $(CYGPATH_W) 'atf-run/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/signals.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-signals.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-signals.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/signals.cpp' object='atf-run/atf_run_atf_run-signals.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-signals.obj `if test -f 'atf-run/signals.cpp'; then $(CYGPATH_W) 'atf-run/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/signals.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-test-program.o: atf-run/test-program.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-test-program.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Tpo -c -o atf-run/atf_run_atf_run-test-program.o `test -f 'atf-run/test-program.cpp' || echo '$(srcdir)/'`atf-run/test-program.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/test-program.cpp' object='atf-run/atf_run_atf_run-test-program.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-test-program.o `test -f 'atf-run/test-program.cpp' || echo '$(srcdir)/'`atf-run/test-program.cpp
+@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
-atf-run/atf_run_atf_run-test-program.obj: atf-run/test-program.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-test-program.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Tpo -c -o atf-run/atf_run_atf_run-test-program.obj `if test -f 'atf-run/test-program.cpp'; then $(CYGPATH_W) 'atf-run/test-program.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/test-program.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-test-program.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/test-program.cpp' object='atf-run/atf_run_atf_run-test-program.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-test-program.obj `if test -f 'atf-run/test-program.cpp'; then $(CYGPATH_W) 'atf-run/test-program.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/test-program.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-timer.o: atf-run/timer.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-timer.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-timer.Tpo -c -o atf-run/atf_run_atf_run-timer.o `test -f 'atf-run/timer.cpp' || echo '$(srcdir)/'`atf-run/timer.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-timer.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-timer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/timer.cpp' object='atf-run/atf_run_atf_run-timer.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-timer.o `test -f 'atf-run/timer.cpp' || echo '$(srcdir)/'`atf-run/timer.cpp
+@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
-atf-run/atf_run_atf_run-timer.obj: atf-run/timer.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-timer.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-timer.Tpo -c -o atf-run/atf_run_atf_run-timer.obj `if test -f 'atf-run/timer.cpp'; then $(CYGPATH_W) 'atf-run/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/timer.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-timer.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-timer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/timer.cpp' object='atf-run/atf_run_atf_run-timer.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-timer.obj `if test -f 'atf-run/timer.cpp'; then $(CYGPATH_W) 'atf-run/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/timer.cpp'; fi`
+@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`
-atf-run/atf_run_atf_run-user.o: atf-run/user.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-user.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-user.Tpo -c -o atf-run/atf_run_atf_run-user.o `test -f 'atf-run/user.cpp' || echo '$(srcdir)/'`atf-run/user.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-user.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-user.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/user.cpp' object='atf-run/atf_run_atf_run-user.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-user.o `test -f 'atf-run/user.cpp' || echo '$(srcdir)/'`atf-run/user.cpp
+@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
-atf-run/atf_run_atf_run-user.obj: atf-run/user.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atf_run-user.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atf_run-user.Tpo -c -o atf-run/atf_run_atf_run-user.obj `if test -f 'atf-run/user.cpp'; then $(CYGPATH_W) 'atf-run/user.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/user.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atf_run-user.Tpo atf-run/$(DEPDIR)/atf_run_atf_run-user.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/user.cpp' object='atf-run/atf_run_atf_run-user.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atf_run_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atf_run-user.obj `if test -f 'atf-run/user.cpp'; then $(CYGPATH_W) 'atf-run/user.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/user.cpp'; fi`
+@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`
-atf-run/atf_run_atffile_test-atffile_test.o: atf-run/atffile_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atffile_test-atffile_test.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Tpo -c -o atf-run/atf_run_atffile_test-atffile_test.o `test -f 'atf-run/atffile_test.cpp' || echo '$(srcdir)/'`atf-run/atffile_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Tpo atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atffile_test.cpp' object='atf-run/atf_run_atffile_test-atffile_test.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atffile_test-atffile_test.o `test -f 'atf-run/atffile_test.cpp' || echo '$(srcdir)/'`atf-run/atffile_test.cpp
+@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
-atf-run/atf_run_atffile_test-atffile_test.obj: atf-run/atffile_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atffile_test-atffile_test.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Tpo -c -o atf-run/atf_run_atffile_test-atffile_test.obj `if test -f 'atf-run/atffile_test.cpp'; then $(CYGPATH_W) 'atf-run/atffile_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atffile_test.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Tpo atf-run/$(DEPDIR)/atf_run_atffile_test-atffile_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atffile_test.cpp' object='atf-run/atf_run_atffile_test-atffile_test.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atffile_test-atffile_test.obj `if test -f 'atf-run/atffile_test.cpp'; then $(CYGPATH_W) 'atf-run/atffile_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atffile_test.cpp'; fi`
+@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`
-atf-run/atf_run_atffile_test-atffile.o: atf-run/atffile.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atffile_test-atffile.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Tpo -c -o atf-run/atf_run_atffile_test-atffile.o `test -f 'atf-run/atffile.cpp' || echo '$(srcdir)/'`atf-run/atffile.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Tpo atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atffile.cpp' object='atf-run/atf_run_atffile_test-atffile.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atffile_test-atffile.o `test -f 'atf-run/atffile.cpp' || echo '$(srcdir)/'`atf-run/atffile.cpp
+@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
-atf-run/atf_run_atffile_test-atffile.obj: atf-run/atffile.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_atffile_test-atffile.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Tpo -c -o atf-run/atf_run_atffile_test-atffile.obj `if test -f 'atf-run/atffile.cpp'; then $(CYGPATH_W) 'atf-run/atffile.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atffile.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Tpo atf-run/$(DEPDIR)/atf_run_atffile_test-atffile.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/atffile.cpp' object='atf-run/atf_run_atffile_test-atffile.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_atffile_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_atffile_test-atffile.obj `if test -f 'atf-run/atffile.cpp'; then $(CYGPATH_W) 'atf-run/atffile.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/atffile.cpp'; fi`
+@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`
-atf-run/atf_run_config_test-config_test.o: atf-run/config_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_config_test-config_test.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_config_test-config_test.Tpo -c -o atf-run/atf_run_config_test-config_test.o `test -f 'atf-run/config_test.cpp' || echo '$(srcdir)/'`atf-run/config_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_config_test-config_test.Tpo atf-run/$(DEPDIR)/atf_run_config_test-config_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/config_test.cpp' object='atf-run/atf_run_config_test-config_test.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_config_test-config_test.o `test -f 'atf-run/config_test.cpp' || echo '$(srcdir)/'`atf-run/config_test.cpp
+@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
-atf-run/atf_run_config_test-config_test.obj: atf-run/config_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_config_test-config_test.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_config_test-config_test.Tpo -c -o atf-run/atf_run_config_test-config_test.obj `if test -f 'atf-run/config_test.cpp'; then $(CYGPATH_W) 'atf-run/config_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/config_test.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_config_test-config_test.Tpo atf-run/$(DEPDIR)/atf_run_config_test-config_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/config_test.cpp' object='atf-run/atf_run_config_test-config_test.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_config_test-config_test.obj `if test -f 'atf-run/config_test.cpp'; then $(CYGPATH_W) 'atf-run/config_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/config_test.cpp'; fi`
+@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`
-atf-run/atf_run_config_test-config.o: atf-run/config.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_config_test-config.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_config_test-config.Tpo -c -o atf-run/atf_run_config_test-config.o `test -f 'atf-run/config.cpp' || echo '$(srcdir)/'`atf-run/config.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_config_test-config.Tpo atf-run/$(DEPDIR)/atf_run_config_test-config.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/config.cpp' object='atf-run/atf_run_config_test-config.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_config_test-config.o `test -f 'atf-run/config.cpp' || echo '$(srcdir)/'`atf-run/config.cpp
+@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
-atf-run/atf_run_config_test-config.obj: atf-run/config.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_config_test-config.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_config_test-config.Tpo -c -o atf-run/atf_run_config_test-config.obj `if test -f 'atf-run/config.cpp'; then $(CYGPATH_W) 'atf-run/config.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/config.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_config_test-config.Tpo atf-run/$(DEPDIR)/atf_run_config_test-config.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/config.cpp' object='atf-run/atf_run_config_test-config.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_config_test-config.obj `if test -f 'atf-run/config.cpp'; then $(CYGPATH_W) 'atf-run/config.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/config.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-test_program_test.o: atf-run/test_program_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-test_program_test.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Tpo -c -o atf-run/atf_run_test_program_test-test_program_test.o `test -f 'atf-run/test_program_test.cpp' || echo '$(srcdir)/'`atf-run/test_program_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/test_program_test.cpp' object='atf-run/atf_run_test_program_test-test_program_test.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-test_program_test.o `test -f 'atf-run/test_program_test.cpp' || echo '$(srcdir)/'`atf-run/test_program_test.cpp
+@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
-atf-run/atf_run_test_program_test-test_program_test.obj: atf-run/test_program_test.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-test_program_test.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Tpo -c -o atf-run/atf_run_test_program_test-test_program_test.obj `if test -f 'atf-run/test_program_test.cpp'; then $(CYGPATH_W) 'atf-run/test_program_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/test_program_test.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-test_program_test.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/test_program_test.cpp' object='atf-run/atf_run_test_program_test-test_program_test.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-test_program_test.obj `if test -f 'atf-run/test_program_test.cpp'; then $(CYGPATH_W) 'atf-run/test_program_test.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/test_program_test.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-fs.o: atf-run/fs.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-fs.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Tpo -c -o atf-run/atf_run_test_program_test-fs.o `test -f 'atf-run/fs.cpp' || echo '$(srcdir)/'`atf-run/fs.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/fs.cpp' object='atf-run/atf_run_test_program_test-fs.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-fs.o `test -f 'atf-run/fs.cpp' || echo '$(srcdir)/'`atf-run/fs.cpp
+@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
-atf-run/atf_run_test_program_test-fs.obj: atf-run/fs.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-fs.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Tpo -c -o atf-run/atf_run_test_program_test-fs.obj `if test -f 'atf-run/fs.cpp'; then $(CYGPATH_W) 'atf-run/fs.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/fs.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-fs.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/fs.cpp' object='atf-run/atf_run_test_program_test-fs.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-fs.obj `if test -f 'atf-run/fs.cpp'; then $(CYGPATH_W) 'atf-run/fs.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/fs.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-io.o: atf-run/io.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-io.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-io.Tpo -c -o atf-run/atf_run_test_program_test-io.o `test -f 'atf-run/io.cpp' || echo '$(srcdir)/'`atf-run/io.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-io.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-io.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/io.cpp' object='atf-run/atf_run_test_program_test-io.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-io.o `test -f 'atf-run/io.cpp' || echo '$(srcdir)/'`atf-run/io.cpp
+@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
-atf-run/atf_run_test_program_test-io.obj: atf-run/io.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-io.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-io.Tpo -c -o atf-run/atf_run_test_program_test-io.obj `if test -f 'atf-run/io.cpp'; then $(CYGPATH_W) 'atf-run/io.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/io.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-io.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-io.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/io.cpp' object='atf-run/atf_run_test_program_test-io.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-io.obj `if test -f 'atf-run/io.cpp'; then $(CYGPATH_W) 'atf-run/io.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/io.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-requirements.o: atf-run/requirements.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-requirements.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Tpo -c -o atf-run/atf_run_test_program_test-requirements.o `test -f 'atf-run/requirements.cpp' || echo '$(srcdir)/'`atf-run/requirements.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/requirements.cpp' object='atf-run/atf_run_test_program_test-requirements.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-requirements.o `test -f 'atf-run/requirements.cpp' || echo '$(srcdir)/'`atf-run/requirements.cpp
+@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
-atf-run/atf_run_test_program_test-requirements.obj: atf-run/requirements.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-requirements.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Tpo -c -o atf-run/atf_run_test_program_test-requirements.obj `if test -f 'atf-run/requirements.cpp'; then $(CYGPATH_W) 'atf-run/requirements.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/requirements.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-requirements.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/requirements.cpp' object='atf-run/atf_run_test_program_test-requirements.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-requirements.obj `if test -f 'atf-run/requirements.cpp'; then $(CYGPATH_W) 'atf-run/requirements.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/requirements.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-signals.o: atf-run/signals.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-signals.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Tpo -c -o atf-run/atf_run_test_program_test-signals.o `test -f 'atf-run/signals.cpp' || echo '$(srcdir)/'`atf-run/signals.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/signals.cpp' object='atf-run/atf_run_test_program_test-signals.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-signals.o `test -f 'atf-run/signals.cpp' || echo '$(srcdir)/'`atf-run/signals.cpp
+@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
-atf-run/atf_run_test_program_test-signals.obj: atf-run/signals.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-signals.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Tpo -c -o atf-run/atf_run_test_program_test-signals.obj `if test -f 'atf-run/signals.cpp'; then $(CYGPATH_W) 'atf-run/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/signals.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-signals.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/signals.cpp' object='atf-run/atf_run_test_program_test-signals.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-signals.obj `if test -f 'atf-run/signals.cpp'; then $(CYGPATH_W) 'atf-run/signals.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/signals.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-test-program.o: atf-run/test-program.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-test-program.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Tpo -c -o atf-run/atf_run_test_program_test-test-program.o `test -f 'atf-run/test-program.cpp' || echo '$(srcdir)/'`atf-run/test-program.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/test-program.cpp' object='atf-run/atf_run_test_program_test-test-program.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-test-program.o `test -f 'atf-run/test-program.cpp' || echo '$(srcdir)/'`atf-run/test-program.cpp
+@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
-atf-run/atf_run_test_program_test-test-program.obj: atf-run/test-program.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-test-program.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Tpo -c -o atf-run/atf_run_test_program_test-test-program.obj `if test -f 'atf-run/test-program.cpp'; then $(CYGPATH_W) 'atf-run/test-program.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/test-program.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-test-program.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/test-program.cpp' object='atf-run/atf_run_test_program_test-test-program.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-test-program.obj `if test -f 'atf-run/test-program.cpp'; then $(CYGPATH_W) 'atf-run/test-program.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/test-program.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-timer.o: atf-run/timer.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-timer.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Tpo -c -o atf-run/atf_run_test_program_test-timer.o `test -f 'atf-run/timer.cpp' || echo '$(srcdir)/'`atf-run/timer.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/timer.cpp' object='atf-run/atf_run_test_program_test-timer.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-timer.o `test -f 'atf-run/timer.cpp' || echo '$(srcdir)/'`atf-run/timer.cpp
+@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
-atf-run/atf_run_test_program_test-timer.obj: atf-run/timer.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-timer.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Tpo -c -o atf-run/atf_run_test_program_test-timer.obj `if test -f 'atf-run/timer.cpp'; then $(CYGPATH_W) 'atf-run/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/timer.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-timer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/timer.cpp' object='atf-run/atf_run_test_program_test-timer.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-timer.obj `if test -f 'atf-run/timer.cpp'; then $(CYGPATH_W) 'atf-run/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/timer.cpp'; fi`
+@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`
-atf-run/atf_run_test_program_test-user.o: atf-run/user.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-user.o -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-user.Tpo -c -o atf-run/atf_run_test_program_test-user.o `test -f 'atf-run/user.cpp' || echo '$(srcdir)/'`atf-run/user.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-user.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-user.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/user.cpp' object='atf-run/atf_run_test_program_test-user.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-user.o `test -f 'atf-run/user.cpp' || echo '$(srcdir)/'`atf-run/user.cpp
+@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
-atf-run/atf_run_test_program_test-user.obj: atf-run/user.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-run/atf_run_test_program_test-user.obj -MD -MP -MF atf-run/$(DEPDIR)/atf_run_test_program_test-user.Tpo -c -o atf-run/atf_run_test_program_test-user.obj `if test -f 'atf-run/user.cpp'; then $(CYGPATH_W) 'atf-run/user.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/user.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-run/$(DEPDIR)/atf_run_test_program_test-user.Tpo atf-run/$(DEPDIR)/atf_run_test_program_test-user.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-run/user.cpp' object='atf-run/atf_run_test_program_test-user.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_run_test_program_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-run/atf_run_test_program_test-user.obj `if test -f 'atf-run/user.cpp'; then $(CYGPATH_W) 'atf-run/user.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-run/user.cpp'; fi`
+@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`
-atf-version/atf_version_atf_version-atf-version.o: atf-version/atf-version.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_version_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-version/atf_version_atf_version-atf-version.o -MD -MP -MF atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.Tpo -c -o atf-version/atf_version_atf_version-atf-version.o `test -f 'atf-version/atf-version.cpp' || echo '$(srcdir)/'`atf-version/atf-version.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.Tpo atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-version/atf-version.cpp' object='atf-version/atf_version_atf_version-atf-version.o' libtool=no @AMDEPBACKSLASH@
+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) $(atf_version_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-version/atf_version_atf_version-atf-version.o `test -f 'atf-version/atf-version.cpp' || echo '$(srcdir)/'`atf-version/atf-version.cpp
+@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
-atf-version/atf_version_atf_version-atf-version.obj: atf-version/atf-version.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(atf_version_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT atf-version/atf_version_atf_version-atf-version.obj -MD -MP -MF atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.Tpo -c -o atf-version/atf_version_atf_version-atf-version.obj `if test -f 'atf-version/atf-version.cpp'; then $(CYGPATH_W) 'atf-version/atf-version.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-version/atf-version.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.Tpo atf-version/$(DEPDIR)/atf_version_atf_version-atf-version.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='atf-version/atf-version.cpp' object='atf-version/atf_version_atf_version-atf-version.obj' libtool=no @AMDEPBACKSLASH@
+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) $(atf_version_atf_version_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o atf-version/atf_version_atf_version-atf-version.obj `if test -f 'atf-version/atf-version.cpp'; then $(CYGPATH_W) 'atf-version/atf-version.cpp'; else $(CYGPATH_W) '$(srcdir)/atf-version/atf-version.cpp'; fi`
+@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
@@ -4016,13 +4181,10 @@ clean-libtool:
-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-config/.libs atf-config/_libs
- -rm -rf atf-report/.libs atf-report/_libs
- -rm -rf atf-run/.libs atf-run/_libs
-rm -rf atf-sh/.libs atf-sh/_libs
- -rm -rf atf-version/.libs atf-version/_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
@@ -4556,69 +4718,6 @@ uninstall-tests_atf_c_detailDATA:
@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_configDATA: $(tests_atf_config_DATA)
- @$(NORMAL_INSTALL)
- @list='$(tests_atf_config_DATA)'; test -n "$(tests_atf_configdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_configdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_configdir)" || 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_configdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_configdir)" || exit $$?; \
- done
-
-uninstall-tests_atf_configDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(tests_atf_config_DATA)'; test -n "$(tests_atf_configdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(tests_atf_configdir)'; $(am__uninstall_files_from_dir)
-install-tests_atf_reportDATA: $(tests_atf_report_DATA)
- @$(NORMAL_INSTALL)
- @list='$(tests_atf_report_DATA)'; test -n "$(tests_atf_reportdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_reportdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_reportdir)" || 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_reportdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_reportdir)" || exit $$?; \
- done
-
-uninstall-tests_atf_reportDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(tests_atf_report_DATA)'; test -n "$(tests_atf_reportdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(tests_atf_reportdir)'; $(am__uninstall_files_from_dir)
-install-tests_atf_runDATA: $(tests_atf_run_DATA)
- @$(NORMAL_INSTALL)
- @list='$(tests_atf_run_DATA)'; test -n "$(tests_atf_rundir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tests_atf_rundir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tests_atf_rundir)" || 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_rundir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(tests_atf_rundir)" || exit $$?; \
- done
-
-uninstall-tests_atf_runDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(tests_atf_run_DATA)'; test -n "$(tests_atf_rundir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(tests_atf_rundir)'; $(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=; \
@@ -4661,6 +4760,27 @@ uninstall-tests_test_programsDATA:
@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=; \
@@ -4980,12 +5100,12 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) \
- $(HEADERS) bconfig.h
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) \
+ $(MANS) $(DATA) $(HEADERS) bconfig.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_atf_reportdir)" "$(DESTDIR)$(tests_atf_rundir)" "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(tests_atf_cdir)" "$(DESTDIR)$(tests_atf_c__dir)" "$(DESTDIR)$(tests_atf_configdir)" "$(DESTDIR)$(tests_atf_reportdir)" "$(DESTDIR)$(tests_atf_rundir)" "$(DESTDIR)$(tests_atf_shdir)" "$(DESTDIR)$(tests_test_programsdir)" "$(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_configdir)" "$(DESTDIR)$(tests_atf_reportdir)" "$(DESTDIR)$(tests_atf_rundir)" "$(DESTDIR)$(tests_atf_shdir)" "$(DESTDIR)$(tests_test_programsdir)" "$(DESTDIR)$(xsldir)" "$(DESTDIR)$(atf_cdir)" "$(DESTDIR)$(atf_c__dir)" "$(DESTDIR)$(includedir)"; do \
+ 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)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: $(BUILT_SOURCES)
@@ -5024,20 +5144,14 @@ distclean-generic:
-rm -f atf-c/$(am__dirstamp)
-rm -f atf-c/detail/$(DEPDIR)/$(am__dirstamp)
-rm -f atf-c/detail/$(am__dirstamp)
- -rm -f atf-config/$(DEPDIR)/$(am__dirstamp)
- -rm -f atf-config/$(am__dirstamp)
- -rm -f atf-report/$(DEPDIR)/$(am__dirstamp)
- -rm -f atf-report/$(am__dirstamp)
- -rm -f atf-run/$(DEPDIR)/$(am__dirstamp)
- -rm -f atf-run/$(am__dirstamp)
-rm -f atf-sh/$(DEPDIR)/$(am__dirstamp)
-rm -f atf-sh/$(am__dirstamp)
- -rm -f atf-version/$(DEPDIR)/$(am__dirstamp)
- -rm -f atf-version/$(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:
@@ -5048,15 +5162,16 @@ clean: clean-am
clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
clean-libLTLIBRARIES clean-libexecPROGRAMS clean-libtool \
- clean-noinstLTLIBRARIES clean-tests_atf_cPROGRAMS \
- clean-tests_atf_c__PROGRAMS clean-tests_atf_c___detailPROGRAMS \
+ 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_atf_reportPROGRAMS clean-tests_atf_runPROGRAMS \
- clean-tests_test_programsPROGRAMS mostlyclean-am
+ 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-config/$(DEPDIR) atf-report/$(DEPDIR) atf-run/$(DEPDIR) atf-sh/$(DEPDIR) atf-version/$(DEPDIR) bootstrap/$(DEPDIR) test-programs/$(DEPDIR)
+ -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
@@ -5085,15 +5200,12 @@ install-data-am: install-atf_aclocalDATA install-atf_cHEADERS \
install-tests_atf_c___detailDATA \
install-tests_atf_c___detailPROGRAMS \
install-tests_atf_c_detailDATA \
- install-tests_atf_c_detailPROGRAMS \
- install-tests_atf_configDATA install-tests_atf_configSCRIPTS \
- install-tests_atf_reportDATA install-tests_atf_reportPROGRAMS \
- install-tests_atf_reportSCRIPTS install-tests_atf_runDATA \
- install-tests_atf_runPROGRAMS install-tests_atf_runSCRIPTS \
- install-tests_atf_shDATA install-tests_atf_shSCRIPTS \
- install-tests_test_programsDATA \
+ 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-xslDATA
+ install-tests_test_programsSCRIPTS install-tests_toolsDATA \
+ install-tests_toolsPROGRAMS install-tests_toolsSCRIPTS \
+ install-xslDATA
install-dvi: install-dvi-am
@@ -5126,7 +5238,7 @@ 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-config/$(DEPDIR) atf-report/$(DEPDIR) atf-run/$(DEPDIR) atf-sh/$(DEPDIR) atf-version/$(DEPDIR) bootstrap/$(DEPDIR) test-programs/$(DEPDIR)
+ -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
@@ -5158,16 +5270,12 @@ uninstall-am: uninstall-atf_aclocalDATA uninstall-atf_cHEADERS \
uninstall-tests_atf_c___detailPROGRAMS \
uninstall-tests_atf_c_detailDATA \
uninstall-tests_atf_c_detailPROGRAMS \
- uninstall-tests_atf_configDATA \
- uninstall-tests_atf_configSCRIPTS \
- uninstall-tests_atf_reportDATA \
- uninstall-tests_atf_reportPROGRAMS \
- uninstall-tests_atf_reportSCRIPTS uninstall-tests_atf_runDATA \
- uninstall-tests_atf_runPROGRAMS uninstall-tests_atf_runSCRIPTS \
uninstall-tests_atf_shDATA uninstall-tests_atf_shSCRIPTS \
uninstall-tests_test_programsDATA \
uninstall-tests_test_programsPROGRAMS \
- uninstall-tests_test_programsSCRIPTS uninstall-xslDATA
+ 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
@@ -5177,75 +5285,67 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 \
.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-noinstLTLIBRARIES \
+ 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_atf_reportPROGRAMS clean-tests_atf_runPROGRAMS \
- clean-tests_test_programsPROGRAMS 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-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-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 \
+ 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-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-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_configDATA install-tests_atf_configSCRIPTS \
- install-tests_atf_reportDATA install-tests_atf_reportPROGRAMS \
- install-tests_atf_reportSCRIPTS install-tests_atf_runDATA \
- install-tests_atf_runPROGRAMS install-tests_atf_runSCRIPTS \
- install-tests_atf_shDATA install-tests_atf_shSCRIPTS \
- install-tests_test_programsDATA \
+ 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-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-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 \
+ 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-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_configDATA \
- uninstall-tests_atf_configSCRIPTS \
- uninstall-tests_atf_reportDATA \
- uninstall-tests_atf_reportPROGRAMS \
- uninstall-tests_atf_reportSCRIPTS uninstall-tests_atf_runDATA \
- uninstall-tests_atf_runPROGRAMS uninstall-tests_atf_runSCRIPTS \
uninstall-tests_atf_shDATA uninstall-tests_atf_shSCRIPTS \
uninstall-tests_test_programsDATA \
uninstall-tests_test_programsPROGRAMS \
- uninstall-tests_test_programsSCRIPTS uninstall-xslDATA
+ uninstall-tests_test_programsSCRIPTS uninstall-tests_toolsDATA \
+ uninstall-tests_toolsPROGRAMS uninstall-tests_toolsSCRIPTS \
+ uninstall-xslDATA
dist-hook: check-style
@@ -5253,10 +5353,6 @@ check-style:
$(srcdir)/admin/check-style.sh
# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
-
-# XXX For some reason, the nodist line above does not work as expected.
-# Work this problem around.
-dist-hook: kill-defs-h
kill-defs-h:
rm -f $(distdir)/atf-c/defs.h
atf-c/atf-c.pc: $(srcdir)/atf-c/atf-c.pc.in Makefile
@@ -5371,13 +5467,6 @@ installcheck-bootstrap: @target_srcdir@bootstrap/testsuite check
# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
-@ENABLE_TOOLS_TRUE@doc/atf.7: $(srcdir)/doc/atf.7.in
-@ENABLE_TOOLS_TRUE@ test -d doc || mkdir -p doc
-@ENABLE_TOOLS_TRUE@ sed -e 's#__DOCDIR__#$(docdir)#g' \
-@ENABLE_TOOLS_TRUE@ -e 's#__TESTSDIR__#$(testsdir)#g' \
-@ENABLE_TOOLS_TRUE@ <$(srcdir)/doc/atf.7.in >doc/atf.7.tmp
-@ENABLE_TOOLS_TRUE@ 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
test -d test-programs || mkdir -p test-programs
@@ -5405,34 +5494,37 @@ test-programs/srcdir_test: $(srcdir)/test-programs/srcdir_test.sh
dst="test-programs/srcdir_test"; $(BUILD_SH_TP)
# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
-@ENABLE_TOOLS_TRUE@atf-report/integration_test: $(srcdir)/atf-report/integration_test.sh
-@ENABLE_TOOLS_TRUE@ test -d atf-report || mkdir -p atf-report
-@ENABLE_TOOLS_TRUE@ @src="$(srcdir)/atf-report/integration_test.sh"; \
-@ENABLE_TOOLS_TRUE@ dst="atf-report/integration_test"; $(BUILD_SH_TP)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
-@ENABLE_TOOLS_TRUE@atf-config/integration_test: $(srcdir)/atf-config/integration_test.sh
-@ENABLE_TOOLS_TRUE@ test -d atf-config || mkdir -p atf-config
-@ENABLE_TOOLS_TRUE@ @src="$(srcdir)/atf-config/integration_test.sh"; \
-@ENABLE_TOOLS_TRUE@ dst="atf-config/integration_test"; $(BUILD_SH_TP)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
-@ENABLE_TOOLS_TRUE@atf-run/integration_test: $(srcdir)/atf-run/integration_test.sh
-@ENABLE_TOOLS_TRUE@ test -d atf-run || mkdir -p atf-run
-@ENABLE_TOOLS_TRUE@ @src="$(srcdir)/atf-run/integration_test.sh"; \
-@ENABLE_TOOLS_TRUE@ dst="atf-run/integration_test"; $(BUILD_SH_TP)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
-@ENABLE_TOOLS_TRUE@atf-version/revision.h: atf-version/revision.h.stamp
-@ENABLE_TOOLS_TRUE@ @test -d atf-version || mkdir -p atf-version
-@ENABLE_TOOLS_TRUE@ @cmp -s atf-version/revision.h atf-version/revision.h.stamp || \
-@ENABLE_TOOLS_TRUE@ cp -p atf-version/revision.h.stamp atf-version/revision.h
-@ENABLE_TOOLS_TRUE@atf-version/revision.h.stamp:
-@ENABLE_TOOLS_TRUE@ @test -d atf-version || mkdir -p atf-version
-@ENABLE_TOOLS_TRUE@ @$(top_srcdir)/atf-version/generate-revision.sh \
-@ENABLE_TOOLS_TRUE@ -g "$(GIT)" -r $(top_srcdir) -o atf-version/revision.h.stamp \
+@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; \
@@ -5453,12 +5545,6 @@ test-programs/srcdir_test: $(srcdir)/test-programs/srcdir_test.sh
@HAVE_KYUA_TRUE@ cd $(pkgtestsdir) && $(TESTS_ENVIRONMENT) $(KYUA) test
installcheck-local: $(INSTALLCHECK_TARGETS)
-
-#
-# Custom targets.
-#
-
-dist-hook: forbid-dist
@ENABLE_TOOLS_TRUE@forbid-dist:
@ENABLE_TOOLS_TRUE@ @true
@ENABLE_TOOLS_FALSE@forbid-dist:
@@ -5474,6 +5560,8 @@ release-test:
.PHONY: $(PHONY_TARGETS)
+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.
diff --git a/NEWS b/NEWS
index eca87ee..6b3be17 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,38 @@ Major changes between releases Automated Testing Framework
===========================================================================
+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
***********************
diff --git a/aclocal.m4 b/aclocal.m4
index 86012f5..399c24d 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -56,6 +56,66 @@ 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-2013 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-2013 Free Software Foundation, Inc.
@@ -1159,6 +1219,5 @@ 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-sanity.m4])
m4_include([m4/module-signals.m4])
m4_include([m4/runtime-tool.m4])
diff --git a/admin/ar-lib b/admin/ar-lib
new file mode 100755
index 0000000..fe2301e
--- /dev/null
+++ b/admin/ar-lib
@@ -0,0 +1,270 @@
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+# 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 <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# 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 <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "$me, version $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test $# -lt 3; then
+ func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+ if test $# -lt 2; then
+ func_error "you must specify a program, an action and an archive"
+ fi
+ case $1 in
+ -lib | -LIB \
+ | -ltcg | -LTCG \
+ | -machine* | -MACHINE* \
+ | -subsystem* | -SUBSYSTEM* \
+ | -verbose | -VERBOSE \
+ | -wx* | -WX* )
+ AR="$AR $1"
+ shift
+ ;;
+ *)
+ action=$1
+ shift
+ break
+ ;;
+ esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+ case $action in
+ d*) delete=yes ;;
+ x*) extract=yes ;;
+ t*) list=yes ;;
+ q*) quick=yes ;;
+ r*) replace=yes ;;
+ s*) index=yes ;;
+ S*) ;; # the index is always updated implicitly
+ c*) create=yes ;;
+ u*) ;; # TODO: don't ignore the update modifier
+ v*) ;; # TODO: don't ignore the verbose modifier
+ *)
+ func_error "unknown action specified"
+ ;;
+ esac
+ action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+ yes,* | ,yes)
+ ;;
+ yesyes*)
+ func_error "more than one action specified"
+ ;;
+ *)
+ func_error "no action specified"
+ ;;
+esac
+
+if test -n "$delete"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -REMOVE "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+
+elif test -n "$extract"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ if test $# -gt 0; then
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -EXTRACT "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+ else
+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+ do
+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+ done
+ fi
+
+elif test -n "$quick$replace"; then
+ if test ! -f "$orig_archive"; then
+ if test -z "$create"; then
+ echo "$me: creating $orig_archive"
+ fi
+ orig_archive=
+ else
+ orig_archive=$archive
+ fi
+
+ for member
+ do
+ case $1 in
+ @*)
+ func_file_conv "${1#@}"
+ set x "$@" "@$file"
+ ;;
+ *)
+ func_file_conv "$1"
+ set x "$@" "$file"
+ ;;
+ esac
+ shift
+ shift
+ done
+
+ if test -n "$orig_archive"; then
+ $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+ else
+ $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+ fi
+
+elif test -n "$list"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ $AR -NOLOGO -LIST "$archive" || exit $?
+fi
diff --git a/admin/check-style.sh b/admin/check-style.sh
index a4f2410..c43322c 100755
--- a/admin/check-style.sh
+++ b/admin/check-style.sh
@@ -102,12 +102,13 @@ find_sources() {
\! -name "aclocal.m4" \
\! -name "bconfig.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/
}
#
diff --git a/atf-c++/Makefile.am.inc b/atf-c++/Makefile.am.inc
index 2d96802..cfe7069 100644
--- a/atf-c++/Makefile.am.inc
+++ b/atf-c++/Makefile.am.inc
@@ -38,19 +38,17 @@ libatf_c___la_SOURCES = atf-c++/build.cpp \
atf-c++/config.cpp \
atf-c++/config.hpp \
atf-c++/macros.hpp \
- atf-c++/noncopyable.hpp \
atf-c++/tests.cpp \
atf-c++/tests.hpp \
atf-c++/utils.cpp \
atf-c++/utils.hpp
-libatf_c___la_LDFLAGS = -version-info 0:0:0
+libatf_c___la_LDFLAGS = -version-info 1:0:0
include_HEADERS += atf-c++.hpp
atf_c___HEADERS = atf-c++/build.hpp \
atf-c++/check.hpp \
atf-c++/config.hpp \
atf-c++/macros.hpp \
- atf-c++/noncopyable.hpp \
atf-c++/tests.hpp \
atf-c++/utils.hpp
atf_c__dir = $(includedir)/atf-c++
diff --git a/atf-c++/check.hpp b/atf-c++/check.hpp
index 0623529..f838efb 100644
--- a/atf-c++/check.hpp
+++ b/atf-c++/check.hpp
@@ -39,8 +39,6 @@ extern "C" {
#include <string>
#include <vector>
-#include <atf-c++/noncopyable.hpp>
-
namespace atf {
namespace process {
@@ -60,7 +58,11 @@ namespace check {
//! of executing arbitrary command and manages files containing
//! its output.
//!
-class check_result : noncopyable {
+class check_result {
+ // Non-copyable.
+ check_result(const check_result&);
+ check_result& operator=(const check_result&);
+
//!
//! \brief Internal representation of a result.
//!
diff --git a/atf-c++/check_test.cpp b/atf-c++/check_test.cpp
index 8e5983f..a92511c 100644
--- a/atf-c++/check_test.cpp
+++ b/atf-c++/check_test.cpp
@@ -61,7 +61,7 @@ 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).str());
+ argv.push_back(get_process_helpers_path(*tc, false).str());
argv.push_back(helper_name);
std::cout << "Executing " << argv[0] << " " << argv[1] << "\n";
@@ -74,7 +74,7 @@ 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).str());
+ 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] << " "
diff --git a/atf-c++/config.cpp b/atf-c++/config.cpp
index 7b7d641..1890ac0 100644
--- a/atf-c++/config.cpp
+++ b/atf-c++/config.cpp
@@ -52,18 +52,14 @@ init_variables(void)
{
PRE(m_variables.empty());
- m_variables["atf_arch"] = atf_config_get("atf_arch");
m_variables["atf_build_cc"] = atf_config_get("atf_build_cc");
m_variables["atf_build_cflags"] = atf_config_get("atf_build_cflags");
m_variables["atf_build_cpp"] = atf_config_get("atf_build_cpp");
m_variables["atf_build_cppflags"] = atf_config_get("atf_build_cppflags");
m_variables["atf_build_cxx"] = atf_config_get("atf_build_cxx");
m_variables["atf_build_cxxflags"] = atf_config_get("atf_build_cxxflags");
- m_variables["atf_confdir"] = atf_config_get("atf_confdir");
m_variables["atf_includedir"] = atf_config_get("atf_includedir");
- m_variables["atf_libdir"] = atf_config_get("atf_libdir");
m_variables["atf_libexecdir"] = atf_config_get("atf_libexecdir");
- m_variables["atf_machine"] = atf_config_get("atf_machine");
m_variables["atf_pkgdatadir"] = atf_config_get("atf_pkgdatadir");
m_variables["atf_shell"] = atf_config_get("atf_shell");
m_variables["atf_workdir"] = atf_config_get("atf_workdir");
diff --git a/atf-c++/config_test.cpp b/atf-c++/config_test.cpp
index a3cd2bb..78e1584 100644
--- a/atf-c++/config_test.cpp
+++ b/atf-c++/config_test.cpp
@@ -44,18 +44,14 @@ static struct varnames {
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 },
diff --git a/atf-c++/detail/Atffile b/atf-c++/detail/Atffile
index 2d53514..75adc69 100644
--- a/atf-c++/detail/Atffile
+++ b/atf-c++/detail/Atffile
@@ -6,9 +6,6 @@ tp: application_test
tp: auto_array_test
tp: env_test
tp: exceptions_test
-tp: expand_test
tp: fs_test
-tp: parser_test
tp: sanity_test
tp: text_test
-tp: ui_test
diff --git a/atf-c++/detail/Kyuafile b/atf-c++/detail/Kyuafile
index fd0d7ab..03388ba 100644
--- a/atf-c++/detail/Kyuafile
+++ b/atf-c++/detail/Kyuafile
@@ -6,9 +6,7 @@ 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="expand_test"}
atf_test_program{name="fs_test"}
-atf_test_program{name="parser_test"}
+atf_test_program{name="process_test"}
atf_test_program{name="sanity_test"}
atf_test_program{name="text_test"}
-atf_test_program{name="ui_test"}
diff --git a/atf-c++/detail/Makefile.am.inc b/atf-c++/detail/Makefile.am.inc
index 0a7bd15..ce8701f 100644
--- a/atf-c++/detail/Makefile.am.inc
+++ b/atf-c++/detail/Makefile.am.inc
@@ -34,19 +34,13 @@ libatf_c___la_SOURCES += atf-c++/detail/application.cpp \
atf-c++/detail/env.hpp \
atf-c++/detail/exceptions.cpp \
atf-c++/detail/exceptions.hpp \
- atf-c++/detail/expand.cpp \
- atf-c++/detail/expand.hpp \
atf-c++/detail/fs.cpp \
atf-c++/detail/fs.hpp \
- atf-c++/detail/parser.cpp \
- atf-c++/detail/parser.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 \
- atf-c++/detail/ui.cpp \
- atf-c++/detail/ui.hpp
+ atf-c++/detail/text.hpp
tests_atf_c___detail_DATA = atf-c++/detail/Atffile \
atf-c++/detail/Kyuafile
@@ -73,18 +67,10 @@ 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/expand_test
-atf_c___detail_expand_test_SOURCES = atf-c++/detail/expand_test.cpp
-atf_c___detail_expand_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/parser_test
-atf_c___detail_parser_test_SOURCES = atf-c++/detail/parser_test.cpp
-atf_c___detail_parser_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)
@@ -97,8 +83,7 @@ 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/ui_test
-atf_c___detail_ui_test_SOURCES = atf-c++/detail/ui_test.cpp
-atf_c___detail_ui_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/atf-c++/detail/application.cpp b/atf-c++/detail/application.cpp
index 878b010..454bc64 100644
--- a/atf-c++/detail/application.cpp
+++ b/atf-c++/detail/application.cpp
@@ -47,7 +47,6 @@ extern "C" {
#include "application.hpp"
#include "sanity.hpp"
-#include "ui.hpp"
#if !defined(HAVE_VSNPRINTF_IN_STD)
namespace std {
@@ -106,17 +105,12 @@ impl::option::operator<(const impl::option& o)
}
impl::app::app(const std::string& description,
- const std::string& manpage,
- const std::string& global_manpage,
- const bool use_ui) :
- m_hflag(false),
+ const std::string& manpage) :
m_argc(-1),
m_argv(NULL),
m_prog_name(NULL),
m_description(description),
- m_manpage(manpage),
- m_global_manpage(global_manpage),
- m_use_ui(use_ui)
+ m_manpage(manpage)
{
}
@@ -133,11 +127,7 @@ impl::app::inited(void)
impl::app::options_set
impl::app::options(void)
{
- options_set opts = specific_options();
- if (m_use_ui) {
- opts.insert(option('h', "", "Shows this help message"));
- }
- return opts;
+ return specific_options();
}
std::string
@@ -187,11 +177,6 @@ impl::app::process_options(void)
::opterr = 0;
while ((ch = ::getopt(m_argc, m_argv, optstr.c_str())) != -1) {
switch (ch) {
- case 'h':
- INV(m_use_ui);
- m_hflag = true;
- break;
-
case ':':
throw usage_error("Option -%c requires an argument.",
::optopt);
@@ -214,51 +199,6 @@ impl::app::process_options(void)
#endif
}
-void
-impl::app::usage(std::ostream& os)
-{
- PRE(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();
- INV(!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)
{
@@ -290,55 +230,22 @@ impl::app::run(int argc, char* const* argv)
int errcode;
try {
- int oldargc = m_argc;
-
process_options();
-
- if (m_hflag) {
- INV(m_use_ui);
- if (oldargc != 2)
- throw usage_error("-h must be given alone.");
-
- usage(std::cout);
- errcode = EXIT_SUCCESS;
- } else
- errcode = main();
+ errcode = main();
} catch (const usage_error& e) {
- if (m_use_ui) {
- 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";
- } else {
- std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
- std::cerr << m_prog_name << ": See " << m_manpage << " for usage "
- "details.\n";
- }
+ 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) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, std::string(e.what()))
- << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
- }
+ std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
errcode = EXIT_FAILURE;
} catch (const std::exception& e) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, std::string("Caught "
- "unexpected error: ") + e.what() + "\n" + bug) << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: Caught unexpected error: "
- << e.what() << "\n";
- }
+ std::cerr << m_prog_name << ": ERROR: Caught unexpected error: "
+ << e.what() << "\n";
errcode = EXIT_FAILURE;
} catch (...) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, std::string("Caught "
- "unknown error\n") + bug) << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: Caught unknown error\n";
- }
+ std::cerr << m_prog_name << ": ERROR: Caught unknown error\n";
errcode = EXIT_FAILURE;
}
return errcode;
diff --git a/atf-c++/detail/application.hpp b/atf-c++/detail/application.hpp
index 9d1f242..d12b267 100644
--- a/atf-c++/detail/application.hpp
+++ b/atf-c++/detail/application.hpp
@@ -74,8 +74,6 @@ public:
// ------------------------------------------------------------------------
class app {
- bool m_hflag;
-
void process_options(void);
void usage(std::ostream&);
@@ -90,8 +88,7 @@ protected:
const char* m_argv0;
const char* m_prog_name;
std::string m_description;
- std::string m_manpage, m_global_manpage;
- const bool m_use_ui;
+ std::string m_manpage;
options_set options(void);
@@ -102,8 +99,7 @@ protected:
virtual int main(void) = 0;
public:
- app(const std::string&, const std::string&, const std::string&,
- bool = true);
+ app(const std::string&, const std::string&);
virtual ~app(void);
int run(int, char* const*);
diff --git a/atf-c++/detail/application_test.cpp b/atf-c++/detail/application_test.cpp
index 2a788bf..4664a3a 100644
--- a/atf-c++/detail/application_test.cpp
+++ b/atf-c++/detail/application_test.cpp
@@ -37,7 +37,7 @@ extern "C" {
class getopt_app : public atf::application::app {
public:
- getopt_app(void) : app("description", "manpage", "other") {}
+ getopt_app(void) : app("description", "manpage") {}
int main(void)
{
diff --git a/atf-c++/detail/exceptions.hpp b/atf-c++/detail/exceptions.hpp
index f655a84..9bda62b 100644
--- a/atf-c++/detail/exceptions.hpp
+++ b/atf-c++/detail/exceptions.hpp
@@ -39,47 +39,6 @@ struct atf_error;
namespace atf {
-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;
diff --git a/atf-c++/detail/process_test.cpp b/atf-c++/detail/process_test.cpp
index d13ab94..a40f663 100644
--- a/atf-c++/detail/process_test.cpp
+++ b/atf-c++/detail/process_test.cpp
@@ -64,10 +64,10 @@ 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).leaf_name());
+ argv.push_back(get_process_helpers_path(tc, true).leaf_name());
argv.push_back(helper_name);
- return exec(get_process_helpers_path(tc),
+ return exec(get_process_helpers_path(tc, true),
atf::process::argv_array(argv),
atf::process::stream_inherit(),
atf::process::stream_inherit());
diff --git a/atf-c++/detail/test_helpers.cpp b/atf-c++/detail/test_helpers.cpp
index 191649d..38e6516 100644
--- a/atf-c++/detail/test_helpers.cpp
+++ b/atf-c++/detail/test_helpers.cpp
@@ -40,80 +40,64 @@
#include "process.hpp"
#include "test_helpers.hpp"
-void
-build_check_cxx_o_aux(const atf::fs::path& sfile, const char* failmsg,
- const bool expect_pass)
+// 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::config::get("atf_includedir"));
optargs.push_back("-Wall");
optargs.push_back("-Werror");
- const bool result = atf::check::build_cxx_o(
- sfile.str(), "test.o", atf::process::argv_array(optargs));
- if ((expect_pass && !result) || (!expect_pass && result))
- ATF_FAIL(failmsg);
+ return atf::check::build_cxx_o(sfile, "test.o",
+ atf::process::argv_array(optargs));
}
-void
-build_check_cxx_o(const atf::tests::tc& tc, const char* sfile,
- const char* failmsg, const bool expect_pass)
+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;
- build_check_cxx_o_aux(sfilepath, failmsg, expect_pass);
+ return build_check_cxx_o(sfilepath.c_str());
}
void
header_check(const char *hdrname)
{
- std::ofstream srcfile("test.c");
+ 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";
- build_check_cxx_o_aux(atf::fs::path("test.c"), failmsg.c_str(), true);
+ if (!build_check_cxx_o("test.cpp"))
+ ATF_FAIL(failmsg);
}
atf::fs::path
-get_process_helpers_path(const atf::tests::tc& tc)
-{
- return atf::fs::path(tc.get_config_var("srcdir")) /
- ".." / "atf-c" / "detail" / "process_helpers";
-}
-
-void
-test_helpers_detail::check_equal(const char* expected[],
- const string_vector& actual)
+get_process_helpers_path(const atf::tests::tc& tc, bool is_detail)
{
- 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");
+ 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/atf-c++/detail/test_helpers.hpp b/atf-c++/detail/test_helpers.hpp
index 4a39331..342a07d 100644
--- a/atf-c++/detail/test_helpers.hpp
+++ b/atf-c++/detail/test_helpers.hpp
@@ -40,9 +40,7 @@
#include "../macros.hpp"
#include "../tests.hpp"
-#include "parser.hpp"
#include "process.hpp"
-#include "text.hpp"
#define HEADER_TC(name, hdrname) \
ATF_TEST_CASE(name); \
@@ -64,18 +62,8 @@
} \
ATF_TEST_CASE_BODY(name) \
{ \
- build_check_cxx_o(*this, sfile, failmsg, true); \
- }
-
-#define BUILD_TC_FAIL(name, sfile, descr, failmsg) \
- ATF_TEST_CASE(name); \
- ATF_TEST_CASE_HEAD(name) \
- { \
- set_md_var("descr", descr); \
- } \
- ATF_TEST_CASE_BODY(name) \
- { \
- build_check_cxx_o(*this, sfile, failmsg, false); \
+ if (!build_check_cxx_o_srcdir(*this, sfile)) \
+ ATF_FAIL(failmsg); \
}
namespace atf {
@@ -85,8 +73,9 @@ class tc;
}
void header_check(const char*);
-void build_check_cxx_o(const atf::tests::tc&, const char*, const char*, bool);
-atf::fs::path get_process_helpers_path(const atf::tests::tc&);
+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;
@@ -120,45 +109,3 @@ run_h_tc(atf::tests::vars_map config = atf::tests::vars_map())
const atf::process::status s = c.wait();
ATF_REQUIRE(s.exited());
}
-
-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 atf::parser::parse_errors& pes) {
- for (std::vector< atf::parser::parse_error >::const_iterator iter =
- pes.begin(); iter != pes.end(); iter++)
- errors.push_back(*iter);
- } catch (const atf::parser::parse_error& pe) {
- ATF_FAIL("Raised a lonely parse error: " +
- atf::text::to_string(pe.first) + ": " + pe.second);
- }
-
- return std::make_pair(reader.m_calls, errors);
-}
-
-void check_equal(const char*[], const string_vector&);
-
-} // 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/atf-c++/detail/version_helper.cpp b/atf-c++/detail/version_helper.cpp
new file mode 100644
index 0000000..b1101c9
--- /dev/null
+++ b/atf-c++/detail/version_helper.cpp
@@ -0,0 +1,41 @@
+// 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 "bconfig.h"
+#endif
+
+#include <cstdlib>
+#include <iostream>
+
+int
+main(void)
+{
+ std::cout << PACKAGE_VERSION << "\n";
+ return EXIT_SUCCESS;
+}
diff --git a/atf-c++/macros_test.cpp b/atf-c++/macros_test.cpp
index 67e4106..4113ed0 100644
--- a/atf-c++/macros_test.cpp
+++ b/atf-c++/macros_test.cpp
@@ -763,11 +763,30 @@ BUILD_TC(use, "macros_hpp_test.cpp",
"do not cause syntax errors when used",
"Build of macros_hpp_test.cpp failed; some macros in "
"atf-c++/macros.hpp are broken");
-BUILD_TC_FAIL(detect_unused_tests, "unused_test.cpp",
- "Tests that defining an unused test case raises a warning (and thus "
- "an error)",
- "Build of unused_test.cpp passed; unused test cases are not properly "
- "detected");
+
+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.
diff --git a/atf-c++/pkg_config_test.sh b/atf-c++/pkg_config_test.sh
index d99f010..d0b0656 100644
--- a/atf-c++/pkg_config_test.sh
+++ b/atf-c++/pkg_config_test.sh
@@ -43,10 +43,8 @@ require_pc()
check_version()
{
- atf_check -s eq:0 -o save:stdout -e empty -x \
- "atf-version | head -n 1 | cut -d ' ' -f 4"
- ver1=$(cat stdout)
- echo "Version reported by atf-version: ${ver1}"
+ 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)
@@ -59,7 +57,7 @@ atf_test_case version
version_head()
{
atf_set "descr" "Checks that the version in atf-c++ is correct"
- atf_set "require.progs" "atf-version pkg-config"
+ atf_set "require.progs" "pkg-config"
}
version_body()
{
diff --git a/atf-c++/tests.cpp b/atf-c++/tests.cpp
index 2c351fc..801ed7c 100644
--- a/atf-c++/tests.cpp
+++ b/atf-c++/tests.cpp
@@ -55,7 +55,6 @@ extern "C" {
#include "atf-c/utils.h"
}
-#include "noncopyable.hpp"
#include "tests.hpp"
#include "detail/application.hpp"
@@ -63,7 +62,6 @@ extern "C" {
#include "detail/env.hpp"
#include "detail/exceptions.hpp"
#include "detail/fs.hpp"
-#include "detail/parser.hpp"
#include "detail/sanity.hpp"
#include "detail/text.hpp"
@@ -79,12 +77,7 @@ detail::atf_tp_writer::atf_tp_writer(std::ostream& os) :
m_os(os),
m_is_first(true)
{
- atf::parser::headers_map hm;
- atf::parser::attrs_map ct_attrs;
- ct_attrs["version"] = "1";
- hm["Content-Type"] = atf::parser::header_entry("Content-Type",
- "application/X-atf-tp", ct_attrs);
- atf::parser::write_headers(hm, m_os);
+ m_os << "Content-Type: application/X-atf-tp; version=\"1\"\n\n";
}
void
@@ -129,7 +122,13 @@ detail::match(const std::string& regexp, const std::string& str)
static std::map< atf_tc_t*, impl::tc* > wraps;
static std::map< const atf_tc_t*, const impl::tc* > cwraps;
-struct impl::tc_impl : atf::noncopyable {
+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;
@@ -435,7 +434,7 @@ const char* tp::m_description =
"This is an independent atf test program.";
tp::tp(void (*add_tcs)(tc_vector&)) :
- app(m_description, "atf-test-program(1)", "atf(7)", false),
+ app(m_description, "atf-test-program(1)"),
m_lflag(false),
m_resfile("/dev/stdout"),
m_srcdir("."),
diff --git a/atf-c++/tests.hpp b/atf-c++/tests.hpp
index 22a2a87..4c8ca91 100644
--- a/atf-c++/tests.hpp
+++ b/atf-c++/tests.hpp
@@ -38,8 +38,6 @@ extern "C" {
#include <atf-c/defs.h>
}
-#include <atf-c++/noncopyable.hpp>
-
namespace atf {
namespace tests {
@@ -74,7 +72,11 @@ typedef std::map< std::string, std::string > vars_map;
struct tc_impl;
-class tc : noncopyable {
+class tc {
+ // Non-copyable.
+ tc(const tc&);
+ tc& operator=(const tc&);
+
std::auto_ptr< tc_impl > pimpl;
protected:
diff --git a/atf-c++/tests_test.cpp b/atf-c++/tests_test.cpp
index 63ab2ef..5f19a4e 100644
--- a/atf-c++/tests_test.cpp
+++ b/atf-c++/tests_test.cpp
@@ -40,8 +40,8 @@ extern "C" {
#include "macros.hpp"
-#include "detail/parser.hpp"
#include "detail/test_helpers.hpp"
+#include "detail/text.hpp"
// ------------------------------------------------------------------------
// Tests for the "atf_tp_writer" class.
diff --git a/atf-c/Makefile.am.inc b/atf-c/Makefile.am.inc
index b813ec4..d32e978 100644
--- a/atf-c/Makefile.am.inc
+++ b/atf-c/Makefile.am.inc
@@ -45,28 +45,22 @@ libatf_c_la_SOURCES = atf-c/build.c \
atf-c/utils.c \
atf-c/utils.h
nodist_libatf_c_la_SOURCES = atf-c/defs.h
-libatf_c_la_CPPFLAGS = "-DATF_ARCH=\"$(atf_arch)\"" \
- "-DATF_BUILD_CC=\"$(ATF_BUILD_CC)\"" \
+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_CONFDIR=\"$(atf_confdir)\"" \
"-DATF_INCLUDEDIR=\"$(includedir)\"" \
- "-DATF_LIBDIR=\"$(libdir)\"" \
"-DATF_LIBEXECDIR=\"$(libexecdir)\"" \
- "-DATF_MACHINE=\"$(atf_machine)\"" \
- "-DATF_M4=\"$(ATF_M4)\"" \
"-DATF_PKGDATADIR=\"$(pkgdatadir)\"" \
"-DATF_SHELL=\"$(ATF_SHELL)\"" \
- "-DATF_WORKDIR=\"$(ATF_WORKDIR)\"" \
- -I$(srcdir)/atf-c
+ "-DATF_WORKDIR=\"$(ATF_WORKDIR)\""
libatf_c_la_LDFLAGS = -version-info 0:0:0
# XXX For some reason, the nodist line above does not work as expected.
# Work this problem around.
-dist-hook: kill-defs-h
+DIST_HOOKS += kill-defs-h
kill-defs-h:
rm -f $(distdir)/atf-c/defs.h
diff --git a/atf-c/config.c b/atf-c/config.c
index f1047f0..3c2c8a9 100644
--- a/atf-c/config.c
+++ b/atf-c/config.c
@@ -45,18 +45,14 @@ static struct var {
const char *value;
bool can_be_empty;
} vars[] = {
- { "atf_arch", ATF_ARCH, NULL, false, },
{ "atf_build_cc", ATF_BUILD_CC, NULL, false, },
{ "atf_build_cflags", ATF_BUILD_CFLAGS, NULL, true, },
{ "atf_build_cpp", ATF_BUILD_CPP, NULL, false, },
{ "atf_build_cppflags", ATF_BUILD_CPPFLAGS, NULL, true, },
{ "atf_build_cxx", ATF_BUILD_CXX, NULL, false, },
{ "atf_build_cxxflags", ATF_BUILD_CXXFLAGS, NULL, true, },
- { "atf_confdir", ATF_CONFDIR, NULL, false, },
{ "atf_includedir", ATF_INCLUDEDIR, NULL, false, },
- { "atf_libdir", ATF_LIBDIR, NULL, false, },
{ "atf_libexecdir", ATF_LIBEXECDIR, NULL, false, },
- { "atf_machine", ATF_MACHINE, NULL, false, },
{ "atf_pkgdatadir", ATF_PKGDATADIR, NULL, false, },
{ "atf_shell", ATF_SHELL, NULL, false, },
{ "atf_workdir", ATF_WORKDIR, NULL, false, },
diff --git a/atf-c/config_test.c b/atf-c/config_test.c
index a21d68f..aed1814 100644
--- a/atf-c/config_test.c
+++ b/atf-c/config_test.c
@@ -44,18 +44,14 @@ static struct varnames {
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 },
diff --git a/atf-c/detail/Makefile.am.inc b/atf-c/detail/Makefile.am.inc
index 20a8dc5..8116a24 100644
--- a/atf-c/detail/Makefile.am.inc
+++ b/atf-c/detail/Makefile.am.inc
@@ -96,4 +96,7 @@ 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/atf-c/detail/test_helpers.c b/atf-c/detail/test_helpers.c
index aa64c12..aacbf32 100644
--- a/atf-c/detail/test_helpers.c
+++ b/atf-c/detail/test_helpers.c
@@ -43,10 +43,8 @@
#include "process.h"
#include "test_helpers.h"
-static
-void
-build_check_c_o_aux(const char *path, const char *failmsg,
- const bool expect_pass)
+bool
+build_check_c_o(const char *path)
{
bool success;
atf_dynstr_t iflag;
@@ -63,20 +61,19 @@ build_check_c_o_aux(const char *path, const char *failmsg,
atf_dynstr_fini(&iflag);
- if ((expect_pass && !success) || (!expect_pass && success))
- atf_tc_fail("%s", failmsg);
+ return success;
}
-void
-build_check_c_o(const atf_tc_t *tc, const char *sfile, const char *failmsg,
- const bool expect_pass)
+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));
- build_check_c_o_aux(atf_fs_path_cstring(&path), failmsg, expect_pass);
+ const bool result = build_check_c_o(atf_fs_path_cstring(&path));
atf_fs_path_fini(&path);
+ return result;
}
void
@@ -93,7 +90,8 @@ header_check(const char *hdrname)
snprintf(failmsg, sizeof(failmsg),
"Header check failed; %s is not self-contained", hdrname);
- build_check_c_o_aux("test.c", failmsg, true);
+ if (!build_check_c_o("test.c"))
+ atf_tc_fail("%s", failmsg);
}
void
diff --git a/atf-c/detail/test_helpers.h b/atf-c/detail/test_helpers.h
index 5df034f..3037ba4 100644
--- a/atf-c/detail/test_helpers.h
+++ b/atf-c/detail/test_helpers.h
@@ -63,21 +63,12 @@ struct atf_fs_path;
} \
ATF_TC_BODY(name, tc) \
{ \
- build_check_c_o(tc, sfile, failmsg, true); \
+ if (!build_check_c_o_srcdir(tc, sfile)) \
+ atf_tc_fail("%s", failmsg); \
}
-#define BUILD_TC_FAIL(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) \
- { \
- build_check_c_o(tc, sfile, failmsg, false); \
- }
-
-void build_check_c_o(const atf_tc_t *, const char *, const char *, const bool);
+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 *);
diff --git a/atf-c/detail/version_helper.c b/atf-c/detail/version_helper.c
new file mode 100644
index 0000000..b75ff36
--- /dev/null
+++ b/atf-c/detail/version_helper.c
@@ -0,0 +1,43 @@
+/*
+ * 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 "bconfig.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ printf("%s\n", PACKAGE_VERSION);
+ return EXIT_SUCCESS;
+}
diff --git a/atf-c/macros_test.c b/atf-c/macros_test.c
index f077a27..adfc77c 100644
--- a/atf-c/macros_test.c
+++ b/atf-c/macros_test.c
@@ -843,11 +843,30 @@ BUILD_TC(use, "macros_h_test.c",
"do not cause syntax errors when used",
"Build of macros_h_test.c failed; some macros in atf-c/macros.h "
"are broken");
-BUILD_TC_FAIL(detect_unused_tests, "unused_test.c",
- "Tests that defining an unused test case raises a warning (and thus "
- "an error)",
- "Build of unused_test.c passed; unused test cases are not properly "
- "detected");
+
+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.
diff --git a/atf-c/pkg_config_test.sh b/atf-c/pkg_config_test.sh
index efeae83..d913ec9 100644
--- a/atf-c/pkg_config_test.sh
+++ b/atf-c/pkg_config_test.sh
@@ -43,10 +43,8 @@ require_pc()
check_version()
{
- atf_check -s eq:0 -o save:stdout -e empty -x \
- "atf-version | head -n 1 | cut -d ' ' -f 4"
- ver1=$(cat stdout)
- echo "Version reported by atf-version: ${ver1}"
+ 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)
@@ -59,7 +57,7 @@ atf_test_case version
version_head()
{
atf_set "descr" "Checks that the version in atf-c is correct"
- atf_set "require.progs" "atf-version pkg-config"
+ atf_set "require.progs" "pkg-config"
}
version_body()
{
diff --git a/atf-config/Atffile b/atf-config/Atffile
deleted file mode 100644
index 146211e..0000000
--- a/atf-config/Atffile
+++ /dev/null
@@ -1,5 +0,0 @@
-Content-Type: application/X-atf-atffile; version="1"
-
-prop: test-suite = atf
-
-tp-glob: *_test
diff --git a/atf-config/Kyuafile b/atf-config/Kyuafile
deleted file mode 100644
index 8ba4da8..0000000
--- a/atf-config/Kyuafile
+++ /dev/null
@@ -1,5 +0,0 @@
-syntax("kyuafile", 1)
-
-test_suite("atf")
-
-atf_test_program{name="integration_test"}
diff --git a/atf-config/Makefile.am.inc b/atf-config/Makefile.am.inc
deleted file mode 100644
index 0f32778..0000000
--- a/atf-config/Makefile.am.inc
+++ /dev/null
@@ -1,48 +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.
-#
-
-bin_PROGRAMS += atf-config/atf-config
-atf_config_atf_config_SOURCES = atf-config/atf-config.cpp
-atf_config_atf_config_LDADD = $(ATF_CXX_LIBS)
-dist_man_MANS += atf-config/atf-config.1
-
-tests_atf_config_DATA = atf-config/Atffile \
- atf-config/Kyuafile
-tests_atf_configdir = $(pkgtestsdir)/atf-config
-EXTRA_DIST += $(tests_atf_config_DATA)
-
-tests_atf_config_SCRIPTS = atf-config/integration_test
-CLEANFILES += atf-config/integration_test
-EXTRA_DIST += atf-config/integration_test.sh
-atf-config/integration_test: $(srcdir)/atf-config/integration_test.sh
- test -d atf-config || mkdir -p atf-config
- @src="$(srcdir)/atf-config/integration_test.sh"; \
- dst="atf-config/integration_test"; $(BUILD_SH_TP)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
diff --git a/atf-report/Atffile b/atf-report/Atffile
deleted file mode 100644
index 146211e..0000000
--- a/atf-report/Atffile
+++ /dev/null
@@ -1,5 +0,0 @@
-Content-Type: application/X-atf-atffile; version="1"
-
-prop: test-suite = atf
-
-tp-glob: *_test
diff --git a/atf-report/Kyuafile b/atf-report/Kyuafile
deleted file mode 100644
index d69e3fa..0000000
--- a/atf-report/Kyuafile
+++ /dev/null
@@ -1,6 +0,0 @@
-syntax("kyuafile", 1)
-
-test_suite("atf")
-
-atf_test_program{name="integration_test"}
-atf_test_program{name="reader_test"}
diff --git a/atf-report/Makefile.am.inc b/atf-report/Makefile.am.inc
deleted file mode 100644
index e62275e..0000000
--- a/atf-report/Makefile.am.inc
+++ /dev/null
@@ -1,80 +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.
-#
-
-bin_PROGRAMS += atf-report/atf-report
-atf_report_atf_report_SOURCES = atf-report/atf-report.cpp \
- atf-report/reader.cpp \
- atf-report/reader.hpp
-atf_report_atf_report_LDADD = $(ATF_CXX_LIBS)
-dist_man_MANS += atf-report/atf-report.1
-
-cssdir = $(atf_cssdir)
-css_DATA = atf-report/tests-results.css
-EXTRA_DIST += $(css_DATA)
-
-dtddir = $(atf_dtddir)
-dtd_DATA = atf-report/tests-results.dtd
-EXTRA_DIST += $(dtd_DATA)
-
-xsldir = $(atf_xsldir)
-xsl_DATA = atf-report/tests-results.xsl
-EXTRA_DIST += $(xsl_DATA)
-
-tests_atf_report_DATA = atf-report/Atffile \
- atf-report/Kyuafile
-tests_atf_reportdir = $(pkgtestsdir)/atf-report
-EXTRA_DIST += $(tests_atf_report_DATA)
-
-tests_atf_report_PROGRAMS = atf-report/fail_helper
-atf_report_fail_helper_SOURCES = atf-report/fail_helper.cpp
-atf_report_fail_helper_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_report_PROGRAMS += atf-report/misc_helpers
-atf_report_misc_helpers_SOURCES = atf-report/misc_helpers.cpp
-atf_report_misc_helpers_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_report_PROGRAMS += atf-report/pass_helper
-atf_report_pass_helper_SOURCES = atf-report/pass_helper.cpp
-atf_report_pass_helper_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_report_SCRIPTS = atf-report/integration_test
-CLEANFILES += atf-report/integration_test
-EXTRA_DIST += atf-report/integration_test.sh
-atf-report/integration_test: $(srcdir)/atf-report/integration_test.sh
- test -d atf-report || mkdir -p atf-report
- @src="$(srcdir)/atf-report/integration_test.sh"; \
- dst="atf-report/integration_test"; $(BUILD_SH_TP)
-
-tests_atf_report_PROGRAMS += atf-report/reader_test
-atf_report_reader_test_SOURCES = atf-report/reader_test.cpp \
- atf-report/reader.cpp
-atf_report_reader_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-atf_report_reader_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
diff --git a/atf-run/Atffile b/atf-run/Atffile
deleted file mode 100644
index 146211e..0000000
--- a/atf-run/Atffile
+++ /dev/null
@@ -1,5 +0,0 @@
-Content-Type: application/X-atf-atffile; version="1"
-
-prop: test-suite = atf
-
-tp-glob: *_test
diff --git a/atf-run/Kyuafile b/atf-run/Kyuafile
deleted file mode 100644
index 305d699..0000000
--- a/atf-run/Kyuafile
+++ /dev/null
@@ -1,13 +0,0 @@
-syntax("kyuafile", 1)
-
-test_suite("atf")
-
-atf_test_program{name="atffile_test"}
-atf_test_program{name="config_test"}
-atf_test_program{name="fs_test"}
-atf_test_program{name="integration_test"}
-atf_test_program{name="io_test"}
-atf_test_program{name="requirements_test"}
-atf_test_program{name="signals_test"}
-atf_test_program{name="test_program_test"}
-atf_test_program{name="user_test"}
diff --git a/atf-run/Makefile.am.inc b/atf-run/Makefile.am.inc
deleted file mode 100644
index 7eb8333..0000000
--- a/atf-run/Makefile.am.inc
+++ /dev/null
@@ -1,150 +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.
-#
-
-bin_PROGRAMS += atf-run/atf-run
-atf_run_atf_run_CPPFLAGS = "-DGDB=\"$(GDB)\""
-atf_run_atf_run_SOURCES = atf-run/atf-run.cpp \
- atf-run/atffile.cpp \
- atf-run/atffile.hpp \
- atf-run/config.cpp \
- atf-run/config.hpp \
- atf-run/fs.cpp \
- atf-run/fs.hpp \
- atf-run/io.cpp \
- atf-run/io.hpp \
- atf-run/requirements.cpp \
- atf-run/requirements.hpp \
- atf-run/signals.cpp \
- atf-run/signals.hpp \
- atf-run/test-program.cpp \
- atf-run/test-program.hpp \
- atf-run/timer.cpp \
- atf-run/timer.hpp \
- atf-run/user.cpp \
- atf-run/user.hpp
-atf_run_atf_run_LDADD = $(ATF_CXX_LIBS)
-dist_man_MANS += atf-run/atf-run.1
-
-tests_atf_run_DATA = atf-run/Atffile \
- atf-run/Kyuafile
-tests_atf_rundir = $(pkgtestsdir)/atf-run
-EXTRA_DIST += $(tests_atf_run_DATA)
-
-tests_atf_run_PROGRAMS = atf-run/atffile_test
-atf_run_atffile_test_SOURCES = atf-run/atffile_test.cpp \
- atf-run/atffile.cpp
-atf_run_atffile_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-atf_run_atffile_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/bad_metadata_helper
-atf_run_bad_metadata_helper_SOURCES = atf-run/bad_metadata_helper.c
-atf_run_bad_metadata_helper_LDADD = libatf-c.la
-
-tests_atf_run_PROGRAMS += atf-run/config_test
-atf_run_config_test_SOURCES = atf-run/config_test.cpp \
- atf-run/config.cpp
-atf_run_config_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-atf_run_config_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/expect_helpers
-atf_run_expect_helpers_SOURCES = atf-run/expect_helpers.c
-atf_run_expect_helpers_LDADD = libatf-c.la
-
-tests_atf_run_PROGRAMS += atf-run/fs_test
-atf_run_fs_test_SOURCES = atf-run/fs_test.cpp \
- atf-run/fs.cpp \
- atf-run/user.cpp
-atf_run_fs_test_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/io_test
-atf_run_io_test_SOURCES = atf-run/io_test.cpp \
- atf-run/io.cpp \
- atf-run/signals.cpp
-atf_run_io_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/misc_helpers
-atf_run_misc_helpers_SOURCES = atf-run/misc_helpers.cpp
-atf_run_misc_helpers_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/pass_helper
-atf_run_pass_helper_SOURCES = atf-run/pass_helper.cpp
-atf_run_pass_helper_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/several_tcs_helper
-atf_run_several_tcs_helper_SOURCES = atf-run/several_tcs_helper.c
-atf_run_several_tcs_helper_LDADD = libatf-c.la
-
-tests_atf_run_PROGRAMS += atf-run/requirements_test
-atf_run_requirements_test_SOURCES = atf-run/requirements_test.cpp \
- atf-run/requirements.cpp \
- atf-run/user.cpp
-atf_run_requirements_test_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/signals_test
-atf_run_signals_test_SOURCES = atf-run/signals_test.cpp atf-run/signals.cpp
-atf_run_signals_test_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/test_program_test
-atf_run_test_program_test_SOURCES = atf-run/test_program_test.cpp \
- atf-run/fs.cpp \
- atf-run/io.cpp \
- atf-run/requirements.cpp \
- atf-run/signals.cpp \
- atf-run/test-program.cpp \
- atf-run/timer.cpp \
- atf-run/user.cpp
-atf_run_test_program_test_CPPFLAGS = -I$(srcdir)/atf-c++/detail
-atf_run_test_program_test_LDADD = atf-c++/detail/libtest_helpers.la $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/user_test
-atf_run_user_test_SOURCES = atf-run/user_test.cpp atf-run/user.cpp
-atf_run_user_test_LDADD = $(ATF_CXX_LIBS)
-
-tests_atf_run_PROGRAMS += atf-run/zero_tcs_helper
-atf_run_zero_tcs_helper_SOURCES = atf-run/zero_tcs_helper.c
-atf_run_zero_tcs_helper_LDADD = libatf-c.la
-
-tests_atf_run_SCRIPTS = atf-run/integration_test
-CLEANFILES += atf-run/integration_test
-EXTRA_DIST += atf-run/integration_test.sh
-atf-run/integration_test: $(srcdir)/atf-run/integration_test.sh
- test -d atf-run || mkdir -p atf-run
- @src="$(srcdir)/atf-run/integration_test.sh"; \
- dst="atf-run/integration_test"; $(BUILD_SH_TP)
-
-hooksdir = $(pkgdatadir)
-hooks_DATA = atf-run/share/atf-run.hooks
-EXTRA_DIST += $(hooks_DATA)
-
-egdir = $(atf_egdir)
-eg_DATA = atf-run/sample/atf-run.hooks
-eg_DATA += atf-run/sample/common.conf
-EXTRA_DIST += $(eg_DATA)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
diff --git a/atf-run/fs.cpp b/atf-run/fs.cpp
deleted file mode 100644
index e84a90d..0000000
--- a/atf-run/fs.cpp
+++ /dev/null
@@ -1,265 +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 "bconfig.h"
-#endif
-
-extern "C" {
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-
-#include <unistd.h>
-}
-
-#include <cerrno>
-#include <cstdlib>
-#include <cstring>
-
-#include "atf-c++/detail/auto_array.hpp"
-#include "atf-c++/detail/process.hpp"
-#include "atf-c++/detail/sanity.hpp"
-
-#include "fs.hpp"
-#include "user.hpp"
-
-namespace impl = atf::atf_run;
-#define IMPL_NAME "atf::atf_run"
-
-// ------------------------------------------------------------------------
-// Auxiliary functions.
-// ------------------------------------------------------------------------
-
-static void cleanup_aux(const atf::fs::path&, dev_t, bool);
-static void cleanup_aux_dir(const atf::fs::path&, const atf::fs::file_info&,
- bool);
-static void do_unmount(const atf::fs::path&);
-
-// 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 atf::fs::path& p, dev_t parent_device, bool erase)
-{
- try {
- atf::fs::file_info fi(p);
-
- if (fi.get_type() == atf::fs::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() == atf::fs::file_info::dir_type)
- atf::fs::rmdir(p);
- else
- atf::fs::remove(p);
- }
- } catch (const atf::system_error& e) {
- if (e.code() != ENOENT && e.code() != ENOTDIR)
- throw e;
- }
-}
-
-static
-void
-cleanup_aux_dir(const atf::fs::path& p, const atf::fs::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 atf::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) {
- INV(retries > 0);
- try {
- const atf::fs::directory d(p);
- subdirs = d.names();
- ok = true;
- } catch (const atf::system_error& e) {
- retries--;
- if (retries == 0)
- throw e;
- ::sleep(retry_delay_in_seconds);
- }
- }
- INV(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 atf::fs::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 atf::fs::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 atf::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
- // satf::fser to just leave the system-specific umount(8) tool deal
- // with it, at least for now.
-
- const atf::fs::path prog("umount");
- atf::process::argv_array argv("umount", abs_path.c_str(), NULL);
-
- atf::process::status s = atf::process::exec(prog, argv,
- atf::process::stream_inherit(), atf::process::stream_inherit());
- if (!s.exited() || s.exitstatus() != EXIT_SUCCESS)
- throw std::runtime_error("Call to unmount failed");
-#endif
-}
-
-// ------------------------------------------------------------------------
-// The "temp_dir" class.
-// ------------------------------------------------------------------------
-
-impl::temp_dir::temp_dir(const atf::fs::path& p)
-{
- atf::auto_array< char > buf(new char[p.str().length() + 1]);
- std::strcpy(buf.get(), p.c_str());
- if (::mkdtemp(buf.get()) == NULL)
- throw system_error(IMPL_NAME "::temp_dir::temp_dir(" +
- p.str() + ")", "mkdtemp(3) failed",
- errno);
-
- m_path.reset(new atf::fs::path(buf.get()));
-}
-
-impl::temp_dir::~temp_dir(void)
-{
- cleanup(*m_path);
-}
-
-const atf::fs::path&
-impl::temp_dir::get_path(void)
- const
-{
- return *m_path;
-}
-
-// ------------------------------------------------------------------------
-// Free functions.
-// ------------------------------------------------------------------------
-
-atf::fs::path
-impl::change_directory(const atf::fs::path& dir)
-{
- atf::fs::path olddir = get_current_dir();
-
- if (olddir != dir) {
- if (::chdir(dir.c_str()) == -1)
- throw system_error(IMPL_NAME "::chdir(" + dir.str() + ")",
- "chdir(2) failed", errno);
- }
-
- return olddir;
-}
-
-void
-impl::cleanup(const atf::fs::path& p)
-{
- atf::fs::file_info fi(p);
- cleanup_aux(p, fi.get_device(), true);
-}
-
-atf::fs::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 atf::system_error(IMPL_NAME "::get_current_dir()",
- "getcwd() failed", errno);
-
- return atf::fs::path(cwd.get());
-}
diff --git a/atf-run/fs_test.cpp b/atf-run/fs_test.cpp
deleted file mode 100644
index f03045e..0000000
--- a/atf-run/fs_test.cpp
+++ /dev/null
@@ -1,260 +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 <sys/types.h>
-#include <sys/stat.h>
-}
-
-#include <cerrno>
-#include <fstream>
-
-#include "atf-c++/macros.hpp"
-
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/fs.hpp"
-
-#include "fs.hpp"
-#include "user.hpp"
-
-// ------------------------------------------------------------------------
-// Auxiliary functions.
-// ------------------------------------------------------------------------
-
-static
-void
-create_file(const char *name)
-{
- std::ofstream os(name);
- os.close();
-}
-
-// ------------------------------------------------------------------------
-// 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)
-{
- using atf::atf_run::temp_dir;
-
- atf::fs::path t1("non-existent");
- atf::fs::path t2("non-existent");
-
- {
- atf::fs::path tmpl("testdir.XXXXXX");
- temp_dir td1(tmpl);
- 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(!atf::fs::exists(tmpl));
- ATF_REQUIRE( atf::fs::exists(t1));
- ATF_REQUIRE( atf::fs::exists(t2));
-
- atf::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());
-
- atf::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(!atf::fs::exists(t1));
- ATF_REQUIRE(t2.str() != "non-existent");
- ATF_REQUIRE(!atf::fs::exists(t2));
-}
-
-
-// ------------------------------------------------------------------------
-// Test cases for the free functions.
-// ------------------------------------------------------------------------
-
-ATF_TEST_CASE(cleanup);
-ATF_TEST_CASE_HEAD(cleanup)
-{
- set_md_var("descr", "Tests the cleanup function");
-}
-ATF_TEST_CASE_BODY(cleanup)
-{
- using atf::atf_run::cleanup;
-
- ::mkdir("root", 0755);
- ::mkdir("root/dir", 0755);
- ::mkdir("root/dir/1", 0100);
- ::mkdir("root/dir/2", 0644);
- create_file("root/reg");
-
- atf::fs::path p("root");
- ATF_REQUIRE(atf::fs::exists(p));
- ATF_REQUIRE(atf::fs::exists(p / "dir"));
- ATF_REQUIRE(atf::fs::exists(p / "dir/1"));
- ATF_REQUIRE(atf::fs::exists(p / "dir/2"));
- ATF_REQUIRE(atf::fs::exists(p / "reg"));
- cleanup(p);
- ATF_REQUIRE(!atf::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 atf::atf_run::cleanup;
-
- ::mkdir("aux", 0755);
- ::mkdir("aux/root", 0755);
- ATF_REQUIRE(::chmod("aux", 0555) != -1);
-
- try {
- cleanup(atf::fs::path("aux/root"));
- ATF_REQUIRE(atf::atf_run::is_root());
- } catch (const atf::system_error& e) {
- ATF_REQUIRE(!atf::atf_run::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 atf::atf_run::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 atf::fs::path p("root");
- cleanup(p);
- ATF_REQUIRE(!atf::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 atf::atf_run::change_directory;
- using atf::atf_run::get_current_dir;
-
- ::mkdir("files", 0755);
- ::mkdir("files/dir", 0755);
- create_file("files/reg");
-
- const atf::fs::path old = get_current_dir();
-
- ATF_REQUIRE_THROW(atf::system_error,
- change_directory(atf::fs::path("files/reg")));
- ATF_REQUIRE(get_current_dir() == old);
-
- atf::fs::path old2 = change_directory(atf::fs::path("files"));
- ATF_REQUIRE(old2 == old);
- atf::fs::path old3 = change_directory(atf::fs::path("dir"));
- ATF_REQUIRE(old3 == old2 / "files");
- atf::fs::path old4 = change_directory(atf::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 atf::atf_run::change_directory;
- using atf::atf_run::get_current_dir;
-
- ::mkdir("files", 0755);
- ::mkdir("files/dir", 0755);
- create_file("files/reg");
-
- atf::fs::path curdir = get_current_dir();
- change_directory(atf::fs::path("."));
- ATF_REQUIRE(get_current_dir() == curdir);
- change_directory(atf::fs::path("files"));
- ATF_REQUIRE(get_current_dir() == curdir / "files");
- change_directory(atf::fs::path("dir"));
- ATF_REQUIRE(get_current_dir() == curdir / "files/dir");
- change_directory(atf::fs::path(".."));
- ATF_REQUIRE(get_current_dir() == curdir / "files");
- change_directory(atf::fs::path(".."));
- ATF_REQUIRE(get_current_dir() == curdir);
-}
-
-// ------------------------------------------------------------------------
-// Main.
-// ------------------------------------------------------------------------
-
-ATF_INIT_TEST_CASES(tcs)
-{
- // 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, 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/atf-sh/atf-check.cpp b/atf-sh/atf-check.cpp
index 66f6c4c..b08c020 100644
--- a/atf-sh/atf-check.cpp
+++ b/atf-sh/atf-check.cpp
@@ -724,7 +724,7 @@ 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)", "atf(7)"),
+ app(m_description, "atf-check(1)"),
m_xflag(false)
{
}
diff --git a/atf-sh/atf-sh.cpp b/atf-sh/atf-sh.cpp
index d7bc7fc..e985e79 100644
--- a/atf-sh/atf-sh.cpp
+++ b/atf-sh/atf-sh.cpp
@@ -122,7 +122,7 @@ const char* atf_sh::m_description =
"system sh(1) with the atf-sh library.";
atf_sh::atf_sh(void) :
- app(m_description, "atf-sh(1)", "atf(7)")
+ app(m_description, "atf-sh(1)")
{
}
diff --git a/atf-sh/integration_test.sh b/atf-sh/integration_test.sh
index 55bb278..452c958 100644
--- a/atf-sh/integration_test.sh
+++ b/atf-sh/integration_test.sh
@@ -38,7 +38,7 @@ no_args_body()
{
cat >experr <<EOF
atf-sh: ERROR: No test program provided
-atf-sh: Type \`atf-sh -h' for more details.
+atf-sh: See atf-sh(1) for usage details.
EOF
atf_check -s eq:1 -o ignore -e file:experr atf-sh
}
diff --git a/atf-version/Makefile.am.inc b/atf-version/Makefile.am.inc
deleted file mode 100644
index ec553b3..0000000
--- a/atf-version/Makefile.am.inc
+++ /dev/null
@@ -1,54 +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.
-#
-
-bin_PROGRAMS += atf-version/atf-version
-atf_version_atf_version_SOURCES = atf-version/atf-version.cpp
-nodist_atf_version_atf_version_SOURCES = atf-version/revision.h
-atf_version_atf_version_CPPFLAGS = -Iatf-version
-atf_version_atf_version_LDADD = $(ATF_CXX_LIBS)
-dist_man_MANS += atf-version/atf-version.1
-
-EXTRA_DIST += atf-version/generate-revision.sh
-
-BUILT_SOURCES += atf-version/revision.h
-CLEANFILES += atf-version/revision.h
-atf-version/revision.h: atf-version/revision.h.stamp
- @test -d atf-version || mkdir -p atf-version
- @cmp -s atf-version/revision.h atf-version/revision.h.stamp || \
- cp -p atf-version/revision.h.stamp atf-version/revision.h
-
-CLEANFILES += atf-version/revision.h.stamp
-PHONY_TARGETS += atf-version/revision.h.stamp
-atf-version/revision.h.stamp:
- @test -d atf-version || mkdir -p atf-version
- @$(top_srcdir)/atf-version/generate-revision.sh \
- -g "$(GIT)" -r $(top_srcdir) -o atf-version/revision.h.stamp \
- -v $(PACKAGE_VERSION)
-
-# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
diff --git a/bconfig.h.in b/bconfig.h.in
index d4f3eb5..de45ed9 100644
--- a/bconfig.h.in
+++ b/bconfig.h.in
@@ -27,18 +27,9 @@
/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV
-/* Define to 1 if putenv is in std */
-#undef HAVE_PUTENV_IN_STD
-
/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV
-/* Define to 1 if setenv is in std */
-#undef HAVE_SETENV_IN_STD
-
-/* Define to 1 if snprintf is in std */
-#undef HAVE_SNPRINTF_IN_STD
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
@@ -60,15 +51,9 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to 1 if you have the `unmount' function. */
-#undef HAVE_UNMOUNT
-
/* Define to 1 if you have the `unsetenv' function. */
#undef HAVE_UNSETENV
-/* Define to 1 if unsetenv is in std */
-#undef HAVE_UNSETENV_IN_STD
-
/* Define to 1 if vsnprintf is in std */
#undef HAVE_VSNPRINTF_IN_STD
diff --git a/bootstrap/Makefile.am.inc b/bootstrap/Makefile.am.inc
index a590999..8303394 100644
--- a/bootstrap/Makefile.am.inc
+++ b/bootstrap/Makefile.am.inc
@@ -29,11 +29,11 @@
check_PROGRAMS = bootstrap/h_app_empty
bootstrap_h_app_empty_SOURCES = bootstrap/h_app_empty.cpp
-bootstrap_h_app_empty_LDADD = $(ATF_CXX_LIBS)
+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 = $(ATF_CXX_LIBS)
+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
diff --git a/bootstrap/h_app_empty.cpp b/bootstrap/h_app_empty.cpp
index df8c1fb..9656f00 100644
--- a/bootstrap/h_app_empty.cpp
+++ b/bootstrap/h_app_empty.cpp
@@ -29,9 +29,9 @@
#include <cstdlib>
-#include "atf-c++/detail/application.hpp"
+#include "tools/application.hpp"
-class h_app_empty : public atf::application::app {
+class h_app_empty : public tools::application::app {
static const char* m_description;
public:
diff --git a/bootstrap/h_app_opts_args.cpp b/bootstrap/h_app_opts_args.cpp
index 26d6be8..f05a6b2 100644
--- a/bootstrap/h_app_opts_args.cpp
+++ b/bootstrap/h_app_opts_args.cpp
@@ -30,10 +30,9 @@
#include <cstdlib>
#include <iostream>
-#include "atf-c++/detail/application.hpp"
-#include "atf-c++/detail/sanity.hpp"
+#include "tools/application.hpp"
-class h_app_opts_args : public atf::application::app {
+class h_app_opts_args : public tools::application::app {
static const char* m_description;
std::string specific_args(void) const;
@@ -66,7 +65,7 @@ h_app_opts_args::options_set
h_app_opts_args::specific_options(void)
const
{
- using atf::application::option;
+ using tools::application::option;
options_set opts;
opts.insert(option('d', "", "Debug mode"));
opts.insert(option('v', "level", "Verbosity level"));
@@ -86,7 +85,7 @@ h_app_opts_args::process_option(int ch, const char* arg)
break;
default:
- UNREACHABLE;
+ std::abort();
}
}
diff --git a/bootstrap/package.m4 b/bootstrap/package.m4
index 8c46fd8..c18cb4f 100644
--- a/bootstrap/package.m4
+++ b/bootstrap/package.m4
@@ -1,7 +1,7 @@
# 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.18)
-m4_define(AT_PACKAGE_STRING, Automated Testing Framework 0.18)
+m4_define(AT_PACKAGE_VERSION, 0.19)
+m4_define(AT_PACKAGE_STRING, Automated Testing Framework 0.19)
m4_define(AT_PACKAGE_BUGREPORT, atf-devel@NetBSD.org)
m4_define(ENABLE_TOOLS, yes)
diff --git a/bootstrap/testsuite b/bootstrap/testsuite
index ec9c156..7ec66f2 100755
--- a/bootstrap/testsuite
+++ b/bootstrap/testsuite
@@ -584,7 +584,8 @@ at_change_dir=false
# Whether to enable colored test results.
at_color=no
# List of the tested programs.
-at_tested=''
+at_tested='atf-config
+atf-run'
# 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.
@@ -595,6 +596,10 @@ at_help_all="1;t_test_program_filter.at:30;test_program: filter test cases by na
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;;
+6;t_application_opts_args.at:30;application: arguments and options handling;;
+7;t_application_help.at:30;application: online help option;;
+8;t_atf_config.at:30;atf-config: querying of build-time variables;;
+9;t_atf_run.at:30;atf-run: execution of tests;;
"
# List of the all the test groups.
at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'`
@@ -608,7 +613,7 @@ 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
+ if test $at_value -lt 1 || test $at_value -gt 9; then
$as_echo "invalid test group: $at_value" >&2
exit 1
fi
@@ -906,7 +911,7 @@ fi
# List of tests.
if $at_list_p; then
cat <<_ATEOF || at_write_fail=1
-Automated Testing Framework 0.18 test suite: bootstrap tests test groups:
+Automated Testing Framework 0.19 test suite: bootstrap tests test groups:
NUM: FILE-NAME:LINE TEST-GROUP-NAME
KEYWORDS
@@ -947,7 +952,7 @@ _ATEOF
exit $at_write_fail
fi
if $at_version_p; then
- $as_echo "$as_me (Automated Testing Framework 0.18)" &&
+ $as_echo "$as_me (Automated Testing Framework 0.19)" &&
cat <<\_ATEOF || at_write_fail=1
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1124,11 +1129,11 @@ exec 5>>"$at_suite_log"
# Banners and logs.
$as_echo "## ------------------------------------------------------------- ##
-## Automated Testing Framework 0.18 test suite: bootstrap tests. ##
+## Automated Testing Framework 0.19 test suite: bootstrap tests. ##
## ------------------------------------------------------------- ##"
{
$as_echo "## ------------------------------------------------------------- ##
-## Automated Testing Framework 0.18 test suite: bootstrap tests. ##
+## Automated Testing Framework 0.19 test suite: bootstrap tests. ##
## ------------------------------------------------------------- ##"
echo
@@ -1972,7 +1977,7 @@ _ASBOX
$as_echo "Please send $at_msg and all information you think might help:
To: <atf-devel@NetBSD.org>
- Subject: [Automated Testing Framework 0.18] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+ Subject: [Automated Testing Framework 0.19] $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
@@ -5871,3 +5876,2471 @@ $at_traceon; }
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_5
+#AT_START_6
+at_fn_group_banner 6 't_application_opts_args.at:30' \
+ "application: arguments and options handling" " "
+at_xfail=no
+(
+ $as_echo "6. $at_setup_line: testing $at_desc ..."
+ $at_traceon
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:34: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty -h"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:34"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty -h
+) >>"$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_application_opts_args.at:34"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:35: grep ' -d ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:35"
+( $at_check_trace; grep ' -d ' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_opts_args.at:35"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:36: grep ' -h ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:36"
+( $at_check_trace; grep ' -h ' stdout
+) >>"$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_application_opts_args.at:36"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:37: grep ' -v ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:37"
+( $at_check_trace; grep ' -v ' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_opts_args.at:37"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:38: grep ' -z ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:38"
+( $at_check_trace; grep ' -z ' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_opts_args.at:38"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:42: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -h"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:42"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -h
+) >>"$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_application_opts_args.at:42"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:43: grep ' -d ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:43"
+( $at_check_trace; grep ' -d ' stdout
+) >>"$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_application_opts_args.at:43"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:44: grep ' -h ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:44"
+( $at_check_trace; grep ' -h ' stdout
+) >>"$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_application_opts_args.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:45: grep ' -v ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:45"
+( $at_check_trace; grep ' -v ' stdout
+) >>"$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_application_opts_args.at:45"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:46: grep ' -z ' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:46"
+( $at_check_trace; grep ' -z ' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_opts_args.at:46"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:50: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty -d"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:50"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty -d
+) >>"$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_application_opts_args.at:50"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:51: grep 'Unknown option.*-d' stderr"
+at_fn_check_prepare_trace "t_application_opts_args.at:51"
+( $at_check_trace; grep 'Unknown option.*-d' 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_application_opts_args.at:51"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:52: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty -v"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:52"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty -v
+) >>"$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_application_opts_args.at:52"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:53: grep 'Unknown option.*-v' stderr"
+at_fn_check_prepare_trace "t_application_opts_args.at:53"
+( $at_check_trace; grep 'Unknown option.*-v' 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_application_opts_args.at:53"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:54: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty -z"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:54"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty -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_application_opts_args.at:54"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:55: grep 'Unknown option.*-z' stderr"
+at_fn_check_prepare_trace "t_application_opts_args.at:55"
+( $at_check_trace; grep 'Unknown option.*-z' 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_application_opts_args.at:55"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:59: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -d"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:59"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -d
+) >>"$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_application_opts_args.at:59"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:60: grep -- '-d given' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:60"
+( $at_check_trace; grep -- '-d given' stdout
+) >>"$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_application_opts_args.at:60"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:61: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -v"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:61"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -v
+) >>"$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_application_opts_args.at:61"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:62: grep 'Option.*-v.*requires an argument' stderr"
+at_fn_check_prepare_trace "t_application_opts_args.at:62"
+( $at_check_trace; grep 'Option.*-v.*requires an argument' 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_application_opts_args.at:62"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:63: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -v foo"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:63"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -v foo
+) >>"$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_application_opts_args.at:63"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:64: grep -- '-v given with argument foo' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:64"
+( $at_check_trace; grep -- '-v given with argument foo' stdout
+) >>"$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_application_opts_args.at:64"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:65: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -z"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:65"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -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_application_opts_args.at:65"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:66: grep 'Unknown option.*-z' stderr"
+at_fn_check_prepare_trace "t_application_opts_args.at:66"
+( $at_check_trace; grep 'Unknown option.*-z' 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_application_opts_args.at:66"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:69: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -- -d"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:69"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -- -d
+) >>"$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_application_opts_args.at:69"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:70: grep -- '-d given' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:70"
+( $at_check_trace; grep -- '-d given' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_opts_args.at:70"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:71: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args arg -d"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:71"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args arg -d
+) >>"$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_application_opts_args.at:71"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:72: grep -- '-d given' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:72"
+( $at_check_trace; grep -- '-d given' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_opts_args.at:72"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:76: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty -h"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:76"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty -h
+) >>"$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_application_opts_args.at:76"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:77: grep '\\[options\\]\$' stdout"
+at_fn_check_prepare_dynamic "grep '\\[options\\]$' stdout" "t_application_opts_args.at:77"
+( $at_check_trace; grep '\[options\]$' stdout
+) >>"$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_application_opts_args.at:77"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:81: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_opts_args -h"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_opts_args.at:81"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_opts_args -h
+) >>"$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_application_opts_args.at:81"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_opts_args.at:82: grep '\\[options\\] <arg1> <arg2>' stdout"
+at_fn_check_prepare_trace "t_application_opts_args.at:82"
+( $at_check_trace; grep '\[options\] <arg1> <arg2>' stdout
+) >>"$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_application_opts_args.at:82"
+$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_6
+#AT_START_7
+at_fn_group_banner 7 't_application_help.at:30' \
+ "application: online help option" " "
+at_xfail=no
+(
+ $as_echo "7. $at_setup_line: testing $at_desc ..."
+ $at_traceon
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_help.at:32: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_help.at:32"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty
+) >>"$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_application_help.at:32"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_help.at:33: grep 'Available options' stdout"
+at_fn_check_prepare_trace "t_application_help.at:33"
+( $at_check_trace; grep 'Available options' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_application_help.at:33"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_application_help.at:35: \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_app_empty -h"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_application_help.at:35"
+( $at_check_trace; $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_app_empty -h
+) >>"$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_application_help.at:35"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_application_help.at:36: grep 'Available options' stdout"
+at_fn_check_prepare_trace "t_application_help.at:36"
+( $at_check_trace; grep 'Available options' stdout
+) >>"$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_application_help.at:36"
+$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_7
+#AT_START_8
+at_fn_group_banner 8 't_atf_config.at:30' \
+ "atf-config: querying of build-time variables" " "
+at_xfail=no
+(
+ $as_echo "8. $at_setup_line: testing $at_desc ..."
+ $at_traceon
+
+
+
+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
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:51: atf-config"
+at_fn_check_prepare_trace "t_atf_config.at:51"
+( $at_check_trace; atf-config
+) >>"$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_atf_config.at:51"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:52: test $(wc -l stdout | awk '{ print $1 }') = \${all_vars_no}"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:52"
+( $at_check_trace; test $(wc -l stdout | awk '{ print $1 }') = ${all_vars_no}
+) >>"$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_atf_config.at:52"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+for v in ${all_vars}; do
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:54: grep \"\${v}\" stdout"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:54"
+( $at_check_trace; grep "${v}" stdout
+) >>"$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_atf_config.at:54"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+done
+
+for v in ${all_vars}; do
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:59: atf-config \${v}"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:59"
+( $at_check_trace; atf-config ${v}
+) >>"$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_atf_config.at:59"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:60: test $(wc -l stdout | awk '{ print $1 }') = 1"
+at_fn_check_prepare_notrace 'a shell pipeline' "t_atf_config.at:60"
+( $at_check_trace; test $(wc -l stdout | awk '{ print $1 }') = 1
+) >>"$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_atf_config.at:60"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:61: grep \"\${v}\" stdout"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:61"
+( $at_check_trace; grep "${v}" stdout
+) >>"$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_atf_config.at:61"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:62: cut -d ' ' -f 3- stdout"
+at_fn_check_prepare_trace "t_atf_config.at:62"
+( $at_check_trace; cut -d ' ' -f 3- stdout
+) >>"$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_atf_config.at:62"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:63: mv stdout expout"
+at_fn_check_prepare_trace "t_atf_config.at:63"
+( $at_check_trace; mv stdout expout
+) >>"$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_atf_config.at:63"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:64: atf-config -t \${v}"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:64"
+( $at_check_trace; atf-config -t ${v}
+) >>"$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_atf_config.at:64"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+done
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:68: atf-config atf_libexecdir atf_pkgdatadir"
+at_fn_check_prepare_trace "t_atf_config.at:68"
+( $at_check_trace; atf-config atf_libexecdir atf_pkgdatadir
+) >>"$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_atf_config.at:68"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:69: grep 'atf_libexecdir' stdout"
+at_fn_check_prepare_trace "t_atf_config.at:69"
+( $at_check_trace; grep 'atf_libexecdir' stdout
+) >>"$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_atf_config.at:69"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:70: grep 'atf_pkgdatadir' stdout"
+at_fn_check_prepare_trace "t_atf_config.at:70"
+( $at_check_trace; grep 'atf_pkgdatadir' stdout
+) >>"$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_atf_config.at:70"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:71: test $(wc -l stdout | awk '{ print $1 }') = 2"
+at_fn_check_prepare_notrace 'a shell pipeline' "t_atf_config.at:71"
+( $at_check_trace; test $(wc -l stdout | awk '{ print $1 }') = 2
+) >>"$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_atf_config.at:71"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:74: atf-config non_existent"
+at_fn_check_prepare_trace "t_atf_config.at:74"
+( $at_check_trace; atf-config non_existent
+) >>"$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_atf_config.at:74"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_config.at:75: grep 'Unknown variable.*non_existent' stderr"
+at_fn_check_prepare_trace "t_atf_config.at:75"
+( $at_check_trace; grep 'Unknown variable.*non_existent' 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_atf_config.at:75"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+for v in ${all_vars}; do
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:79: atf-config \${v} non_existent"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:79"
+( $at_check_trace; atf-config ${v} non_existent
+) >>"$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_atf_config.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:80: grep 'Unknown variable.*non_existent' stderr"
+at_fn_check_prepare_trace "t_atf_config.at:80"
+( $at_check_trace; grep 'Unknown variable.*non_existent' 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_atf_config.at:80"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:82: atf-config non_existent \${v}"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:82"
+( $at_check_trace; atf-config non_existent ${v}
+) >>"$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_atf_config.at:82"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:83: grep 'Unknown variable.*non_existent' stderr"
+at_fn_check_prepare_trace "t_atf_config.at:83"
+( $at_check_trace; grep 'Unknown variable.*non_existent' 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_atf_config.at:83"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+done
+
+for v in ${all_vars}; do
+ V=$(echo ${v} | tr '[a-z]' '[A-Z]')
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:90: env \${V}=testval atf-config"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:90"
+( $at_check_trace; env ${V}=testval atf-config
+) >>"$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_atf_config.at:90"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:91: mv stdout all"
+at_fn_check_prepare_trace "t_atf_config.at:91"
+( $at_check_trace; mv stdout all
+) >>"$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_atf_config.at:91"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:93: grep \"^\${v} : \" all"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:93"
+( $at_check_trace; grep "^${v} : " all
+) >>"$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_atf_config.at:93"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:94: mv stdout affected"
+at_fn_check_prepare_trace "t_atf_config.at:94"
+( $at_check_trace; mv stdout affected
+) >>"$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_atf_config.at:94"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:95: grep -v \"^\${v} : \" all"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:95"
+( $at_check_trace; grep -v "^${v} : " all
+) >>"$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_atf_config.at:95"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:96: mv stdout unaffected"
+at_fn_check_prepare_trace "t_atf_config.at:96"
+( $at_check_trace; mv stdout unaffected
+) >>"$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_atf_config.at:96"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:98: test $(wc -l affected | awk '{ print $1 }') = 1"
+at_fn_check_prepare_notrace 'a shell pipeline' "t_atf_config.at:98"
+( $at_check_trace; test $(wc -l affected | awk '{ print $1 }') = 1
+) >>"$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_atf_config.at:98"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:99: test $(wc -l unaffected | awk '{ print $1 }') = \$((\${all_vars_no} - 1))"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_config.at:99"
+( $at_check_trace; test $(wc -l unaffected | awk '{ print $1 }') = $((${all_vars_no} - 1))
+) >>"$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_atf_config.at:99"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:102: grep \"^\${v} : testval\$\" affected"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "t_atf_config.at:102"
+( $at_check_trace; grep "^${v} : testval$" affected
+) >>"$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_atf_config.at:102"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+ { set +x
+$as_echo "$at_srcdir/t_atf_config.at:103: grep ' : testval\$' unaffected"
+at_fn_check_prepare_dynamic "grep ' : testval$' unaffected" "t_atf_config.at:103"
+( $at_check_trace; grep ' : testval$' unaffected
+) >>"$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 1 $at_status "$at_srcdir/t_atf_config.at:103"
+$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_8
+#AT_START_9
+at_fn_group_banner 9 't_atf_run.at:30' \
+ "atf-run: execution of tests" " "
+at_xfail=no
+(
+ $as_echo "9. $at_setup_line: testing $at_desc ..."
+ $at_traceon
+
+
+
+
+
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:47: mkdir top"
+at_fn_check_prepare_trace "t_atf_run.at:47"
+( $at_check_trace; mkdir top
+) >>"$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_atf_run.at:47"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:48: mkdir top/dir1"
+at_fn_check_prepare_trace "t_atf_run.at:48"
+( $at_check_trace; mkdir top/dir1
+) >>"$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_atf_run.at:48"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:49: mkdir top/dir2"
+at_fn_check_prepare_trace "t_atf_run.at:49"
+( $at_check_trace; mkdir top/dir2
+) >>"$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_atf_run.at:49"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+cat >top/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp: dir1
+tp: dir2
+tp: test1
+tp: test2
+_ATEOF
+
+cat >top/dir1/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp: test3
+_ATEOF
+
+cat >top/dir2/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp: test4
+tp: test5
+_ATEOF
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:75: sed -e 's,@TC_NAME@,tc_1,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:75"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_1,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:75"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:75: mv stdout top/test1"
+at_fn_check_prepare_trace "t_atf_run.at:75"
+( $at_check_trace; mv stdout top/test1
+) >>"$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_atf_run.at:75"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:75: chmod +x top/test1"
+at_fn_check_prepare_trace "t_atf_run.at:75"
+( $at_check_trace; chmod +x top/test1
+) >>"$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_atf_run.at:75"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:76: sed -e 's,@TC_NAME@,tc_2,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_fail"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:76"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_2,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_fail
+) >>"$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_atf_run.at:76"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:76: mv stdout top/test2"
+at_fn_check_prepare_trace "t_atf_run.at:76"
+( $at_check_trace; mv stdout top/test2
+) >>"$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_atf_run.at:76"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:76: chmod +x top/test2"
+at_fn_check_prepare_trace "t_atf_run.at:76"
+( $at_check_trace; chmod +x top/test2
+) >>"$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_atf_run.at:76"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:77: sed -e 's,@TC_NAME@,tc_3,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:77"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_3,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:77"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:77: mv stdout top/dir1/test3"
+at_fn_check_prepare_trace "t_atf_run.at:77"
+( $at_check_trace; mv stdout top/dir1/test3
+) >>"$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_atf_run.at:77"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:77: chmod +x top/dir1/test3"
+at_fn_check_prepare_trace "t_atf_run.at:77"
+( $at_check_trace; chmod +x top/dir1/test3
+) >>"$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_atf_run.at:77"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:78: sed -e 's,@TC_NAME@,tc_4,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_fail"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:78"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_4,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_fail
+) >>"$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_atf_run.at:78"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:78: mv stdout top/dir2/test4"
+at_fn_check_prepare_trace "t_atf_run.at:78"
+( $at_check_trace; mv stdout top/dir2/test4
+) >>"$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_atf_run.at:78"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:78: chmod +x top/dir2/test4"
+at_fn_check_prepare_trace "t_atf_run.at:78"
+( $at_check_trace; chmod +x top/dir2/test4
+) >>"$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_atf_run.at:78"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:79: sed -e 's,@TC_NAME@,tc_5,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:79"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_5,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:79: mv stdout top/dir2/test5"
+at_fn_check_prepare_trace "t_atf_run.at:79"
+( $at_check_trace; mv stdout top/dir2/test5
+) >>"$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_atf_run.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:79: chmod +x top/dir2/test5"
+at_fn_check_prepare_trace "t_atf_run.at:79"
+( $at_check_trace; chmod +x top/dir2/test5
+) >>"$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_atf_run.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:81: cd top/dir1 && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:81"
+( $at_check_trace; cd top/dir1 && atf-run
+) >>"$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_atf_run.at:81"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:82: grep '^tc-end: [0-9. ]*, tc_3, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:82"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_3, passed' stdout
+) >>"$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_atf_run.at:82"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:83: grep -i 'tc_[1245]' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:83"
+( $at_check_trace; grep -i 'tc_[1245]' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_atf_run.at:83"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:84: grep 'tc-so:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:84"
+( $at_check_trace; grep 'tc-so:ignore-me' stdout
+) >>"$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_atf_run.at:84"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:85: grep 'tc-se:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:85"
+( $at_check_trace; grep 'tc-se:ignore-me' stdout
+) >>"$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_atf_run.at:85"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:87: cd top/dir2 && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:87"
+( $at_check_trace; cd top/dir2 && atf-run
+) >>"$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_atf_run.at:87"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:88: grep '^tc-end: [0-9. ]*, tc_4, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:88"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_4, failed' stdout
+) >>"$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_atf_run.at:88"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:89: grep '^tc-end: [0-9. ]*, tc_5, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:89"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_5, passed' stdout
+) >>"$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_atf_run.at:89"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:90: grep -i 'tc_[123]' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:90"
+( $at_check_trace; grep -i 'tc_[123]' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_atf_run.at:90"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:91: grep 'tc-so:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:91"
+( $at_check_trace; grep 'tc-so:ignore-me' stdout
+) >>"$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_atf_run.at:91"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:92: grep 'tc-se:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:92"
+( $at_check_trace; grep 'tc-se:ignore-me' stdout
+) >>"$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_atf_run.at:92"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:94: cd top && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:94"
+( $at_check_trace; cd top && atf-run
+) >>"$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_atf_run.at:94"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:95: grep '^tc-end: [0-9. ]*, tc_1, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:95"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_1, passed' stdout
+) >>"$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_atf_run.at:95"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:96: grep '^tc-end: [0-9. ]*, tc_2, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:96"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_2, failed' stdout
+) >>"$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_atf_run.at:96"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:97: grep '^tc-end: [0-9. ]*, tc_3, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:97"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_3, passed' stdout
+) >>"$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_atf_run.at:97"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:98: grep '^tc-end: [0-9. ]*, tc_4, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:98"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_4, failed' stdout
+) >>"$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_atf_run.at:98"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:99: grep '^tc-end: [0-9. ]*, tc_5, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:99"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_5, passed' stdout
+) >>"$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_atf_run.at:99"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:100: grep 'tc-so:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:100"
+( $at_check_trace; grep 'tc-so:ignore-me' stdout
+) >>"$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_atf_run.at:100"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:101: grep 'tc-se:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:101"
+( $at_check_trace; grep 'tc-se:ignore-me' stdout
+) >>"$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_atf_run.at:101"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+cat >top/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp-glob: *
+_ATEOF
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:111: cd top && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:111"
+( $at_check_trace; cd top && atf-run
+) >>"$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_atf_run.at:111"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:112: grep '^tc-end: [0-9. ]*, tc_1, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:112"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_1, passed' stdout
+) >>"$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_atf_run.at:112"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:113: grep '^tc-end: [0-9. ]*, tc_2, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:113"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_2, failed' stdout
+) >>"$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_atf_run.at:113"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:114: grep '^tc-end: [0-9. ]*, tc_3, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:114"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_3, passed' stdout
+) >>"$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_atf_run.at:114"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:115: grep '^tc-end: [0-9. ]*, tc_4, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:115"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_4, failed' stdout
+) >>"$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_atf_run.at:115"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:116: grep '^tc-end: [0-9. ]*, tc_5, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:116"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_5, passed' stdout
+) >>"$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_atf_run.at:116"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:117: grep 'tc-so:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:117"
+( $at_check_trace; grep 'tc-so:ignore-me' stdout
+) >>"$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_atf_run.at:117"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:118: grep 'tc-se:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:118"
+( $at_check_trace; grep 'tc-se:ignore-me' stdout
+) >>"$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_atf_run.at:118"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+cat >top/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp-glob: d*
+_ATEOF
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:128: cd top && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:128"
+( $at_check_trace; cd top && atf-run
+) >>"$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_atf_run.at:128"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:129: grep '^tc-end: [0-9. ]*, tc_3, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:129"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_3, passed' stdout
+) >>"$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_atf_run.at:129"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:130: grep '^tc-end: [0-9. ]*, tc_4, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:130"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_4, failed' stdout
+) >>"$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_atf_run.at:130"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:131: grep '^tc-end: [0-9. ]*, tc_5, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:131"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_5, passed' stdout
+) >>"$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_atf_run.at:131"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:132: grep 'tc-so:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:132"
+( $at_check_trace; grep 'tc-so:ignore-me' stdout
+) >>"$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_atf_run.at:132"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:133: grep 'tc-se:ignore-me' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:133"
+( $at_check_trace; grep 'tc-se:ignore-me' stdout
+) >>"$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_atf_run.at:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:138: rm -rf top"
+at_fn_check_prepare_trace "t_atf_run.at:138"
+( $at_check_trace; rm -rf top
+) >>"$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_atf_run.at:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:139: mkdir top"
+at_fn_check_prepare_trace "t_atf_run.at:139"
+( $at_check_trace; mkdir top
+) >>"$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_atf_run.at:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:140: sed -e 's,@TC_NAME@,tc_1,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:140"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_1,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:140: mv stdout top/test1"
+at_fn_check_prepare_trace "t_atf_run.at:140"
+( $at_check_trace; mv stdout top/test1
+) >>"$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_atf_run.at:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:140: chmod +x top/test1"
+at_fn_check_prepare_trace "t_atf_run.at:140"
+( $at_check_trace; chmod +x top/test1
+) >>"$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_atf_run.at:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:141: sed -e 's,@TC_NAME@,tc_2,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:141"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_2,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:141: mv stdout top/test2"
+at_fn_check_prepare_trace "t_atf_run.at:141"
+( $at_check_trace; mv stdout top/test2
+) >>"$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_atf_run.at:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:141: chmod +x top/test2"
+at_fn_check_prepare_trace "t_atf_run.at:141"
+( $at_check_trace; chmod +x top/test2
+) >>"$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_atf_run.at:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:142: sed -e 's,@TC_NAME@,tc_3,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:142"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_3,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:142"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:142: mv stdout top/test3"
+at_fn_check_prepare_trace "t_atf_run.at:142"
+( $at_check_trace; mv stdout top/test3
+) >>"$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_atf_run.at:142"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:142: chmod +x top/test3"
+at_fn_check_prepare_trace "t_atf_run.at:142"
+( $at_check_trace; chmod +x top/test3
+) >>"$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_atf_run.at:142"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:143: chmod -x top/test3"
+at_fn_check_prepare_trace "t_atf_run.at:143"
+( $at_check_trace; chmod -x top/test3
+) >>"$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_atf_run.at:143"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:144: sed -e 's,@TC_NAME@,tc_4,g' <\$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_pass"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:144"
+( $at_check_trace; sed -e 's,@TC_NAME@,tc_4,g' <$({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_pass
+) >>"$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_atf_run.at:144"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:144: mv stdout top/.test4"
+at_fn_check_prepare_trace "t_atf_run.at:144"
+( $at_check_trace; mv stdout top/.test4
+) >>"$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_atf_run.at:144"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:144: chmod +x top/.test4"
+at_fn_check_prepare_trace "t_atf_run.at:144"
+( $at_check_trace; chmod +x top/.test4
+) >>"$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_atf_run.at:144"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:145: chmod -x top/.test4"
+at_fn_check_prepare_trace "t_atf_run.at:145"
+( $at_check_trace; chmod -x top/.test4
+) >>"$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_atf_run.at:145"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+cat >top/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp-glob: *
+_ATEOF
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:153: cd top && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:153"
+( $at_check_trace; cd top && atf-run
+) >>"$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_atf_run.at:153"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:154: grep '^tc-end: [0-9. ]*, tc_1, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:154"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_1, passed' stdout
+) >>"$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_atf_run.at:154"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:155: grep '^tc-end: [0-9. ]*, tc_2, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:155"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, tc_2, passed' stdout
+) >>"$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_atf_run.at:155"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:156: grep -i 'tc_3' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:156"
+( $at_check_trace; grep -i 'tc_3' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_atf_run.at:156"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:157: grep -i 'tc_4' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:157"
+( $at_check_trace; grep -i 'tc_4' stdout
+) >>"$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 1 $at_status "$at_srcdir/t_atf_run.at:157"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:160: rm -rf top"
+at_fn_check_prepare_trace "t_atf_run.at:160"
+( $at_check_trace; rm -rf top
+) >>"$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_atf_run.at:160"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:161: mkdir top"
+at_fn_check_prepare_trace "t_atf_run.at:161"
+( $at_check_trace; mkdir top
+) >>"$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_atf_run.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:162: cp \$({
+ old=\$(pwd)
+ while test \$(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=\$(pwd)
+ cd \${old}
+ echo \${topdir}
+})/bootstrap/h_tp_basic_sh top"
+at_fn_check_prepare_notrace 'a $(...) command substitution' "t_atf_run.at:162"
+( $at_check_trace; cp $({
+ old=$(pwd)
+ while test $(pwd) != '/' -a ! -e ./Makefile; do
+ cd ..
+ done
+ topdir=$(pwd)
+ cd ${old}
+ echo ${topdir}
+})/bootstrap/h_tp_basic_sh top
+) >>"$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_atf_run.at:162"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+cat >top/Atffile <<'_ATEOF'
+Content-Type: application/X-atf-atffile; version="1"
+
+prop: test-suite = atf
+
+tp: h_tp_basic_sh
+_ATEOF
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:170: cd top && atf-run"
+at_fn_check_prepare_trace "t_atf_run.at:170"
+( $at_check_trace; cd top && atf-run
+) >>"$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_atf_run.at:170"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:171: grep '^tc-end: [0-9. ]*, pass, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:171"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, pass, passed' stdout
+) >>"$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_atf_run.at:171"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:172: grep '^tc-end: [0-9. ]*, fail, failed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:172"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, fail, failed' stdout
+) >>"$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_atf_run.at:172"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:173: grep '^tc-end: [0-9. ]*, skip, skipped' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:173"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, skip, skipped' stdout
+) >>"$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_atf_run.at:173"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/t_atf_run.at:174: grep '^tc-end: [0-9. ]*, default, passed' stdout"
+at_fn_check_prepare_trace "t_atf_run.at:174"
+( $at_check_trace; grep '^tc-end: [0-9. ]*, default, passed' stdout
+) >>"$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_atf_run.at:174"
+$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_9
diff --git a/bootstrap/testsuite.at b/bootstrap/testsuite.at
index d6db49a..3536ac9 100644
--- a/bootstrap/testsuite.at
+++ b/bootstrap/testsuite.at
@@ -74,7 +74,7 @@ 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_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)
diff --git a/configure b/configure
index f4c6121..5033391 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Automated Testing Framework 0.18.
+# Generated by GNU Autoconf 2.69 for Automated Testing Framework 0.19.
#
# Report bugs to <atf-devel@NetBSD.org>.
#
@@ -592,10 +592,10 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Automated Testing Framework'
PACKAGE_TARNAME='atf'
-PACKAGE_VERSION='0.18'
-PACKAGE_STRING='Automated Testing Framework 0.18'
+PACKAGE_VERSION='0.19'
+PACKAGE_STRING='Automated Testing Framework 0.19'
PACKAGE_BUGREPORT='atf-devel@NetBSD.org'
-PACKAGE_URL='http://code.google.com/p/kyua/wiki/ATF'
+PACKAGE_URL='https://github.com/jmmv/atf/'
ac_unique_file="atf-c.h"
# Factoring default headers for most tests.
@@ -683,8 +683,6 @@ NMEDIT
DSYMUTIL
MANIFEST_TOOL
RANLIB
-ac_ct_AR
-AR
DLLTOOL
OBJDUMP
LN_S
@@ -696,6 +694,7 @@ FGREP
EGREP
GREP
SED
+LIBTOOL
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
@@ -713,7 +712,8 @@ CPPFLAGS
LDFLAGS
CFLAGS
CC
-LIBTOOL
+ac_ct_AR
+AR
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
@@ -795,11 +795,11 @@ ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_silent_rules
+enable_dependency_tracking
enable_shared
enable_static
with_pic
enable_fast_install
-enable_dependency_tracking
with_gnu_ld
with_sysroot
enable_libtool_lock
@@ -1368,7 +1368,7 @@ 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.18 to adapt to many kinds of systems.
+\`configure' configures Automated Testing Framework 0.19 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1439,7 +1439,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Automated Testing Framework 0.18:";;
+ short | recursive ) echo "Configuration of Automated Testing Framework 0.19:";;
esac
cat <<\_ACEOF
@@ -1449,14 +1449,14 @@ Optional Features:
--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-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]
--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
@@ -1503,7 +1503,7 @@ 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 <atf-devel@NetBSD.org>.
-Automated Testing Framework home page: <http://code.google.com/p/kyua/wiki/ATF>.
+Automated Testing Framework home page: <https://github.com/jmmv/atf/>.
_ACEOF
ac_status=$?
fi
@@ -1566,7 +1566,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Automated Testing Framework configure 0.18
+Automated Testing Framework configure 0.19
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2130,7 +2130,7 @@ 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.18, which was
+It was created by Automated Testing Framework $as_me 0.19, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3116,7 +3116,7 @@ fi
# Define the identity of the package.
PACKAGE='atf'
- VERSION='0.18'
+ VERSION='0.19'
cat >>confdefs.h <<_ACEOF
@@ -3209,100 +3209,6 @@ END
fi
fi
-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.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
@@ -4342,6 +4248,272 @@ else
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.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+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 :
@@ -5767,7 +5939,6 @@ test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
if test -n "$ac_tool_prefix"; then
for ac_prog in ar
do
@@ -16787,97 +16958,6 @@ done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether putenv is in std" >&5
-$as_echo_n "checking whether putenv is in std... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <cstdio>
-int
-main ()
-{
-std::putenv("a=b");
- 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_PUTENV_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 setenv is in std" >&5
-$as_echo_n "checking whether setenv is in std... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <cstdio>
-int
-main ()
-{
-std::setenv("a", "b");
- 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_SETENV_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 unsetenv is in std" >&5
-$as_echo_n "checking whether unsetenv is in std... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <cstdio>
-int
-main ()
-{
-std::unsetenv("a");
- 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_UNSETENV_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 basename takes a constant pointer" >&5
$as_echo_n "checking whether basename takes a constant pointer... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16980,51 +17060,6 @@ $as_echo "#define HAVE_GETCWD_DYN 1" >>confdefs.h
fi
- for ac_func in unmount
-do :
- ac_fn_cxx_check_func "$LINENO" "unmount" "ac_cv_func_unmount"
-if test "x$ac_cv_func_unmount" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UNMOUNT 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf is in std" >&5
-$as_echo_n "checking whether snprintf is in std... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <cstdio>
-int
-main ()
-{
-char buf;
- std::snprintf(&buf, 1, "");
- 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_SNPRINTF_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 for the last valid signal" >&5
$as_echo_n "checking for the last valid signal... " >&6; }
@@ -17419,7 +17454,7 @@ fi
-ac_config_files="$ac_config_files Makefile atf-c/defs.h"
+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
@@ -17967,7 +18002,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# 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.18, which was
+This file was extended by Automated Testing Framework $as_me 0.19, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18028,13 +18063,13 @@ Configuration commands:
$config_commands
Report bugs to <atf-devel@NetBSD.org>.
-Automated Testing Framework home page: <http://code.google.com/p/kyua/wiki/ATF>."
+Automated Testing Framework home page: <https://github.com/jmmv/atf/>."
_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.18
+Automated Testing Framework config.status 0.19
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -18545,6 +18580,7 @@ do
"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
diff --git a/configure.ac b/configure.ac
index b6c8da0..bca3184 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,8 +31,8 @@ dnl -----------------------------------------------------------------------
dnl Initialize the GNU build system.
dnl -----------------------------------------------------------------------
-AC_INIT([Automated Testing Framework], [0.18], [atf-devel@NetBSD.org], [atf],
- [http://code.google.com/p/kyua/wiki/ATF])
+AC_INIT([Automated Testing Framework], [0.19], [atf-devel@NetBSD.org], [atf],
+ [https://github.com/jmmv/atf/])
AC_PREREQ([2.65])
AC_COPYRIGHT([Copyright (c) 2007-2012 The NetBSD Foundation, Inc.])
AC_DEFINE([PACKAGE_COPYRIGHT],
@@ -48,6 +48,7 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([1.9 check-news foreign subdir-objects -Wall])
+AM_PROG_AR
LT_INIT
AC_ARG_ENABLE(tools,
@@ -90,7 +91,6 @@ ATF_MODULE_APPLICATION
ATF_MODULE_DEFS
ATF_MODULE_ENV
ATF_MODULE_FS
-ATF_MODULE_SANITY
ATF_MODULE_SIGNALS
AC_CHECK_TYPE([timer_t], [], [], [[#include <time.h>]])
@@ -218,7 +218,7 @@ dnl -----------------------------------------------------------------------
dnl Finally, generate output.
dnl -----------------------------------------------------------------------
-AC_OUTPUT([Makefile atf-c/defs.h])
+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);])
diff --git a/doc/Makefile.am.inc b/doc/Makefile.am.inc
index 858ff04..432d96d 100644
--- a/doc/Makefile.am.inc
+++ b/doc/Makefile.am.inc
@@ -30,21 +30,4 @@
dist_man_MANS += doc/atf-test-case.4 \
doc/atf-test-program.1
-if ENABLE_TOOLS
-
-man_MANS += doc/atf.7
-CLEANFILES += doc/atf.7
-EXTRA_DIST += doc/atf.7.in
-
-dist_man_MANS += doc/atf-formats.5
-
-doc/atf.7: $(srcdir)/doc/atf.7.in
- 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
-
-endif
-
# vim: syntax=make:noexpandtab:shiftwidth=8:softtabstop=8
diff --git a/doc/atf-test-case.4 b/doc/atf-test-case.4
index e1b2bf4..c5e9e66 100644
--- a/doc/atf-test-case.4
+++ b/doc/atf-test-case.4
@@ -123,8 +123,9 @@ 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 expectation is trying to convery is
-fixed, then the test case will be reported as
+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
diff --git a/m4/cxx-std-funcs.m4 b/m4/cxx-std-funcs.m4
index d2266b4..cd9a378 100644
--- a/m4/cxx-std-funcs.m4
+++ b/m4/cxx-std-funcs.m4
@@ -38,35 +38,6 @@ AC_DEFUN([ATF_CHECK_IN_STD], [
)
])
-AC_DEFUN([ATF_CHECK_STD_PUTENV], [
- ATF_CHECK_IN_STD([putenv],
- [#include <cstdio>],
- [std::putenv("a=b");]
- )
-])
-
-AC_DEFUN([ATF_CHECK_STD_SETENV], [
- ATF_CHECK_IN_STD([setenv],
- [#include <cstdio>],
- [std::setenv("a", "b");]
- )
-])
-
-AC_DEFUN([ATF_CHECK_STD_SNPRINTF], [
- ATF_CHECK_IN_STD([snprintf],
- [#include <cstdio>],
- [char buf;
- std::snprintf(&buf, 1, "");]
- )
-])
-
-AC_DEFUN([ATF_CHECK_STD_UNSETENV], [
- ATF_CHECK_IN_STD([unsetenv],
- [#include <cstdio>],
- [std::unsetenv("a");]
- )
-])
-
AC_DEFUN([ATF_CHECK_STD_VSNPRINTF], [
ATF_CHECK_IN_STD([vsnprintf],
[#include <cstdarg>
diff --git a/m4/module-env.m4 b/m4/module-env.m4
index 8080e1c..6eb489f 100644
--- a/m4/module-env.m4
+++ b/m4/module-env.m4
@@ -29,8 +29,4 @@ dnl
AC_DEFUN([ATF_MODULE_ENV], [
AC_CHECK_FUNCS([putenv setenv unsetenv])
-
- ATF_CHECK_STD_PUTENV
- ATF_CHECK_STD_SETENV
- ATF_CHECK_STD_UNSETENV
])
diff --git a/m4/module-fs.m4 b/m4/module-fs.m4
index 7019a66..4b04609 100644
--- a/m4/module-fs.m4
+++ b/m4/module-fs.m4
@@ -66,6 +66,4 @@ AC_DEFUN([ATF_MODULE_FS], [
AC_DEFINE([HAVE_GETCWD_DYN], [1],
[Define to 1 if getcwd(NULL, 0) works])
fi
-
- AC_CHECK_FUNCS([unmount])
])
diff --git a/m4/module-sanity.m4 b/m4/module-sanity.m4
deleted file mode 100644
index 9d146c1..0000000
--- a/m4/module-sanity.m4
+++ /dev/null
@@ -1,32 +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
-
-AC_DEFUN([ATF_MODULE_SANITY], [
- ATF_CHECK_STD_SNPRINTF
-])
diff --git a/tools/Atffile b/tools/Atffile
new file mode 100644
index 0000000..8896078
--- /dev/null
+++ b/tools/Atffile
@@ -0,0 +1,25 @@
+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/tools/Kyuafile b/tools/Kyuafile
new file mode 100644
index 0000000..09c5145
--- /dev/null
+++ b/tools/Kyuafile
@@ -0,0 +1,24 @@
+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/tools/Makefile.am.inc b/tools/Makefile.am.inc
new file mode 100644
index 0000000..26668ba
--- /dev/null
+++ b/tools/Makefile.am.inc
@@ -0,0 +1,332 @@
+#
+# 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/tools/application.cpp b/tools/application.cpp
new file mode 100644
index 0000000..723e9f1
--- /dev/null
+++ b/tools/application.cpp
@@ -0,0 +1,317 @@
+//
+// 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 "bconfig.h"
+#endif
+
+extern "C" {
+#include <unistd.h>
+}
+
+#include <cassert>
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <iostream>
+
+#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/tools/application.hpp b/tools/application.hpp
new file mode 100644
index 0000000..5a8d57c
--- /dev/null
+++ b/tools/application.hpp
@@ -0,0 +1,113 @@
+//
+// 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 <ostream>
+#include <set>
+#include <stdexcept>
+#include <string>
+
+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/tools/application_test.cpp b/tools/application_test.cpp
new file mode 100644
index 0000000..a9013cd
--- /dev/null
+++ b/tools/application_test.cpp
@@ -0,0 +1,94 @@
+//
+// 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 <unistd.h>
+}
+
+#include <atf-c++.hpp>
+
+#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/atf-config/atf-config.1 b/tools/atf-config.1
index deae6f6..deae6f6 100644
--- a/atf-config/atf-config.1
+++ b/tools/atf-config.1
diff --git a/atf-config/atf-config.cpp b/tools/atf-config.cpp
index e5fdca1..4d82d55 100644
--- a/atf-config/atf-config.cpp
+++ b/tools/atf-config.cpp
@@ -32,16 +32,11 @@
#include <map>
#include <string>
-extern "C" {
-#include "atf-c/defs.h"
-}
-
-#include "atf-c++/config.hpp"
-
-#include "atf-c++/detail/application.hpp"
-#include "atf-c++/detail/sanity.hpp"
+#include "application.hpp"
+#include "config.hpp"
+#include "defs.hpp"
-class atf_config : public atf::application::app {
+class atf_config : public tools::application::app {
static const char* m_description;
bool m_tflag;
@@ -79,7 +74,7 @@ atf_config::process_option(int ch, const char* arg ATF_DEFS_ATTRIBUTE_UNUSED)
break;
default:
- UNREACHABLE;
+ std::abort();
}
}
@@ -94,7 +89,7 @@ atf_config::options_set
atf_config::specific_options(void)
const
{
- using atf::application::option;
+ using tools::application::option;
options_set opts;
opts.insert(option('t', "", "Terse output: show values only"));
return opts;
@@ -117,20 +112,20 @@ int
atf_config::main(void)
{
if (m_argc < 1) {
- std::map< std::string, std::string > cv = atf::config::get_all();
+ 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 (!atf::config::has(m_argv[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], atf::config::get(m_argv[i]))
+ std::cout << format_var(m_argv[i], tools::config::get(m_argv[i]))
<< "\n";
}
}
diff --git a/atf-config/integration_test.sh b/tools/atf-config_test.sh
index 5d6505a..5d6505a 100644..100755
--- a/atf-config/integration_test.sh
+++ b/tools/atf-config_test.sh
diff --git a/doc/atf-formats.5 b/tools/atf-formats.5
index bb919f4..bb919f4 100644
--- a/doc/atf-formats.5
+++ b/tools/atf-formats.5
diff --git a/atf-report/atf-report.1 b/tools/atf-report.1
index df03af0..df03af0 100644
--- a/atf-report/atf-report.1
+++ b/tools/atf-report.1
diff --git a/atf-report/atf-report.cpp b/tools/atf-report.cpp
index 359b58b..cb065f9 100644
--- a/atf-report/atf-report.cpp
+++ b/tools/atf-report.cpp
@@ -41,20 +41,17 @@ extern "C" {
#include <utility>
#include <vector>
-#include "atf-c/defs.h"
-
-#include "atf-c++/detail/application.hpp"
-#include "atf-c++/detail/fs.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/text.hpp"
-#include "atf-c++/detail/ui.hpp"
-
+#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 atf::fs::path& path)
+open_outfile(const tools::fs::path& path)
{
ostream_ptr osp;
if (path.str() == "-")
@@ -128,7 +125,7 @@ class csv_writer : public writer {
std::string m_tcname;
public:
- csv_writer(const atf::fs::path& p) :
+ csv_writer(const tools::fs::path& p) :
m_os(open_outfile(p))
{
}
@@ -223,8 +220,8 @@ class ticker_writer : public writer {
void
write_tp_start(const std::string& tp, size_t ntcs)
{
- using atf::text::to_string;
- using atf::ui::format_text;
+ using tools::text::to_string;
+ using tools::ui::format_text;
m_tpname = tp;
@@ -238,7 +235,7 @@ class ticker_writer : public writer {
void
write_tp_end(struct timeval* tv, const std::string& reason)
{
- using atf::ui::format_text_with_tag;
+ using tools::ui::format_text_with_tag;
m_curtp++;
@@ -290,7 +287,7 @@ class ticker_writer : public writer {
str = "Skipped: " + reason;
m_tcs_skipped++;
} else
- UNREACHABLE;
+ std::abort();
// XXX Wrap text. format_text_with_tag does not currently allow
// to specify the current column, which is needed because we have
@@ -304,8 +301,8 @@ class ticker_writer : public writer {
write_expected_failures(const std::map< std::string, std::string >& xfails,
std::ostream& os)
{
- using atf::ui::format_text;
- using atf::ui::format_text_with_tag;
+ using tools::ui::format_text;
+ using tools::ui::format_text_with_tag;
os << format_text("Test cases for known bugs:") << "\n";
@@ -322,10 +319,10 @@ class ticker_writer : public writer {
void
write_eof(void)
{
- using atf::text::join;
- using atf::text::to_string;
- using atf::ui::format_text;
- using atf::ui::format_text_with_tag;
+ 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:")
@@ -362,7 +359,7 @@ class ticker_writer : public writer {
}
public:
- ticker_writer(const atf::fs::path& p) :
+ ticker_writer(const tools::fs::path& p) :
m_os(open_outfile(p))
{
}
@@ -473,7 +470,7 @@ class xml_writer : public writer {
} else if (state == "skipped") {
(*m_os) << "<skipped>" << elemval(reason) << "</skipped>\n";
} else
- UNREACHABLE;
+ std::abort();
(*m_os) << "<tc-time>" << format_tv(tv) << "</tc-time>";
(*m_os) << "</tc>\n";
}
@@ -485,7 +482,7 @@ class xml_writer : public writer {
}
public:
- xml_writer(const atf::fs::path& p) :
+ xml_writer(const tools::fs::path& p) :
m_os(open_outfile(p))
{
(*m_os) << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
@@ -507,7 +504,7 @@ public:
//! raised by the parser, redirects it to multiple writers so that they
//! can reformat it according to their output rules.
//!
-class converter : public atf::atf_report::atf_tps_reader {
+class converter : public tools::atf_report::atf_tps_reader {
typedef std::vector< writer* > outs_vector;
outs_vector m_outs;
@@ -586,7 +583,7 @@ class converter : public atf::atf_report::atf_tps_reader {
public:
converter(std::istream& is) :
- atf::atf_report::atf_tps_reader(is)
+ tools::atf_report::atf_tps_reader(is)
{
}
@@ -598,7 +595,7 @@ public:
}
void
- add_output(const std::string& fmt, const atf::fs::path& p)
+ add_output(const std::string& fmt, const tools::fs::path& p)
{
if (fmt == "csv") {
m_outs.push_back(new csv_writer(p));
@@ -615,10 +612,10 @@ public:
// The "atf_report" class.
// ------------------------------------------------------------------------
-class atf_report : public atf::application::app {
+class atf_report : public tools::application::app {
static const char* m_description;
- typedef std::pair< std::string, atf::fs::path > fmt_path_pair;
+ typedef std::pair< std::string, tools::fs::path > fmt_path_pair;
std::vector< fmt_path_pair > m_oflags;
void process_option(int, const char*);
@@ -651,14 +648,14 @@ atf_report::process_option(int ch, const char* arg)
throw std::runtime_error("Syntax error in -o option");
else {
std::string fmt = str.substr(0, pos);
- atf::fs::path path = atf::fs::path(str.substr(pos + 1));
+ tools::fs::path path = tools::fs::path(str.substr(pos + 1));
m_oflags.push_back(fmt_path_pair(fmt, path));
}
}
break;
default:
- UNREACHABLE;
+ std::abort();
}
}
@@ -666,7 +663,7 @@ atf_report::options_set
atf_report::specific_options(void)
const
{
- using atf::application::option;
+ 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 - "
@@ -681,15 +678,15 @@ atf_report::main(void)
throw std::runtime_error("No arguments allowed");
if (m_oflags.empty())
- m_oflags.push_back(fmt_path_pair("ticker", atf::fs::path("-")));
+ m_oflags.push_back(fmt_path_pair("ticker", tools::fs::path("-")));
// Look for path duplicates.
- std::set< atf::fs::path > paths;
+ std::set< tools::fs::path > paths;
for (std::vector< fmt_path_pair >::const_iterator iter = m_oflags.begin();
iter != m_oflags.end(); iter++) {
- atf::fs::path p = (*iter).second;
- if (p == atf::fs::path("/dev/stdout"))
- p = atf::fs::path("-");
+ 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");
diff --git a/atf-report/integration_test.sh b/tools/atf-report_test.sh
index b19346a..9f0f47f 100644..100755
--- a/atf-report/integration_test.sh
+++ b/tools/atf-report_test.sh
@@ -105,7 +105,7 @@ default_body()
atf_test_case expect
expect_body()
{
- ln -s "$(atf_get_srcdir)/../atf-run/expect_helpers" .
+ ln -s "$(atf_get_srcdir)/expect_helpers" .
cat >Atffile <<EOF
Content-Type: application/X-atf-atffile; version="1"
@@ -381,6 +381,7 @@ output_xml_space_head()
}
output_xml_space_body()
{
+ export TESTCASE=diff
cp $(atf_get_srcdir)/misc_helpers .
cat >Atffile <<EOF
Content-Type: application/X-atf-atffile; version="1"
diff --git a/atf-run/atf-run.1 b/tools/atf-run.1
index d593f47..d593f47 100644
--- a/atf-run/atf-run.1
+++ b/tools/atf-run.1
diff --git a/atf-run/atf-run.cpp b/tools/atf-run.cpp
index e28e8fd..3bc6f63 100644
--- a/atf-run/atf-run.cpp
+++ b/tools/atf-run.cpp
@@ -40,6 +40,7 @@ extern "C" {
}
#include <algorithm>
+#include <cassert>
#include <cerrno>
#include <cstdlib>
#include <cstring>
@@ -48,25 +49,24 @@ extern "C" {
#include <map>
#include <string>
-#include "atf-c++/detail/application.hpp"
-#include "atf-c++/config.hpp"
-#include "atf-c++/tests.hpp"
-
-#include "atf-c++/detail/env.hpp"
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/fs.hpp"
-#include "atf-c++/detail/parser.hpp"
-#include "atf-c++/detail/process.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/text.hpp"
-
+#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;
-namespace impl = atf::atf_run;
+} // anonymous namespace
#if defined(MAXCOMLEN)
static const std::string::size_type max_core_name_length = MAXCOMLEN;
@@ -74,12 +74,12 @@ static const std::string::size_type max_core_name_length = MAXCOMLEN;
static const std::string::size_type max_core_name_length = std::string::npos;
#endif
-class atf_run : public atf::application::app {
+class atf_run : public tools::application::app {
static const char* m_description;
- atf::tests::vars_map m_cmdline_vars;
+ vars_map m_cmdline_vars;
- static atf::tests::vars_map::value_type parse_var(const std::string&);
+ static vars_map::value_type parse_var(const std::string&);
void process_option(int, const char*);
std::string specific_args(void) const;
@@ -91,14 +91,17 @@ class atf_run : public atf::application::app {
size_t count_tps(std::vector< std::string >) const;
- int run_test(const atf::fs::path&, impl::atf_tps_writer&,
- const atf::tests::vars_map&);
- int run_test_directory(const atf::fs::path&, impl::atf_tps_writer&);
- int run_test_program(const atf::fs::path&, impl::atf_tps_writer&,
- const atf::tests::vars_map&);
+ 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&);
- impl::test_case_result get_test_case_result(const std::string&,
- const atf::process::status&, const atf::fs::path&) const;
+ 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);
@@ -110,7 +113,7 @@ static void
sanitize_gdb_env(void)
{
try {
- atf::env::unset("TERM");
+ 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
@@ -119,29 +122,30 @@ sanitize_gdb_env(void)
}
static void
-dump_stacktrace(const atf::fs::path& tp, const atf::process::status& s,
- const atf::fs::path& workdir, impl::atf_tps_writer& w)
+dump_stacktrace(const tools::fs::path& tp, const tools::process::status& s,
+ const tools::fs::path& workdir,
+ tools::test_program::atf_tps_writer& w)
{
- PRE(s.signaled() && s.coredump());
+ assert(s.signaled() && s.coredump());
w.stderr_tc("Test program crashed; attempting to get stack trace");
- const atf::fs::path corename = workdir /
+ const tools::fs::path corename = workdir /
(tp.leaf_name().substr(0, max_core_name_length) + ".core");
- if (!atf::fs::exists(corename)) {
+ if (!tools::fs::exists(corename)) {
w.stderr_tc("Expected file " + corename.str() + " not found");
return;
}
- const atf::fs::path gdb(GDB);
- const atf::fs::path gdbout = workdir / "gdb.out";
- const atf::process::argv_array args(gdb.leaf_name().c_str(), "-batch",
+ 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);
- atf::process::status status = atf::process::exec(
+ tools::process::status status = tools::process::exec(
gdb, args,
- atf::process::stream_redirect_path(gdbout),
- atf::process::stream_redirect_path(atf::fs::path("/dev/null")),
+ 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");
@@ -177,7 +181,7 @@ atf_run::process_option(int ch, const char* arg)
break;
default:
- UNREACHABLE;
+ std::abort();
}
}
@@ -192,7 +196,7 @@ atf_run::options_set
atf_run::specific_options(void)
const
{
- using atf::application::option;
+ using tools::application::option;
options_set opts;
opts.insert(option('v', "var=value", "Sets the configuration variable "
"`var' to `value'; overrides "
@@ -206,7 +210,7 @@ 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 = atf::text::split(str, "=");
+ std::vector< std::string > ws = tools::text::split(str, "=");
if (ws.size() == 1 && str[str.length() - 1] == '=') {
m_cmdline_vars[ws[0]] = "";
} else {
@@ -219,18 +223,18 @@ atf_run::parse_vflag(const std::string& str)
}
int
-atf_run::run_test(const atf::fs::path& tp,
- impl::atf_tps_writer& w,
- const atf::tests::vars_map& config)
+atf_run::run_test(const tools::fs::path& tp,
+ tools::test_program::atf_tps_writer& w,
+ const vars_map& config)
{
- atf::fs::file_info fi(tp);
+ tools::fs::file_info fi(tp);
int errcode;
- if (fi.get_type() == atf::fs::file_info::dir_type)
+ if (fi.get_type() == tools::fs::file_info::dir_type)
errcode = run_test_directory(tp, w);
else {
- const atf::tests::vars_map effective_config =
- impl::merge_configs(config, m_cmdline_vars);
+ const vars_map effective_config =
+ tools::config_file::merge_configs(config, m_cmdline_vars);
errcode = run_test_program(tp, w, effective_config);
}
@@ -238,39 +242,38 @@ atf_run::run_test(const atf::fs::path& tp,
}
int
-atf_run::run_test_directory(const atf::fs::path& tp,
- impl::atf_tps_writer& w)
+atf_run::run_test_directory(const tools::fs::path& tp,
+ tools::test_program::atf_tps_writer& w)
{
- impl::atffile af = impl::read_atffile(tp / "Atffile");
+ tools::atffile af = tools::read_atffile(tp / "Atffile");
- atf::tests::vars_map test_suite_vars;
+ vars_map test_suite_vars;
{
- atf::tests::vars_map::const_iterator iter =
- af.props().find("test-suite");
- INV(iter != af.props().end());
- test_suite_vars = impl::read_config_files((*iter).second);
+ 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,
- impl::merge_configs(af.conf(), test_suite_vars));
+ tools::config_file::merge_configs(af.conf(), test_suite_vars));
ok &= (result == EXIT_SUCCESS);
}
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
-impl::test_case_result
+tools::test_program::test_case_result
atf_run::get_test_case_result(const std::string& broken_reason,
- const atf::process::status& s,
- const atf::fs::path& resfile)
+ const tools::process::status& s,
+ const tools::fs::path& resfile)
const
{
- using atf::text::to_string;
- using impl::read_test_case_result;
- using impl::test_case_result;
+ 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;
@@ -343,7 +346,7 @@ atf_run::get_test_case_result(const std::string& broken_reason,
tcr = read_test_case_result(resfile);
} catch (const std::runtime_error&) {
return test_case_result("failed", -1, "Test program received "
- "signal " + atf::text::to_string(s.termsig()) +
+ "signal " + tools::text::to_string(s.termsig()) +
(s.coredump() ? " (core dumped)" : ""));
}
@@ -358,53 +361,53 @@ atf_run::get_test_case_result(const std::string& broken_reason,
" signal but got " + to_string(s.termsig()));
} else {
return test_case_result("failed", -1, "Test program received "
- "signal " + atf::text::to_string(s.termsig()) +
+ "signal " + tools::text::to_string(s.termsig()) +
(s.coredump() ? " (core dumped)" : "") + " and created a "
"bogus results file");
}
}
- UNREACHABLE;
+ std::abort();
return test_case_result();
}
int
-atf_run::run_test_program(const atf::fs::path& tp,
- impl::atf_tps_writer& w,
- const atf::tests::vars_map& config)
+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;
- impl::metadata md;
+ tools::test_program::metadata md;
try {
- md = impl::get_metadata(tp, config);
- } catch (const atf::parser::format_error& e) {
+ 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 atf::parser::parse_errors& e) {
- const std::string reason = atf::text::join(e, "; ");
+ } 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;
}
- impl::temp_dir resdir(atf::fs::path(atf::config::get("atf_workdir")) /
- "atf-run.XXXXXX");
+ 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, atf::tests::vars_map >::const_iterator iter
+ 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 atf::tests::vars_map& tcmd = (*iter).second;
+ const vars_map& tcmd = (*iter).second;
w.start_tc(tcname);
try {
- const std::string& reqfail = impl::check_requirements(
+ const std::string& reqfail = tools::check_requirements(
tcmd, config);
if (!reqfail.empty()) {
w.end_tc("skipped", reqfail);
@@ -416,51 +419,53 @@ atf_run::run_test_program(const atf::fs::path& tp,
continue;
}
- const std::pair< int, int > user = impl::get_required_user(
+ const std::pair< int, int > user = tools::get_required_user(
tcmd, config);
- atf::fs::path resfile = resdir.get_path() / "tcr";
- INV(!atf::fs::exists(resfile));
+ tools::fs::path resfile = resdir.get_path() / "tcr";
+ assert(!tools::fs::exists(resfile));
try {
- const bool has_cleanup = atf::text::to_bool(
+ const bool has_cleanup = tools::text::to_bool(
(*tcmd.find("has.cleanup")).second);
- impl::temp_dir workdir(atf::fs::path(atf::config::get(
+ 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 atf::system_error("chown(" +
+ throw tools::system_error("chown(" +
workdir.get_path().str() + ")", "chown(2) failed",
errno);
}
resfile = workdir.get_path() / "tcr";
}
- std::pair< std::string, const atf::process::status > s =
- impl::run_test_case(tp, tcname, "body", tcmd, config,
- resfile, workdir.get_path(), w);
+ 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)impl::run_test_case(tp, tcname, "cleanup", tcmd,
- config, resfile, workdir.get_path(), w);
+ (void)tools::test_program::run_test_case(
+ tp, tcname, "cleanup", tcmd,
+ config, resfile, workdir.get_path(), w);
// TODO: Force deletion of workdir.
- impl::test_case_result tcr = get_test_case_result(s.first,
- s.second, resfile);
+ 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 (atf::fs::exists(resfile))
- atf::fs::remove(resfile);
+ if (tools::fs::exists(resfile))
+ tools::fs::remove(resfile);
throw;
}
- if (atf::fs::exists(resfile))
- atf::fs::remove(resfile);
+ if (tools::fs::exists(resfile))
+ tools::fs::remove(resfile);
}
w.end_tp("");
@@ -477,11 +482,11 @@ atf_run::count_tps(std::vector< std::string > tps)
for (std::vector< std::string >::const_iterator iter = tps.begin();
iter != tps.end(); iter++) {
- atf::fs::path tp(*iter);
- atf::fs::file_info fi(tp);
+ tools::fs::path tp(*iter);
+ tools::fs::file_info fi(tp);
- if (fi.get_type() == atf::fs::file_info::dir_type) {
- impl::atffile af = impl::read_atffile(tp / "Atffile");
+ 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++)
@@ -498,16 +503,16 @@ static
void
call_hook(const std::string& tool, const std::string& hook)
{
- const atf::fs::path sh(atf::config::get("atf_shell"));
- const atf::fs::path hooks =
- atf::fs::path(atf::config::get("atf_pkgdatadir")) / (tool + ".hooks");
+ 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 atf::process::status s =
- atf::process::exec(sh,
- atf::process::argv_array(sh.c_str(), hooks.c_str(),
+ const tools::process::status s =
+ tools::process::exec(sh,
+ tools::process::argv_array(sh.c_str(), hooks.c_str(),
hook.c_str(), NULL),
- atf::process::stream_inherit(),
- atf::process::stream_inherit());
+ tools::process::stream_inherit(),
+ tools::process::stream_inherit());
if (!s.exited() || s.exitstatus() != EXIT_SUCCESS)
@@ -518,7 +523,7 @@ call_hook(const std::string& tool, const std::string& hook)
int
atf_run::main(void)
{
- impl::atffile af = impl::read_atffile(atf::fs::path("Atffile"));
+ tools::atffile af = tools::read_atffile(tools::fs::path("Atffile"));
std::vector< std::string > tps;
tps = af.tps();
@@ -531,23 +536,22 @@ atf_run::main(void)
}
// Read configuration data for this test suite.
- atf::tests::vars_map test_suite_vars;
+ vars_map test_suite_vars;
{
- atf::tests::vars_map::const_iterator iter =
- af.props().find("test-suite");
- INV(iter != af.props().end());
- test_suite_vars = impl::read_config_files((*iter).second);
+ 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);
}
- impl::atf_tps_writer w(std::cout);
+ 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(atf::fs::path(*iter), w,
- impl::merge_configs(af.conf(), test_suite_vars));
+ const bool result = run_test(tools::fs::path(*iter), w,
+ tools::config_file::merge_configs(af.conf(), test_suite_vars));
ok &= (result == EXIT_SUCCESS);
}
diff --git a/atf-run/integration_test.sh b/tools/atf-run_test.sh
index afd013e..afd013e 100644..100755
--- a/atf-run/integration_test.sh
+++ b/tools/atf-run_test.sh
diff --git a/atf-version/atf-version.1 b/tools/atf-version.1
index 136f13c..136f13c 100644
--- a/atf-version/atf-version.1
+++ b/tools/atf-version.1
diff --git a/atf-version/atf-version.cpp b/tools/atf-version.cpp
index dfd092c..0a13e7e 100644
--- a/atf-version/atf-version.cpp
+++ b/tools/atf-version.cpp
@@ -34,12 +34,11 @@
#include <cstdlib>
#include <iostream>
-#include "atf-c++/detail/application.hpp"
-#include "atf-c++/detail/ui.hpp"
-
+#include "application.hpp"
#include "revision.h"
+#include "ui.hpp"
-class atf_version : public atf::application::app {
+class atf_version : public tools::application::app {
static const char* m_description;
public:
@@ -60,8 +59,8 @@ atf_version::atf_version(void) :
int
atf_version::main(void)
{
- using atf::ui::format_text;
- using atf::ui::format_text_with_tag;
+ 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";
diff --git a/doc/atf.7.in b/tools/atf.7.in
index b11054c..b11054c 100644
--- a/doc/atf.7.in
+++ b/tools/atf.7.in
diff --git a/atf-run/atffile.cpp b/tools/atffile.cpp
index 22ece64..b04c59e 100644
--- a/atf-run/atffile.cpp
+++ b/tools/atffile.cpp
@@ -27,19 +27,24 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
+#include <cassert>
+#include <cstdlib>
#include <fstream>
-#include "atf-c/defs.h"
+#include "atffile.hpp"
+#include "defs.hpp"
+#include "exceptions.hpp"
+#include "expand.hpp"
+#include "parser.hpp"
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/expand.hpp"
-#include "atf-c++/detail/parser.hpp"
-#include "atf-c++/detail/sanity.hpp"
+namespace impl = tools;
+namespace detail = tools::detail;
-#include "atffile.hpp"
+namespace {
+
+typedef std::map< std::string, std::string > vars_map;
-namespace impl = atf::atf_run;
-namespace detail = atf::atf_run::detail;
+} // anonymous namespace
// ------------------------------------------------------------------------
// The "atf_atffile" auxiliary parser.
@@ -47,22 +52,22 @@ namespace detail = atf::atf_run::detail;
namespace atf_atffile {
-static const atf::parser::token_type eof_type = 0;
-static const atf::parser::token_type nl_type = 1;
-static const atf::parser::token_type text_type = 2;
-static const atf::parser::token_type colon_type = 3;
-static const atf::parser::token_type conf_type = 4;
-static const atf::parser::token_type dblquote_type = 5;
-static const atf::parser::token_type equal_type = 6;
-static const atf::parser::token_type hash_type = 7;
-static const atf::parser::token_type prop_type = 8;
-static const atf::parser::token_type tp_type = 9;
-static const atf::parser::token_type tp_glob_type = 10;
-
-class tokenizer : public atf::parser::tokenizer< std::istream > {
+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) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, true, eof_type, nl_type, text_type, curline)
{
add_delim(':', colon_type);
@@ -120,20 +125,20 @@ detail::atf_atffile_reader::got_eof(void)
void
detail::atf_atffile_reader::read(void)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_atffile;
- std::pair< size_t, atf::parser::headers_map > hml =
- atf::parser::read_headers(m_is, 1);
- atf::parser::validate_content_type(hml.second,
+ 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);
- atf::parser::parser< tokenizer > p(tkz);
+ tools::parser::parser< tokenizer > p(tkz);
for (;;) {
try {
- atf::parser::token t =
+ 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");
@@ -175,7 +180,7 @@ detail::atf_atffile_reader::read(void)
} else if (t.type() == nl_type) {
continue;
} else
- UNREACHABLE;
+ std::abort();
t = p.expect(nl_type, hash_type, eof_type,
"new line or comment");
@@ -198,8 +203,8 @@ detail::atf_atffile_reader::read(void)
// ------------------------------------------------------------------------
class reader : public detail::atf_atffile_reader {
- const atf::fs::directory& m_dir;
- atf::tests::vars_map m_conf, m_props;
+ const tools::fs::directory& m_dir;
+ vars_map m_conf, m_props;
std::vector< std::string > m_tps;
void
@@ -207,7 +212,7 @@ class reader : public detail::atf_atffile_reader {
{
if (isglob) {
std::vector< std::string > ms =
- atf::expand::expand_glob(name, m_dir.names());
+ 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();
@@ -215,9 +220,9 @@ class reader : public detail::atf_atffile_reader {
m_tps.push_back(*iter);
} else {
if (m_dir.find(name) == m_dir.end())
- throw atf::not_found_error< atf::fs::path >
+ throw tools::not_found_error< tools::fs::path >
("Cannot locate the " + name + " file",
- atf::fs::path(name));
+ tools::fs::path(name));
m_tps.push_back(name);
}
}
@@ -235,20 +240,20 @@ class reader : public detail::atf_atffile_reader {
}
public:
- reader(std::istream& is, const atf::fs::directory& dir) :
+ reader(std::istream& is, const tools::fs::directory& dir) :
detail::atf_atffile_reader(is),
m_dir(dir)
{
}
- const atf::tests::vars_map&
+ const vars_map&
conf(void)
const
{
return m_conf;
}
- const atf::tests::vars_map&
+ const vars_map&
props(void)
const
{
@@ -267,14 +272,14 @@ public:
// The "atffile" class.
// ------------------------------------------------------------------------
-impl::atffile::atffile(const atf::tests::vars_map& config_vars,
+impl::atffile::atffile(const vars_map& config_vars,
const std::vector< std::string >& test_program_names,
- const atf::tests::vars_map& properties) :
+ const vars_map& properties) :
m_conf(config_vars),
m_tps(test_program_names),
m_props(properties)
{
- PRE(properties.find("test-suite") != properties.end());
+ assert(properties.find("test-suite") != properties.end());
}
const std::vector< std::string >&
@@ -284,14 +289,14 @@ impl::atffile::tps(void)
return m_tps;
}
-const atf::tests::vars_map&
+const vars_map&
impl::atffile::conf(void)
const
{
return m_conf;
}
-const atf::tests::vars_map&
+const vars_map&
impl::atffile::props(void)
const
{
@@ -305,16 +310,16 @@ impl::atffile::props(void)
// 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 atf::fs::path& filename)
+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.
- fs::directory dir(filename.branch_path());
+ tools::fs::directory dir(filename.branch_path());
dir.erase(filename.leaf_name());
- fs::directory::iterator iter = dir.begin();
+ tools::fs::directory::iterator iter = dir.begin();
while (iter != dir.end()) {
const std::string& name = (*iter).first;
- const fs::file_info& fi = (*iter).second;
+ const tools::fs::file_info& fi = (*iter).second;
// Discard hidden files and non-executable ones so that they are
// not candidates for glob matching.
@@ -328,7 +333,7 @@ impl::read_atffile(const atf::fs::path& filename)
// Parse the atffile.
std::ifstream is(filename.c_str());
if (!is)
- throw atf::not_found_error< fs::path >
+ throw tools::not_found_error< tools::fs::path >
("Cannot open Atffile", filename);
reader r(is, dir);
r.read();
@@ -336,7 +341,7 @@ impl::read_atffile(const atf::fs::path& filename)
// Sanity checks.
if (r.props().find("test-suite") == r.props().end())
- throw atf::not_found_error< std::string >
+ throw tools::not_found_error< std::string >
("Undefined property `test-suite'", "test-suite");
return atffile(r.conf(), r.tps(), r.props());
diff --git a/atf-run/atffile.hpp b/tools/atffile.hpp
index 8c915c2..f326b24 100644
--- a/atf-run/atffile.hpp
+++ b/tools/atffile.hpp
@@ -27,18 +27,16 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_RUN_ATFFILE_HPP_)
-#define _ATF_RUN_ATFFILE_HPP_
+#if !defined(TOOLS_ATFFILE_HPP)
+#define TOOLS_ATFFILE_HPP
+#include <map>
#include <string>
#include <vector>
-#include "atf-c++/tests.hpp"
+#include "fs.hpp"
-#include "atf-c++/detail/fs.hpp"
-
-namespace atf {
-namespace atf_run {
+namespace tools {
// ------------------------------------------------------------------------
// The "atf_atffile_reader" class.
@@ -69,27 +67,26 @@ public:
// ------------------------------------------------------------------------
class atffile {
- atf::tests::vars_map m_conf;
+ std::map< std::string, std::string > m_conf;
std::vector< std::string > m_tps;
- atf::tests::vars_map m_props;
+ std::map< std::string, std::string > m_props;
public:
- atffile(const atf::tests::vars_map&,
+ atffile(const std::map< std::string, std::string >&,
const std::vector< std::string >&,
- const atf::tests::vars_map&);
+ const std::map< std::string, std::string >&);
- const atf::tests::vars_map& conf(void) const;
+ const std::map< std::string, std::string >& conf(void) const;
const std::vector< std::string >& tps(void) const;
- const atf::tests::vars_map& props(void) const;
+ const std::map< std::string, std::string >& props(void) const;
};
// ------------------------------------------------------------------------
// Free functions.
// ------------------------------------------------------------------------
-atffile read_atffile(const fs::path&);
+atffile read_atffile(const tools::fs::path&);
-} // namespace atf_run
-} // namespace atf
+} // namespace tools
-#endif // !defined(_ATF_RUN_ATFFILE_HPP_)
+#endif // !defined(TOOLS_ATFFILE_HPP)
diff --git a/atf-run/atffile_test.cpp b/tools/atffile_test.cpp
index e5781a3..cb358df 100644
--- a/atf-run/atffile_test.cpp
+++ b/tools/atffile_test.cpp
@@ -36,14 +36,13 @@ extern "C" {
#include <fstream>
#include <memory>
-#include "atf-c++/macros.hpp"
-
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/test_helpers.hpp"
+#include <atf-c++.hpp>
#include "atffile.hpp"
+#include "exceptions.hpp"
+#include "test_helpers.hpp"
-namespace detail = atf::atf_run::detail;
+namespace detail = tools::detail;
// ------------------------------------------------------------------------
// Auxiliary functions.
@@ -51,6 +50,8 @@ namespace detail = atf::atf_run::detail;
namespace {
+typedef std::map< std::string, std::string > vars_map;
+
static
std::auto_ptr< std::ofstream >
new_atffile(void)
@@ -497,17 +498,16 @@ ATF_TEST_CASE_BODY(atffile_54)
ATF_TEST_CASE(atffile_getters);
ATF_TEST_CASE_HEAD(atffile_getters) {}
ATF_TEST_CASE_BODY(atffile_getters) {
- atf::tests::vars_map config_vars;
+ 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");
- atf::tests::vars_map properties;
+ vars_map properties;
properties["test-suite"] = "a test name";
- const atf::atf_run::atffile atffile(config_vars, test_program_names,
- properties);
+ 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());
@@ -533,8 +533,8 @@ ATF_TEST_CASE_BODY(read_ok_simple) {
touch_exec("tp-2");
touch_exec("tp-3");
- const atf::atf_run::atffile atffile = atf::atf_run::read_atffile(
- atf::fs::path("Atffile"));
+ 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);
@@ -564,8 +564,8 @@ ATF_TEST_CASE_BODY(read_ok_some_globs) {
touch_exec("t_hello");
touch_exec("zzzt_hello");
- const atf::atf_run::atffile atffile = atf::atf_run::read_atffile(
- atf::fs::path("Atffile"));
+ 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()));
@@ -580,9 +580,9 @@ ATF_TEST_CASE_BODY(read_missing_test_suite) {
(*os).close();
try {
- (void)atf::atf_run::read_atffile(atf::fs::path("Atffile"));
+ (void)tools::read_atffile(tools::fs::path("Atffile"));
ATF_FAIL("Missing property 'test-suite' did not raise an error");
- } catch (const atf::not_found_error< std::string >& e) {
+ } catch (const tools::not_found_error< std::string >& e) {
ATF_REQUIRE_EQ("test-suite", e.get_value());
}
}
@@ -599,9 +599,9 @@ ATF_TEST_CASE_BODY(read_missing_test_program) {
touch_exec("baz");
try {
- (void)atf::atf_run::read_atffile(atf::fs::path("Atffile"));
+ (void)tools::read_atffile(tools::fs::path("Atffile"));
ATF_FAIL("Missing file 'bar' did not raise an error");
- } catch (const atf::not_found_error< atf::fs::path >& e) {
+ } catch (const tools::not_found_error< tools::fs::path >& e) {
ATF_REQUIRE_EQ("bar", e.get_value().str());
}
}
diff --git a/tools/auto_array.hpp b/tools/auto_array.hpp
new file mode 100644
index 0000000..773f875
--- /dev/null
+++ b/tools/auto_array.hpp
@@ -0,0 +1,179 @@
+//
+// 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 <cstddef>
+
+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/tools/auto_array_test.cpp b/tools/auto_array_test.cpp
new file mode 100644
index 0000000..56bbae5
--- /dev/null
+++ b/tools/auto_array_test.cpp
@@ -0,0 +1,303 @@
+//
+// 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 <sys/types.h>
+}
+
+#include <iostream>
+
+#include <atf-c++.hpp>
+
+#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/atf-run/bad_metadata_helper.c b/tools/bad_metadata_helper.c
index 0f7fcb9..0f7fcb9 100644
--- a/atf-run/bad_metadata_helper.c
+++ b/tools/bad_metadata_helper.c
diff --git a/tools/config.cpp b/tools/config.cpp
new file mode 100644
index 0000000..95bcf55
--- /dev/null
+++ b/tools/config.cpp
@@ -0,0 +1,135 @@
+//
+// 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 <cassert>
+#include <map>
+
+#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/tools/config.hpp b/tools/config.hpp
new file mode 100644
index 0000000..0a43873
--- /dev/null
+++ b/tools/config.hpp
@@ -0,0 +1,75 @@
+//
+// 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 <map>
+#include <string>
+
+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/atf-run/config.cpp b/tools/config_file.cpp
index 0ea240f..3802c06 100644
--- a/atf-run/config.cpp
+++ b/tools/config_file.cpp
@@ -27,38 +27,37 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
+#include <cstdlib>
#include <fstream>
#include <vector>
-#include "atf-c/defs.h"
-
-#include "atf-c++/config.hpp"
-
-#include "atf-c++/detail/env.hpp"
-#include "atf-c++/detail/fs.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/parser.hpp"
-
#include "config.hpp"
+#include "config_file.hpp"
+#include "defs.hpp"
+#include "env.hpp"
+#include "fs.hpp"
+#include "parser.hpp"
-namespace impl = atf::atf_run;
-namespace detail = atf::atf_run::detail;
+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 atf::parser::token_type eof_type = 0;
-static const atf::parser::token_type nl_type = 1;
-static const atf::parser::token_type text_type = 2;
-static const atf::parser::token_type dblquote_type = 3;
-static const atf::parser::token_type equal_type = 4;
-static const atf::parser::token_type hash_type = 5;
+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 atf::parser::tokenizer< std::istream > {
+class tokenizer : public tools::parser::tokenizer< std::istream > {
public:
tokenizer(std::istream& is, size_t curline) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, true, eof_type, nl_type, text_type, curline)
{
add_delim('=', equal_type);
@@ -70,7 +69,7 @@ public:
} // namespace atf_config
class config_reader : public detail::atf_config_reader {
- atf::tests::vars_map m_vars;
+ vars_map m_vars;
void
got_var(const std::string& var, const std::string& name)
@@ -84,7 +83,7 @@ public:
{
}
- const atf::tests::vars_map&
+ const vars_map&
get_vars(void)
const
{
@@ -104,8 +103,8 @@ merge_maps(std::map< K, V >& dest, const std::map< K, V >& src)
static
void
-merge_config_file(const atf::fs::path& config_path,
- atf::tests::vars_map& config)
+merge_config_file(const tools::fs::path& config_path,
+ vars_map& config)
{
std::ifstream is(config_path.c_str());
if (is) {
@@ -116,13 +115,13 @@ merge_config_file(const atf::fs::path& config_path,
}
static
-std::vector< atf::fs::path >
+std::vector< tools::fs::path >
get_config_dirs(void)
{
- std::vector< atf::fs::path > dirs;
- dirs.push_back(atf::fs::path(atf::config::get("atf_confdir")));
- if (atf::env::has("HOME"))
- dirs.push_back(atf::fs::path(atf::env::get("HOME")) / ".atf");
+ 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;
}
@@ -152,22 +151,22 @@ detail::atf_config_reader::got_eof(void)
void
detail::atf_config_reader::read(void)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_config;
- std::pair< size_t, atf::parser::headers_map > hml =
- atf::parser::read_headers(m_is, 1);
- atf::parser::validate_content_type(hml.second,
+ 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);
- atf::parser::parser< tokenizer > p(tkz);
+ tools::parser::parser< tokenizer > p(tkz);
for (;;) {
try {
- atf::parser::token t = p.expect(eof_type, hash_type, text_type,
- nl_type,
- "eof, #, new line or text");
+ 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;
@@ -189,7 +188,7 @@ detail::atf_config_reader::read(void)
}
} else if (t.type() == nl_type) {
} else
- UNREACHABLE;
+ std::abort();
} catch (const parse_error& pe) {
p.add_error(pe);
p.reset(nl_type);
@@ -199,22 +198,22 @@ detail::atf_config_reader::read(void)
ATF_PARSER_CALLBACK(p, got_eof());
}
-atf::tests::vars_map
-impl::merge_configs(const atf::tests::vars_map& lower,
- const atf::tests::vars_map& upper)
+vars_map
+impl::merge_configs(const vars_map& lower,
+ const vars_map& upper)
{
- atf::tests::vars_map merged = lower;
+ vars_map merged = lower;
merge_maps(merged, upper);
return merged;
}
-atf::tests::vars_map
+vars_map
impl::read_config_files(const std::string& test_suite_name)
{
- atf::tests::vars_map config;
+ vars_map config;
- const std::vector< atf::fs::path > dirs = get_config_dirs();
- for (std::vector< atf::fs::path >::const_iterator iter = dirs.begin();
+ 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);
diff --git a/atf-run/config.hpp b/tools/config_file.hpp
index 2cefec9..0c68bcb 100644
--- a/atf-run/config.hpp
+++ b/tools/config_file.hpp
@@ -27,13 +27,15 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
+#if !defined(TOOLS_CONFIG_FILE_HPP)
+#define TOOLS_CONFIG_FILE_HPP
+
+#include <map>
#include <string>
#include <vector>
-#include "atf-c++/tests.hpp"
-
-namespace atf {
-namespace atf_run {
+namespace tools {
+namespace config_file {
namespace detail {
@@ -53,9 +55,12 @@ public:
} // namespace detail
-atf::tests::vars_map merge_configs(const atf::tests::vars_map&,
- const atf::tests::vars_map&);
-atf::tests::vars_map read_config_files(const std::string&);
+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
-} // namespace atf_run
-} // namespace atf
+#endif // !defined(TOOLS_CONFIG_FILE_HPP)
diff --git a/atf-run/config_test.cpp b/tools/config_file_test.cpp
index 5b103a7..b8adc7a 100644
--- a/atf-run/config_test.cpp
+++ b/tools/config_file_test.cpp
@@ -27,17 +27,21 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include "atf-c++/detail/env.hpp"
-#include "atf-c++/detail/test_helpers.hpp"
-#include "atf-c++/config.hpp"
-#include "atf-c++/macros.hpp"
+#include <atf-c++.hpp>
#include "config.hpp"
+#include "config_file.hpp"
+#include "env.hpp"
+#include "test_helpers.hpp"
-namespace impl = atf::atf_run;
-namespace detail = atf::atf_run::detail;
+namespace impl = tools::config_file;
+namespace detail = tools::config_file::detail;
-using atf::tests::vars_map;
+namespace {
+
+typedef std::map< std::string, std::string > vars_map;
+
+} // anonymous namespace
namespace atf {
namespace config {
@@ -361,7 +365,7 @@ ATF_TEST_CASE_BODY(merge_configs_mixed) {
ATF_TEST_CASE(read_config_files_none);
ATF_TEST_CASE_HEAD(read_config_files_none) {}
ATF_TEST_CASE_BODY(read_config_files_none) {
- atf::env::set("ATF_CONFDIR", ".");
+ tools::env::set("ATF_CONFDIR", ".");
atf::config::__reinit();
ATF_REQUIRE(vars_map() == impl::read_config_files("test-suite"));
}
diff --git a/tools/config_test.cpp b/tools/config_test.cpp
new file mode 100644
index 0000000..d7d6719
--- /dev/null
+++ b/tools/config_test.cpp
@@ -0,0 +1,221 @@
+//
+// 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 <cstring>
+#include <iostream>
+
+#include <atf-c++.hpp>
+
+#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/atf-run/pass_helper.cpp b/tools/defs.hpp.in
index b752b13..9542795 100644
--- a/atf-run/pass_helper.cpp
+++ b/tools/defs.hpp.in
@@ -1,7 +1,7 @@
//
// Automated Testing Framework (atf)
//
-// Copyright (c) 2007 The NetBSD Foundation, Inc.
+// Copyright (c) 2008 The NetBSD Foundation, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -27,18 +27,11 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include "atf-c++/macros.hpp"
+#if !defined(TOOLS_DEFS_HPP)
+#define TOOLS_DEFS_HPP
-ATF_TEST_CASE(main);
-ATF_TEST_CASE_HEAD(main)
-{
- set_md_var("descr", "Helper test case that always passes");
-}
-ATF_TEST_CASE_BODY(main)
-{
-}
+#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@
-ATF_INIT_TEST_CASES(tcs)
-{
- ATF_ADD_TEST_CASE(tcs, main);
-}
+#endif /* !defined(TOOLS_DEFS_HPP) */
diff --git a/tools/env.cpp b/tools/env.cpp
new file mode 100644
index 0000000..1dbdb55
--- /dev/null
+++ b/tools/env.cpp
@@ -0,0 +1,102 @@
+//
+// 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 "bconfig.h"
+#endif
+
+extern "C" {
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+}
+
+#include <cassert>
+
+#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/tools/env.hpp b/tools/env.hpp
new file mode 100644
index 0000000..f87a58f
--- /dev/null
+++ b/tools/env.hpp
@@ -0,0 +1,84 @@
+//
+// 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 <string>
+
+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/atf-report/misc_helpers.cpp b/tools/env_test.cpp
index 6f14ce4..441a16f 100644
--- a/atf-report/misc_helpers.cpp
+++ b/tools/env_test.cpp
@@ -27,34 +27,55 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include <iostream>
+#include <atf-c++.hpp>
-#include "atf-c++/macros.hpp"
+#include "env.hpp"
// ------------------------------------------------------------------------
-// Helper tests for "t_integration".
+// Test cases for the free functions.
// ------------------------------------------------------------------------
-ATF_TEST_CASE(diff);
-ATF_TEST_CASE_HEAD(diff)
+ATF_TEST_CASE(has_get);
+ATF_TEST_CASE_HEAD(has_get)
{
- set_md_var("descr", "Helper test case for the t_integration program");
+ set_md_var("descr", "Tests the has and get functions");
}
-ATF_TEST_CASE_BODY(diff)
+ATF_TEST_CASE_BODY(has_get)
{
- 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";
+ 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"));
}
// ------------------------------------------------------------------------
@@ -63,6 +84,8 @@ ATF_TEST_CASE_BODY(diff)
ATF_INIT_TEST_CASES(tcs)
{
- // Add helper tests for t_integration.
- ATF_ADD_TEST_CASE(tcs, diff);
+ // 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/atf-c++/noncopyable.hpp b/tools/exceptions.cpp
index a885a66..8587121 100644
--- a/atf-c++/noncopyable.hpp
+++ b/tools/exceptions.cpp
@@ -27,30 +27,48 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_CXX_NONCOPYABLE_HPP_)
-#define _ATF_CXX_NONCOPYABLE_HPP_
+#include <cstring>
-namespace atf {
+#include "exceptions.hpp"
// ------------------------------------------------------------------------
-// The "noncopyable" class.
+// The "system_error" type.
// ------------------------------------------------------------------------
-class noncopyable {
- // The class cannot be empty; otherwise we get ABI-stability warnings
- // during the build, which will break it due to strict checking.
- int m_noncopyable_dummy;
+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)
+{
+}
- noncopyable(const noncopyable& nc);
- noncopyable& operator=(const noncopyable& nc);
+tools::system_error::~system_error(void)
+ throw()
+{
+}
-protected:
- // Explicitly needed to provide some non-private functions. Otherwise
- // we also get some warnings during the build.
- noncopyable(void) {}
- ~noncopyable(void) {}
-};
+int
+tools::system_error::code(void)
+ const
+ throw()
+{
+ return m_sys_err;
+}
-} // namespace atf
+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);
+ }
-#endif // !defined(_ATF_CXX_NONCOPYABLE_HPP_)
+ return m_message.c_str();
+ } catch (...) {
+ return "Unable to format system_error message";
+ }
+}
diff --git a/atf-run/fs.hpp b/tools/exceptions.hpp
index 3738268..4346b7b 100644
--- a/atf-run/fs.hpp
+++ b/tools/exceptions.hpp
@@ -27,31 +27,67 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_RUN_FS_HPP_)
-#define _ATF_RUN_FS_HPP_
+#if !defined(TOOLS_EXCEPTIONS_HPP)
+#define TOOLS_EXCEPTIONS_HPP
-#include <memory>
+#include <stdexcept>
+#include <string>
-#include "atf-c++/detail/fs.hpp"
+namespace tools {
-namespace atf {
-namespace atf_run {
-
-class temp_dir {
- std::auto_ptr< atf::fs::path > m_path;
+template< class T >
+class not_found_error :
+ public std::runtime_error
+{
+ T m_value;
public:
- temp_dir(const atf::fs::path&);
- ~temp_dir(void);
+ not_found_error(const std::string& message, const T& value) throw();
+
+ virtual ~not_found_error(void) throw();
- const atf::fs::path& get_path(void) const;
+ const T& get_value(void) const throw();
};
-atf::fs::path change_directory(const atf::fs::path&);
-void cleanup(const atf::fs::path&);
-atf::fs::path get_current_dir(void);
+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 atf_run
-} // namespace atf
+} // namespace tools
-#endif // !defined(_ATF_RUN_FS_HPP_)
+#endif // !defined(TOOLS_EXCEPTIONS_HPP)
diff --git a/atf-c++/detail/expand.cpp b/tools/expand.cpp
index f6f9b68..3ae27d0 100644
--- a/atf-c++/detail/expand.cpp
+++ b/tools/expand.cpp
@@ -32,8 +32,8 @@
#include "expand.hpp"
#include "text.hpp"
-namespace impl = atf::expand;
-#define IMPL_NAME "atf::expand"
+namespace impl = tools::expand;
+#define IMPL_NAME "tools::expand"
// ------------------------------------------------------------------------
// Auxiliary functions.
@@ -77,5 +77,5 @@ impl::is_glob(const std::string& glob)
bool
impl::matches_glob(const std::string& glob, const std::string& candidate)
{
- return atf::text::match(candidate, glob_to_regex(glob));
+ return tools::text::match(candidate, glob_to_regex(glob));
}
diff --git a/atf-c++/detail/expand.hpp b/tools/expand.hpp
index 7f4071e..b813544 100644
--- a/atf-c++/detail/expand.hpp
+++ b/tools/expand.hpp
@@ -27,13 +27,13 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_CXX_EXPAND_HPP_)
-#define _ATF_CXX_EXPAND_HPP_
+#if !defined(TOOLS_EXPAND_HPP)
+#define TOOLS_EXPAND_HPP
#include <string>
#include <vector>
-namespace atf {
+namespace tools {
namespace expand {
// ------------------------------------------------------------------------
@@ -77,6 +77,6 @@ std::vector< std::string > expand_glob(const std::string& glob,
}
} // namespace expand
-} // namespace atf
+} // namespace tools
-#endif // !defined(_ATF_CXX_EXPAND_HPP_)
+#endif // !defined(TOOLS_EXPAND_HPP)
diff --git a/atf-c++/detail/expand_test.cpp b/tools/expand_test.cpp
index 222ab3a..fb59de8 100644
--- a/atf-c++/detail/expand_test.cpp
+++ b/tools/expand_test.cpp
@@ -29,7 +29,7 @@
#include <cstring>
-#include "../macros.hpp"
+#include <atf-c++.hpp>
#include "expand.hpp"
@@ -47,7 +47,7 @@ ATF_TEST_CASE_HEAD(is_glob)
}
ATF_TEST_CASE_BODY(is_glob)
{
- using atf::expand::is_glob;
+ using tools::expand::is_glob;
ATF_REQUIRE(!is_glob(""));
ATF_REQUIRE(!is_glob("a"));
@@ -72,7 +72,7 @@ ATF_TEST_CASE_HEAD(matches_glob_plain)
}
ATF_TEST_CASE_BODY(matches_glob_plain)
{
- using atf::expand::matches_glob;
+ using tools::expand::matches_glob;
ATF_REQUIRE( matches_glob("", ""));
ATF_REQUIRE(!matches_glob("a", ""));
@@ -91,7 +91,7 @@ ATF_TEST_CASE_HEAD(matches_glob_star)
}
ATF_TEST_CASE_BODY(matches_glob_star)
{
- using atf::expand::matches_glob;
+ using tools::expand::matches_glob;
ATF_REQUIRE( matches_glob("*", ""));
ATF_REQUIRE( matches_glob("*", "a"));
@@ -131,7 +131,7 @@ ATF_TEST_CASE_HEAD(matches_glob_question)
}
ATF_TEST_CASE_BODY(matches_glob_question)
{
- using atf::expand::matches_glob;
+ using tools::expand::matches_glob;
ATF_REQUIRE(!matches_glob("?", ""));
ATF_REQUIRE( matches_glob("?", "a"));
@@ -159,7 +159,7 @@ ATF_TEST_CASE_HEAD(expand_glob_base)
}
ATF_TEST_CASE_BODY(expand_glob_base)
{
- using atf::expand::expand_glob;
+ using tools::expand::expand_glob;
std::vector< std::string > candidates;
candidates.push_back("foo");
@@ -228,7 +228,7 @@ ATF_TEST_CASE_HEAD(expand_glob_tps)
}
ATF_TEST_CASE_BODY(expand_glob_tps)
{
- using atf::expand::expand_glob;
+ using tools::expand::expand_glob;
std::vector< std::string > candidates;
candidates.push_back("Atffile");
diff --git a/atf-run/expect_helpers.c b/tools/expect_helpers.c
index b38ccf5..b38ccf5 100644
--- a/atf-run/expect_helpers.c
+++ b/tools/expect_helpers.c
diff --git a/atf-report/fail_helper.cpp b/tools/fail_helper.cpp
index 1009f0e..736b5e8 100644
--- a/atf-report/fail_helper.cpp
+++ b/tools/fail_helper.cpp
@@ -27,7 +27,7 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include "atf-c++/macros.hpp"
+#include <atf-c++.hpp>
ATF_TEST_CASE(main);
ATF_TEST_CASE_HEAD(main)
diff --git a/tools/fs.cpp b/tools/fs.cpp
new file mode 100644
index 0000000..fde7815
--- /dev/null
+++ b/tools/fs.cpp
@@ -0,0 +1,744 @@
+//
+// 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 "bconfig.h"
+#endif
+
+extern "C" {
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <dirent.h>
+#include <libgen.h>
+#include <unistd.h>
+}
+
+#include <cassert>
+#include <cerrno>
+#include <cstdlib>
+#include <cstring>
+
+#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/tools/fs.hpp b/tools/fs.hpp
new file mode 100644
index 0000000..f45f8f1
--- /dev/null
+++ b/tools/fs.hpp
@@ -0,0 +1,377 @@
+//
+// 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 <sys/types.h>
+#include <sys/stat.h>
+}
+
+#include <map>
+#include <memory>
+#include <ostream>
+#include <set>
+#include <stdexcept>
+#include <string>
+
+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/tools/fs_test.cpp b/tools/fs_test.cpp
new file mode 100644
index 0000000..5f482a4
--- /dev/null
+++ b/tools/fs_test.cpp
@@ -0,0 +1,743 @@
+//
+// 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 <sys/types.h>
+#include <sys/stat.h>
+}
+
+#include <cerrno>
+#include <cstdio>
+#include <fstream>
+
+#include <atf-c++.hpp>
+
+#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/atf-version/generate-revision.sh b/tools/generate-revision.sh
index 169be85..169be85 100755
--- a/atf-version/generate-revision.sh
+++ b/tools/generate-revision.sh
diff --git a/atf-run/io.cpp b/tools/io.cpp
index c99ee34..4cf8f6a 100644
--- a/atf-run/io.cpp
+++ b/tools/io.cpp
@@ -34,21 +34,16 @@ extern "C" {
#include <unistd.h>
}
+#include <cassert>
#include <cerrno>
#include <cstring>
-extern "C" {
-#include "../atf-c/error.h"
-}
-
-#include "../atf-c++/detail/auto_array.hpp"
-#include "../atf-c++/detail/exceptions.hpp"
-#include "../atf-c++/detail/sanity.hpp"
-
+#include "auto_array.hpp"
+#include "exceptions.hpp"
#include "io.hpp"
-namespace impl = atf::atf_run;
-#define IMPL_NAME "atf::atf_run"
+namespace impl = tools::io;
+#define IMPL_NAME "tools::io"
// ------------------------------------------------------------------------
// The "file_handle" class.
@@ -62,7 +57,7 @@ impl::file_handle::file_handle(void) :
impl::file_handle::file_handle(handle_type h) :
m_handle(h)
{
- PRE(m_handle != invalid_value());
+ assert(m_handle != invalid_value());
}
impl::file_handle::file_handle(const file_handle& fh) :
@@ -96,7 +91,7 @@ impl::file_handle::is_valid(void)
void
impl::file_handle::close(void)
{
- PRE(is_valid());
+ assert(is_valid());
::close(m_handle);
@@ -106,7 +101,7 @@ impl::file_handle::close(void)
impl::file_handle::handle_type
impl::file_handle::disown(void)
{
- PRE(is_valid());
+ assert(is_valid());
handle_type h = m_handle;
m_handle = invalid_value();
@@ -117,7 +112,7 @@ impl::file_handle::handle_type
impl::file_handle::get(void)
const
{
- PRE(is_valid());
+ assert(is_valid());
return m_handle;
}
@@ -125,19 +120,19 @@ impl::file_handle::get(void)
void
impl::file_handle::posix_remap(handle_type h)
{
- PRE(is_valid());
+ assert(is_valid());
if (m_handle == h)
return;
if (::dup2(m_handle, h) == -1)
- throw system_error(IMPL_NAME "::file_handle::posix_remap",
- "dup2(2) failed", errno);
+ throw tools::system_error(IMPL_NAME "::file_handle::posix_remap",
+ "dup2(2) failed", errno);
if (::close(m_handle) == -1) {
::close(h);
- throw system_error(IMPL_NAME "::file_handle::posix_remap",
- "close(2) failed", errno);
+ throw tools::system_error(IMPL_NAME "::file_handle::posix_remap",
+ "close(2) failed", errno);
}
m_handle = h;
@@ -159,8 +154,8 @@ impl::systembuf::systembuf(handle_type h, std::size_t bufsize) :
m_read_buf(NULL),
m_write_buf(NULL)
{
- PRE(m_handle >= 0);
- PRE(m_bufsize > 0);
+ assert(m_handle >= 0);
+ assert(m_bufsize > 0);
try {
m_read_buf = new char[bufsize];
@@ -185,7 +180,7 @@ impl::systembuf::~systembuf(void)
impl::systembuf::int_type
impl::systembuf::underflow(void)
{
- PRE(gptr() >= egptr());
+ assert(gptr() >= egptr());
bool ok;
ssize_t cnt = ::read(m_handle, m_read_buf, m_bufsize);
@@ -202,7 +197,7 @@ impl::systembuf::underflow(void)
impl::systembuf::int_type
impl::systembuf::overflow(int c)
{
- PRE(pptr() >= epptr());
+ assert(pptr() >= epptr());
if (sync() == -1)
return traits_type::eof();
if (!traits_type::eq_int_type(c, traits_type::eof())) {
@@ -248,10 +243,10 @@ safe_poll(struct pollfd fds[], nfds_t nfds, int timeout)
if (errno == EINTR)
ret = 0;
else
- throw atf::system_error(IMPL_NAME "::safe_poll", "poll(2) failed",
+ throw tools::system_error(IMPL_NAME "::safe_poll", "poll(2) failed",
errno);
}
- INV(ret >= 0);
+ assert(ret >= 0);
return ret;
}
@@ -262,15 +257,15 @@ safe_read(const int fd, void* buffer, const size_t nbytes,
int ret;
while ((ret = ::read(fd, buffer, nbytes)) == -1 && errno == EINTR) {}
if (ret == -1) {
- INV(errno != EINTR);
+ assert(errno != EINTR);
if (report_errors)
- throw atf::system_error(IMPL_NAME "::safe_read", "read(2) failed",
+ throw tools::system_error(IMPL_NAME "::safe_read", "read(2) failed",
errno);
else
ret = 0;
}
- INV(ret >= 0);
+ assert(ret >= 0);
return static_cast< size_t >(ret);
}
@@ -290,10 +285,10 @@ size_t
impl::muxer::read_one(const size_t index, const int fd, std::string& accum,
const bool report_errors)
{
- atf::auto_array< char > buffer(new char[m_bufsize]);
+ tools::auto_array< char > buffer(new char[m_bufsize]);
const size_t nbytes = safe_read(fd, buffer.get(), m_bufsize - 1,
report_errors);
- INV(nbytes < m_bufsize);
+ assert(nbytes < m_bufsize);
buffer[nbytes] = '\0';
std::string line(accum);
@@ -319,7 +314,7 @@ impl::muxer::read_one(const size_t index, const int fd, std::string& accum,
void
impl::muxer::mux(volatile const bool& terminate)
{
- atf::auto_array< struct pollfd > poll_fds(new struct pollfd[m_nfds]);
+ 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;
@@ -339,7 +334,7 @@ impl::muxer::mux(volatile const bool& terminate)
// a call to the flush method.
poll_fds[i].events = 0;
- INV(nactive >= 1);
+ assert(nactive >= 1);
nactive--;
} else if (poll_fds[i].revents & (POLLIN | POLLRDNORM | POLLRDBAND |
POLLPRI)) {
diff --git a/atf-run/io.hpp b/tools/io.hpp
index b8ff59a..3fb417b 100644
--- a/atf-run/io.hpp
+++ b/tools/io.hpp
@@ -27,20 +27,18 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_RUN_IO_HPP_)
-#define _ATF_RUN_IO_HPP_
+#if !defined(TOOLS_IO_HPP)
+#define TOOLS_IO_HPP
#include <istream>
#include <ostream>
#include <streambuf>
+#include "auto_array.hpp"
#include "fs.hpp"
-#include "../atf-c++/detail/auto_array.hpp"
-#include "../atf-c++/noncopyable.hpp"
-
-namespace atf {
-namespace atf_run {
+namespace tools {
+namespace io {
// ------------------------------------------------------------------------
// The "file_handle" class.
@@ -254,8 +252,12 @@ private:
//! However, it is not copyable to avoid introducing inconsistences with
//! the on-disk file and the in-memory buffers.
//!
-class systembuf : public std::streambuf, atf::noncopyable
+class systembuf : public std::streambuf
{
+ // Non-copyable.
+ systembuf(const systembuf&);
+ systembuf& operator=(const systembuf&);
+
public:
typedef int handle_type;
@@ -374,8 +376,12 @@ protected:
//! this happens, the buffer eventually empties and the system blocks
//! until the writer generates some data.
//!
-class pistream : public std::istream, noncopyable
+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.
//!
@@ -400,12 +406,16 @@ public:
// The "muxer" class.
// ------------------------------------------------------------------------
-class muxer : noncopyable {
+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;
- atf::auto_array< std::string > m_buffers;
+ tools::auto_array< std::string > m_buffers;
protected:
virtual void line_callback(const size_t, const std::string&) = 0;
@@ -420,7 +430,7 @@ public:
void flush(void);
};
-} // namespace atf_run
-} // namespace atf
+} // namespace io
+} // namespace tools
-#endif // !defined(_ATF_RUN_IO_HPP_)
+#endif // !defined(TOOLS_IO_HPP)
diff --git a/atf-run/io_test.cpp b/tools/io_test.cpp
index 03fc97e..b55428f 100644
--- a/atf-run/io_test.cpp
+++ b/tools/io_test.cpp
@@ -35,6 +35,7 @@ extern "C" {
#include <unistd.h>
}
+#include <cassert>
#include <cerrno>
#include <cstddef>
#include <cstdlib>
@@ -44,8 +45,7 @@ extern "C" {
#include <istream>
#include <ostream>
-#include "../atf-c++/detail/sanity.hpp"
-#include "../atf-c++/macros.hpp"
+#include <atf-c++.hpp>
#include "io.hpp"
#include "signals.hpp"
@@ -90,7 +90,7 @@ static
void
systembuf_test_read(std::size_t length, std::size_t bufsize)
{
- using atf::atf_run::systembuf;
+ using tools::io::systembuf;
std::ofstream f("test_read.txt");
systembuf_write_data(f, length);
@@ -109,7 +109,7 @@ static
void
systembuf_test_write(std::size_t length, std::size_t bufsize)
{
- using atf::atf_run::systembuf;
+ using tools::io::systembuf;
int fd = ::open("test_write.txt", O_WRONLY | O_CREAT | O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
@@ -136,7 +136,7 @@ ATF_TEST_CASE_HEAD(file_handle_ctor)
}
ATF_TEST_CASE_BODY(file_handle_ctor)
{
- using atf::atf_run::file_handle;
+ using tools::io::file_handle;
file_handle fh1;
ATF_REQUIRE(!fh1.is_valid());
@@ -153,7 +153,7 @@ ATF_TEST_CASE_HEAD(file_handle_copy)
}
ATF_TEST_CASE_BODY(file_handle_copy)
{
- using atf::atf_run::file_handle;
+ using tools::io::file_handle;
file_handle fh1;
file_handle fh2(STDOUT_FILENO);
@@ -176,7 +176,7 @@ ATF_TEST_CASE_HEAD(file_handle_get)
}
ATF_TEST_CASE_BODY(file_handle_get)
{
- using atf::atf_run::file_handle;
+ using tools::io::file_handle;
file_handle fh1(STDOUT_FILENO);
ATF_REQUIRE_EQ(fh1.get(), STDOUT_FILENO);
@@ -189,7 +189,7 @@ ATF_TEST_CASE_HEAD(file_handle_posix_remap)
}
ATF_TEST_CASE_BODY(file_handle_posix_remap)
{
- using atf::atf_run::file_handle;
+ using tools::io::file_handle;
int pfd[2];
@@ -282,9 +282,9 @@ ATF_TEST_CASE_HEAD(pistream)
}
ATF_TEST_CASE_BODY(pistream)
{
- using atf::atf_run::file_handle;
- using atf::atf_run::pistream;
- using atf::atf_run::systembuf;
+ using tools::io::file_handle;
+ using tools::io::pistream;
+ using tools::io::systembuf;
int fds[2];
ATF_REQUIRE(::pipe(fds) != -1);
@@ -321,7 +321,7 @@ check_stream(std::ostream& os)
os.clear();
}
-class mock_muxer : public atf::atf_run::muxer {
+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
@@ -349,7 +349,7 @@ public:
static bool child_finished = false;
static void sigchld_handler(int signo)
{
- INV(signo == SIGCHLD);
+ assert(signo == SIGCHLD);
child_finished = true;
}
@@ -381,7 +381,7 @@ muxer_test(const size_t bufsize, const size_t iterations)
ATF_REQUIRE(pipe(pipeout) != -1);
ATF_REQUIRE(pipe(pipeerr) != -1);
- atf::atf_run::signal_programmer sigchld(SIGCHLD, sigchld_handler);
+ tools::signals::signal_programmer sigchld(SIGCHLD, sigchld_handler);
std::cout.flush();
std::cerr.flush();
@@ -391,7 +391,7 @@ muxer_test(const size_t bufsize, const size_t iterations)
if (pid == 0) {
sigchld.unprogram();
child_printer(pipeout, pipeerr, iterations);
- UNREACHABLE;
+ std::abort();
}
::close(pipeout[1]);
::close(pipeerr[1]);
diff --git a/atf-run/misc_helpers.cpp b/tools/misc_helpers.cpp
index abc9a4a..8ec4dde 100644
--- a/atf-run/misc_helpers.cpp
+++ b/tools/misc_helpers.cpp
@@ -41,12 +41,11 @@ extern "C" {
#include <iostream>
#include <string>
-#include "atf-c++/macros.hpp"
+#include <atf-c++.hpp>
-#include "atf-c++/detail/env.hpp"
-#include "atf-c++/detail/fs.hpp"
-#include "atf-c++/detail/process.hpp"
-#include "atf-c++/detail/sanity.hpp"
+#include "env.hpp"
+#include "fs.hpp"
+#include "process.hpp"
// ------------------------------------------------------------------------
// Auxiliary functions.
@@ -63,7 +62,7 @@ touch(const std::string& path)
}
// ------------------------------------------------------------------------
-// Helper tests for "t_integration".
+// Helper tests for "atf-run_test".
// ------------------------------------------------------------------------
ATF_TEST_CASE(pass);
@@ -127,7 +126,7 @@ ATF_TEST_CASE_BODY(mux_streams)
std::cerr << "stderr " << i << "\n";
break;
default:
- UNREACHABLE;
+ std::abort();
}
}
}
@@ -151,11 +150,11 @@ ATF_TEST_CASE_HEAD(env_list)
}
ATF_TEST_CASE_BODY(env_list)
{
- const atf::process::status s =
- atf::process::exec(atf::fs::path("env"),
- atf::process::argv_array("env", NULL),
- atf::process::stream_inherit(),
- atf::process::stream_inherit());
+ 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);
}
@@ -167,10 +166,10 @@ ATF_TEST_CASE_HEAD(env_home)
}
ATF_TEST_CASE_BODY(env_home)
{
- ATF_REQUIRE(atf::env::has("HOME"));
- atf::fs::path p(atf::env::get("HOME"));
- atf::fs::file_info fi1(p);
- atf::fs::file_info fi2(atf::fs::path("."));
+ 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());
}
@@ -225,7 +224,7 @@ ATF_TEST_CASE_BODY(cleanup_states)
}
ATF_TEST_CASE_CLEANUP(cleanup_states)
{
- atf::fs::remove(atf::fs::path(get_config_var("statedir") + "/to-delete"));
+ tools::fs::remove(tools::fs::path(get_config_var("statedir") + "/to-delete"));
}
ATF_TEST_CASE_WITH_CLEANUP(cleanup_curdir);
@@ -368,14 +367,40 @@ ATF_TEST_CASE_BODY(use_fs)
}
// ------------------------------------------------------------------------
+// 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 = atf::env::get("TESTCASE");
+ std::string which = tools::env::get("TESTCASE");
- // Add helper tests for t_integration.
+ // Add helper tests for atf-run_test.
if (which == "pass")
ATF_ADD_TEST_CASE(tcs, pass);
if (which == "config")
@@ -416,4 +441,8 @@ ATF_INIT_TEST_CASES(tcs)
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/atf-c++/detail/parser.cpp b/tools/parser.cpp
index 7e7f680..e6b3a3b 100644
--- a/atf-c++/detail/parser.cpp
+++ b/tools/parser.cpp
@@ -27,14 +27,14 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
+#include <cassert>
#include <sstream>
#include "parser.hpp"
-#include "sanity.hpp"
#include "text.hpp"
-namespace impl = atf::parser;
-#define IMPL_NAME "atf::parser"
+namespace impl = tools::parser;
+#define IMPL_NAME "tools::parser"
// ------------------------------------------------------------------------
// The "parse_error" class.
@@ -68,7 +68,7 @@ impl::parse_error::what(void)
impl::parse_error::operator std::string(void)
const
{
- return atf::text::to_string(first) + ": " + second;
+ return tools::text::to_string(first) + ": " + second;
}
// ------------------------------------------------------------------------
@@ -91,7 +91,7 @@ impl::parse_errors::what(void)
const throw()
{
try {
- m_msg = atf::text::join(*this, "\n");
+ m_msg = tools::text::join(*this, "\n");
return m_msg.c_str();
} catch (...) {
return "Could not format messages for parsing errors.";
@@ -204,7 +204,7 @@ const std::string&
impl::header_entry::get_attr(const std::string& n) const
{
attrs_map::const_iterator iter = m_attrs.find(n);
- PRE(iter != m_attrs.end());
+ assert(iter != m_attrs.end());
return (*iter).second;
}
@@ -284,7 +284,7 @@ write(std::ostream& os, const impl::header_entry& he)
impl::attrs_map as = he.attrs();
for (impl::attrs_map::const_iterator iter = as.begin(); iter != as.end();
iter++) {
- PRE((*iter).second.find('\"') == std::string::npos);
+ assert((*iter).second.find('\"') == std::string::npos);
line += "; " + (*iter).first + "=\"" + (*iter).second + "\"";
}
@@ -347,9 +347,9 @@ impl::read_headers(std::istream& is, size_t curline)
void
impl::write_headers(const impl::headers_map& hm, std::ostream& os)
{
- PRE(!hm.empty());
+ assert(!hm.empty());
headers_map::const_iterator ct = hm.find("Content-Type");
- PRE(ct != hm.end());
+ assert(ct != hm.end());
header::write(os, (*ct).second);
for (headers_map::const_iterator iter = hm.begin(); iter != hm.end();
iter++) {
@@ -376,7 +376,7 @@ impl::validate_content_type(const impl::headers_map& hm, const std::string& fmt,
if (!he.has_attr("version"))
throw format_error("Could not determine version");
- const std::string& vstr = atf::text::to_string(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 `" +
diff --git a/atf-c++/detail/parser.hpp b/tools/parser.hpp
index f55973f..eb00cb4 100644
--- a/atf-c++/detail/parser.hpp
+++ b/tools/parser.hpp
@@ -27,8 +27,8 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_CXX_PARSER_HPP_)
-#define _ATF_CXX_PARSER_HPP_
+#if !defined(TOOLS_PARSER_HPP)
+#define TOOLS_PARSER_HPP
#include <istream>
#include <map>
@@ -38,7 +38,7 @@
#include <utility>
#include <vector>
-namespace atf {
+namespace tools {
namespace parser {
// ------------------------------------------------------------------------
@@ -602,6 +602,6 @@ void write_headers(const headers_map&, std::ostream&);
void validate_content_type(const headers_map&, const std::string&, int);
} // namespace parser
-} // namespace atf
+} // namespace tools
-#endif // !defined(_ATF_CXX_PARSER_HPP_)
+#endif // !defined(TOOLS_PARSER_HPP)
diff --git a/atf-c++/detail/parser_test.cpp b/tools/parser_test.cpp
index 491c014..434a1a6 100644
--- a/atf-c++/detail/parser_test.cpp
+++ b/tools/parser_test.cpp
@@ -29,7 +29,7 @@
#include <sstream>
-#include "../macros.hpp"
+#include <atf-c++.hpp>
#include "parser.hpp"
#include "test_helpers.hpp"
@@ -45,7 +45,7 @@ ATF_TEST_CASE_HEAD(parse_error_to_string)
}
ATF_TEST_CASE_BODY(parse_error_to_string)
{
- using atf::parser::parse_error;
+ 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));
@@ -62,8 +62,8 @@ ATF_TEST_CASE_HEAD(parse_errors_what)
}
ATF_TEST_CASE_BODY(parse_errors_what)
{
- using atf::parser::parse_error;
- using atf::parser::parse_errors;
+ using tools::parser::parse_error;
+ using tools::parser::parse_errors;
parse_errors es;
es.push_back(parse_error(2, "Second error"));
@@ -83,7 +83,7 @@ ATF_TEST_CASE_HEAD(token_getters)
}
ATF_TEST_CASE_BODY(token_getters)
{
- using atf::parser::token;
+ using tools::parser::token;
{
token t(10, 0);
@@ -120,21 +120,21 @@ ATF_TEST_CASE_BODY(token_getters)
#define EXPECT(tkz, ttype, ttext) \
do { \
- atf::parser::token t = tkz.next(); \
+ tools::parser::token t = tkz.next(); \
ATF_REQUIRE(t.type() == ttype); \
ATF_REQUIRE_EQ(t.text(), ttext); \
} while (false);
namespace minimal {
- static const atf::parser::token_type eof_type = 0;
- static const atf::parser::token_type nl_type = 1;
- static const atf::parser::token_type word_type = 2;
+ 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 atf::parser::tokenizer< std::istream > {
+ class tokenizer : public tools::parser::tokenizer< std::istream > {
public:
tokenizer(std::istream& is, bool skipws) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, skipws, eof_type, nl_type, word_type)
{
}
@@ -144,17 +144,17 @@ namespace minimal {
namespace delims {
- static const atf::parser::token_type eof_type = 0;
- static const atf::parser::token_type nl_type = 1;
- static const atf::parser::token_type word_type = 2;
- static const atf::parser::token_type plus_type = 3;
- static const atf::parser::token_type minus_type = 4;
- static const atf::parser::token_type equal_type = 5;
+ 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 atf::parser::tokenizer< std::istream > {
+ class tokenizer : public tools::parser::tokenizer< std::istream > {
public:
tokenizer(std::istream& is, bool skipws) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, skipws, eof_type, nl_type, word_type)
{
add_delim('+', plus_type);
@@ -167,17 +167,17 @@ namespace delims {
namespace keywords {
- static const atf::parser::token_type eof_type = 0;
- static const atf::parser::token_type nl_type = 1;
- static const atf::parser::token_type word_type = 2;
- static const atf::parser::token_type var_type = 3;
- static const atf::parser::token_type loop_type = 4;
- static const atf::parser::token_type endloop_type = 5;
+ 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 atf::parser::tokenizer< std::istream > {
+ class tokenizer : public tools::parser::tokenizer< std::istream > {
public:
tokenizer(std::istream& is, bool skipws) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, skipws, eof_type, nl_type, word_type)
{
add_keyword("var", var_type);
@@ -190,15 +190,15 @@ namespace keywords {
namespace quotes {
- static const atf::parser::token_type eof_type = 0;
- static const atf::parser::token_type nl_type = 1;
- static const atf::parser::token_type word_type = 2;
- static const atf::parser::token_type dblquote_type = 3;
+ 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 atf::parser::tokenizer< std::istream > {
+ class tokenizer : public tools::parser::tokenizer< std::istream > {
public:
tokenizer(std::istream& is, bool skipws) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, skipws, eof_type, nl_type, word_type)
{
add_quote('"', dblquote_type);
@@ -739,9 +739,9 @@ public:
void
read(void)
{
- std::pair< size_t, atf::parser::headers_map > hml =
- atf::parser::read_headers(m_is, 1);
- atf::parser::validate_content_type(hml.second,
+ 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);
}
diff --git a/atf-report/pass_helper.cpp b/tools/pass_helper.cpp
index b752b13..4fa75b4 100644
--- a/atf-report/pass_helper.cpp
+++ b/tools/pass_helper.cpp
@@ -27,7 +27,7 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include "atf-c++/macros.hpp"
+#include <atf-c++.hpp>
ATF_TEST_CASE(main);
ATF_TEST_CASE_HEAD(main)
diff --git a/tools/process.cpp b/tools/process.cpp
new file mode 100644
index 0000000..987a60e
--- /dev/null
+++ b/tools/process.cpp
@@ -0,0 +1,492 @@
+//
+// 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 <sys/types.h>
+#include <sys/wait.h>
+
+#include <fcntl.h>
+#include <signal.h>
+}
+
+#include <cassert>
+#include <cstdarg>
+#include <cerrno>
+#include <cstring>
+#include <iostream>
+
+#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<struct exec_args *>(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/tools/process.hpp b/tools/process.hpp
new file mode 100644
index 0000000..2ebd865
--- /dev/null
+++ b/tools/process.hpp
@@ -0,0 +1,324 @@
+//
+// 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 <sys/types.h>
+
+#include <unistd.h>
+}
+
+#include <cerrno>
+#include <cstdlib>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#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/tools/process_helpers.c b/tools/process_helpers.c
new file mode 100644
index 0000000..61f1b67
--- /dev/null
+++ b/tools/process_helpers.c
@@ -0,0 +1,117 @@
+/*
+ * 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 <sys/types.h>
+
+#include <assert.h> /* NO_CHECK_STYLE */
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+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/tools/process_test.cpp b/tools/process_test.cpp
new file mode 100644
index 0000000..70da919d
--- /dev/null
+++ b/tools/process_test.cpp
@@ -0,0 +1,360 @@
+//
+// 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 <cstdlib>
+#include <cstring>
+
+#include <atf-c++.hpp>
+
+#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/atf-report/reader.cpp b/tools/reader.cpp
index 8f5fde7..67fce66 100644
--- a/atf-report/reader.cpp
+++ b/tools/reader.cpp
@@ -31,20 +31,19 @@ extern "C" {
#include <sys/time.h>
}
+#include <cassert>
+#include <cstdlib>
#include <map>
#include <sstream>
#include <utility>
-#include "atf-c/defs.h"
-
-#include "atf-c++/detail/parser.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/text.hpp"
-
+#include "defs.hpp"
+#include "parser.hpp"
#include "reader.hpp"
+#include "text.hpp"
-namespace impl = atf::atf_report;
-#define IMPL_NAME "atf::atf_report"
+namespace impl = tools::atf_report;
+#define IMPL_NAME "tools::atf_report"
// ------------------------------------------------------------------------
// Auxiliary functions.
@@ -67,32 +66,32 @@ string_to_int(const std::string& str)
namespace atf_tps {
-static const atf::parser::token_type eof_type = 0;
-static const atf::parser::token_type nl_type = 1;
-static const atf::parser::token_type text_type = 2;
-static const atf::parser::token_type colon_type = 3;
-static const atf::parser::token_type comma_type = 4;
-static const atf::parser::token_type tps_count_type = 5;
-static const atf::parser::token_type tp_start_type = 6;
-static const atf::parser::token_type tp_end_type = 7;
-static const atf::parser::token_type tc_start_type = 8;
-static const atf::parser::token_type tc_so_type = 9;
-static const atf::parser::token_type tc_se_type = 10;
-static const atf::parser::token_type tc_end_type = 11;
-static const atf::parser::token_type passed_type = 12;
-static const atf::parser::token_type failed_type = 13;
-static const atf::parser::token_type skipped_type = 14;
-static const atf::parser::token_type info_type = 16;
-static const atf::parser::token_type expected_death_type = 17;
-static const atf::parser::token_type expected_exit_type = 18;
-static const atf::parser::token_type expected_failure_type = 19;
-static const atf::parser::token_type expected_signal_type = 20;
-static const atf::parser::token_type expected_timeout_type = 21;
-
-class tokenizer : public atf::parser::tokenizer< std::istream > {
+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) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, true, eof_type, nl_type, text_type, curline)
{
add_delim(':', colon_type);
@@ -119,15 +118,15 @@ public:
} // namespace atf_tps
struct timeval
-read_timeval(atf::parser::parser< atf_tps::tokenizer >& parser)
+read_timeval(tools::parser::parser< atf_tps::tokenizer >& parser)
{
using namespace atf_tps;
- atf::parser::token t = parser.expect(text_type, "timestamp");
+ 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 atf::parser::parse_error(t.lineno(),
+ throw tools::parser::parse_error(t.lineno(),
"Malformed timestamp value " + t.text());
struct timeval tv;
@@ -209,18 +208,18 @@ impl::atf_tps_reader::got_eof(void)
void
impl::atf_tps_reader::read_info(void* pptr)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_tps;
- atf::parser::parser< tokenizer >& p =
- *reinterpret_cast< atf::parser::parser< tokenizer >* >
+ tools::parser::parser< tokenizer >& p =
+ *reinterpret_cast< tools::parser::parser< tokenizer >* >
(pptr);
(void)p.expect(colon_type, "`:'");
- atf::parser::token t = p.expect(text_type, "info property name");
+ tools::parser::token t = p.expect(text_type, "info property name");
(void)p.expect(comma_type, "`,'");
- got_info(t.text(), atf::text::trim(p.rest_of_line()));
+ got_info(t.text(), tools::text::trim(p.rest_of_line()));
(void)p.expect(nl_type, "new line");
}
@@ -228,14 +227,14 @@ impl::atf_tps_reader::read_info(void* pptr)
void
impl::atf_tps_reader::read_tp(void* pptr)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_tps;
- atf::parser::parser< tokenizer >& p =
- *reinterpret_cast< atf::parser::parser< tokenizer >* >
+ tools::parser::parser< tokenizer >& p =
+ *reinterpret_cast< tools::parser::parser< tokenizer >* >
(pptr);
- atf::parser::token t = p.expect(tp_start_type,
+ tools::parser::token t = p.expect(tp_start_type,
"start of test program");
t = p.expect(colon_type, "`:'");
@@ -287,7 +286,7 @@ impl::atf_tps_reader::read_tp(void* pptr)
"new line or comma_type");
std::string reason;
if (t.type() == comma_type) {
- reason = text::trim(p.rest_of_line());
+ reason = tools::text::trim(p.rest_of_line());
if (reason.empty())
throw parse_error(t.lineno(),
"Empty reason for failed test program");
@@ -300,14 +299,14 @@ impl::atf_tps_reader::read_tp(void* pptr)
void
impl::atf_tps_reader::read_tc(void* pptr)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_tps;
- atf::parser::parser< tokenizer >& p =
- *reinterpret_cast< atf::parser::parser< tokenizer >* >
+ tools::parser::parser< tokenizer >& p =
+ *reinterpret_cast< tools::parser::parser< tokenizer >* >
(pptr);
- atf::parser::token t = p.expect(tc_start_type, "start of test case");
+ tools::parser::token t = p.expect(tc_start_type, "start of test case");
t = p.expect(colon_type, "`:'");
@@ -326,7 +325,7 @@ impl::atf_tps_reader::read_tc(void* pptr)
"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)) {
- atf::parser::token t2 = t;
+ tools::parser::token t2 = t;
t = p.expect(colon_type, "`:'");
@@ -335,7 +334,7 @@ impl::atf_tps_reader::read_tc(void* pptr)
if (t2.type() == tc_so_type) {
ATF_PARSER_CALLBACK(p, got_tc_stdout_line(line));
} else {
- INV(t2.type() == tc_se_type);
+ assert(t2.type() == tc_se_type);
ATF_PARSER_CALLBACK(p, got_tc_stderr_line(line));
}
@@ -377,10 +376,10 @@ impl::atf_tps_reader::read_tc(void* pptr)
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 UNREACHABLE;
+ else std::abort();
t = p.expect(comma_type, "`,'");
- std::string reason = text::trim(p.rest_of_line());
+ 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");
@@ -393,18 +392,19 @@ impl::atf_tps_reader::read_tc(void* pptr)
void
impl::atf_tps_reader::read(void)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_tps;
- std::pair< size_t, atf::parser::headers_map > hml =
- atf::parser::read_headers(m_is, 1);
- atf::parser::validate_content_type(hml.second, "application/X-atf-tps", 3);
+ 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);
- atf::parser::parser< tokenizer > p(tkz);
+ tools::parser::parser< tokenizer > p(tkz);
try {
- atf::parser::token t;
+ tools::parser::token t;
while ((t = p.expect(tps_count_type, info_type, "tps-count or info "
"field")).type() == info_type)
diff --git a/atf-report/reader.hpp b/tools/reader.hpp
index 2ef038a..34d5d25 100644
--- a/atf-report/reader.hpp
+++ b/tools/reader.hpp
@@ -27,8 +27,8 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_REPORT_FORMATS_HPP_)
-#define _ATF_REPORT_FORMATS_HPP_
+#if !defined(TOOLS_FORMATS_HPP)
+#define TOOLS_FORMATS_HPP
extern "C" {
#include <sys/time.h>
@@ -37,9 +37,7 @@ extern "C" {
#include <istream>
#include <string>
-#include <atf-c++/tests.hpp>
-
-namespace atf {
+namespace tools {
namespace atf_report {
struct test_case_result {
@@ -86,6 +84,6 @@ public:
};
} // namespace atf_report
-} // namespace atf
+} // namespace tools
-#endif // !defined(_ATF_REPORT_FORMATS_HPP_)
+#endif // !defined(TOOLS_FORMATS_HPP)
diff --git a/atf-report/reader_test.cpp b/tools/reader_test.cpp
index 59e4059..3e53e06 100644
--- a/atf-report/reader_test.cpp
+++ b/tools/reader_test.cpp
@@ -33,16 +33,14 @@
#include <utility>
#include <vector>
-#include "atf-c++/macros.hpp"
-
-#include "atf-c++/detail/parser.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/test_helpers.hpp"
-#include "atf-c++/detail/text.hpp"
+#include <atf-c++.hpp>
+#include "parser.hpp"
#include "reader.hpp"
+#include "test_helpers.hpp"
+#include "text.hpp"
-namespace impl = atf::atf_report;
+namespace impl = tools::atf_report;
class tps_reader : protected impl::atf_tps_reader {
void
@@ -54,14 +52,14 @@ class tps_reader : protected impl::atf_tps_reader {
void
got_ntps(size_t ntps)
{
- m_calls.push_back("got_ntps(" + atf::text::to_string(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 + ", " +
- atf::text::to_string(ntcs) + ")");
+ tools::text::to_string(ntcs) + ")");
}
void
diff --git a/atf-run/requirements.cpp b/tools/requirements.cpp
index 2a8258d..97fcdc8 100644
--- a/atf-run/requirements.cpp
+++ b/tools/requirements.cpp
@@ -32,48 +32,46 @@ extern "C" {
#include <sys/sysctl.h>
}
+#include <cassert>
#include <cerrno>
+#include <cstdlib>
#include <cstring>
#include <stdexcept>
-extern "C" {
-#include "atf-c/defs.h"
-}
-
-#include "atf-c++/config.hpp"
-
-#include "atf-c++/detail/fs.hpp"
-#include "atf-c++/detail/env.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/text.hpp"
-
+#include "config.hpp"
+#include "defs.hpp"
+#include "env.hpp"
+#include "fs.hpp"
#include "requirements.hpp"
+#include "text.hpp"
#include "user.hpp"
-namespace impl = atf::atf_run;
+namespace impl = tools;
namespace {
+typedef std::map< std::string, std::string > vars_map;
+
static
bool
-has_program(const atf::fs::path& program)
+has_program(const tools::fs::path& program)
{
bool found = false;
if (program.is_absolute()) {
- found = atf::fs::is_executable(program);
+ 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 = atf::text::split(
- atf::env::get("PATH"), ":");
+ 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 atf::fs::path& p = atf::fs::path(*iter) / program;
- if (atf::fs::is_executable(p))
+ const tools::fs::path& p = tools::fs::path(*iter) / program;
+ if (tools::fs::is_executable(p))
found = true;
}
}
@@ -85,11 +83,11 @@ static
std::string
check_arch(const std::string& arches)
{
- const std::vector< std::string > v = atf::text::split(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) == atf::config::get("atf_arch"))
+ if ((*iter) == tools::config::get("atf_arch"))
return "";
}
@@ -101,9 +99,9 @@ check_arch(const std::string& arches)
static
std::string
-check_config(const std::string& variables, const atf::tests::vars_map& config)
+check_config(const std::string& variables, const vars_map& config)
{
- const std::vector< std::string > v = atf::text::split(variables, " ");
+ 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())
@@ -117,14 +115,14 @@ static
std::string
check_files(const std::string& progs)
{
- const std::vector< std::string > v = atf::text::split(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 atf::fs::path file(*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 (!atf::fs::exists(file))
+ if (!tools::fs::exists(file))
return "Required file '" + file.str() + "' not found";
}
return "";
@@ -134,11 +132,11 @@ static
std::string
check_machine(const std::string& machines)
{
- const std::vector< std::string > v = atf::text::split(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) == atf::config::get("atf_machine"))
+ if ((*iter) == tools::config::get("atf_machine"))
return "";
}
@@ -162,8 +160,8 @@ check_memory_sysctl(const int64_t needed, const char* sysctl_variable)
}
if (available < needed) {
- return "Not enough memory; needed " + atf::text::to_string(needed) +
- ", available " + atf::text::to_string(available);
+ return "Not enough memory; needed " + tools::text::to_string(needed) +
+ ", available " + tools::text::to_string(available);
} else
return "";
}
@@ -204,7 +202,7 @@ static
std::string
check_memory(const std::string& raw_memory)
{
- const int64_t needed = atf::text::to_bytes(raw_memory);
+ const int64_t needed = tools::text::to_bytes(raw_memory);
#if defined(__APPLE__)
return check_memory_darwin(needed);
@@ -221,10 +219,10 @@ static
std::string
check_progs(const std::string& progs)
{
- const std::vector< std::string > v = atf::text::split(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(atf::fs::path(*iter)))
+ if (!has_program(tools::fs::path(*iter)))
return "Required program '" + (*iter) + "' not found in the PATH";
}
return "";
@@ -232,16 +230,16 @@ check_progs(const std::string& progs)
static
std::string
-check_user(const std::string& user, const atf::tests::vars_map& config)
+check_user(const std::string& user, const vars_map& config)
{
if (user == "root") {
- if (!impl::is_root())
+ if (!tools::user::is_root())
return "Requires root privileges";
else
return "";
} else if (user == "unprivileged") {
- if (impl::is_root()) {
- const atf::tests::vars_map::const_iterator iter = config.find(
+ 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 "
@@ -249,7 +247,7 @@ check_user(const std::string& user, const atf::tests::vars_map& config)
else {
const std::string& unprivileged_user = (*iter).second;
try {
- (void)impl::get_user_ids(unprivileged_user);
+ (void)tools::user::get_user_ids(unprivileged_user);
return "";
} catch (const std::runtime_error& e) {
return "Failed to get information for user " +
@@ -266,16 +264,16 @@ check_user(const std::string& user, const atf::tests::vars_map& config)
} // anonymous namespace
std::string
-impl::check_requirements(const atf::tests::vars_map& metadata,
- const atf::tests::vars_map& config)
+impl::check_requirements(const vars_map& metadata,
+ const vars_map& config)
{
std::string failure_reason = "";
- for (atf::tests::vars_map::const_iterator iter = metadata.begin();
+ 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;
- INV(!value.empty()); // Enforced by application/X-atf-tp parser.
+ assert(!value.empty()); // Enforced by application/X-atf-tp parser.
if (name == "require.arch")
failure_reason = check_arch(value);
@@ -294,7 +292,7 @@ impl::check_requirements(const atf::tests::vars_map& metadata,
else {
// Unknown require.* properties are forbidden by the
// application/X-atf-tp parser.
- INV(failure_reason.find("require.") != 0);
+ assert(failure_reason.find("require.") != 0);
}
}
@@ -302,23 +300,22 @@ impl::check_requirements(const atf::tests::vars_map& metadata,
}
std::pair< int, int >
-impl::get_required_user(const atf::tests::vars_map& metadata,
- const atf::tests::vars_map& config)
+impl::get_required_user(const vars_map& metadata,
+ const vars_map& config)
{
- const atf::tests::vars_map::const_iterator user = metadata.find(
+ 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 (impl::is_root()) {
- const atf::tests::vars_map::const_iterator iter = config.find(
+ if (tools::user::is_root()) {
+ const vars_map::const_iterator iter = config.find(
"unprivileged-user");
try {
- return impl::get_user_ids((*iter).second);
+ return tools::user::get_user_ids((*iter).second);
} catch (const std::exception& e) {
- UNREACHABLE; // This has been validated by check_user.
- throw e;
+ std::abort(); // This has been validated by check_user.
}
} else {
return std::make_pair(-1, -1);
diff --git a/atf-run/requirements.hpp b/tools/requirements.hpp
index 62c072d..1eefdaf 100644
--- a/atf-run/requirements.hpp
+++ b/tools/requirements.hpp
@@ -27,18 +27,21 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
+#if !defined(TOOLS_REQUIREMENTS_HPP)
+#define TOOLS_REQUIREMENTS_HPP
+
+#include <map>
#include <string>
#include <utility>
-#include "atf-c++/tests.hpp"
+namespace tools {
-namespace atf {
-namespace atf_run {
+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 >&);
-std::string check_requirements(const atf::tests::vars_map&,
- const atf::tests::vars_map&);
-std::pair< int, int > get_required_user(const atf::tests::vars_map&,
- const atf::tests::vars_map&);
+} // namespace tools
-} // namespace atf_run
-} // namespace atf
+#endif // !defined(TOOLS_REQUIREMENTS_HPP)
diff --git a/atf-run/requirements_test.cpp b/tools/requirements_test.cpp
index 2037343..6d37d75 100644
--- a/atf-run/requirements_test.cpp
+++ b/tools/requirements_test.cpp
@@ -27,14 +27,14 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include "atf-c++/config.hpp"
-#include "atf-c++/detail/text.hpp"
-#include "atf-c++/macros.hpp"
+#include <atf-c++.hpp>
+#include "config.hpp"
#include "requirements.hpp"
+#include "text.hpp"
#include "user.hpp"
-namespace impl = atf::atf_run;
+namespace impl = tools;
// -------------------------------------------------------------------------
// Auxiliary functions.
@@ -42,14 +42,16 @@ namespace impl = atf::atf_run;
namespace {
-const atf::tests::vars_map no_config;
+typedef std::map< std::string, std::string > vars_map;
+
+const vars_map no_config;
void
-do_check(const std::string& expected, const atf::tests::vars_map& metadata,
- const atf::tests::vars_map& config = no_config)
+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 (!atf::text::match(actual, expected))
+ if (!tools::text::match(actual, expected))
ATF_FAIL("Requirements failure reason \"" + actual + "\" does not "
"match \"" + expected + "\"");
}
@@ -63,15 +65,15 @@ do_check(const std::string& expected, const atf::tests::vars_map& metadata,
ATF_TEST_CASE(require_arch_one_ok);
ATF_TEST_CASE_HEAD(require_arch_one_ok) {}
ATF_TEST_CASE_BODY(require_arch_one_ok) {
- atf::tests::vars_map metadata;
- metadata["require.arch"] = atf::config::get("atf_arch");
+ 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) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.arch"] = "__fake_arch__";
do_check("Requires the '__fake_arch__' architecture", metadata);
}
@@ -79,8 +81,8 @@ ATF_TEST_CASE_BODY(require_arch_one_fail) {
ATF_TEST_CASE(require_arch_many_ok);
ATF_TEST_CASE_HEAD(require_arch_many_ok) {}
ATF_TEST_CASE_BODY(require_arch_many_ok) {
- atf::tests::vars_map metadata;
- metadata["require.arch"] = "__foo__ " + atf::config::get("atf_arch") +
+ vars_map metadata;
+ metadata["require.arch"] = "__foo__ " + tools::config::get("atf_arch") +
" __bar__";
do_check("", metadata);
}
@@ -88,7 +90,7 @@ ATF_TEST_CASE_BODY(require_arch_many_ok) {
ATF_TEST_CASE(require_arch_many_fail);
ATF_TEST_CASE_HEAD(require_arch_many_fail) {}
ATF_TEST_CASE_BODY(require_arch_many_fail) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.arch"] = "__foo__ __bar__ __baz__";
do_check("Requires one of the '__foo__ __bar__ __baz__' architectures",
metadata);
@@ -101,7 +103,7 @@ ATF_TEST_CASE_BODY(require_arch_many_fail) {
ATF_TEST_CASE(require_config_one_ok);
ATF_TEST_CASE_HEAD(require_config_one_ok) {}
ATF_TEST_CASE_BODY(require_config_one_ok) {
- atf::tests::vars_map metadata, config;
+ vars_map metadata, config;
metadata["require.config"] = "var1";
config["var1"] = "some-value";
do_check("", metadata, config);
@@ -110,7 +112,7 @@ ATF_TEST_CASE_BODY(require_config_one_ok) {
ATF_TEST_CASE(require_config_one_fail);
ATF_TEST_CASE_HEAD(require_config_one_fail) {}
ATF_TEST_CASE_BODY(require_config_one_fail) {
- atf::tests::vars_map metadata, config;
+ vars_map metadata, config;
metadata["require.config"] = "var1";
do_check("Required configuration variable 'var1' not defined", metadata,
config);
@@ -119,7 +121,7 @@ ATF_TEST_CASE_BODY(require_config_one_fail) {
ATF_TEST_CASE(require_config_many_ok);
ATF_TEST_CASE_HEAD(require_config_many_ok) {}
ATF_TEST_CASE_BODY(require_config_many_ok) {
- atf::tests::vars_map metadata, config;
+ vars_map metadata, config;
metadata["require.config"] = "var1 var2 var3";
config["var1"] = "first-value";
config["var2"] = "second-value";
@@ -130,7 +132,7 @@ ATF_TEST_CASE_BODY(require_config_many_ok) {
ATF_TEST_CASE(require_config_many_fail);
ATF_TEST_CASE_HEAD(require_config_many_fail) {}
ATF_TEST_CASE_BODY(require_config_many_fail) {
- atf::tests::vars_map metadata, config;
+ vars_map metadata, config;
metadata["require.config"] = "var1 var2 var3";
config["var1"] = "first-value";
config["var3"] = "third-value";
@@ -144,21 +146,21 @@ ATF_TEST_CASE_BODY(require_config_many_fail) {
ATF_TEST_CASE_WITHOUT_HEAD(require_files_one_ok);
ATF_TEST_CASE_BODY(require_files_one_ok) {
- atf::tests::vars_map metadata;
+ 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) {
- atf::tests::vars_map metadata;
+ 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) {
- atf::tests::vars_map metadata;
+ 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));
@@ -166,21 +168,21 @@ ATF_TEST_CASE_BODY(require_files_one_fail) {
ATF_TEST_CASE_WITHOUT_HEAD(require_files_many_ok);
ATF_TEST_CASE_BODY(require_files_many_ok) {
- atf::tests::vars_map metadata;
+ 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) {
- atf::tests::vars_map metadata;
+ 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) {
- atf::tests::vars_map metadata;
+ 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));
@@ -193,15 +195,15 @@ ATF_TEST_CASE_BODY(require_files_many_fail) {
ATF_TEST_CASE(require_machine_one_ok);
ATF_TEST_CASE_HEAD(require_machine_one_ok) {}
ATF_TEST_CASE_BODY(require_machine_one_ok) {
- atf::tests::vars_map metadata;
- metadata["require.machine"] = atf::config::get("atf_machine");
+ 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) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.machine"] = "__fake_machine__";
do_check("Requires the '__fake_machine__' machine type", metadata);
}
@@ -209,16 +211,16 @@ ATF_TEST_CASE_BODY(require_machine_one_fail) {
ATF_TEST_CASE(require_machine_many_ok);
ATF_TEST_CASE_HEAD(require_machine_many_ok) {}
ATF_TEST_CASE_BODY(require_machine_many_ok) {
- atf::tests::vars_map metadata;
- metadata["require.machine"] = "__foo__ " + atf::config::get("atf_machine") +
- " __bar__";
+ 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) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.machine"] = "__foo__ __bar__ __baz__";
do_check("Requires one of the '__foo__ __bar__ __baz__' machine types",
metadata);
@@ -230,14 +232,14 @@ ATF_TEST_CASE_BODY(require_machine_many_fail) {
ATF_TEST_CASE_WITHOUT_HEAD(require_memory_ok);
ATF_TEST_CASE_BODY(require_memory_ok) {
- atf::tests::vars_map metadata;
+ 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) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.memory"] = "128t";
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
do_check("Not enough memory; needed 140737488355328, available [0-9]*",
@@ -249,7 +251,7 @@ ATF_TEST_CASE_BODY(require_memory_not_enough) {
ATF_TEST_CASE_WITHOUT_HEAD(require_memory_fail);
ATF_TEST_CASE_BODY(require_memory_fail) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.memory"] = "foo";
ATF_REQUIRE_THROW(std::runtime_error,
impl::check_requirements(metadata, no_config));
@@ -262,7 +264,7 @@ ATF_TEST_CASE_BODY(require_memory_fail) {
ATF_TEST_CASE(require_progs_one_ok);
ATF_TEST_CASE_HEAD(require_progs_one_ok) {}
ATF_TEST_CASE_BODY(require_progs_one_ok) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.progs"] = "cp";
do_check("", metadata);
}
@@ -270,7 +272,7 @@ ATF_TEST_CASE_BODY(require_progs_one_ok) {
ATF_TEST_CASE(require_progs_one_missing);
ATF_TEST_CASE_HEAD(require_progs_one_missing) {}
ATF_TEST_CASE_BODY(require_progs_one_missing) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.progs"] = "cp __non-existent__";
do_check("Required program '__non-existent__' not found in the PATH",
metadata);
@@ -279,7 +281,7 @@ ATF_TEST_CASE_BODY(require_progs_one_missing) {
ATF_TEST_CASE(require_progs_one_fail);
ATF_TEST_CASE_HEAD(require_progs_one_fail) {}
ATF_TEST_CASE_BODY(require_progs_one_fail) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.progs"] = "bin/cp";
ATF_REQUIRE_THROW(std::runtime_error,
impl::check_requirements(metadata, no_config));
@@ -288,7 +290,7 @@ ATF_TEST_CASE_BODY(require_progs_one_fail) {
ATF_TEST_CASE(require_progs_many_ok);
ATF_TEST_CASE_HEAD(require_progs_many_ok) {}
ATF_TEST_CASE_BODY(require_progs_many_ok) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.progs"] = "cp ls mv";
do_check("", metadata);
}
@@ -296,7 +298,7 @@ ATF_TEST_CASE_BODY(require_progs_many_ok) {
ATF_TEST_CASE(require_progs_many_missing);
ATF_TEST_CASE_HEAD(require_progs_many_missing) {}
ATF_TEST_CASE_BODY(require_progs_many_missing) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.progs"] = "mv ls __foo__ cp";
do_check("Required program '__foo__' not found in the PATH", metadata);
}
@@ -304,7 +306,7 @@ ATF_TEST_CASE_BODY(require_progs_many_missing) {
ATF_TEST_CASE(require_progs_many_fail);
ATF_TEST_CASE_HEAD(require_progs_many_fail) {}
ATF_TEST_CASE_BODY(require_progs_many_fail) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.progs"] = "ls cp ../bin/cp";
ATF_REQUIRE_THROW(std::runtime_error,
impl::check_requirements(metadata, no_config));
@@ -317,9 +319,9 @@ ATF_TEST_CASE_BODY(require_progs_many_fail) {
ATF_TEST_CASE(require_user_root);
ATF_TEST_CASE_HEAD(require_user_root) {}
ATF_TEST_CASE_BODY(require_user_root) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.user"] = "root";
- if (atf::atf_run::is_root())
+ if (tools::user::is_root())
do_check("", metadata);
else
do_check("Requires root privileges", metadata);
@@ -328,9 +330,9 @@ ATF_TEST_CASE_BODY(require_user_root) {
ATF_TEST_CASE(require_user_unprivileged);
ATF_TEST_CASE_HEAD(require_user_unprivileged) {}
ATF_TEST_CASE_BODY(require_user_unprivileged) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.user"] = "unprivileged";
- if (atf::atf_run::is_root())
+ if (tools::user::is_root())
do_check("Requires an unprivileged user and the 'unprivileged-user' "
"configuration variable is not set", metadata);
else
@@ -340,7 +342,7 @@ ATF_TEST_CASE_BODY(require_user_unprivileged) {
ATF_TEST_CASE(require_user_fail);
ATF_TEST_CASE_HEAD(require_user_fail) {}
ATF_TEST_CASE_BODY(require_user_fail) {
- atf::tests::vars_map metadata;
+ vars_map metadata;
metadata["require.user"] = "nobody";
ATF_REQUIRE_THROW(std::runtime_error,
impl::check_requirements(metadata, no_config));
diff --git a/atf-run/sample/atf-run.hooks b/tools/sample/atf-run.hooks
index 86d187d..86d187d 100644
--- a/atf-run/sample/atf-run.hooks
+++ b/tools/sample/atf-run.hooks
diff --git a/atf-run/sample/common.conf b/tools/sample/common.conf
index 464ee96..464ee96 100644
--- a/atf-run/sample/common.conf
+++ b/tools/sample/common.conf
diff --git a/atf-run/several_tcs_helper.c b/tools/several_tcs_helper.c
index d287c81..d287c81 100644
--- a/atf-run/several_tcs_helper.c
+++ b/tools/several_tcs_helper.c
diff --git a/atf-run/share/atf-run.hooks b/tools/share/atf-run.hooks
index c94f3bc..c94f3bc 100644
--- a/atf-run/share/atf-run.hooks
+++ b/tools/share/atf-run.hooks
diff --git a/atf-run/signals.cpp b/tools/signals.cpp
index 851c8f0..0e731de 100644
--- a/atf-run/signals.cpp
+++ b/tools/signals.cpp
@@ -37,14 +37,13 @@ extern "C" {
}
#include <cerrno>
+#include <cstdlib>
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/sanity.hpp"
-
+#include "exceptions.hpp"
#include "signals.hpp"
-namespace impl = atf::atf_run;
-#define IMPL_NAME "atf::atf_run"
+namespace impl = tools::signals;
+#define IMPL_NAME "tools::signals"
const int impl::last_signo = LAST_SIGNO;
@@ -110,7 +109,7 @@ impl::signal_programmer::signal_programmer(const int signo, const handler h) :
sa.sa_flags = 0;
if (::sigaction(m_signo, &sa, &m_oldsa) == -1)
- throw atf::system_error(IMPL_NAME, "Could not install handler for "
+ throw tools::system_error(IMPL_NAME, "Could not install handler for "
"signal", errno);
m_programmed = true;
}
@@ -125,7 +124,7 @@ impl::signal_programmer::unprogram(void)
{
if (m_programmed) {
if (::sigaction(m_signo, &m_oldsa, NULL) == -1)
- UNREACHABLE;
+ std::abort();
m_programmed = false;
}
}
diff --git a/atf-run/signals.hpp b/tools/signals.hpp
index 8765ac9..549a2ca 100644
--- a/atf-run/signals.hpp
+++ b/tools/signals.hpp
@@ -27,15 +27,15 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_RUN_SIGNALS_HPP_)
-#define _ATF_RUN_SIGNALS_HPP_
+#if !defined(TOOLS_SIGNALS_HPP)
+#define TOOLS_SIGNALS_HPP
extern "C" {
#include <signal.h>
}
-namespace atf {
-namespace atf_run {
+namespace tools {
+namespace signals {
extern const int last_signo;
typedef void (*handler)(const int);
@@ -86,7 +86,7 @@ public:
void reset(const int);
-} // namespace atf_run
-} // namespace atf
+} // namespace signals
+} // namespace tools
-#endif // !defined(_ATF_RUN_SIGNALS_HPP_)
+#endif // !defined(TOOLS_SIGNALS_HPP)
diff --git a/atf-run/signals_test.cpp b/tools/signals_test.cpp
index 358c8a8..aa6a8e5 100644
--- a/atf-run/signals_test.cpp
+++ b/tools/signals_test.cpp
@@ -37,13 +37,11 @@ extern "C" {
#include <cstdlib>
#include <iostream>
-#include "atf-c/defs.h"
-
-#include "atf-c++/macros.hpp"
-
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/process.hpp"
+#include <atf-c++.hpp>
+#include "defs.hpp"
+#include "exceptions.hpp"
+#include "process.hpp"
#include "signals.hpp"
// ------------------------------------------------------------------------
@@ -69,7 +67,7 @@ namespace sigusr1 {
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (::sigaction(SIGUSR1, &sa, NULL) == -1)
- throw atf::system_error("sigusr1::program",
+ throw tools::system_error("sigusr1::program",
"sigaction(2) failed", errno);
}
} // namespace sigusr1
@@ -97,7 +95,7 @@ ATF_TEST_CASE_HEAD(signal_holder_preserve)
}
ATF_TEST_CASE_BODY(signal_holder_preserve)
{
- using atf::atf_run::signal_holder;
+ using tools::signals::signal_holder;
sigusr1::program();
@@ -123,7 +121,7 @@ ATF_TEST_CASE_HEAD(signal_holder_destructor)
}
ATF_TEST_CASE_BODY(signal_holder_destructor)
{
- using atf::atf_run::signal_holder;
+ using tools::signals::signal_holder;
sigusr1::program();
@@ -149,7 +147,7 @@ ATF_TEST_CASE_HEAD(signal_holder_process)
}
ATF_TEST_CASE_BODY(signal_holder_process)
{
- using atf::atf_run::signal_holder;
+ using tools::signals::signal_holder;
sigusr1::program();
@@ -184,7 +182,7 @@ ATF_TEST_CASE_HEAD(signal_programmer_program)
}
ATF_TEST_CASE_BODY(signal_programmer_program)
{
- using atf::atf_run::signal_programmer;
+ using tools::signals::signal_programmer;
signal_programmer sp(SIGUSR1, sigusr1_2::handler);
@@ -201,7 +199,7 @@ ATF_TEST_CASE_HEAD(signal_programmer_preserve)
}
ATF_TEST_CASE_BODY(signal_programmer_preserve)
{
- using atf::atf_run::signal_programmer;
+ using tools::signals::signal_programmer;
sigusr1::program();
sigusr1::happened = false;
@@ -230,7 +228,7 @@ reset_child(void *v ATF_DEFS_ATTRIBUTE_UNUSED)
sigusr1::program();
sigusr1::happened = false;
- atf::atf_run::reset(SIGUSR1);
+ tools::signals::reset(SIGUSR1);
kill(::getpid(), SIGUSR1);
if (sigusr1::happened) {
@@ -248,11 +246,11 @@ ATF_TEST_CASE_HEAD(reset)
}
ATF_TEST_CASE_BODY(reset)
{
- atf::process::child c =
- atf::process::fork(reset_child, atf::process::stream_inherit(),
- atf::process::stream_inherit(), NULL);
+ tools::process::child c =
+ tools::process::fork(reset_child, tools::process::stream_inherit(),
+ tools::process::stream_inherit(), NULL);
- const atf::process::status s = c.wait();
+ const tools::process::status s = c.wait();
ATF_REQUIRE(s.exited() || s.signaled());
ATF_REQUIRE(!s.signaled() || s.termsig() == SIGUSR1);
}
diff --git a/atf-run/test-program.cpp b/tools/test-program.cpp
index 14647c2..91ad78a 100644
--- a/atf-run/test-program.cpp
+++ b/tools/test-program.cpp
@@ -37,34 +37,34 @@ extern "C" {
#include <unistd.h>
}
+#include <cassert>
#include <cerrno>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iostream>
-#include "atf-c/defs.h"
-
-#include "atf-c++/detail/env.hpp"
-#include "atf-c++/detail/parser.hpp"
-#include "atf-c++/detail/process.hpp"
-#include "atf-c++/detail/sanity.hpp"
-#include "atf-c++/detail/text.hpp"
-
-#include "config.hpp"
+#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 "timer.hpp"
+#include "text.hpp"
+#include "timers.hpp"
#include "user.hpp"
-namespace impl = atf::atf_run;
-namespace detail = atf::atf_run::detail;
+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)
{
@@ -81,16 +81,16 @@ check_stream(std::ostream& os)
namespace atf_tp {
-static const atf::parser::token_type eof_type = 0;
-static const atf::parser::token_type nl_type = 1;
-static const atf::parser::token_type text_type = 2;
-static const atf::parser::token_type colon_type = 3;
-static const atf::parser::token_type dblquote_type = 4;
+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 atf::parser::tokenizer< std::istream > {
+class tokenizer : public tools::parser::tokenizer< std::istream > {
public:
tokenizer(std::istream& is, size_t curline) :
- atf::parser::tokenizer< std::istream >
+ tools::parser::tokenizer< std::istream >
(is, true, eof_type, nl_type, text_type, curline)
{
add_delim(':', colon_type);
@@ -103,7 +103,7 @@ public:
class metadata_reader : public detail::atf_tp_reader {
impl::test_cases_map m_tcs;
- void got_tc(const std::string& ident, const atf::tests::vars_map& props)
+ 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 +
@@ -132,11 +132,11 @@ public:
};
struct get_metadata_params {
- const atf::fs::path& executable;
- const atf::tests::vars_map& config;
+ const tools::fs::path& executable;
+ const vars_map& config;
- get_metadata_params(const atf::fs::path& p_executable,
- const atf::tests::vars_map& p_config) :
+ get_metadata_params(const tools::fs::path& p_executable,
+ const vars_map& p_config) :
executable(p_executable),
config(p_config)
{
@@ -144,21 +144,21 @@ struct get_metadata_params {
};
struct test_case_params {
- const atf::fs::path& executable;
+ const tools::fs::path& executable;
const std::string& test_case_name;
const std::string& test_case_part;
- const atf::tests::vars_map& metadata;
- const atf::tests::vars_map& config;
- const atf::fs::path& resfile;
- const atf::fs::path& workdir;
+ const vars_map& metadata;
+ const vars_map& config;
+ const tools::fs::path& resfile;
+ const tools::fs::path& workdir;
- test_case_params(const atf::fs::path& p_executable,
+ test_case_params(const tools::fs::path& p_executable,
const std::string& p_test_case_name,
const std::string& p_test_case_part,
- const atf::tests::vars_map& p_metadata,
- const atf::tests::vars_map& p_config,
- const atf::fs::path& p_resfile,
- const atf::fs::path& p_workdir) :
+ 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),
@@ -211,7 +211,7 @@ vector_to_argv(const std::vector< std::string >& v)
static
void
-exec_or_exit(const atf::fs::path& executable,
+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
@@ -229,11 +229,11 @@ exec_or_exit(const atf::fs::path& executable,
static
std::vector< std::string >
-config_to_args(const atf::tests::vars_map& config)
+config_to_args(const vars_map& config)
{
std::vector< std::string > args;
- for (atf::tests::vars_map::const_iterator iter = config.begin();
+ for (vars_map::const_iterator iter = config.begin();
iter != config.end(); iter++)
args.push_back("-v" + (*iter).first + "=" + (*iter).second);
@@ -248,35 +248,35 @@ silence_stdin(void)
int fd = ::open("/dev/null", O_RDONLY);
if (fd == -1)
throw std::runtime_error("Could not open /dev/null");
- INV(fd == STDIN_FILENO);
+ assert(fd == STDIN_FILENO);
}
static
void
-prepare_child(const atf::fs::path& workdir)
+prepare_child(const tools::fs::path& workdir)
{
const int ret = ::setpgid(::getpid(), 0);
- INV(ret != -1);
+ assert(ret != -1);
::umask(S_IWGRP | S_IWOTH);
- for (int i = 1; i <= impl::last_signo; i++)
- impl::reset(i);
+ for (int i = 1; i <= tools::signals::last_signo; i++)
+ tools::signals::reset(i);
- atf::env::set("HOME", workdir.str());
- atf::env::unset("LANG");
- atf::env::unset("LC_ALL");
- atf::env::unset("LC_COLLATE");
- atf::env::unset("LC_CTYPE");
- atf::env::unset("LC_MESSAGES");
- atf::env::unset("LC_MONETARY");
- atf::env::unset("LC_NUMERIC");
- atf::env::unset("LC_TIME");
- atf::env::set("TZ", "UTC");
+ 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");
- atf::env::set("__RUNNING_INSIDE_ATF_RUN", "internal-yes-value");
+ tools::env::set("__RUNNING_INSIDE_ATF_RUN", "internal-yes-value");
- impl::change_directory(workdir);
+ tools::fs::change_directory(workdir);
silence_stdin();
}
@@ -303,14 +303,14 @@ 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 = impl::get_required_user(
+ const std::pair< int, int > user = tools::get_required_user(
params->metadata, params->config);
if (user.first != -1 && user.second != -1)
- impl::drop_privileges(user);
+ tools::user::drop_privileges(user);
// The input 'tp' parameter may be relative and become invalid once
// we change the current working directory.
- const atf::fs::path absolute_executable = params->executable.to_absolute();
+ 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,
@@ -338,7 +338,7 @@ tokenize_result(const std::string& line, std::string& out_state,
} else if (line[pos] == ':') {
out_state = line.substr(0, pos);
out_arg = "";
- out_reason = atf::text::trim(line.substr(pos + 1));
+ 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)
@@ -346,16 +346,16 @@ tokenize_result(const std::string& line, std::string& out_state,
"': unclosed optional argument");
out_state = line.substr(0, pos);
out_arg = line.substr(pos + 1, pos2 - pos - 1);
- out_reason = atf::text::trim(line.substr(pos2 + 2));
+ out_reason = tools::text::trim(line.substr(pos2 + 2));
} else
- UNREACHABLE;
+ std::abort();
}
static impl::test_case_result
handle_result(const std::string& state, const std::string& arg,
const std::string& reason)
{
- PRE(state == "passed");
+ assert(state == "passed");
if (!arg.empty() || !reason.empty())
throw std::runtime_error("The test case result '" + state + "' cannot "
@@ -368,7 +368,7 @@ static impl::test_case_result
handle_result_with_reason(const std::string& state, const std::string& arg,
const std::string& reason)
{
- PRE(state == "expected_death" || state == "expected_failure" ||
+ assert(state == "expected_death" || state == "expected_failure" ||
state == "expected_timeout" || state == "failed" || state == "skipped");
if (!arg.empty() || reason.empty())
@@ -383,7 +383,7 @@ handle_result_with_reason_and_arg(const std::string& state,
const std::string& arg,
const std::string& reason)
{
- PRE(state == "expected_exit" || state == "expected_signal");
+ assert(state == "expected_exit" || state == "expected_signal");
if (reason.empty())
throw std::runtime_error("The test case result '" + state + "' must "
@@ -394,7 +394,7 @@ handle_result_with_reason_and_arg(const std::string& state,
value = -1;
} else {
try {
- value = atf::text::to_type< int >(arg);
+ 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");
@@ -432,7 +432,7 @@ 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 atf::parser::parse_error;
+ using tools::parser::parse_error;
if (value.empty())
throw parse_error(lineno, "The value for '" + name +"' cannot be "
@@ -445,13 +445,13 @@ detail::atf_tp_reader::validate_and_insert(const std::string& name,
// Any non-empty value is valid.
} else if (name == "has.cleanup") {
try {
- (void)atf::text::to_bool(value);
+ (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 (!atf::text::match(value, ident_regex))
+ if (!tools::text::match(value, ident_regex))
throw parse_error(lineno, "The identifier must match " +
ident_regex + "; was '" + value + "'");
} else if (name == "require.arch") {
@@ -460,7 +460,7 @@ detail::atf_tp_reader::validate_and_insert(const std::string& name,
} else if (name == "require.machine") {
} else if (name == "require.memory") {
try {
- (void)atf::text::to_bytes(value);
+ (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");
@@ -468,7 +468,7 @@ detail::atf_tp_reader::validate_and_insert(const std::string& name,
} else if (name == "require.progs") {
} else if (name == "require.user") {
} else if (name == "timeout") {
- if (!atf::text::match(value, integer_regex))
+ if (!tools::text::match(value, integer_regex))
throw parse_error(lineno, "The timeout property requires an integer"
" value");
} else if (name == "use.fs") {
@@ -485,19 +485,19 @@ detail::atf_tp_reader::validate_and_insert(const std::string& name,
void
detail::atf_tp_reader::read(void)
{
- using atf::parser::parse_error;
+ using tools::parser::parse_error;
using namespace atf_tp;
- std::pair< size_t, atf::parser::headers_map > hml =
- atf::parser::read_headers(m_is, 1);
- atf::parser::validate_content_type(hml.second,
+ 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);
- atf::parser::parser< tokenizer > p(tkz);
+ tools::parser::parser< tokenizer > p(tkz);
try {
- atf::parser::token t = p.expect(text_type, "property name");
+ 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'");
@@ -506,7 +506,7 @@ detail::atf_tp_reader::read(void)
do {
const std::string name = t.text();
t = p.expect(colon_type, "`:'");
- const std::string value = atf::text::trim(p.rest_of_line());
+ 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);
@@ -565,13 +565,13 @@ detail::parse_test_case_result(const std::string& line)
impl::atf_tps_writer::atf_tps_writer(std::ostream& os) :
m_os(os)
{
- atf::parser::headers_map hm;
- atf::parser::attrs_map ct_attrs;
+ tools::parser::headers_map hm;
+ tools::parser::attrs_map ct_attrs;
ct_attrs["version"] = "3";
hm["Content-Type"] =
- atf::parser::header_entry("Content-Type", "application/X-atf-tps",
+ tools::parser::header_entry("Content-Type", "application/X-atf-tps",
ct_attrs);
- atf::parser::write_headers(hm, m_os);
+ tools::parser::write_headers(hm, m_os);
}
void
@@ -600,7 +600,7 @@ impl::atf_tps_writer::start_tp(const std::string& tp, size_t ntcs)
void
impl::atf_tps_writer::end_tp(const std::string& reason)
{
- PRE(reason.find('\n') == std::string::npos);
+ assert(reason.find('\n') == std::string::npos);
if (reason.empty())
m_os << "tp-end: " << generate_timestamp() << ", " << m_tpname << "\n";
else
@@ -647,31 +647,31 @@ impl::atf_tps_writer::end_tc(const std::string& state,
}
impl::metadata
-impl::get_metadata(const atf::fs::path& executable,
- const atf::tests::vars_map& config)
+impl::get_metadata(const tools::fs::path& executable,
+ const vars_map& config)
{
get_metadata_params params(executable, config);
- atf::process::child child =
- atf::process::fork(get_metadata_child,
- atf::process::stream_capture(),
- atf::process::stream_inherit(),
+ tools::process::child child =
+ tools::process::fork(get_metadata_child,
+ tools::process::stream_capture(),
+ tools::process::stream_inherit(),
static_cast< void * >(&params));
- impl::pistream outin(child.stdout_fd());
+ tools::io::pistream outin(child.stdout_fd());
metadata_reader parser(outin);
parser.read();
- const atf::process::status status = child.wait();
+ const tools::process::status status = child.wait();
if (!status.exited() || status.exitstatus() != EXIT_SUCCESS)
- throw atf::parser::format_error("Test program returned failure "
+ 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 atf::fs::path& results_path)
+impl::read_test_case_result(const tools::fs::path& results_path)
{
std::ifstream results_file(results_path.c_str());
if (!results_file)
@@ -700,7 +700,7 @@ sigchld_handler(const int signo ATF_DEFS_ATTRIBUTE_UNUSED)
terminate_poll = true;
}
-class child_muxer : public impl::muxer {
+class child_muxer : public tools::io::muxer {
impl::atf_tps_writer& m_writer;
void
@@ -709,7 +709,7 @@ class child_muxer : public impl::muxer {
switch (index) {
case 0: m_writer.stdout_tc(line); break;
case 1: m_writer.stderr_tc(line); break;
- default: UNREACHABLE;
+ default: std::abort();
}
}
@@ -724,14 +724,14 @@ public:
} // anonymous namespace
-std::pair< std::string, atf::process::status >
-impl::run_test_case(const atf::fs::path& executable,
+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 atf::tests::vars_map& metadata,
- const atf::tests::vars_map& config,
- const atf::fs::path& resfile,
- const atf::fs::path& workdir,
+ 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
@@ -739,23 +739,23 @@ impl::run_test_case(const atf::fs::path& executable,
test_case_params params(executable, test_case_name, test_case_part,
metadata, config, resfile, workdir);
- atf::process::child child =
- atf::process::fork(run_test_case_child,
- atf::process::stream_capture(),
- atf::process::stream_capture(),
+ tools::process::child child =
+ tools::process::fork(run_test_case_child,
+ tools::process::stream_capture(),
+ tools::process::stream_capture(),
static_cast< void * >(&params));
terminate_poll = false;
- const atf::tests::vars_map::const_iterator iter = metadata.find("timeout");
- INV(iter != metadata.end());
+ const vars_map::const_iterator iter = metadata.find("timeout");
+ assert(iter != metadata.end());
const unsigned int timeout =
- atf::text::to_type< unsigned int >((*iter).second);
+ tools::text::to_type< unsigned int >((*iter).second);
const pid_t child_pid = child.pid();
// Get the input stream of stdout and stderr.
- impl::file_handle outfh = child.stdout_fd();
- impl::file_handle errfh = child.stderr_fd();
+ tools::io::file_handle outfh = child.stdout_fd();
+ tools::io::file_handle errfh = child.stderr_fd();
bool timed_out = false;
@@ -764,17 +764,17 @@ impl::run_test_case(const atf::fs::path& executable,
int fds[2] = {outfh.get(), errfh.get()};
child_muxer mux(fds, 2, writer);
try {
- child_timer timeout_timer(timeout, child_pid, terminate_poll);
- signal_programmer sigchld(SIGCHLD, sigchld_handler);
+ 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 (...) {
- UNREACHABLE;
+ std::abort();
}
::killpg(child_pid, SIGKILL);
mux.flush();
- atf::process::status status = child.wait();
+ tools::process::status status = child.wait();
std::string reason;
@@ -782,7 +782,7 @@ impl::run_test_case(const atf::fs::path& executable,
// 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 " + atf::text::to_string(timeout) +
+ reason = "Test case timed out after " + tools::text::to_string(timeout) +
" " + (timeout == 1 ? "second" : "seconds");
}
diff --git a/atf-run/test-program.hpp b/tools/test-program.hpp
index daba3ce..f2f1972 100644
--- a/atf-run/test-program.hpp
+++ b/tools/test-program.hpp
@@ -27,15 +27,17 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#include <map>
+#if !defined(TOOLS_TEST_PROGRAM_HPP)
+#define TOOLS_TEST_PROGRAM_HPP
-#include "atf-c++/tests.hpp"
+#include <map>
+#include <string>
-#include "atf-c++/detail/fs.hpp"
-#include "atf-c++/detail/process.hpp"
+#include "fs.hpp"
+#include "process.hpp"
-namespace atf {
-namespace atf_run {
+namespace tools {
+namespace test_program {
struct test_case_result {
std::string m_state;
@@ -122,7 +124,8 @@ public:
void end_tc(const std::string&, const std::string&);
};
-typedef std::map< std::string, atf::tests::vars_map > test_cases_map;
+typedef std::map< std::string, std::map< std::string, std::string > >
+ test_cases_map;
struct metadata {
test_cases_map test_cases;
@@ -139,12 +142,16 @@ struct metadata {
class atf_tps_writer;
-metadata get_metadata(const atf::fs::path&, const atf::tests::vars_map&);
-test_case_result read_test_case_result(const atf::fs::path&);
-std::pair< std::string, atf::process::status > run_test_case(
- const atf::fs::path&, const std::string&, const std::string&,
- const atf::tests::vars_map&, const atf::tests::vars_map&,
- const atf::fs::path&, const atf::fs::path&, 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
-} // namespace atf_run
-} // namespace atf
+#endif // !defined(TOOLS_TEST_PROGRAM_HPP)
diff --git a/tools/test_helpers.hpp b/tools/test_helpers.hpp
new file mode 100644
index 0000000..3ac92d0
--- /dev/null
+++ b/tools/test_helpers.hpp
@@ -0,0 +1,116 @@
+//
+// 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 <iostream>
+#include <sstream>
+#include <utility>
+
+#include <atf-c++.hpp>
+
+#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/atf-run/test_program_test.cpp b/tools/test_program_test.cpp
index 444dc3e..693790d 100644
--- a/atf-run/test_program_test.cpp
+++ b/tools/test_program_test.cpp
@@ -30,28 +30,29 @@
#include <fstream>
#include <iostream>
-#include "atf-c++/macros.hpp"
-
-#include "atf-c++/detail/parser.hpp"
-#include "atf-c++/detail/test_helpers.hpp"
-#include "atf-c++/detail/text.hpp"
+#include <atf-c++.hpp>
+#include "parser.hpp"
#include "test-program.hpp"
+#include "test_helpers.hpp"
+#include "text.hpp"
-namespace impl = atf::atf_run;
-namespace detail = atf::atf_run::detail;
-
-using atf::tests::vars_map;
+namespace impl = tools::test_program;
+namespace detail = tools::test_program::detail;
// -------------------------------------------------------------------------
// Auxiliary functions.
// -------------------------------------------------------------------------
+namespace {
+
+typedef std::map< std::string, std::string > vars_map;
+
static
-atf::fs::path
+tools::fs::path
get_helper(const atf::tests::tc& tc, const char* name)
{
- return atf::fs::path(tc.get_config_var("srcdir")) / name;
+ return tools::fs::path(tc.get_config_var("srcdir")) / name;
}
static
@@ -86,7 +87,7 @@ static
void
print_indented(const std::string& str)
{
- std::vector< std::string > ws = atf::text::split(str, "\n");
+ 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";
@@ -101,7 +102,7 @@ void
check_match(const atf::tests::tc& tc, const std::string& str,
const std::string& exp)
{
- if (!atf::text::match(str, exp)) {
+ if (!tools::text::match(str, exp)) {
std::cout << "String match check failed.\n"
<< "Adding >> and << to delimit the string boundaries "
"below.\n";
@@ -113,6 +114,8 @@ check_match(const atf::tests::tc& tc, const std::string& str,
}
}
+} // anonymous namespace
+
// -------------------------------------------------------------------------
// Tests for the "tp" reader.
// -------------------------------------------------------------------------
@@ -758,23 +761,23 @@ ATF_TEST_CASE_BODY(atf_tps_writer)
ATF_TEST_CASE(get_metadata_bad);
ATF_TEST_CASE_HEAD(get_metadata_bad) {}
ATF_TEST_CASE_BODY(get_metadata_bad) {
- const atf::fs::path executable = get_helper(*this, "bad_metadata_helper");
- ATF_REQUIRE_THROW(atf::parser::parse_errors,
- impl::get_metadata(executable, vars_map()));
+ 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 atf::fs::path executable = get_helper(*this, "zero_tcs_helper");
- ATF_REQUIRE_THROW(atf::parser::parse_errors,
- impl::get_metadata(executable, vars_map()));
+ 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 atf::fs::path executable = get_helper(*this, "several_tcs_helper");
+ 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());
@@ -925,7 +928,7 @@ 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(
- atf::fs::path("resfile"));
+ tools::fs::path("resfile"));
ATF_REQUIRE_EQ("failed", tcr.state());
ATF_REQUIRE_EQ("foo bar", tcr.reason());
}
@@ -934,7 +937,7 @@ 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(
- atf::fs::path("resfile"));
+ tools::fs::path("resfile"));
ATF_REQUIRE_EQ("skipped", tcr.state());
ATF_REQUIRE_EQ("baz bar", tcr.reason());
}
@@ -944,28 +947,28 @@ 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(atf::fs::path("resfile")));
+ 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(atf::fs::path("resfile")));
+ 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(atf::fs::path("resfile")));
+ 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(
- atf::fs::path("resfile"));
+ tools::fs::path("resfile"));
ATF_REQUIRE_EQ("skipped", tcr.state());
ATF_REQUIRE_EQ("foo<<NEWLINE UNEXPECTED>>bar", tcr.reason());
}
diff --git a/atf-report/tests-results.css b/tools/tests-results.css
index 24fc12c..24fc12c 100644
--- a/atf-report/tests-results.css
+++ b/tools/tests-results.css
diff --git a/atf-report/tests-results.dtd b/tools/tests-results.dtd
index c16f7ed..c16f7ed 100644
--- a/atf-report/tests-results.dtd
+++ b/tools/tests-results.dtd
diff --git a/atf-report/tests-results.xsl b/tools/tests-results.xsl
index 91b77c5..91b77c5 100644
--- a/atf-report/tests-results.xsl
+++ b/tools/tests-results.xsl
diff --git a/tools/text.cpp b/tools/text.cpp
new file mode 100644
index 0000000..9084f7e
--- /dev/null
+++ b/tools/text.cpp
@@ -0,0 +1,158 @@
+//
+// 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 <regex.h>
+}
+
+#include <cctype>
+#include <cerrno>
+#include <cstring>
+
+#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/tools/text.hpp b/tools/text.hpp
new file mode 100644
index 0000000..0b3dbaa
--- /dev/null
+++ b/tools/text.hpp
@@ -0,0 +1,153 @@
+//
+// 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 <stdint.h>
+}
+
+#include <sstream>
+#include <stdexcept>
+#include <string>
+#include <vector>
+
+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/tools/text_test.cpp b/tools/text_test.cpp
new file mode 100644
index 0000000..0fa31d8
--- /dev/null
+++ b/tools/text_test.cpp
@@ -0,0 +1,390 @@
+//
+// 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 <cstring>
+#include <set>
+#include <vector>
+
+#include <atf-c++.hpp>
+
+#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/atf-run/timer.cpp b/tools/timers.cpp
index 6ed70d9..371a416 100644
--- a/atf-run/timer.cpp
+++ b/tools/timers.cpp
@@ -35,22 +35,18 @@ extern "C" {
#include <sys/time.h>
}
+#include <cassert>
#include <cerrno>
#include <csignal>
#include <ctime>
-extern "C" {
-#include "atf-c/defs.h"
-}
-
-#include "atf-c++/detail/exceptions.hpp"
-#include "atf-c++/detail/sanity.hpp"
-
+#include "defs.hpp"
+#include "exceptions.hpp"
#include "signals.hpp"
-#include "timer.hpp"
+#include "timers.hpp"
-namespace impl = atf::atf_run;
-#define IMPL_NAME "atf::atf_run"
+namespace impl = tools::timers;
+#define IMPL_NAME "tools::timers"
#if !defined(HAVE_TIMER_T)
static impl::timer* compat_handle;
@@ -110,8 +106,8 @@ impl::timer::timer(const unsigned int seconds) :
sa.sa_flags = SA_SIGINFO;
sa.sa_sigaction = ::handler;
if (::sigaction(SIGALRM, &sa, &m_pimpl->m_old_sa) == -1)
- throw system_error(IMPL_NAME "::timer::timer",
- "Failed to set signal handler", errno);
+ throw tools::system_error(IMPL_NAME "::timer::timer",
+ "Failed to set signal handler", errno);
#if defined(HAVE_TIMER_T)
struct ::sigevent se;
@@ -122,8 +118,8 @@ impl::timer::timer(const unsigned int seconds) :
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 system_error(IMPL_NAME "::timer::timer",
- "Failed to create timer", errno);
+ throw tools::system_error(IMPL_NAME "::timer::timer",
+ "Failed to create timer", errno);
}
struct ::itimerspec it;
@@ -134,8 +130,8 @@ impl::timer::timer(const unsigned int seconds) :
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 system_error(IMPL_NAME "::timer::timer",
- "Failed to program timer", errno);
+ throw tools::system_error(IMPL_NAME "::timer::timer",
+ "Failed to program timer", errno);
}
#else
::itimerval it;
@@ -145,10 +141,10 @@ impl::timer::timer(const unsigned int 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 system_error(IMPL_NAME "::timer::timer",
- "Failed to program timer", errno);
+ throw tools::system_error(IMPL_NAME "::timer::timer",
+ "Failed to program timer", errno);
}
- INV(compat_handle == NULL);
+ assert(compat_handle == NULL);
compat_handle = this;
#endif
}
@@ -158,16 +154,16 @@ impl::timer::~timer(void)
#if defined(HAVE_TIMER_T)
{
const int ret = ::timer_delete(m_pimpl->m_timer);
- INV(ret != -1);
+ assert(ret != -1);
}
#else
{
const int ret = ::setitimer(ITIMER_REAL, &m_pimpl->m_old_it, NULL);
- INV(ret != -1);
+ assert(ret != -1);
}
#endif
const int ret = ::sigaction(SIGALRM, &m_pimpl->m_old_sa, NULL);
- INV(ret != -1);
+ assert(ret != -1);
#if !defined(HAVE_TIMER_T)
compat_handle = NULL;
diff --git a/atf-run/timer.hpp b/tools/timers.hpp
index 8eb7228..bf43ffb 100644
--- a/atf-run/timer.hpp
+++ b/tools/timers.hpp
@@ -27,8 +27,8 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_RUN_ALARM_HPP_)
-#define _ATF_RUN_ALARM_HPP_
+#if !defined(TOOLS_TIMERS_HPP)
+#define TOOLS_TIMERS_HPP
extern "C" {
#include <sys/types.h>
@@ -36,10 +36,8 @@ extern "C" {
#include <memory>
-#include "atf-c++/noncopyable.hpp"
-
-namespace atf {
-namespace atf_run {
+namespace tools {
+namespace timers {
class signal_programmer;
@@ -47,7 +45,11 @@ class signal_programmer;
// The "timer" class.
// ------------------------------------------------------------------------
-class timer : noncopyable {
+class timer {
+ // Non-copyable.
+ timer(const timer&);
+ timer& operator=(const timer&);
+
struct impl;
std::auto_ptr< impl > m_pimpl;
@@ -75,7 +77,7 @@ public:
void timeout_callback(void);
};
-} // namespace atf_run
-} // namespace atf
+} // namespace timers
+} // namespace tools
-#endif // !defined(_ATF_RUN_ALARM_HPP_)
+#endif // !defined(TOOLS_TIMERS_HPP)
diff --git a/atf-c++/detail/ui.cpp b/tools/ui.cpp
index 07bde4f..56426ec 100644
--- a/atf-c++/detail/ui.cpp
+++ b/tools/ui.cpp
@@ -34,16 +34,15 @@ extern "C" {
#include <unistd.h>
}
+#include <cassert>
#include <sstream>
#include "env.hpp"
#include "text.hpp"
-#include "sanity.hpp"
-#include "text.hpp"
#include "ui.hpp"
-namespace impl = atf::ui;
-#define IMPL_NAME "atf::ui"
+namespace impl = tools::ui;
+#define IMPL_NAME "tools::ui"
static
size_t
@@ -53,10 +52,10 @@ terminal_width(void)
static size_t width = 0;
if (!done) {
- if (atf::env::has("COLUMNS")) {
- const std::string cols = atf::env::get("COLUMNS");
+ if (tools::env::has("COLUMNS")) {
+ const std::string cols = tools::env::get("COLUMNS");
if (cols.length() > 0) {
- width = atf::text::to_type< size_t >(cols);
+ width = tools::text::to_type< size_t >(cols);
}
} else {
struct winsize ws;
@@ -81,7 +80,7 @@ format_paragraph(const std::string& text,
const bool repeat,
const size_t col)
{
- PRE(text.find('\n') == std::string::npos);
+ assert(text.find('\n') == std::string::npos);
const std::string pad(col - tag.length(), ' ');
const std::string fullpad(col, ' ');
@@ -91,12 +90,12 @@ format_paragraph(const std::string& text,
formatted = tag + pad;
else
formatted = fullpad;
- INV(formatted.length() == col);
+ assert(formatted.length() == col);
size_t curcol = col;
const size_t maxcol = terminal_width();
- std::vector< std::string > words = atf::text::split(text, " ");
+ 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;
@@ -142,13 +141,13 @@ std::string
impl::format_text_with_tag(const std::string& text, const std::string& tag,
bool repeat, size_t col)
{
- PRE(col == 0 || col >= tag.length());
+ assert(col == 0 || col >= tag.length());
if (col == 0)
col = tag.length();
std::string formatted;
- std::vector< std::string > lines = atf::text::split(text, "\n");
+ 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;
diff --git a/atf-c++/detail/ui.hpp b/tools/ui.hpp
index 1c81c56..4e0e431 100644
--- a/atf-c++/detail/ui.hpp
+++ b/tools/ui.hpp
@@ -27,12 +27,12 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_CXX_UI_HPP_)
-#define _ATF_CXX_UI_HPP_
+#if !defined(TOOLS_UI_HPP)
+#define TOOLS_UI_HPP
#include <string>
-namespace atf {
+namespace tools {
namespace ui {
//!
@@ -100,6 +100,6 @@ std::string format_text_with_tag(const std::string&, const std::string&,
std::string format_warning(const std::string&, const std::string&);
} // namespace ui
-} // namespace atf
+} // namespace tools
-#endif // !defined(_ATF_CXX_UI_HPP_)
+#endif // !defined(TOOLS_UI_HPP)
diff --git a/atf-c++/detail/ui_test.cpp b/tools/ui_test.cpp
index 918d028..e4d9050 100644
--- a/atf-c++/detail/ui_test.cpp
+++ b/tools/ui_test.cpp
@@ -30,7 +30,7 @@
#include <cstring>
#include <iostream>
-#include "../macros.hpp"
+#include <atf-c++.hpp>
#include "env.hpp"
#include "ui.hpp"
@@ -363,7 +363,7 @@ run_tests(const char *tc)
std::cout << "Running tests for " << tc << "\n";
- atf::env::set("COLUMNS", "15");
+ tools::env::set("COLUMNS", "15");
for (t = &tests[0]; t->tc != NULL; t++) {
if (std::strcmp(t->tc, tc) == 0) {
@@ -374,7 +374,7 @@ run_tests(const char *tc)
std::cout << "Input: >>>" << t->fmt << "<<<\n";
std::cout << "Expected output: >>>" << t->result << "<<<\n";
- std::string result = atf::ui::format_text_with_tag(t->fmt, t->tag,
+ 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);
diff --git a/atf-run/user.cpp b/tools/user.cpp
index 37329f1..85d7e50 100644
--- a/atf-run/user.cpp
+++ b/tools/user.cpp
@@ -28,28 +28,27 @@
//
extern "C" {
+#include <sys/param.h>
#include <sys/types.h>
+#include <limits.h>
#include <pwd.h>
#include <unistd.h>
-
-#include "../atf-c/detail/user.h"
}
+#include <cassert>
#include <stdexcept>
#include <string>
-#include "../atf-c++/detail/sanity.hpp"
-
#include "user.hpp"
-namespace impl = atf::atf_run;
-#define IMPL_NAME "atf::atf_run"
+namespace impl = tools::user;
+#define IMPL_NAME "tools::user"
uid_t
impl::euid(void)
{
- return atf_user_euid();
+ return ::geteuid();
}
void
@@ -73,17 +72,31 @@ impl::get_user_ids(const std::string& user)
bool
impl::is_member_of_group(gid_t gid)
{
- return atf_user_is_member_of_group(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 atf_user_is_root();
+ return ::geteuid() == 0;
}
bool
impl::is_unprivileged(void)
{
- return atf_user_is_unprivileged();
+ return ::geteuid() != 0;
}
diff --git a/atf-run/user.hpp b/tools/user.hpp
index 11b3e55..1758eb0 100644
--- a/atf-run/user.hpp
+++ b/tools/user.hpp
@@ -27,8 +27,8 @@
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(_ATF_RUN_USER_HPP_)
-#define _ATF_RUN_USER_HPP_
+#if !defined(TOOLS_USER_HPP)
+#define TOOLS_USER_HPP
extern "C" {
#include <sys/types.h>
@@ -36,8 +36,8 @@ extern "C" {
#include <utility>
-namespace atf {
-namespace atf_run {
+namespace tools {
+namespace user {
uid_t euid(void);
void drop_privileges(const std::pair< int, int >);
@@ -46,7 +46,7 @@ bool is_member_of_group(gid_t);
bool is_root(void);
bool is_unprivileged(void);
-} // namespace atf_run
-} // namespace atf
+} // namespace user
+} // namespace tools
-#endif // !defined(_ATF_RUN_USER_HPP_)
+#endif // !defined(TOOLS_USER_HPP)
diff --git a/atf-run/user_test.cpp b/tools/user_test.cpp
index 7218ba6..4c385d3 100644
--- a/atf-run/user_test.cpp
+++ b/tools/user_test.cpp
@@ -37,7 +37,7 @@ extern "C" {
#include <iostream>
#include <set>
-#include "../atf-c++/macros.hpp"
+#include <atf-c++.hpp>
#include "user.hpp"
@@ -52,7 +52,7 @@ ATF_TEST_CASE_HEAD(euid)
}
ATF_TEST_CASE_BODY(euid)
{
- using atf::atf_run::euid;
+ using tools::user::euid;
ATF_REQUIRE_EQ(euid(), ::geteuid());
}
@@ -64,7 +64,7 @@ ATF_TEST_CASE_HEAD(is_member_of_group)
}
ATF_TEST_CASE_BODY(is_member_of_group)
{
- using atf::atf_run::is_member_of_group;
+ using tools::user::is_member_of_group;
std::set< gid_t > groups;
gid_t maxgid = 0;
@@ -109,7 +109,7 @@ ATF_TEST_CASE_HEAD(is_root)
}
ATF_TEST_CASE_BODY(is_root)
{
- using atf::atf_run::is_root;
+ using tools::user::is_root;
if (::geteuid() == 0) {
ATF_REQUIRE(is_root());
@@ -125,7 +125,7 @@ ATF_TEST_CASE_HEAD(is_unprivileged)
}
ATF_TEST_CASE_BODY(is_unprivileged)
{
- using atf::atf_run::is_unprivileged;
+ using tools::user::is_unprivileged;
if (::geteuid() != 0) {
ATF_REQUIRE(is_unprivileged());
diff --git a/atf-run/zero_tcs_helper.c b/tools/zero_tcs_helper.c
index d4068b1..d4068b1 100644
--- a/atf-run/zero_tcs_helper.c
+++ b/tools/zero_tcs_helper.c
OpenPOWER on IntegriCloud