# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
#
# This file is part of DejaGnu.
#
# DejaGnu 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 3 of the License, or
# (at your option) any later version.
#
# DejaGnu 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 DejaGnu; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

# A set of standard functions for tools. Calls the target-specific
# versions.

proc ${tool}_load { program args } {
    if { [llength $args] > 0 } {
	set program_args [lindex $args 0]
    } else {
	set program_args ""
    }

    if { [llength $args] > 1 } {
	set input_file [lindex $args 1]
    } else {
	set input_file ""
    }

    return [remote_load target $program $program_args $input_file]
}

proc ${tool}_compile { srcfile destfile compile_type options } {
    target_compile $srcfile $destfile $compile_type $options
}
