aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-02-22 05:16:06 -0800
committerRobert Schumacher <roschuma@microsoft.com>2018-02-22 05:16:06 -0800
commit1f9c73454bfdf26f70f6976bc633deecc3bef22a (patch)
tree7d6827d8f0181a802431801e4cc078a8a0bff78c
parentfe41bfecd6bee02d16347802436a72e12b244d6d (diff)
downloadvcpkg-1f9c73454bfdf26f70f6976bc633deecc3bef22a.tar.gz
vcpkg-1f9c73454bfdf26f70f6976bc633deecc3bef22a.zip
[mman] Fix static linkage. Fixes #2856.
-rw-r--r--ports/mman/CONTROL2
-rw-r--r--ports/mman/mman-static.patch33
-rw-r--r--ports/mman/portfile.cmake19
3 files changed, 46 insertions, 8 deletions
diff --git a/ports/mman/CONTROL b/ports/mman/CONTROL
index 85eb7c8d3..f0ff4ec69 100644
--- a/ports/mman/CONTROL
+++ b/ports/mman/CONTROL
@@ -1,3 +1,3 @@
Source: mman
-Version: git-f5ff813
+Version: git-f5ff813-1
Description: A light implementation of the mmap functions for MinGW.
diff --git a/ports/mman/mman-static.patch b/ports/mman/mman-static.patch
new file mode 100644
index 000000000..ce7be4976
--- /dev/null
+++ b/ports/mman/mman-static.patch
@@ -0,0 +1,33 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4696ad4..a72bbce 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -8,6 +8,10 @@ option (BUILD_TESTS "tests?" OFF)
+ set (headers mman.h)
+ set (sources mman.c)
+
++if(NOT BUILD_SHARED_LIBS)
++ add_definitions(-DMMANSHARED_EXPORT=)
++endif()
++
+ add_library (mman ${sources})
+
+ install (TARGETS mman RUNTIME DESTINATION bin
+diff --git a/mman.h b/mman.h
+index 4065bc6..435ea26 100644
+--- a/mman.h
++++ b/mman.h
+@@ -15,11 +15,13 @@
+ #include <_mingw.h>
+ #endif
+
++#if !defined(MMANSHARED_EXPORT)
+ #if defined(MMAN_LIBRARY)
+ #define MMANSHARED_EXPORT __declspec(dllexport)
+ #else
+ #define MMANSHARED_EXPORT __declspec(dllimport)
+ #endif
++#endif
+
+ /* Determine offset type */
+ #include <stdint.h>
diff --git a/ports/mman/portfile.cmake b/ports/mman/portfile.cmake
index f0616f44d..88c23348e 100644
--- a/ports/mman/portfile.cmake
+++ b/ports/mman/portfile.cmake
@@ -8,16 +8,15 @@ vcpkg_from_github(
HEAD_REF master
)
-if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
- set(ENABLE_SHARED OFF)
-else()
- set(ENABLE_SHARED ON)
-endif()
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/mman-static.patch
+)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
- OPTIONS
- -DBUILD_SHARED_LIBS=${ENABLE_SHARED}
+ PREFER_NINJA
)
vcpkg_install_cmake()
@@ -25,4 +24,10 @@ vcpkg_install_cmake()
file(INSTALL ${SOURCE_PATH}/README.md DESTINATION ${CURRENT_PACKAGES_DIR}/share/mman RENAME copyright)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(READ ${CURRENT_PACKAGES_DIR}/include/sys/mman.h _contents)
+ string(REPLACE "__declspec(dllimport)" "" _contents "${_contents}")
+ file(WRITE ${CURRENT_PACKAGES_DIR}/include/sys/mman.h "${_contents}")
+endif()
+
vcpkg_copy_pdbs()