###############################################################################
# Copyright (c) 2005, 2010 Texas Instruments Inc. and others.
# 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:
#     Texas Instruments Inc. - initial API and implementation
#     IBM Corporation
###############################################################################

# plugin names
pluginName=GNU Managed Build Definitions
providerName=Eclipse CDT

# Build Model Names
TargetName.gnu=GNU
TargetName.gnu.exe=Gnu Executable
TargetName.gnu.so=Gnu Shared Library
TargetName.gnu.lib=Gnu Static Library
TargetName.cygw.exe=Cygwin Executable
TargetName.cygw.so=Cygwin DLL
TargetName.cygw.lib=Cygwin Library
TargetName.macosx.exe=MacOS X Executable
TargetName.macosx.so=MacOS X Shared Library
TargetName.macosx.lib=MacOS X Static Library
TargetName.solaris.exe=Solaris Gnu Executable
TargetName.solaris.so=Solaris Gnu Shared Library
TargetName.solaris.lib=Solaris Gnu Static Library

# 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

# Default Configuration Names
# START NON-TRANSLATABLE
ConfigName.Rel=Release
ConfigName.Dbg=Debug
# END NON-TRANSLATABLE

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

ToolChainName.Linux=Linux GCC
ToolChainName.Cygwin=Cygwin GCC
ToolChainName.MinGW=MinGW GCC
ToolChainName.Macosx=MacOSX GCC
ToolChainName.Solaris=Solaris GCC

# 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.c = C Compiler
ToolName.compiler.cpp = C++ Compiler
ToolName.archiver = Archiver
ToolName.linker.c = C Linker
ToolName.linker.cpp = C++ Linker
ToolName.windres = Resource compiler

# GNU tool names
ToolName.compiler.gnu.c = GCC C Compiler
ToolName.compiler.gnu.cpp = GCC C++ Compiler
ToolName.linker.gnu.c = GCC C Linker
ToolName.linker.gnu.cpp = GCC C++ Linker
ToolName.archiver.gnu = GCC Archiver
ToolName.assembler.gnu = GCC Assembler

#Cygwin tool names
ToolName.linker.cygwin.gnu.c=Cygwin C Linker
ToolName.linker.cygwin.gnu.cpp=Cygwin C++ Linker
ToolName.compiler.cygwin.gnu.c = Cygwin C Compiler
ToolName.compiler.cygwin.gnu.cpp = Cygwin C++ Compiler

#MinGW tool names
ToolName.linker.mingw.gnu.c=MinGW C Linker
ToolName.linker.mingw.gnu.cpp=MinGW C++ Linker

# Mach-O tool names
ToolName.linker.macosx.c = MacOS X C Linker
ToolName.linker.macosx.cpp = MacOS X C++ Linker

#Solaris tool names
ToolName.compiler.solaris.c = Solaris C Compiler
ToolName.compiler.solaris.cpp = Solaris C++ Compiler

# Generic Category Names
OptionCategory.Symbols = Symbols
OptionCategory.Dialect = Dialect
OptionCategory.Preproc = Preprocessor
OptionCategory.Dirs = Includes
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.Dialect=Language standard
Option.Posix.Dialect.default=
Option.Posix.Dialect.c90=ISO C90 / ANSI C89 (-std=c90)
Option.Posix.Dialect.c99=ISO C99 (-std=c99)
Option.Posix.Dialect.c11=ISO C11 (-std=c11)
Option.Posix.Dialect.c++98=ISO C++98 (-std=c++98)
Option.Posix.Dialect.c++11=ISO C++11 (-std=c++0x)
Option.Posix.Dialect.c++1y=ISO C++1y (-std=c++1y)
Option.Posix.Dialect.Flags=Other dialect flags

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.InclFiles=Include files (-include)

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.Size=Optimize for size (-Os)
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.extrawarn=Extra warnings (-Wextra)
Option.Posix.Warn.toerrs=Warnings as errors (-Werror)
Option.Posix.Warn.wconversion=Implicit conversion warnings (-Wconversion)

Option.Posix.Verbose=Verbose (-v)
Option.OtherFlags=Other flags
Option.Posix.Ansi=Support ANSI programs (-ansi)
Option.PIC=Position Independent Code (-fPIC)
Option.codecov=Generate gcov information (-ftest-coverage -fprofile-arcs)
Option.codecovTip="Check this flag if you want to enable Profile Code Coverage in your application. Remember to enable this option in both the Compiler-&gt; Miscellaneous and Linker -&gt; General. Then rebuild your project and run Code Coverage again."
Option.Pthread=Support for pthread (-pthread)
Option.PthreadCompilerTip="If you select this option, you probably want to select -pthread in the linker settings."
Option.PthreadLinkerTip="If you select this option, you probably want to select -pthread in the compiler settings."

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)

# 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)

GNUMakeBuilder.name=Gnu Make Builder

extension.name = Managed Build Tools Description