/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 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.
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#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",   "Copyright (C) " CURL_COPYRIGHT "\0"
      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
