4 # This script computes the various flags needed to run GNU C++ testsuites
5 # (compiler specific as well as library specific). It is based on
6 # the file ./mkcheck.in, which in the long will be removed in favor of a
7 # DejaGnu-based framework.
9 # Written by Gabriel Dos Reis <gdr@codesourcery.com>
14 # * tests_flags --compiler build-dir src-dir
16 # Returns a space-separated list of flags needed to run front-end
19 # * tests_flags --built-library build-dir src-dir
20 # * tests_flags --installed-library build-dir src-dir install-dir
22 # Returns a colon-separated list of space-separated list of flags,
23 # needed to run library specific tests,
24 # BUILD_DIR:SRC_DIR:PREFIX_DIR:CXX:CXXFLAGS:INCLUDES:LIBS
25 # the meaning of which is as follows:
26 # BUILD_DIR libstdc++-v3 build-dir
27 # SRC_DIR libstdc++-v3 src-dir
28 # PREFIX_DIR install-dir (meaningful only with --installed-library)
29 # CXX which C++ compiler is being used
30 # CXXFLAGS special flags to pass to g++
31 # INCLUDES paths to headers
32 # LIBS flags to pass to the linker
39 # Print a message saying how this script is intended to be invoked
43 tests_flags --compiler <build-dir> <src-dir>
44 --built-library <build-dir> <src-dir>
45 --installed-library <build-dir> <src-dir> <install-dir>
50 # Check for command line option
52 # First, check for number of command line arguments
53 if [ \
( $1 -ne 3 \
) -a \
( $1 -ne 4 \
) ]; then
57 # Then, see if we understand the job we're asked for
59 --compiler|
--built-library|
--installed-library)
68 # Directory sanity check
71 echo "$1 '$2' directory not found, exiting."
80 # Command line options sanity check
85 # Check for build, source and install directories
86 BUILD_DIR
=$2; SRC_DIR
=$3
87 check_directory
'Build' ${BUILD_DIR}
88 check_directory
'Source' ${SRC_DIR}
92 check_directory
'Install' ${PREFIX_DIR}
99 # Compute include paths
100 # INCLUDES == include path to new headers for use on gcc command-line
101 C_DIR
="`basename @C_INCLUDE_DIR@`"
104 INCLUDES
="-I${SRC_DIR}/testsuite"
107 INCLUDES
="-nostdinc++ @CSHADOW_FLAGS@ -I${BUILD_DIR}/include
108 -I${SRC_DIR}/include/std -I${SRC_DIR}/include/$C_DIR
109 -I${SRC_DIR}/include -I${SRC_DIR}/libsupc++ -I${SRC_DIR}/libio
110 -I${SRC_DIR}/testsuite"
114 # If called for compiler tests, just output appropriate include paths
117 echo ${INCLUDES} -I${SRC_DIR}/include/backward -I${SRC_DIR}/include
/ext
122 # For built or installed libraries, we need to get right OS-specific bits.
123 .
${SRC_DIR}/configure.target
125 # LIB_PATH == where to find the C++ build libraries for libtool's use
126 # GCC_LIB_PATH == where to find the gcc build libraries for libtool's use
127 # CXX == the full pathname of the compiler
130 LIB_PATH
=${BUILD_DIR}/src
131 GCC_LIB_PATH
=${BUILD_DIR}/..
/..
/gcc
132 CXX
="${BUILD_DIR}/../../gcc/g++"
135 LIB_PATH
=${PREFIX_DIR}/lib
136 CXX
=${PREFIX_DIR}/bin
/g
++
140 # gcc compiler flags (maybe use glibcpp_cxxflags from configure.target,
141 # but thst's really meant for building the library itself, not using it)
142 CXXFLAGS
="-ggdb3 -DDEBUG_ASSERT @SECTION_FLAGS@ @SECTION_LDFLAGS@"
144 # LIBS == any extra needed -l switches, etc (may need more libs, lose lose)
147 LIBS
="${LIB_PATH}/libstdc++.la ${LIB_PATH}/../libsupc++/libsupc++.la
148 -no-install -rpath ${GCC_LIB_PATH}"
150 *cygwin
*) LIBS
="${LIBS} -nodefaultlibs -lgcc -lcygwin -luser32
151 -lkernel32 -ladvapi32 -lshell32" ;;
152 *) LIBS
="${LIBS} -nodefaultlibs -lc -lgcc -lc" ;;
156 LIBS
="-L${LIB_PATH} ${LIB_PATH}/libstdc++.la
157 -no-install -rpath ${LIB_PATH}"
161 echo ${BUILD_DIR}:${SRC_DIR}:${PREFIX_DIR}:${CXX}:${CXXFLAGS}:${INCLUDES}:${LIBS}