contrib/gcc-test-suite/Makefile
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
parent 2170 4f8aa694f9c0
permissions -rw-r--r--
scripts: refine static linking check to better guide the user

The current mechanism to check if static linking is possible, and the mesage
displayed on failure, can be puzzling to the unsuspecting user.

Also, the current implementation is not using the existing infrastructure,
and is thus difficult to enhance with new tests.

So, switch to using the standard CT_DoExecLog infra, and use four tests to
check for the host compiler:
- check we can run it
- check it can build a trivial program
- check it can statically link that program
- check if it statically link with libstdc++

That should cover most of the problems. Hopefully.

(At the same time, fix a typo in a comment)

Signed-off-by: Daniel Price <daniel.price@gmail.com>
[yann.morin.1998@free.fr: split original patch for self-contained changes]
[yann.morin.1998@free.fr: use steps to better see gcc's output]
[yann.morin.1998@free.fr: commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <163f86b5216fc08c672a.1353459722@nipigon.dssd.com>
Patchwork-Id: 200536
     1 # Helper makefile which downloads (if required) and runs the GCC test suite (DejaGnu)
     2 #
     3 # Note: Before run please make sure to have your toolchain available in your path.
     4 #
     5 # Copyright 2010 DoréDevelopment
     6 # 
     7 # Author: Martin Lund <mgl@doredevelopment.dk>
     8 #
     9 # This program is free software; you can redistribute  it and/or modify it
    10 # under  the terms of  the GNU General  Public License as published by the
    11 # Free Software Foundation;  either version 2 of the  License, or (at your
    12 # option) any later version.
    13 #
    14 
    15 # Internal configuration
    16 TARGET:=@@DG_TARGET@@
    17 TOPDIR:=$(shell pwd)
    18 LOGDIR:=$(TOPDIR)/tmp
    19 
    20 # Include default configuration
    21 include default.cfg
    22 
    23 # Add toolchain to path
    24 PATH:=$(shell cd ../../bin && pwd):$(PATH)
    25 
    26 # Select test set
    27 ifeq ($(DG_TOOLNAME),gcc)
    28 	DG_TESTS:=$(DG_C_TESTS)
    29 endif
    30 ifeq ($(DG_TOOLNAME),g++)
    31 	DG_TESTS:=$(DG_CPP_TESTS)
    32 endif
    33 
    34 # Check that we have 'runtest' installed
    35 RUNTEST=$(shell which runtest)
    36 ifeq ($(RUNTEST),)
    37         $(error "DejaGnu 'runtest' not found - please install (eg. apt-get install dejagnu)")
    38 endif
    39 
    40 # Targets 
    41 all: test
    42 
    43 $(LOGDIR):
    44 	@mkdir -p $@
    45 
    46 $(LOGDIR)/site.exp: $(TOPDIR)/default.cfg $(LOGDIR)
    47 	@{ echo 'lappend boards_dir "$(LOGDIR)"'; \
    48 	   echo 'set target_alias $(TARGET)';     } > $@
    49 
    50 $(LOGDIR)/board.exp: $(TOPDIR)/default.cfg $(LOGDIR)
    51 	@{ echo 'load_generic_config "unix"';                    \
    52 	   echo 'process_multilib_options ""';                   \
    53 	   echo 'set_board_info bmk,use_alarm 1';                \
    54 	   echo 'set_board_info rsh_prog ssh';                   \
    55 	   echo 'set_board_info rcp_prog scp';                   \
    56 	   echo 'set_board_info hostname $(DG_TARGET_HOSTNAME)'; \
    57 	   echo 'set_board_info username $(DG_TARGET_USERNAME)'; } > $@
    58 
    59 # As Martin puts it:
    60 #  > The thing is that when you run 50k+ test cases the odds are that at
    61 #  > least one will fail and thus runtest basically always return an error
    62 #  > despite the fact that the test session has executed successfully.
    63 # So just ignore any error reported by runtest
    64 test: $(LOGDIR)/board.exp $(LOGDIR)/site.exp $(LOGDIR)
    65 	@runtest --tool $(DG_TOOLNAME)          \
    66 	         --srcdir $(TOPDIR)/testsuite   \
    67 	         --objdir $(LOGDIR)             \
    68 	         --outdir $(LOGDIR)             \
    69 	         --all                          \
    70 	         --target $(TARGET)             \
    71 	         --target_board board           \
    72 	         $(DG_TESTS)                    \
    73 	         GXX_UNDER_TEST=$(TARGET)-g++   || true
    74 	@printf "Result files available in '%s'\n" "$(LOGDIR)"
    75 
    76 clean:
    77 	rm -rf $(LOGDIR)
    78 
    79 .PHONY: config test clean