# 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.

# The canonical unix board description.
load_generic_config "unix"

process_multilib_options ""

set_board_info compiler  "[find_gcc]"

set_board_info bmk,use_alarm 1

# Set host_library_path to pick up libs such as libstdc++

#set_board_info host_library_path "[file dirname [file dirname [file dirname [file dirname [file dirname [exec [find_gcc] --print-prog-name=cc1]]]]]]/lib"

# Do not use -lm on Cygwin
if { [istarget "*-*-cygwin*"] } {
    set_board_info mathlib ""
}

# For the alpha, force use ieee
if { [istarget "alpha*-*"] } {
    set_board_info ieee_multilib_flags "-mieee"
}

