X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Ftestsuite%2FMakefile.in;h=b0ace4054e37636ad49e5a399e555fb17d55e904;hb=28e7fd62340426746f9c896cbc40c5d374ec47aa;hp=083923e977ecf09cd1190ff05df0d6d9fe31f292;hpb=06f98d49084b27a742e4ab34d539be17c3c6eb13;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in index 083923e977..b0ace4054e 100644 --- a/gdb/testsuite/Makefile.in +++ b/gdb/testsuite/Makefile.in @@ -1,160 +1,77 @@ # Makefile for regression testing the GNU debugger. -# Copyright (C) 1992, 93, 1994 Free Software Foundation, Inc. - -#This file is part of GDB. - -#GDB 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. - -#GDB 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 GNU CC; see the file COPYING. If not, write to -#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -srcdir = . -prefix = /usr/local -program_transform_name = - -exec_prefix = $(prefix) -bindir = $(exec_prefix)/bin -libdir = $(exec_prefix)/lib -tooldir = $(libdir)/$(target_alias) - -datadir = $(exec_prefix)/lib/dejagnu -mandir = $(prefix)/man -man1dir = $(mandir)/man1 -man2dir = $(mandir)/man2 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man6dir = $(mandir)/man6 -man7dir = $(mandir)/man7 -man8dir = $(mandir)/man8 -man9dir = $(mandir)/man9 -infodir = $(prefix)/info -includedir = $(prefix)/include -gxx_includedir = $(tooldir)/g++-include -docdir = $(datadir)/doc -targetdir = $(datadir)/$(target_alias) - -SHELL = /bin/sh - -INSTALL = install -c -INSTALL_PROGRAM = $(INSTALL) -INSTALL_DATA = $(INSTALL) - -CFLAGS = -g -# start-sanitize-chill -CHILLFLAGS = $(CFLAGS) -CHILL_LIB = -lchill -# end-sanitize-chill -# This should probably be consistent with the top-level Makefile.in, -# gdb/Makefile.in, and gdb/testsuite/gdb.t2*/Makefile.in, so that "make check" -# has the same effect no matter where it is run. -CXXFLAGS = -g -O - -LINK= ln -s -SUBDIRS= -RUNTEST = runtest -RUNTESTFLAGS = +# Copyright 1992-2013 Free Software Foundation, Inc. + +# This file is part of GDB. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +VPATH = @srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +abs_builddir = @abs_builddir@ + +target_alias = @target_noncanonical@ +program_transform_name = @program_transform_name@ +build_canonical = @build@ +host_canonical = @host@ +target_canonical = @target@ + +SHELL = @SHELL@ +EXEEXT = @EXEEXT@ +SUBDIRS = @subdirs@ +RPATH_ENVVAR = @RPATH_ENVVAR@ +ALL_SUBDIRS = gdb.ada gdb.arch gdb.asm gdb.base gdb.cell gdb.cp gdb.disasm \ + gdb.dwarf2 gdb.fortran gdb.gdb gdb.hp \ + gdb.java gdb.linespec gdb.mi gdb.modula2 gdb.multi \ + gdb.objc gdb.opencl gdb.opt gdb.pascal gdb.python gdb.server \ + gdb.stabs gdb.reverse gdb.threads gdb.trace gdb.xml \ + $(SUBDIRS) EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \ echo $${rootme}/../../expect/expect ; \ else echo expect ; fi` -RUNTEST_FOR_TARGET = ` \ - if [ -f $${rootme}/../../dejagnu/site.exp ] ; then \ - echo $${rootme}/../../dejagnu/runtest ; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(RUNTEST); \ - else \ - t='$(program_transform_name)'; echo runtest | sed -e '' $$t; \ - fi; \ - fi` - -CC_FOR_TARGET = ` \ - if [ -f $${rootme}/../../gcc/xgcc ] ; then \ - echo $${rootme}/../../gcc/xgcc -B$${rootme}/../../gcc/; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CC); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` +RUNTEST = $(RUNTEST_FOR_TARGET) -CXX = gcc -CXX_FOR_TARGET = ` \ - if [ -f $${rootme}/../../gcc/xgcc ] ; then \ - echo $${rootme}/../../gcc/xgcc -B$${rootme}/../../gcc/; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CXX); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` - -# start-sanitize-chill -CHILLFLAGS = $(CFLAGS) -CHILL = gcc -CHILL_FOR_TARGET = ` \ - if [ -f $${rootme}/../../gcc/xgcc ] ; then \ - echo $${rootme}/../../gcc/xgcc -B$${rootme}/../../gcc/ -L$${rootme}/../../chillrt/; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CC); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` +RUNTESTFLAGS = -CHILL_LIB = -lchill +FORCE_PARALLEL = -CHILL = ` \ - if [ -f $${rootme}/../../gcc/Makefile ] ; then \ - echo $${rootme}/../../gcc/xgcc -B$${rootme}../../gcc/ -L$${rootme}../../chillrt/; \ +RUNTEST_FOR_TARGET = `\ + if [ -f $${srcdir}/../../dejagnu/runtest ]; then \ + echo $${srcdir}/../../dejagnu/runtest; \ else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo gcc; \ + if [ "$(host_canonical)" = "$(target_canonical)" ]; then \ + echo runtest; \ else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ + t='$(program_transform_name)'; echo runtest | sed -e $$t; \ fi; \ fi` -# end-sanitize-chill - -GDB = ` \ - if [ -f $${rootme}/../gdb ] ; \ - then echo $${rootme}|sed -e 's@/[^/]*$$@@'|sed -e 's@$$@/gdb@' ; \ - else echo gdb; \ - fi` - -GDBFLAGS = -nx #### host, target, and site specific Makefile frags come in here. # The use of $$(x_FOR_TARGET) reduces the command line length by not # duplicating the lengthy definition. + TARGET_FLAGS_TO_PASS = \ "prefix=$(prefix)" \ "exec_prefix=$(exec_prefix)" \ "against=$(against)" \ 'CC=$$(CC_FOR_TARGET)' \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ - "CFLAGS=$(CFLAGS)" \ - $(start-sanitize-chill) \ - "CHILLFLAGS=$(CHILLFLAGS)" \ - 'CHILL=$$(CHILL_FOR_TARGET)' \ - "CHILL_FOR_TARGET=$(CHILL_FOR_TARGET)" \ - "CHILL_LIB=$(CHILL_LIB)" \ - $(end-sanitize-chill) \ + "CFLAGS=$(TESTSUITE_CFLAGS)" \ 'CXX=$$(CXX_FOR_TARGET)' \ "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ "CXXFLAGS=$(CXXFLAGS)" \ @@ -165,22 +82,30 @@ TARGET_FLAGS_TO_PASS = \ "LDFLAGS=$(LDFLAGS)" \ "LIBS=$(LIBS)" \ "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "BISON=$(BISON)" + "RUNTESTFLAGS=$(RUNTESTFLAGS)" -all: subdirs +all: + @echo "Nothing to be done for all..." .NOEXPORT: INFODIRS=doc info: install-info: dvi: +pdf: +install-pdf: +html: +install-html: install: uninstall: force -site.exp: ./config.status Makefile +# Use absolute `site.exp' path everywhere to suppress VPATH lookups for it. +# Bare `site.exp' is used as a target here if user requests it explicitly. +# $(RUNTEST) is looking up `site.exp' only in the current directory. + +$(abs_builddir)/site.exp site.exp: ./config.status Makefile @echo "Making a new config file..." -@rm -f ./tmp? @touch site.exp @@ -188,20 +113,13 @@ site.exp: ./config.status Makefile @echo "## these variables are automatically generated by make ##" > ./tmp0 @echo "# Do not edit here. If you wish to override these values" >> ./tmp0 @echo "# add them to the last section" >> ./tmp0 - @echo "set GDBFLAGS \"${GDBFLAGS}\"" >> ./tmp0 - @echo "set host_os ${host_os}" >> ./tmp0 - @echo "set host_alias ${host_alias}" >> ./tmp0 - @echo "set host_cpu ${host_cpu}" >> ./tmp0 - @echo "set host_vendor ${host_vendor}" >> ./tmp0 - @echo "set target_os ${target_os}" >> ./tmp0 - @echo "set target_alias ${target_alias}" >> ./tmp0 - @echo "set target_cpu ${target_cpu}" >> ./tmp0 - @echo "set target_vendor ${target_vendor}" >> ./tmp0 @echo "set host_triplet ${host_canonical}" >> ./tmp0 + @echo "set target_alias $(target_alias)" >> ./tmp0 @echo "set target_triplet ${target_canonical}" >> ./tmp0 + @echo "set build_triplet ${build_canonical}" >> ./tmp0 @echo "set srcdir ${srcdir}" >> ./tmp0 - @echo "set objdir `pwd`" >> ./tmp0 @echo "set tool gdb" >> ./tmp0 + @echo 'source $${srcdir}/lib/append_gdb_boards_dir.exp' >> ./tmp0 @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0 @cat ./tmp0 > site.exp @cat site.bak | sed \ @@ -209,15 +127,65 @@ site.exp: ./config.status Makefile -@rm -f ./tmp? installcheck: -check: site.exp all just-check -just-check: + +# For GNU make, try to run the tests in parallel. If RUNTESTFLAGS is +# not empty, then by default the tests will be serialized. This can +# be overridden by setting FORCE_PARALLEL to any non-empty value. +# For a non-GNU make, do not parallelize. +@GMAKE_TRUE@CHECK_TARGET = $(if $(FORCE_PARALLEL),check-parallel,$(if $(RUNTESTFLAGS),check-single,check-parallel)) +@GMAKE_FALSE@CHECK_TARGET = check-single + +check: $(CHECK_TARGET) + +# All the hair to invoke dejagnu. A given invocation can just append +# $(RUNTESTFLAGS) +DO_RUNTEST = \ rootme=`pwd`; export rootme; \ srcdir=${srcdir} ; export srcdir ; \ EXPECT=${EXPECT} ; export EXPECT ; \ + EXEEXT=${EXEEXT} ; export EXEEXT ; \ + $(RPATH_ENVVAR)=$$rootme/../../expect:$$rootme/../../libstdc++:$$rootme/../../tk/unix:$$rootme/../../tcl/unix:$$rootme/../../bfd:$$rootme/../../opcodes:$$$(RPATH_ENVVAR); \ + export $(RPATH_ENVVAR); \ if [ -f $${rootme}/../../expect/expect ] ; then \ TCL_LIBRARY=$${srcdir}/../../tcl/library ; \ export TCL_LIBRARY ; fi ; \ - $(RUNTEST_FOR_TARGET) $(RUNTESTFLAGS) --tool gdb GDB=$(GDB) --srcdir $(srcdir) + $(RUNTEST) + +check-single: all $(abs_builddir)/site.exp + $(DO_RUNTEST) $(RUNTESTFLAGS) + +# A list of all directories named "gdb.*" which also hold a .exp file. +# We filter out gdb.base and add fake entries, because that directory +# takes the longest to process, and so we split it in half. +TEST_DIRS = gdb.base1 gdb.base2 $(filter-out gdb.base,$(sort $(notdir $(patsubst %/,%,$(dir $(wildcard $(srcdir)/gdb.*/*.exp)))))) + +TEST_TARGETS = $(addprefix check-,$(TEST_DIRS)) + +# We explicitly re-invoke make here for two reasons. First, it lets +# us add a -k option, which makes the parallel check mimic the +# behavior of the serial check; and second, it means that we can still +# regenerate the sum and log files even if a sub-make fails -- which +# it usually does because dejagnu exits with an error if any test +# fails. +check-parallel: + $(MAKE) -k $(TEST_TARGETS); \ + $(SHELL) $(srcdir)/dg-extract-results.sh \ + $(addsuffix /gdb.sum,$(TEST_DIRS)) > gdb.sum; \ + $(SHELL) $(srcdir)/dg-extract-results.sh -L \ + $(addsuffix /gdb.log,$(TEST_DIRS)) > gdb.log + +@GMAKE_TRUE@$(filter-out check-gdb.base%,$(TEST_TARGETS)): check-gdb.%: all $(abs_builddir)/site.exp +@GMAKE_TRUE@ @if test ! -d gdb.$*; then mkdir gdb.$*; fi +@GMAKE_TRUE@ $(DO_RUNTEST) --directory=gdb.$* --outdir=gdb.$* $(RUNTESTFLAGS) + +# Each half (roughly) of the .exp files from gdb.base. +BASE1_FILES = $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/gdb.base/[a-m]*.exp)) +BASE2_FILES = $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/gdb.base/[n-z]*.exp)) + +# Handle each half of gdb.base. +check-gdb.base%: all $(abs_builddir)/site.exp + @if test ! -d gdb.base$*; then mkdir gdb.base$*; fi + $(DO_RUNTEST) $(BASE$*_FILES) --outdir gdb.base$* $(RUNTESTFLAGS) subdir_do: force @for i in $(DODIRS); do \ @@ -232,12 +200,11 @@ subdir_do: force force:; - subdirs: - for dir in ${SUBDIRS}; \ + for dir in ${ALL_SUBDIRS} ; \ do \ - echo "$$dir:"; \ - if [ -d $$dir ]; then \ + echo "$$dir:" ; \ + if [ -d $$dir ] ; then \ (rootme=`pwd`/ ; export rootme ; \ rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \ cd $$dir; $(MAKE) $(TARGET_FLAGS_TO_PASS)); \ @@ -245,24 +212,39 @@ subdirs: done clean mostlyclean: - -rm -f *~ core *.o a.out xgdb *.x - for dir in ${SUBDIRS}; \ - do \ - echo "$$dir:"; \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) clean); \ - fi; \ - done - -distclean realclean: clean - -rm -f *~ core *.log *.plog *.sum *.psum site.* + -rm -f *~ core *.o a.out xgdb *.x *.grt bigcore.corefile .gdb_history + -rm -f core.* *.tf *.cl *.py tracecommandsscript copy1.txt zzz-gdbscript + -rm -f *.dwo *.dwp + if [ x"${ALL_SUBDIRS}" != x ] ; then \ + for dir in ${ALL_SUBDIRS}; \ + do \ + echo "$$dir:"; \ + if [ -d $$dir ]; then \ + (cd $$dir; $(MAKE) clean); \ + fi; \ + done ; \ + else true; fi + +distclean maintainer-clean realclean: clean + -rm -f *~ core -rm -f Makefile config.status *-init.exp -rm -fr *.log summary detail *.plog *.sum *.psum site.* - for dir in ${SUBDIRS}; \ - do \ - echo "$$dir:"; \ - (cd $$dir; $(MAKE) distclean); \ - done - -Makefile : $(srcdir)/Makefile.in $(srcdir)/configure.in $(host_makefile_frag) $(target_makefile_frag) - $(SHELL) ./config.status + if [ x"${ALL_SUBDIRS}" != x ] ; then \ + for dir in ${ALL_SUBDIRS}; \ + do \ + echo "$$dir:"; \ + if [ -d $$dir ]; then \ + (cd $$dir; $(MAKE) distclean); \ + fi; \ + done ; \ + else true; fi + +Makefile : Makefile.in config.status $(host_makefile_frag) + $(SHELL) config.status + +config.status: configure + $(SHELL) config.status --recheck + +TAGS: force + find $(srcdir) -name '*.exp' -print | \ + etags --regex='/proc[ \t]+\([^ \t]+\)/\1/' -