gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 54/163: curl.rc: embed manifest for correct Windows


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 54/163: curl.rc: embed manifest for correct Windows version detection
Date: Sun, 05 Aug 2018 12:36:20 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit ebd213270a017a6830928ee2e1f4a9cabc799898
Author: Viktor Szakats <address@hidden>
AuthorDate: Wed May 30 12:08:26 2018 +0000

    curl.rc: embed manifest for correct Windows version detection
    
    * enable it in `src/Makefile.m32`
    * enable it in `winbuild/MakefileBuild.vc` if a custom manifest is
      _not_ enabled via the existing `EMBED_MANIFEST` option
    * enable it for all Windows CMake builds (also disable the built-in
      minimal manifest, added by CMake by default.)
    
    For other build systems, add the `-DCURL_EMBED_MANIFEST` option to
    the list of RC (Resource Compiler) flags to enable the manifest
    included in `src/curl.rc`. This may require to disable whatever
    automatic or other means in which way another manifest is added to
    `curl.exe`.
    
    Notice that Borland C doesn't support this method due to a
    long-pending resource compiler bug. Watcom C may also not handle
    it correctly when the `-zm` `wrc` option is used (this option may
    be unnecessary though) and regardless of options in certain earlier
    revisions of the 2.0 beta version.
    
    Closes https://github.com/curl/curl/pull/1221
    Fixes https://github.com/curl/curl/issues/2591
---
 CMakeLists.txt            |  8 +++++++-
 src/Makefile.m32          |  4 ++--
 src/curl.rc               | 50 ++++++++++++++++++++++++++++++++++++++++++++++-
 winbuild/MakefileBuild.vc |  4 +++-
 4 files changed, 61 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b85e1f58d..e8cdcc555 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1107,12 +1107,18 @@ include(CMake/OtherTests.cmake)
 
 add_definitions(-DHAVE_CONFIG_H)
 
-# For windows, all compilers used by cmake should support large files
+# For Windows, all compilers used by CMake should support large files
 if(WIN32)
   set(USE_WIN32_LARGE_FILES ON)
+
+  # Use the manifest embedded in the Windows Resource
+  set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST")
 endif(WIN32)
 
 if(MSVC)
+  # Disable default manifest added by CMake
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+
   add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
   if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
     string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
diff --git a/src/Makefile.m32 b/src/Makefile.m32
index 700cccfa8..33e4ecfc2 100644
--- a/src/Makefile.m32
+++ b/src/Makefile.m32
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1999 - 2017, Daniel Stenberg, <address@hidden>, et al.
+# Copyright (C) 1999 - 2018, Daniel Stenberg, <address@hidden>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -107,7 +107,7 @@ CFLAGS      += -fno-strict-aliasing
 LDFLAGS        = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s
 AR     = $(CURL_AR)
 RC     = $(CROSSPREFIX)windres
-RCFLAGS        = --include-dir=$(PROOT)/include -O COFF
+RCFLAGS        = --include-dir=$(PROOT)/include -O COFF -DCURL_EMBED_MANIFEST
 STRIP  = $(CROSSPREFIX)strip -g
 
 # We may need these someday
diff --git a/src/curl.rc b/src/curl.rc
index 5f49d2236..d47f50635 100644
--- a/src/curl.rc
+++ b/src/curl.rc
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -61,3 +61,51 @@ 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
diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc
index 51ebfb867..019a414a0 100644
--- a/winbuild/MakefileBuild.vc
+++ b/winbuild/MakefileBuild.vc
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1999 - 2017, Daniel Stenberg, <address@hidden>, et al.
+# Copyright (C) 1999 - 2018, Daniel Stenberg, <address@hidden>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -352,6 +352,8 @@ GEN_PDB = true
 
 !IFDEF EMBED_MANIFEST
 MANIFESTTOOL = $(MT) -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest 
-outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1
+!ELSE
+CURL_RC_FLAGS = $(CURL_RC_FLAGS) /dCURL_EMBED_MANIFEST
 !ENDIF
 
 # Runtime library configuration

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]