; Options for the Java front end.
; Copyright (C) 2003-2016 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 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/>.

; See the GCC internals manual for a description of this file's format.

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

Language
Java

-CLASSPATH
Java Separate Alias(fclasspath=)

-all-warnings
Java Alias(Wall)

-bootclasspath
Java Separate Alias(fbootclasspath=)

-classpath
Java Separate Alias(fclasspath=)

-dependencies
Java Alias(M)

-encoding
Java Separate Alias(fencoding=)

-extdirs
Java Separate Alias(fextdirs=)

-include-directory
Java Separate Alias(I)

-include-directory=
Java Joined Alias(I)

-output-class-directory
Java Separate Alias(foutput-class-dir=)

-output-class-directory=
Java Joined Alias(foutput-class-dir=)

-resource
Java Separate Alias(fcompile-resource=)

-resource=
Java Joined Alias(fcompile-resource=)

-user-dependencies
Java Alias(MM)

C
Driver
; Java driver option in fact distinct from C-family option with the same name.

CLASSPATH
Java Separate Alias(fclasspath=)

D
Driver Joined Separate
; Java driver option similar to C-family option.

I
Java Joined Separate
; Documented for C

M
Java
; Documented for C

MD_
Java Undocumented RejectDriver
; Documented for C

MF
Java Separate
; Documented for C

MM
Java
; Documented for C

MMD_
Java Undocumented RejectDriver
; Documented for C

MP
Java
; Documented for C

MT
Java Separate
; Documented for C

Wall
Java
; Documented for C

Wdeprecated
Java Var(warn_deprecated)
; Documented for C

Wextraneous-semicolon
Java Var(flag_extraneous_semicolon)
Warn if deprecated empty statements are found.

Wout-of-date
Java Var(flag_newer) Init(1)
Warn if .class files are out of date.

Wredundant-modifiers
Java Var(flag_redundant)
Warn if modifiers are specified when not necessary.

bootclasspath
Java Separate Alias(fbootclasspath=)

classpath
Java Separate Alias(fclasspath=)

d
Java Separate SeparateAlias Alias(foutput-class-dir=)
; Different from language-independent -d with joined argument.

encoding
Java Separate Alias(fencoding=)

extdirs
Driver Separate

fCLASSPATH=
Java JoinedOrMissing RejectNegative Alias(fclasspath=)
--CLASSPATH	Deprecated; use --classpath instead.

faux-classpath
Java Separate RejectNegative Undocumented

fassert
Java Var(flag_assert) Init(1)
Permit the use of the assert keyword.

fassume-compiled
Java

fassume-compiled=
Java JoinedOrMissing

fenable-assertions
Java

fenable-assertions=
Java JoinedOrMissing

fdisable-assertions
Java

fdisable-assertions=
Java JoinedOrMissing

fbootclasspath=
Java JoinedOrMissing RejectNegative
--bootclasspath=<path>	Replace system path.

fcheck-references
Java Var(flag_check_references)
Generate checks for references to NULL.

fclasspath=
Java JoinedOrMissing RejectNegative
--classpath=<path>	Set class path.

fcompile-resource=
Java Joined RejectNegative

femit-class-file
Java Var(flag_emit_class_files)
Output a class file.

femit-class-files
Java Var(flag_emit_class_files)
Alias for -femit-class-file.

fencoding=
Java Joined RejectNegative
--encoding=<encoding>	Choose input encoding (defaults from your locale).

fextdirs=
Java Joined RejectNegative
--extdirs=<path>	Set the extension directory path.

fmain=
Driver JoinedOrMissing RejectNegative

fsource-filename=
Java Joined Undocumented 

ffilelist-file
Java Var(flag_filelist_file)
Input file is a file with a list of filenames to compile.

fsaw-java-file
Java Undocumented RejectNegative

fforce-classes-archive-check
Java Var(flag_force_classes_archive_check)
Always check for non gcj generated classes archives.

fhash-synchronization
Java Var(flag_hash_synchronization)
Assume the runtime uses a hash table to map an object to its synchronization structure.

findirect-classes
Java Var(flag_indirect_classes) Init(1)
Generate instances of Class at runtime.

findirect-dispatch
Java Var(flag_indirect_dispatch)
Use offset tables for virtual method calls.

finline-functions
Java

fjni
Java Var(flag_jni)
Assume native functions are implemented using JNI.

foptimize-static-class-initialization
Java Var(flag_optimize_sci)
Enable optimization of static class initialization code.

foutput-class-dir=
Java Joined RejectNegative

freduced-reflection
Java Var(flag_reduced_reflection)
Reduce the amount of reflection meta-data generated.

fstore-check
Java Var(flag_store_check) Init(1)
Enable assignability checks for stores into object arrays.

fuse-boehm-gc
Java Var(flag_use_boehm_gc)
Generate code for the Boehm GC.

fuse-divide-subroutine
Java Var(flag_use_divide_subroutine) Init(1)
Call a library routine to do integer divisions.

fuse-atomic-builtins
Java Var(flag_use_atomic_builtins) Init(0)
Generate code for built-in atomic operations.

fbootstrap-classes
Java Var(flag_bootstrap_classes)
Generated should be loaded by bootstrap loader.

fsource=
Java Joined
Set the source language version.

ftarget=
Java Joined
Set the target VM version.

s-bc-abi
Driver

static-libgcj
Driver

version
Java RejectDriver

;
; Warnings handled by ecj.
; FIXME: document them
;

Wconstructor-name
Java

Wpkg-default-method
Java

Wmasked-catch-block
Java

Wall-deprecation
Java

Wunused-local
Java

Wunused-argument
Java

Wunused-import
Java

Wunused-private
Java

Wunused-label
Java

Wlocal-hiding
Java

Wfield-hiding
Java

Wspecial-param-hiding
Java

Wcondition-assign
Java

Wsynthetic-access
Java

Wnls
Java

Wstatic-receiver
Java

Windirect-static
Java

Wno-effect-assign
Java

Wintf-non-inherited
Java

Wchar-concat
Java

Wserial
Java

Wempty-block
Java

Wuseless-type-check
Java

Wuncheck
Java

Wraw
Java

Wfinal-bound
Java

Wsuppress
Java

Wwarning-token
Java

Wunnecessary-else
Java

Wjavadoc
Java

Wall-javadoc
Java

Wtasks
Java

Wassert-identifier
Java

Wenum-identifier
Java

Wfinally
Java

Wunused-thrown
Java

Wunqualified-field
Java

Wtype-hiding
Java

Wvarargs-cast
Java

Wnull
Java

Wboxing
Java

Wover-ann
Java

Wdep-ann
Java

Wintf-annotation
Java

Wenum-switch
Java

Whiding
Java

Wstatic-access
Java

Wunused
Java

Wparam-assign
Java

Wdiscouraged
Java

Wforbidden
Java

Wfallthrough
Java

