; Options for the Ada front end.
; Copyright (C) 2003 Free Software Foundation, 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 2, 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 COPYING.  If not, write to the Free
; Software Foundation, 59 Temple Place - Suite 330, Boston, MA
; 02111-1307, USA.

; See c.opt for a description of this file's format.

; Please try to keep this file in ASCII collating order.

Language
Ada

I
Ada Joined Separate
; Documented for C

Wall
Ada
; Documented for C

Wmissing-prototypes
Ada
; Documented for C

Wstrict-prototypes
Ada
; Documented for C

Wwrite-strings
Ada
; Documented for C

Wlong-long
Ada
; Documented for C

nostdinc
Ada RejectNegative
; Don't look for source files

nostdlib
Ada
; Don't look for object files

fRTS=
Ada Joined RejectNegative

gant
Ada Joined Undocumented
; Catches typos

gnat
Ada Joined
-gnat<options>	Specify options to GNAT

; This comment is to ensure we retain the blank line above.
