# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# This is a list of toolchains that are supported on this board.
set_board_info target_install {m32r-elf}

# No multilib flags needed by default.
process_multilib_options ""

# Load the generic configuration for this board. This will define a basic set
# of routines needed by the tool to communicate with the board.
if { $is_gdb_remote } {
    load_generic_config "m32r-stub"
} else {
    load_generic_config "m32r"
}

# We only support newlib on this target. We assume that all multilib
# options have been specified before we get here.

set_board_info compiler  "[find_gcc]"
set_board_info cflags    "[libgloss_include_flags] [newlib_include_flags]"
set_board_info ldflags   "[libgloss_link_flags] [newlib_link_flags]"
set_board_info ldscript  "-Wl,-Teva.ld"
set_board_info gdb,start_symbol "_start"

set_board_info needs_status_wrapper 1

# The GDB protocol used for this target.
if { ! $is_gdb_remote } {
    set_board_info gdb_protocol  "m32r"
} else {
    set_board_info gdb_protocol  "m32r"
    set_board_info use_gdb_stub 1
    set_board_info gdb_stub_ldscript "-Wl,-Teva-stub.ld"
}

# Doesn't pass arguments or signals, can't return results, and doesn't
# do inferiorio.
set_board_info noargs 1
set_board_info gdb,nosignals 1
set_board_info gdb,noresults 1
set_board_info gdb,noinferiorio 1
