﻿<?xml version="1.0" encoding="utf-8"?>
<!--Copyright, Microsoft Corporation, All rights reserved.-->
<Rule
   Name="LIB"
   PageTemplate="tool"
   DisplayName="Librarian"
   SwitchPrefix="/"
   Order="40"
   xmlns="http://schemas.microsoft.com/build/2009/properties"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Rule.Categories>
    <Category
       Name="General"
       DisplayName="General" />
    <Category
       Name="All Options"
       DisplayName="All Options"
       Subtype="Search" />
    <Category
       Name="Command Line"
       DisplayName="Command Line"
       Subtype="CommandLine" />
  </Rule.Categories>
  <Rule.DataSource>
    <DataSource
       Persistence="ProjectFile"
       ItemType="Lib"
       Label=""
       HasConfigurationCondition="true" />
  </Rule.DataSource>
  <StringProperty
     Subtype="file"
     Name="OutputFile"
     DisplayName="Output File"
     Description="The /OUT option overrides the default name and location of the program that the lib creates."
     Category="General"
     Switch="OUT"
     Separator=":"
     F1Keyword="VC.Project.VCLibrarianTool.OutputFile">
  </StringProperty>
  <StringListProperty
     Subtype="file"
     Name="AdditionalDependencies"
     DisplayName="Additional Dependencies"
     Description="Specifies additional items to add to the link command line. [i.e. kernel32.lib] "
     Category="General"
     F1Keyword="VC.Project.VCLibrarianTool.AdditionalDependencies">
  </StringListProperty>
  <StringListProperty
     Subtype="folder"
     Name="AdditionalLibraryDirectories"
     DisplayName="Additional Library Directories"
     Description="Allows the user to override the environmental library path."
     Category="General"
     Switch="LIBPATH:"
     F1Keyword="VC.Project.VCLibrarianTool.AdditionalLibraryDirectories">
  </StringListProperty>
  <BoolProperty
     Name="SuppressStartupBanner"
     DisplayName="Suppress Startup Banner"
     Description="The /NOLOGO option prevents display of the copyright message and version number. "
     Category="General"
     Switch="NOLOGO"
     F1Keyword="VC.Project.VCLibrarianTool.SuppressStartupBanner">
  </BoolProperty>
  <StringProperty
     Subtype="file"
     Name="ModuleDefinitionFile"
     DisplayName="Module Definition File Name"
     Description="The /DEF option passes a module-definition file (.def) to LIB. Only one .def file can be specified to LIB."
     Category="General"
     Switch="DEF"
     Separator=":"
     F1Keyword="VC.Project.VCLibrarianTool.ModuleDefinitionFile">
  </StringProperty>
  <BoolProperty
     Name="IgnoreAllDefaultLibraries"
     DisplayName="Ignore All Default Libraries"
     Description="The /NODEFAULTLIB option tells the lib to remove one or more default libraries from the list of libraries it searches when resolving external references. "
     Category="General"
     Switch="NODEFAULTLIB"
     F1Keyword="VC.Project.VCLibrarianTool.IgnoreAllDefaultLibraries">
  </BoolProperty>
  <StringListProperty
     Subtype="file"
     Name="IgnoreSpecificDefaultLibraries"
     DisplayName="Ignore Specific Default Libraries"
     Description="A library that you want the lib to ignore when it resolves external references."
     Category="General"
     Switch="NODEFAULTLIB:"
     F1Keyword="VC.Project.VCLibrarianTool.IgnoreDefaultLibraryNames">
  </StringListProperty>
  <StringListProperty
     Name="ExportNamedFunctions"
     DisplayName="Export Named Functions"
     Description="Export one or more specified functions."
     Category="General"
     Switch="EXPORT:"
     F1Keyword="VC.Project.VCLibrarianTool.ExportNamedFunctions">
  </StringListProperty>
  <StringProperty
     Name="ForceSymbolReferences"
     DisplayName="Force Symbol References"
     Description="Force Lib to include a reference to this symbol."
     Category="General"
     Switch="INCLUDE"
     Separator=":"
     F1Keyword="VC.Project.VCLibrarianTool.ForceSymbolReferences">
  </StringProperty>
  <BoolProperty
     Name="UseUnicodeResponseFiles"
     DisplayName="Use Unicode Response Files"
     Description="Use UNICODE Response Files : Instructs the project system to generate UNICODE response files when spawning the librarian.  Set this property to 'Yes' when files in the project have UNICODE paths."
     Category="General"
     IncludeInCommandLine="false"
     F1Keyword="VC.Project.VCLibrarianTool.UseUnicodeResponseFiles">
  </BoolProperty>
  <BoolProperty
     Name="LinkLibraryDependencies"
     DisplayName="Link Library Dependencies"
     Description="Specifies whether or not library outputs from project dependencies are automatically linked in."
     Category="General"
     IncludeInCommandLine="false"
     F1Keyword="VC.Project.VCLibrarianTool.LinkLibraryDependencies">
    <BoolProperty.DataSource>
      <DataSource
         Persistence="ProjectFile"
         ItemType="ProjectReference"
         Label=""
         HasConfigurationCondition="true" />
    </BoolProperty.DataSource>
  </BoolProperty>
  <EnumProperty
     Name="ErrorReporting"
     DisplayName="Error Reporting"
     Description="Allows you to provide internal compiler error (ICE) information directly to Microsoft."
     Category="General"
     F1Keyword="VC.Project.VCLibrarianTool.ErrorReporting">
    <EnumValue
       Name="PromptImmediately"
       Switch="ERRORREPORT:PROMPT"
       DisplayName="PromptImmediately"
       Description="Prompt Immediately.">
    </EnumValue>
    <EnumValue
       Name="QueueForNextLogin"
       Switch="ERRORREPORT:QUEUE"
       DisplayName="Queue For Next Login"
       Description="Queue for next login.">
    </EnumValue>
    <EnumValue
       Name="SendErrorReport"
       Switch="ERRORREPORT:SEND"
       DisplayName="Send Error Report"
       Description="Send error report.">
    </EnumValue>
    <EnumValue
       Name="NoErrorReport"
       Switch="ERRORREPORT:NONE"
       DisplayName="No Error Report"
       Description="No error report.">
    </EnumValue>
  </EnumProperty>
  <StringProperty
     Name="DisplayLibrary"
     DisplayName="Display Library to standard output"
     Description="Displays information about the output library to standard output. The output can be redirected to a file. You can use /LIST to determine the contents of an existing library without modifying it."
     Category="General"
     Switch="LIST"
     Separator=":"
     Visible="false">
  </StringProperty>
  <BoolProperty
     ReverseSwitch="WX:NO"
     Name="TreatLibWarningAsErrors"
     DisplayName="Treat Lib Warning As Errors"
     Description="/WX causes no output file to be generated if lib generates a warning."
     Category="General"
     Switch="WX"
     F1Keyword="VC.Project.VCLibrarianTool.TreatLibWarningsAsErrors">
  </BoolProperty>
  <EnumProperty
     Name="TargetMachine"
     DisplayName="Target Machine"
     Description="The /MACHINE option specifies the target platform for the program."
     Category="General"
     F1Keyword="VC.Project.VCLibrarianTool.TargetMachine">
    <EnumValue
       Name="MachineARM"
       Switch="MACHINE:ARM"
       DisplayName="MachineARM"
       Description="MachineARM">
    </EnumValue>
    <EnumValue
       Name="MachineARM64"
       Switch="MACHINE:ARM64"
       DisplayName="MachineARM64"
       Description="MachineARM64">
    </EnumValue>
    <EnumValue
       Name="MachineARM64X"
       Switch="MACHINE:ARM64X"
       DisplayName="MachineARM64X"
       Description="MachineARM64X">
    </EnumValue>
    <EnumValue
       Name="MachineEBC"
       Switch="MACHINE:EBC"
       DisplayName="MachineEBC"
       Description="MachineEBC">
    </EnumValue>
    <EnumValue
       Name="MachineIA64"
       Switch="MACHINE:IA64"
       DisplayName="MachineIA64"
       Description="MachineIA64">
    </EnumValue>
    <EnumValue
       Name="MachineMIPS"
       Switch="MACHINE:MIPS"
       DisplayName="MachineMIPS"
       Description="MachineMIPS">
    </EnumValue>
    <EnumValue
       Name="MachineMIPS16"
       Switch="MACHINE:MIPS16"
       DisplayName="MachineMIPS16"
       Description="MachineMIPS16">
    </EnumValue>
    <EnumValue
       Name="MachineMIPSFPU"
       Switch="MACHINE:MIPSFPU"
       DisplayName="MachineMIPSFPU"
       Description="MachineMIPSFPU">
    </EnumValue>
    <EnumValue
       Name="MachineMIPSFPU16"
       Switch="MACHINE:MIPSFPU16"
       DisplayName="MachineMIPSFPU16"
       Description="MachineMIPSFPU16">
    </EnumValue>
    <EnumValue
       Name="MachineSH4"
       Switch="MACHINE:SH4"
       DisplayName="MachineSH4"
       Description="MachineSH4">
    </EnumValue>
    <EnumValue
       Name="MachineTHUMB"
       Switch="MACHINE:THUMB"
       DisplayName="MachineTHUMB"
       Description="MachineTHUMB">
    </EnumValue>
    <EnumValue
       Name="MachineX64"
       Switch="MACHINE:X64"
       DisplayName="MachineX64"
       Description="MachineX64">
    </EnumValue>
    <EnumValue
       Name="MachineX86"
       Switch="MACHINE:X86"
       DisplayName="MachineX86"
       Description="MachineX86">
    </EnumValue>
  </EnumProperty>
  <EnumProperty
     Name="SubSystem"
     DisplayName="SubSystem"
     Description="The /SUBSYSTEM option tells the operating system how to run the .exe file.The choice of subsystem affects the entry point symbol (or entry point function) that the linker will choose."
     Category="General"
     F1Keyword="VC.Project.VCLibrarianTool.SubSystem">
    <EnumProperty.Arguments>
      <Argument
         Property="MinimumRequiredVersion"
         IsRequired="false" />
    </EnumProperty.Arguments>
    <EnumValue
       Name="Console"
       Switch="SUBSYSTEM:CONSOLE"
       DisplayName="Console"
       Description="Win32 character-mode application. Console applications are given a console by the operating system. If main or wmain is defined, CONSOLE is the default.">
    </EnumValue>
    <EnumValue
       Name="Windows"
       Switch="SUBSYSTEM:WINDOWS"
       DisplayName="Windows"
       Description="Application does not require a console, probably because it creates its own windows for interaction with the user. If WinMain or wWinMain is defined, WINDOWS is the default.">
    </EnumValue>
    <EnumValue
       Name="Native"
       Switch="SUBSYSTEM:NATIVE"
       DisplayName="Native"
       Description="Device drivers for Windows NT. If /DRIVER:WDM is specified, NATIVE is the default.">
    </EnumValue>
    <EnumValue
       Name="EFI Application"
       Switch="SUBSYSTEM:EFI_APPLICATION"
       DisplayName="EFI Application"
       Description="EFI Application.">
    </EnumValue>
    <EnumValue
       Name="EFI Boot Service Driver"
       Switch="SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER"
       DisplayName="EFI Boot Service Driver"
       Description="EFI boot service driver.">
    </EnumValue>
    <EnumValue
       Name="EFI ROM"
       Switch="SUBSYSTEM:EFI_ROM"
       DisplayName="EFI ROM"
       Description="EFI ROM.">
    </EnumValue>
    <EnumValue
       Name="EFI Runtime"
       Switch="SUBSYSTEM:EFI_RUNTIME_DRIVER"
       DisplayName="EFI Runtime"
       Description="EFI runtime.">
    </EnumValue>
    <EnumValue
       Name="WindowsCE"
       Switch="SUBSYSTEM:WINDOWSCE"
       DisplayName="WindowsCE"
       Description="Application that runs on a Windows CE device.">
    </EnumValue>
    <EnumValue
       Name="POSIX"
       Switch="SUBSYSTEM:POSIX"
       DisplayName="POSIX"
       Description="Application that runs with the POSIX subsystem in Windows NT.">
    </EnumValue>
  </EnumProperty>
  <StringProperty
     Name="MinimumRequiredVersion"
     DisplayName="Minimum Required Version"
     Description="Specify the minimum required version of the subsystem. The arguments are decimal numbers in the range 0 through 65,535."
     Category="General"
     Separator=",">
  </StringProperty>
  <StringListProperty
     Subtype="file"
     Name="RemoveObjects"
     DisplayName="Remove Objects"
     Description="Omits the specified object from the output library. LIB creates an output library by combining all objects (whether in object files or libraries), and then deleting any objects specified with /REMOVE."
     Category="General"
     Switch="REMOVE:"
     F1Keyword="VC.Project.VCLibrarianTool.RemoveObjects">
  </StringListProperty>
  <BoolProperty
     Name="Verbose"
     DisplayName="Verbose"
     Description="Verbose"
     Category="General"
     Switch="VERBOSE"
     F1Keyword="VC.Project.VCLibrarianTool.Verbose">
  </BoolProperty>
  <StringProperty
     Subtype="file"
     Name="Name"
     DisplayName="Name"
     Description="When building an import library, specifies the name of the DLL for which the import library is being built."
     Category="General"
     Switch="NAME:"
     F1Keyword="VC.Project.VCLibrarianTool.Name">
  </StringProperty>
  <BoolProperty
     Name="LinkTimeCodeGeneration"
     DisplayName="Link Time Code Generation"
     Description="Specifies link-time code generation."
     Category="General"
     Switch="LTCG"
     F1Keyword="VC.Project.VCLibrarianTool.LinkTimeCodeGeneration">
  </BoolProperty>
  <BoolProperty
     Name="UseDynamicDebugging"
     DisplayName="Support C++ Dynamic Debugging"
     Description="(Preview) Sets the librarian flag /dynamicdeopt to turn on C++ Dynamic Debugging. Place deoptimized breakpoints and step in anywhere with on-demand function deoptimization. Use this mode for debugging optimized code."
     Category="General"
     Switch="dynamicdeopt"
     F1Keyword="VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation">
  </BoolProperty>
  <StringProperty
     Name="DynamicDebuggingSuffix"
     Category="General"
     Switch="dynamicdeopt:suffix"
     Separator="="
     Visible="false">
  </StringProperty>
  <StringProperty
     Name="AdditionalOptions"
     DisplayName="Additional Options"
     Description="Additional Options."
     Category="Command Line"
     F1Keyword="vc.project.AdditionalOptionsPage">
  </StringProperty>
  <StringProperty
     Subtype="folder"
     Name="TrackerLogDirectory"
     DisplayName="Tracker Log Directory"
     Description="Tracker log directory."
     IncludeInCommandLine="false"
     Visible="false">
  </StringProperty>
  <BoolProperty
     Name="BuildingInIde"
     Visible="false">
  </BoolProperty>
</Rule>