db353c2c69
* testsuite/27_io/*.cc: Remove explicit reference to 'testsuite/' in testcases. Prepare for the DejaGnu based framework. * mkcheck.in: Adjust call to tests_flags. Don't mmkdir testsuite directory -- it is now mkcheck working directory. * tests_flags.in: Remove reference to $(top_srcdir). Use ${SRC_DIR} instead. * Makefile.am (check, check-install): Change mkcheck invocation logic. * Makefile.in: Regenerate. From-SVN: r39255
161 lines
4.2 KiB
Bash
161 lines
4.2 KiB
Bash
#!/bin/sh
|
|
|
|
#
|
|
# This script computes the various flags needed to run GNU C++ testsuites
|
|
# (compiler specific as well as library specific). It is based on
|
|
# the file ./mkcheck.in, which in the long will be removed in favor of a
|
|
# DejaGnu-based framework.
|
|
#
|
|
# Written by Gabriel Dos Reis <gdr@codesourcery.com>
|
|
#
|
|
|
|
#
|
|
# Synopsis
|
|
# * tests_flags --compiler build-dir src-dir
|
|
#
|
|
# Returns a space-separated list of flags needed to run front-end
|
|
# specific tests.
|
|
#
|
|
# * tests_flags --built-library build-dir src-dir
|
|
# * tests_flags --installed-library build-dir src-dir install-dir
|
|
#
|
|
# Returns a colon-separated list of space-separated list of flags,
|
|
# needed to run library specific tests,
|
|
# BUILD_DIR:SRC_DIR:PREFIX_DIR:CXX:CXXFLAGS:INCLUDES:LIBS
|
|
# the meaning of which is as follows:
|
|
# BUILD_DIR build-dir
|
|
# SRC_DIR src-dir
|
|
# PREFIX_DIR install-dir (meaningful only with --installed-library)
|
|
# CXX which C++ compiler is being used
|
|
# CXXFLAGS special flags to pass to g++
|
|
# INCLUDES paths to headers
|
|
# LIBS flags to pass to the linker
|
|
#
|
|
|
|
##
|
|
## Utility functions
|
|
##
|
|
|
|
# Print a message saying how this script is intended to be invoked
|
|
print_usage() {
|
|
cat <<EOF
|
|
Usage:
|
|
tests_flags --compiler <build-dir> <src-dir>
|
|
--built-library <build-dir> <src-dir>
|
|
--installed-library <build-dir> <src-dir> <install-dir>
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
# Check for command line option
|
|
check_options() {
|
|
# First, check for number of command line arguments
|
|
if [ \( $1 -ne 3 \) -a \( $1 -ne 4 \) ]; then
|
|
print_usage;
|
|
fi
|
|
|
|
# Then, see if we understand the job we're asked for
|
|
case $2 in
|
|
--compiler|--built-library|--installed-library)
|
|
# OK
|
|
;;
|
|
*)
|
|
print_usage
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Directory sanity check
|
|
check_directory() {
|
|
if [ ! -d $2 ]; then
|
|
echo "$1 '$2' directory not found, exiting."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
##
|
|
## Main processing
|
|
##
|
|
|
|
# Command line options sanity check
|
|
check_options $# $1
|
|
|
|
query=$1
|
|
|
|
# Check for build, source and install directories
|
|
BUILD_DIR=$2; SRC_DIR=$3
|
|
check_directory 'Build' ${BUILD_DIR}
|
|
check_directory 'Source' ${SRC_DIR}
|
|
case ${query} in
|
|
--installed-library)
|
|
PREFIX_DIR=$4
|
|
check_directory 'Install' ${PREFIX_DIR}
|
|
;;
|
|
*)
|
|
PREFIX_DIR=
|
|
;;
|
|
esac
|
|
|
|
# Compute include paths
|
|
# INCLUDES == include path to new headers for use on gcc command-line
|
|
C_DIR="`basename @C_INCLUDE_DIR@`"
|
|
case ${query} in
|
|
--installed-library)
|
|
INCLUDES="-I${SRC_DIR}/testsuite"
|
|
;;
|
|
*)
|
|
INCLUDES="-nostdinc++ @CSHADOW_FLAGS@ -I${BUILD_DIR}/include
|
|
-I${SRC_DIR}/include/std -I${SRC_DIR}/include/$C_DIR
|
|
-I${SRC_DIR}/include -I${SRC_DIR}/libsupc++ -I${SRC_DIR}/libio
|
|
-I${SRC_DIR}/testsuite"
|
|
;;
|
|
esac
|
|
|
|
# If called for compiler tests, just output appropriate include paths
|
|
case ${query} in
|
|
--compiler)
|
|
echo ${INCLUDES} -I${SRC_DIR}/include/backward -I${SRC_DIR}/include/ext
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
# For built or installed libraries, we need to get right OS-specific bits.
|
|
. ${SRC_DIR}/configure.target
|
|
|
|
# LIB_PATH == where to find the build libraries for libtool's use
|
|
# CXX == the full pathname of the compiler
|
|
case ${query} in
|
|
--built-library)
|
|
LIB_PATH=${BUILD_DIR}/src
|
|
CXX="${BUILD_DIR}/../../gcc/g++"
|
|
;;
|
|
--installed-library)
|
|
LIB_PATH=${PREFIX_DIR}/lib
|
|
CXX=${PREFIX_DIR}/bin/g++
|
|
;;
|
|
esac
|
|
|
|
# gcc compiler flags (maybe use glibcpp_cxxflags from configure.target,
|
|
# but thst's really meant for building the library itself, not using it)
|
|
CXXFLAGS="-ggdb3 -DDEBUG_ASSERT @SECTION_FLAGS@ @SECTION_LDFLAGS@"
|
|
|
|
# LIBS == any extra needed -l switches, etc (may need more libs, lose lose)
|
|
case ${query} in
|
|
--built-library)
|
|
LIBS="${LIB_PATH}/../libsupc++/libsupc++.la ${LIB_PATH}/libstdc++.la
|
|
-no-install"
|
|
case @target_os@ in
|
|
*cygwin*) LIBS="${LIBS} -nodefaultlibs -lgcc -lcygwin -luser32
|
|
-lkernel32 -ladvapi32 -lshell32" ;;
|
|
*) LIBS="${LIBS} -nodefaultlibs -lc -lgcc -lc" ;;
|
|
esac
|
|
;;
|
|
--installed-library)
|
|
LIBS="-L${LIB_PATH} ${LIB_PATH}/libstdc++.la -no-install
|
|
-rpath ${LIB_PATH}"
|
|
;;
|
|
esac
|
|
|
|
echo -n ${BUILD_DIR}:${SRC_DIR}:${PREFIX_DIR}:${CXX}:${CXXFLAGS}:${INCLUDES}:${LIBS}
|
|
exit 0
|