/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <winver.h>
#include "tool_version.h"

LANGUAGE  0, 0

#define RC_VERSION  CURL_VERSION_MAJOR, CURL_VERSION_MINOR, CURL_VERSION_PATCH, 0

VS_VERSION_INFO VERSIONINFO
  FILEVERSION     RC_VERSION
  PRODUCTVERSION  RC_VERSION
  FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
#if defined(DEBUGBUILD) || defined(_DEBUG)
  FILEFLAGS VS_FF_DEBUG
#else
  FILEFLAGS 0L
#endif
  FILEOS      VOS__WINDOWS32
  FILETYPE    VFT_APP
  FILESUBTYPE 0L

BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904b0"
    BEGIN
      VALUE "CompanyName",      "curl, https://curl.se/\0"
      VALUE "FileDescription",  "The curl executable\0"
      VALUE "FileVersion",      CURL_VERSION "\0"
      VALUE "InternalName",     "curl\0"
      VALUE "OriginalFilename", "curl.exe\0"
      VALUE "ProductName",      "The curl executable\0"
      VALUE "ProductVersion",   CURL_VERSION "\0"
      VALUE "LegalCopyright",   "\xa9 " CURL_COPYRIGHT "\0"  /* a9: Copyright symbol */
      VALUE "License",          "https://curl.se/docs/copyright.html\0"
    END
  END

  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x409, 1200
  END
END

/* Manifest */

#if defined(CURL_EMBED_MANIFEST)

/* String escaping rules:
     https://msdn.microsoft.com/library/aa381050
   Application Manifest doc, including the list of 'supportedOS Id's:
     https://msdn.microsoft.com/library/aa374191 */

#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
#define CREATEPROCESS_MANIFEST_RESOURCE_ID  1
#endif
#ifndef RT_MANIFEST
#define RT_MANIFEST  24
#endif

#define _STR(macro)   _STR_(macro)
#define _STR_(macro)  #macro

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST
BEGIN
  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>"
  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">"
    "<assemblyIdentity name=""The curl executable"" version="""
      _STR(LIBCURL_VERSION_MAJOR) "."
      _STR(LIBCURL_VERSION_MINOR) "."
      _STR(LIBCURL_VERSION_PATCH) ".0"" type=""win32""/>"
    "<compatibility xmlns=""urn:schemas-microsoft-com:compatibility.v1"">"
      "<application>"
        "<supportedOS Id=""{e2011457-1546-43c5-a5fe-008deee3d3f0}""/>"  /* Vista / Server 2008 */
        "<supportedOS Id=""{35138b9a-5d96-4fbd-8e2d-a2440225f93a}""/>"  /* 7 / Server 2008 R2 */
        "<supportedOS Id=""{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}""/>"  /* 8 / Server 2012 */
        "<supportedOS Id=""{1f676c76-80e1-4239-95bb-83d0f6d0da78}""/>"  /* 8.1 / Server 2012 R2 */
        "<supportedOS Id=""{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}""/>"  /* 10 / Server 2016 */
      "</application>"
    "</compatibility>"
    "<trustInfo xmlns=""urn:schemas-microsoft-com:asm.v3"">"
      "<security>"
        "<requestedPrivileges>"
          "<requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>"
        "</requestedPrivileges>"
      "</security>"
    "</trustInfo>"
  "</assembly>"
END

#endif
