aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/Makefile.am
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/testsuite/Makefile.am')
-rw-r--r--libstdc++-v3/testsuite/Makefile.am72
1 files changed, 67 insertions, 5 deletions
diff --git a/libstdc++-v3/testsuite/Makefile.am b/libstdc++-v3/testsuite/Makefile.am
index d85fae7d8d9..b320920e218 100644
--- a/libstdc++-v3/testsuite/Makefile.am
+++ b/libstdc++-v3/testsuite/Makefile.am
@@ -1,6 +1,6 @@
## Makefile for the testsuite subdirectory of the GNU C++ Standard library.
##
-## Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
##
## This file is part of the libstdc++ version 3 distribution.
## Process this file with automake to produce Makefile.in.
@@ -23,6 +23,8 @@
AUTOMAKE_OPTIONS = cygnus dejagnu
+mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+
DEJATOOL = libstdc++-v3
EXPECT = `if [ -f @glibcpp_builddir@/../../expect/expect ] ; then \
@@ -38,10 +40,10 @@ RUNTESTFLAGS =
## CXX is actually a "C" compiler. These are real C++ programs.
## Do the same thing as `testsuite_flags --build-cxx`
-CXX_fake = @glibcpp_CXX@
-CXX=`echo $(CXX_fake) | sed 's/xgcc/g++/g'`
+CXX_build = @glibcpp_CXX@
+CXX=`echo "$(CXX_build)" | sed 's,gcc/xgcc ,gcc/g++ ,'`
CXXLINK = \
- LD_RUN_PATH=${LD_RUN_PATH:+$LD_RUN_PATH:}${glibcpp_builddir}/src/.libs\
+ LD_RUN_PATH=$${LD_RUN_PATH:+$$LD_RUN_PATH:}${glibcpp_builddir}/src/.libs\
$(LIBTOOL) --tag=CXX --mode=link $(CXX) \
$(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@
@@ -55,9 +57,69 @@ libv3test_a_SOURCES = testsuite_hooks.cc testsuite_allocator.cc
## Build support utilities.
## Only build this as native, as need to find startup files and libc to link.
-if GLIBCPP_BUILD_ABI_CHECK
+if GLIBCPP_TEST_ABI
noinst_PROGRAMS = abi_check
else
noinst_PROGRAMS =
endif
abi_check_SOURCES = abi_check.cc
+
+# Enable wchar_t tests if capable.
+if GLIBCPP_TEST_WCHAR_T
+all-local: stamp_wchar
+else
+all-local:
+endif
+
+# Override this so local rules are possible.
+check-am:
+ $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU; \
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+
+check-local: check-abi
+
+stamp_wchar:
+ touch testsuite_wchar_t
+
+baseline_dir = @baseline_dir@
+baseline_file = ${baseline_dir}/baseline_symbols.txt
+extract_symvers = @glibcpp_srcdir@/config/abi/extract_symvers
+
+current_symbols.txt: ${extract_symvers} ../src/.libs/libstdc++.so
+ -@(${extract_symvers} ../src/.libs/libstdc++.so current_symbols.txt)
+
+baseline_symbols:
+ -@(output=${baseline_file}; \
+ if test ! -f $${output}; then \
+ echo "Baseline file doesn't exist."; \
+ echo "Try 'make new-abi-baseline' to create it."; \
+ exit 1; \
+ fi; \
+ touch baseline_symbols)
+
+new-abi-baseline:
+ -@$(mkinstalldirs) ${baseline_dir}
+ -@(output=${baseline_file}; \
+ if test -f $${output}; then \
+ output=$${output}.new; \
+ t=`echo $${output} | sed 's=.*config/abi/=='`; \
+ echo "Baseline file already exists, writing to $${t} instead."; \
+ fi; \
+ ${extract_symvers} ../src/.libs/libstdc++.so $${output})
+
+if GLIBCPP_TEST_ABI
+# Use 'new-abi-baseline' to create an initial symbol file. Then run
+# 'check-abi' to test for changes against that file.
+check-abi: abi_check baseline_symbols current_symbols.txt
+ -@(./abi_check --check ./current_symbols.txt ${baseline_file})
+
+check-abi-verbose: abi_check baseline_symbols current_symbols.txt
+ -@(./abi_check --check-verbose ./current_symbols.txt ${baseline_file})
+else
+check-abi:
+check-abi-verbose:
+endif
+
+# By adding these files here, automake will remove them for 'make clean'
+CLEANFILES = *.txt *.tst *.exe core* filebuf_* tmp* ostream_* *.log *.sum \
+ testsuite_files testsuite_wchar_t site.exp abi_check