# libstdc++ "tool-and-target file" for DejaGNU

# Copyright (C) 2001, 2004 Free Software Foundation, Inc.
#
# 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 2 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  


# This file is loaded only if a target-specific file or OS-specific file
# is not found first.  It should provide libstdc++_load, which runs a
# program.  (The default calls the standard remote_load.)  It may also
# provide libstdc++_compile, but this is not presently used.  It must
# provide libstdc++_target_compile, which does the same thing and is used.

# Here are the default definitions:
load_lib "standard.exp"

# target-supports.exp uses this
proc ${tool}_target_compile { srcfile destfile compile_type options } {
    v3_target_compile $srcfile $destfile $compile_type $options
}

