; Options for the Altera Nios II port of the compiler.
; Copyright (C) 2012-2021 Free Software Foundation, Inc.
; Contributed by Altera and Mentor Graphics, Inc.
;
; This file is part of GCC.
;
; GCC 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, or (at your option)
; any later version.
;
; GCC 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 GCC; see the file COPYING3.  If not see
; <http://www.gnu.org/licenses/>.

; These additional options are supported for ELF (bare-metal) Nios II
; toolchains.

msmallc
Target RejectNegative
Link with a limited version of the C library.

msys-lib=
Target RejectNegative Joined Var(nios2_sys_lib_string)
Name of system library to link against.

msys-crt0=
Target RejectNegative Joined Var(nios2_sys_crt0_string)
Name of the startfile.

mhal
Target RejectNegative
Link with HAL BSP.
