###############################################################################
# Copyright (c) 2009, 2011 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
###############################################################################

#Properties file for org.eclipse.cdt.managedbuilder.xlupc.ui
Bundle-Vendor.0 = Eclipse CDT
Bundle-Name.0 = XL UPC Managed Build UI Plugin
category.name.1=XL UPC
wizard.name.1=XL UPC Project

ToolName.compiler.xlupc = XL UPC Compiler
ToolName.linker.xlupc = XL UPC Linker
tool.name.0 = Abstract XL UPC Linker

TargetName.xlupc.exe=Executable (XL UPC)
TargetName.xlupc.so=Shared Library (XL UPC)
TargetName.xlupc.lib=Static Library(XL UPC)

ToolChainName.Upc=XL UPC Tool Chain

ConfigName.Dbg=Debug
ConfigName.Rel=Release

PlatformName.Rel=Release Platform
PlatformName.Dbg=Debug Platform

BuildProperty.type.name.xlupc.executable=Executable (XL UPC)
BuildProperty.type.name.xlupc.staticLibrary=Static Library (XL UPC)
BuildProperty.type.name.xlupc.sharedLibrary=Shared Library (XL UPC)

OptionCategory.upc=XL UPC Compiler Options

Option.qsourcetype=Use filename suffix to determine the programming language (-qsourcetype)
Option.qsourcetype.default=default
Option.qsourcetype.upc=upc

Option.runtime=UPC runtime implementation (-qupc=rts=<suboption>)
Option.runtime.default=default
Option.runtime.lapi=lapi
Option.runtime.smp=smp

Option.threads=Number of static THREADS (-qupc=threads=<n>)

Option.compilation=Select either 32-bit or 64-bit compilation mode
Option.compilation.q32=-q32
Option.compilation.q64=-q64


extension.name = Base Build Properties Definition
tool.linker.exe.name = XL UPC Executable Linker
tool.linker.so.name = XL UPC Shared Object Linker
tool.compiler.abstract.name = Abstract XL UPC Compiler
tool.compiler.name = Local XL UPC Compiler
inputType.upc.name = Local UPC Sources
inputType.c.name = Local C Sources
wizard.description = Create a new XL UPC project