###############################################################################
# Copyright (c) 2005, 2010 Texas Instruments Inc. and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# 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++11)
Option.Posix.Dialect.c++14=ISO C++14 (-std=c++14)
Option.Posix.Dialect.c++17=ISO C++17 (-std=c++17)
Option.Posix.Dialect.c++2a=ISO C++20 (-std=c++2a)
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.Debug.sanitaddress=Sanitize address (-fsanitize=address)
Option.Posix.Debug.sanitpointers=Sanitize pointer operations (-fsanitize=pointer-compare -fsanitize=pointer-subtract)
Option.Posix.Debug.sanitthread=Sanitize data race in multi-thread (-fsanitize=thread)
Option.Posix.Debug.sanitleak=Sanitize memory leak (-fsanitize=leak)
Option.Posix.Debug.sanitundefined=Sanitize undefined behavior (-fsanitize=undefined)

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.Warn.wfloatequal=Direct float equal check (-Wfloat-equal)
Option.Posix.Warn.wcastalign=Pointer cast with different alignment (-Wcast-align)
Option.Posix.Warn.wcastqual=Removing type qualifier from cast target type (-Wcast-qual)
Option.Posix.Warn.wctordtorprivacy=All ctor and dtor private (-Wctor-dtor-privacy)
Option.Posix.Warn.wdisabledopt=Requested optimization pass is disabled (-Wdisabled-optimization)
Option.Posix.Warn.wlogicalop=Suspicious uses of logical operators (-Wlogical-op)
Option.Posix.Warn.wmissingdecl=Global function without previous declaration (-Wmissing-declarations)
Option.Posix.Warn.wmissingincdir=User-supplied include directory does not exist (-Wmissing-include-dirs)
Option.Posix.Warn.wnoexccept=Noexcept false but never throw exception (-Wnoexcept)
Option.Posix.Warn.woldstylecast=C-style cast used (-Wold-style-cast)
Option.Posix.Warn.woverloadedvirtual=Function hides virtual functions from base class (-Woverloaded-virtual)
Option.Posix.Warn.wredundantdecl=More than one declaration in the same scope (-Wredundant-decls)
Option.Posix.Warn.wshadow=Local symbol shadows upper scope symbol (-Wshadow)
Option.Posix.Warn.wsignconv=Implicit conversions that may change the sign (-Wsign-conversion)
Option.Posix.Warn.wsignpromo=Overload resolution promotes unsigned to signed type (-Wsign-promo)
Option.Posix.Warn.wstrictnullsent=Use of an uncasted NULL as sentinel (-Wstrict-null-sentinel)
Option.Posix.Warn.wswitchdef=A switch statement does not have a default case (-Wswitch-default)
Option.Posix.Warn.wundef=An undefined identifier is evaluated in an #if directive (-Wundef)
Option.Posix.Warn.weffcpp=Effective C++ guidelines (-Weffc++)
Option.Posix.Warn.wwritestring=Treat strings always as const (-Wwrite-strings)

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.Security=Hardening options (-fstack-protector-all -Wformat=2 -Wformat-security -Wstrict-overflow)
Option.Randomization=Address randomization (-fPIE)

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