# 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 the installed tools for this board. Of course,
# we apparently don't create a compiler for this board, but...
set_board_info target_install {i386-cygwin32}

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

load_generic_config "dos"

# The compiler used to build for this board. This has *nothing* to do
# with what compiler is tested if we're testing gcc.
set_board_info compiler "[find_gcc]"
# The basic set of flags needed to build "hello world" for this
# board. This target uses libgloss, libio and winsup.
set_board_info cflags "[newlib_include_flags] [libio_include_flags] [winsup_include_flags]"
set_board_info ldflags "[newlib_link_flags] [libio_link_flags] [winsup_link_flags]"
# We don't need a link script.
set_board_info ldscript ""

# mondfe can't return exit statuses, so gcc (ctorture et al) needs to
# do what it can to get them.
set_board_info needs_status_wrapper 1

set_board_info gdb_opts "--command gdbinit"
set_board_info gdb,nointerrupts 1
