###############################################################################
# Copyright (c) 2003, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Common Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/cpl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
pluginName=GNU Fortran Managed Build Definitions
providerName=Eclipse.org

# Build Model Names
TargetName.gnu=GNU
TargetName.gnu.exe=Executable (Gnu)
TargetName.gnu.so=Shared Library (Gnu)
TargetName.gnu.lib=Static Library (Gnu)
TargetName.cygw.exe=Executable (Gnu on Windows)
TargetName.cygw.so=Shared Library (Gnu on Windows)
TargetName.cygw.lib=Static Library (Gnu on Windows)
TargetName.gnu.fortran.exe=Executable (Gnu Fortran on Linux/*nix)
TargetName.gnu.fortran.so=Shared Library (Gnu Fortran on Linux/*nix)
TargetName.gnu.fortran.lib=Static Library (Gnu Fortran on Linux/*nix)
TargetName.gnu.fortran.macosx.exe=Executable (Gnu Fortran on MacOS X)
TargetName.gnu.fortran.macosx.so=Shared Library (Gnu Fortran on MacOS X)
TargetName.gnu.fortran.macosx.lib=Static Library (Gnu Fortran on MacOS X)
TargetName.gnu.fortran.win32.exe=Executable (Gnu Fortran on Windows)
TargetName.gnu.fortran.win32.so=Shared Library (Gnu Fortran on Windows)
TargetName.gnu.fortran.win32.lib=Static Library (Gnu Fortran on Windows)

# No longer needed post-2.0
TargetName.cygw=Cygwin
TargetName.cygw.dll=Cygwin Export Library (DLL)
TargetName.linux=Linux
TargetName.linux.exe=Linux Executable
TargetName.linux.so=Linux Shared Library
TargetName.linux.lib=Linux Static Library
TargetName.solaris=Solaris
TargetName.solaris.exe=Solaris Executable
TargetName.solaris.so=Solaris Shared Library
TargetName.solaris.lib=Solaris Static Library

# Default Configuration Names
ConfigName.Rel=Release
ConfigName.Dbg=Debug

# Generic tool-chain names
ToolChainName.Rel=GCC Tool Chain
ToolChainName.Dbg=GCC Tool Chain

# Generic platform names
PlatformName.Rel=Release Platform
PlatformName.Dbg=Debug Platform

# Generic builder names
BuilderName.Rel=Gnu Make
BuilderName.Dbg=Gnu Make

# Generic tool names
ToolName.preprocessor = Preprocessor
ToolName.compiler.fortran = Fortran Compiler
ToolName.archiver = Archiver
ToolName.linker.fortran = Fortran Linker
ToolName.windres = Resource compiler

# GNU tool names
ToolName.compiler.gnu.fortran = GNU Fortran Compiler
ToolName.linker.gnu.fortran = GNU Fortran Linker

# Mach-O tool names
ToolName.linker.macosx.fortran = MacOS X Fortran Linker

# Fortran tool names
ToolName.compiler.fortran = Fortran Compiler
ToolName.linker.fortran = Fortran Linker

# Generic Category Names
OptionCategory.Source = Source
OptionCategory.Symbols = Symbols
OptionCategory.Preproc = Preprocessor
OptionCategory.Dirs = Directories
OptionCategory.General = General
OptionCategory.Optimize=Optimization
OptionCategory.Debug=Debugging
OptionCategory.Warn=Warnings
OptionCategory.Misc=Miscellaneous
OptionCategory.Libs=Libraries
OptionCategory.Shared.Settings=Shared Library Settings

# Generic Option Names
Option.Posix.PreprocOnly=Preprocess only (-E)
Option.Posix.Nostdinc=Do not search system directories (-nostdinc)

Option.Posix.DefSym=Defined symbols (-D)
Option.Posix.UndefSym=Undefined symbols (-U)

Option.Posix.InclPaths=Include paths (-I)

Option.Posix.OptLevel=Optimization Level
Option.Posix.Optimize.None=None (-O0)
Option.Posix.Optimize.Optimize=Optimize (-O1)
Option.Posix.Optimize.More=Optimize more (-O2)
Option.Posix.Optimize.Most=Optimize most (-O3)
Option.Posix.Optimize.Flags=Other optimization flags

Option.Posix.DebugLevel=Debug Level
Option.Posix.Debug.None=None
Option.Posix.Debug.Min=Minimal (-g1)
Option.Posix.Debug.Def=Default (-g)
Option.Posix.Debug.Max=Maximum (-g3)
Option.Posix.Debug.Other=Other debugging flags
Option.Posix.Debug.gprof=Generate gprof information (-pg)
Option.Posix.Debug.prof=Generate prof information (-p)

Option.Posix.Warn.Syntax=Check syntax only (-fsyntax-only)
Option.Posix.Warn.Pedandic=Pedantic (-pedantic)
Option.Posix.Warn.PedErrors=Pedantic warnings as errors (-pedantic-errors)
Option.Posix.Warn.nowarn=Inhibit all warnings (-w)
Option.Posix.Warn.allwarn=All warnings (-Wall)
Option.Posix.Warn.toerrs=Warnings as errors (-Werror)

Option.Posix.Verbose=Verbose (-v)
Option.OtherFlags=Other flags
Option.Posix.Ansi=Support ANSI programs (-ansi)

Option.Posix.Linker.NoStartFiles=Do not use standard start files (-nostartfiles)
Option.Posix.Linker.NoDefLibs=Do not use default libraries (-nodefaultlibs)
Option.Posix.Linker.NoStdLibs=No startup or default libs (-nostdlib)
Option.Posix.Linker.Strip=Omit all symbol information (-s)
Option.Posix.Linker.Strip.debug=Omit debug symbol information (-S)
Option.Posix.Linker.Static=No shared libraries (-static)
Option.Posix.Linker.XLinker=Other options (-Xlinker [option])
Option.Posix.Linker.Flags=Linker flags
Option.Posix.Libs=Libraries (-l)
Option.Posix.Libsearch=Library search path (-L)
Option.Posix.UserObjs=Other objects
Option.Posix.Linker.Shared=Shared (-shared)
Option.Posix.Linker.SOName=Shared object name (-Wl,-soname=)
Option.Posix.Linker.Implib=Import Library name (-Wl,--out-implib=)
Option.Posix.Linker.Defname=DEF file name (-Wl,--output-def=)

Option.Posix.Archiver.Flags=Archiver flags

Option.Gnu.Assembler.Flags=Assembler flags
Option.Gnu.Assembler.warn.suppress=Suppress warnings (-W)
Option.Gnu.Assembler.version=Announce version (-v)

# GNU Fortran specific option names

Option.Gnu.Fortran.symbols.underscoring=Symbol Underscoring
Option.Gnu.Fortran.symbols.underscoring.none=None (-fno-underscoring)
Option.Gnu.Fortran.symbols.underscoring.one=Default (-funderscoring)
Option.Gnu.Fortran.symbols.underscoring.notwo=No Second (-fno-second-underscore)

# Platform specific option names
Option.Windows.Windres.OutputFormat = Output format
Option.Windows.Windres.OutputFormat.Coff = coff (--output-format coff)
Option.Windows.Windres.OutputFormat.RC = rc (--output-format rc)
Option.Windows.Windres.OutputFormat.Res = res (--output-format res)
Option.MacOSX.Linker.Shared=Shared (-Wl,-dylib)