# This file adds the functions to build the GCC test suite
# Copyright 2010 DoréDevelopment
# Created by Martin Lund <mgl@doredevelopment.dk>
# Licensed under the GPL v2. See COPYING in the root of this package

do_test_suite_gcc_get() { :; }
do_test_suite_gcc_extract() { :; }
do_test_suite_gcc_build() { :; }

# Overide functions depending on configuration
if [ "${CT_TEST_SUITE_GCC}" = "y" ]; then

do_test_suite_gcc_build() {
 
    CT_DoStep INFO "Installing GCC test suite"

    CT_DoExecLog ALL mkdir -p "${CT_TEST_SUITE_DIR}/gcc"
    CT_DoExecLog ALL cp -a "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg"               \
                           "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile"                  \
                           "${CT_LIB_DIR}/contrib/gcc-test-suite/README"                    \
                           "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/testsuite"               \
                           "${CT_TEST_SUITE_DIR}/gcc"

    CT_DoExecLog ALL sed -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;"     \
                         "${CT_TEST_SUITE_DIR}/gcc/Makefile"

    CT_EndStep
}

fi # CT_TEST_SUITE_GCC
