/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, 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.haxx.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.haxx.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.haxx.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
