# 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 {i960-vxworks5.1 i960-vxworks5.2}

# Load the generic configuration for this board. This will define any
# routines needed by the tool to communicate with the board.
load_generic_config "vxworks"

# No multilib flags by default.
process_multilib_options ""

# The compiler used to build for this board. Note that this has nothing to do
# with what compiler is tested when testing gcc.
set_board_info compiler "[find_gcc]"

# These are probably wrong, but at least it is configurable now.
if { [board_info $board cpu] == "I960CA" } {
    set_board_info cflags "-mca"
} else {
    set_board_info cflags ""
}
# vxworks 5.1 needs the executable to be relinkable.
set_board_info ldflags "-nostdlib -r"
set_board_info libs "-lgcc"

# No linker script needed.
set_board_info ldscript ""

# GDB needs to use "target vxworks" to talk to the board.
set_board_info gdb_protocol "vxworks"
