###############################################################################
# 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=IBM XL Compiler Tool Chain
providerName=Eclipse.org

# Build Model Names
TargetName.xlf.exe=Executable (IBM XL Fortran)
TargetName.xlf.so=Shared Library (IBM XL Fortran)
TargetName.xlf.lib=Static Library (IBM XL Fortran)

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

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

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

# 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

# XLF tool-chain names
XLFToolChainName.Rel=IBM XL Fortran Tool Chain
XLFToolChainName.Dbg=IBM XL Fortran Tool Chain

# XLF tool names
ToolName.compiler.xlf = IBM XL Fortran Compiler
ToolName.linker.xlf = IBM XL Fortran Linker

# IBM XLF specific option names

Option.XLF.Source.extension=Source file extension

Option.XLF.Source.fixed=Fixed source format (-qfixed)
Option.XLF.Source.free=Free source format (-qfree=f90)
Option.XLF.Source.free.ibm=IBM free source format (-qfree=ibm)

Option.XLF.Warn.nowarn=Inhibit all warnings (-w)
Option.XLF.Warn.allwarn=All warnings (-qflag=i:u)

Option.MacOSX.Linker.Shared=Shared (-Wl,-dylib)