diff options
Diffstat (limited to 'libstdc++-v3/testsuite/Makefile.am')
-rw-r--r-- | libstdc++-v3/testsuite/Makefile.am | 98 |
1 files changed, 88 insertions, 10 deletions
diff --git a/libstdc++-v3/testsuite/Makefile.am b/libstdc++-v3/testsuite/Makefile.am index 9ea34275f94..06705b57120 100644 --- a/libstdc++-v3/testsuite/Makefile.am +++ b/libstdc++-v3/testsuite/Makefile.am @@ -23,6 +23,8 @@ AUTOMAKE_OPTIONS = cygnus dejagnu +mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + DEJATOOL = libstdc++-v3 EXPECT = `if [ -f @glibcpp_builddir@/../../expect/expect ] ; then \ @@ -37,14 +39,19 @@ AM_RUNTESTFLAGS = RUNTESTFLAGS = ## CXX is actually a "C" compiler. These are real C++ programs. -## Do the same thing as `testsuite_flags --build-cxx` -CXX_build = @glibcpp_CXX@ -CXX=`echo "$(CXX_build)" | sed 's,gcc/xgcc ,gcc/g++ ,'` +glibcpp_srcdir=@glibcpp_srcdir@ +glibcpp_builddir=@glibcpp_builddir@ +testsuite_flags_script=${glibcpp_builddir}/scripts/testsuite_flags +CXX=`${testsuite_flags_script} --build-cxx` + CXXLINK = \ LD_RUN_PATH=$${LD_RUN_PATH:+$$LD_RUN_PATH:}${glibcpp_builddir}/src/.libs\ $(LIBTOOL) --tag=CXX --mode=link $(CXX) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ +GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ +LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ +TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ INCLUDES = \ -nostdinc++ \ @GLIBCPP_INCLUDES@ @LIBSUPCXX_INCLUDES@ @TOPLEVEL_INCLUDES@ @@ -54,24 +61,95 @@ noinst_LIBRARIES = libv3test.a 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 +all-local: stamp_wchar + # Enable wchar_t tests if capable. if GLIBCPP_TEST_WCHAR_T -all-local: stamp_wchar +stamp_wchar: + touch testsuite_wchar_t else -all-local: +stamp_wchar: endif -stamp_wchar: - touch testsuite_wchar_t +# Override this so local rules are possible. +check-am: + $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU; \ + $(MAKE) $(AM_MAKEFLAGS) check-local + +check-local: check-abi + +baseline_dir = @baseline_dir@ +baseline_file = ${baseline_dir}/baseline_symbols.txt +extract_symvers = @glibcpp_srcdir@/scripts/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 + + +# These two special 'check-script' rules use the bash script +# 'check_survey' to do testing. This script is not as portable as the +# dejagnu test harness, and is thus off by default. It does produce +# interesting output however, including various performance analysis +# items like compile time, execution time, and binary size. +survey_script = ${glibcpp_builddir}/scripts/check_survey +check-script: ${survey_script} + -@(chmod + ${survey_script}; \ + ${survey_script} 0) + +check-script-install: ${survey_script} + -@(chmod + ${survey_script}; \ + ${survey_script} 0) + + +# Runs the testsuite/performance tests. +# Some of these tests create large (~75MB) files, allocate huge +# ammounts of memory, or otherwise tie up machine resources. Thus, +# running this is off by default. +performance_script=${glibcpp_srcdir}/scripts/check_performance +check-performance: ${performance_script} + -@(chmod + ${performance_script}; \ + ${performance_script} ${glibcpp_srcdir} ${glibcpp_builddir}) + # By adding these files here, automake will remove them for 'make clean' CLEANFILES = *.txt *.tst *.exe core* filebuf_* tmp* ostream_* *.log *.sum \ - testsuite_* site.exp abi_check + testsuite_* site.exp abi_check baseline_symbols *.performance |