###############################################################################
# Copyright (c) 2010 Nokia Siemens Networks Oyj, Finland.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     Nokia Siemens Networks Oyj, initial LLVM support as an add-on to CDT.
###############################################################################

# plugin names
pluginName=LLVM Managed Build Definitions
providerName=Eclipse CDT

# Build Model Names
TargetName.llvm=LLVM
TargetName.llvm.bitcode=LLVM bitcode

# Tool-chain names
ToolChainName.llvm=LLVM
ToolChainName.llvm.with.linker=LLVM with C/C++ Linker
ToolChainName.llvm.with.static.compiler=LLVM with static compiler
ToolChainName.llvm.static.compiler.linux=LLVM with static compiler (Linux)
ToolChainName.llvm.static.compiler.macosx=LLVM with static compiler (MacOSX)
ToolChainName.llvm.static.compiler.win32=LLVM with static compiler (Windows)
ToolChainName.llvm.jit=LLVM with JIT/Interpreter
ToolChainName.llvm.jit.linux=LLVM with JIT/Interpreter (Linux)
ToolChainName.llvm.jit.macosx=LLVM with JIT/Interpreter (MacOSX)
ToolChainName.llvm.jit.win32=LLVM with JIT/Interpreter (Windows)
ToolChainName.llvm.clang=LLVM with Clang
ToolChainName.llvm.clang.win32.mingw=LLVM with Clang (Windows) (MinGW) 
ToolChainName.llvm.clang.win32.cygwin=LLVM with Clang (Windows) (Cygwin)
ToolChainName.llvm.linux=LLVM with Clang (Linux)
ToolChainName.llvm.macosx=LLVM with Clang (MacOSX)
ToolChainName.llvm.gnu=LLVM with GCC
ToolChainName.llvm.gnu.linux=LLVM with GCC (Linux)
ToolChainName.llvm.gnu.macosx=LLVM with GCC (MacOSX)
ToolChainName.llvm.gnu.win32.cygwin=LLVM with GCC (Windows) (Cygwin)
ToolChainName.llvm.gnu.win32.mingw=LLVM with GCC (Windows) (MinGW)

# Default Configuration Names
# START NON-TRANSLATABLE
ConfigName.Rel=Release
ConfigName.Dbg=Debug
ConfigName.Rel.Win32=Release
ConfigName.Dbg.Win32=Debug
ConfigName.Rel.Gnu=Release
ConfigName.Dbg.Gnu=Debug

# END NON-TRANSLATABLE

# Generic platform names (copied from org.eclipse.cdt.managedbuilder.gnu.ui)
PlatformName.Rel=Release Platform
PlatformName.Dbg=Debug Platform

# LLVM tool names
ToolName.archiver.llvm=LLVM archiver
ToolName.assembler.llvm=LLVM assembler
ToolName.compiler.llvm.abstract=Abstract LLVM C/C++ compiler
ToolName.compiler.llvm.c.abstract=Abstract LLVM C compiler
ToolName.compiler.llvm.cpp.abstract=Abstract LLVM C++ compiler
ToolName.compiler.llvm.c=LLVM Clang
ToolName.compiler.llvm.cpp=LLVM Clang++
ToolName.compiler.llvm.gcc=LLVM GCC
ToolName.compiler.llvm.g++=LLVM G++
ToolName.linker.llvm.c=LLVM Clang C linker
ToolName.linker.llvm.cpp=LLVM Clang C++ linker
ToolName.linker.llvm.gcc=LLVM GNU C linker
ToolName.linker.llvm.g++=LLVM GNU C++ linker
ToolName.llc.llvm=LLVM Static Compiler
ToolName.llc.llvm.c=LLVM C Static Compiler
ToolName.llc.llvm.cpp=LLVM C++ Static Compiler
ToolName.lli.llvm=LLVM JIT compiler/Interpreter

# Option Names
# Generic Category Names
#OptionCategory.Symbols = Symbols
OptionCategory.Dialect = Dialect
OptionCategory.Preproc=Preprocessor
OptionCategory.Dirs=Directories
OptionCategory.General=General
OptionCategory.Optimize=Optimization
OptionCategory.Debug=Debugging
OptionCategory.Warn=Warnings
OptionCategory.Misc=Miscellaneous
OptionCategory.Includes=Includes
OptionCategory.Libs=Libraries
OptionCategory.Options=Options
OptionCategory.Optimizations=Optimization Options
OptionCategory.FloatingPointOptions=Floating Point Options
OptionCategory.CodeGenerationOptions=Code Generation Options
#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.Runtime=Optimize at run-time (-O4)
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.Archiver.delete=Delete files from the archive
Option.Posix.Archiver.print.contents=Print the table of contents
#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 debug and symbol information (-strip-all)
Option.Posix.Linker.Strip.Debug=Omit all debug information (-strip-debug)
Option.Posix.Linker.Stats=Print statistics
Option.Posix.Linker.Verbose=Verbose mode
Option.Posix.Linker.Verification=Verification pass
Option.Posix.Linker.DisableInternalize=Disable Internalize
Option.Posix.Linker.DisableOptimization=Disable Optimization
Option.Posix.Linker.DisableInhiling=Disable Inhiling
#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.UserBcs=Other bytecode files
#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.Linker.link_as_library=Create a library
Option.Posix.Linker.LlvmOptions=Input/Output Options
Option.Posix.Linker.native=Create native binary (with LLVM native code generator)
Option.Posix.Linker.nativeCBackend=Create native binary (with C backend code generator)
Option.Posix.Static.Compiler.Flags=Static Compiler Flags

Option.Llvm.printStats=Print statistics
Option.Llvm.Archiver.Flags=Archiver flags
Option.Llvm.Llc.Flags=LLC flags
Option.Llvm.Llc.EmitC=Emit C code (not assembly)
Option.Llvm.Llc.Arch=Specify architecture for assembly code (x86 or sparcv9)
Option.Llvm.llc.optimization.disableExcessPrecisionOptimization=Disable optimizations that may produce excess precision for floating point
Option.Llvm.llc.optimization.disableFramePointerEliminationOptimization=Disable frame pointer elimination optimization
Option.Llvm.Lli.Flags=LLVM JIT/Interpreter flags
Option.Llvm.Lli.ForceInterpreter=Force Interpreter
Option.Llvm.Lli.disable-excess-fp-precision=Disable optimizations that may increase floating point precision
Option.Llvm.Lli.enable-finite-only-fp-math=Enable optimizations that assume only finite floating point math
Option.Llvm.Lli.enable-unsafe-fp-math=Enable optimizations that may decrease floating point precision
Option.Llvm.Lli.soft-float=Generate software floating point library calls instead of equivalent hardware instructions
Option.Llvm.Lli.disable-post-RA-scheduler=Disable scheduling after register allocation
Option.Llvm.Lli.disable-spill-fusing=Disable fusing of spill code into instructions
Option.Llvm.Lli.enable-correct-eh-support=Make the -lowerinvoke pass insert expensive, but correct, EH code
Option.Llvm.Lli.jit-enable-eh=Exception handling should be enabled in the just-in-time compiler
Option.Llvm.Assembler.Flags=Assembler flags
Option.Llvm.Assembler.warn.suppress=Suppress warnings (-W)
Option.Llvm.Assembler.version=Announce version (-v)

# 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 (-dynamiclib)

# Artifact types
BuildProperty.type.name.bcexe=LLVM bytecode executable for LLI
BuildProperty.type.name.bclib=LLVM bytecode library

# Content types
ContentType.LlvmBytecodeFileName=LLVM bytecode file
#LLVM assembler file (human-readable)
ContentType.LlvmSourceFileName=LLVM
ContentType.LlvmExecutableFileName=LLVM executable
ContentType.LlvmAssemblerCode=LLVM Assembly Code

# Languages
Language.LlvmAssembly=LLVM bytecode assembly

option.name = Clang Option
page.name = LLVM
extension.name = Clang++ managed make per project SCD profile
extension.name.0 = Clang managed make per project SCD profile
extension.name.1 = LLVM-G++ managed make per project SCD profile
extension.name.2 = LLVM-GCC managed make per project SCD profile
option.tip = In this mode the linker will print additional information about the actions it takes, programs it executes, etc.
option.tip.0 = Strip all debug and symbol information from the executable to make it smaller.
option.tip.1 = Strip all debug information from the executable to make it smaller.
option.tip.2 = Run the verification pass after each of the passes to verify intermediate results.
option.tip.3 = Do not mark all symbols as internal.
option.tip.4 = Completely disable optimization.
option.tip.5 = Do not run the inlining pass. Functions will not be inlined into other functions.
option.tip.6 = Generate a native machine code executable.
option.tip.7 = Generate a native machine code executable with the LLVM C backend. Uses the C backend to generate code for the program instead of an LLVM native code generator.
option.tip.8 = Link the bitcode files together as a library, not an executable. In this mode, undefined symbols will be permitted.
option.tip.9 = Print the table of contents.
option.tip.10 = Print statistics recorded by code-generation passes.
option.tip.11 = Disable optimizations that may produce excess precision for floating point. Note that this option can dramatically slow down code on some systems (e.g. X86).
option.tip.12 = Print statistics from the code-generation passes.
enumeratedOptionValue.name = true
enumeratedOptionValue.name.0 = false
option.tip.13 = Causes lli to generate software floating point library calls instead of equivalent hardware instructions.
option.tip.14 = Causes lli to enable optimizations that may decrease floating point precision.
option.tip.15 = Disable optimizations that may increase floating point precision.
option.tip.16 = Enable optimizations that assumes only finite floating point math. That is, there is no NAN or Inf values.