From 1f9c73454bfdf26f70f6976bc633deecc3bef22a Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Thu, 22 Feb 2018 05:16:06 -0800 Subject: [mman] Fix static linkage. Fixes #2856. --- ports/mman/CONTROL | 2 +- ports/mman/mman-static.patch | 33 +++++++++++++++++++++++++++++++++ ports/mman/portfile.cmake | 19 ++++++++++++------- 3 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 ports/mman/mman-static.patch 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 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() -- cgit v1.2.3