diff options
| author | myd7349 <myd7349@gmail.com> | 2019-09-18 00:45:16 +0800 |
|---|---|---|
| committer | Curtis J Bezault <curtbezault@gmail.com> | 2019-09-17 09:45:16 -0700 |
| commit | b0282fea7d6d97cfc238e99027ab3e6470ac2b6e (patch) | |
| tree | 30ec702368e0b79b4ae19cb7f75bffae3d36527f | |
| parent | b41a4fa161ca810fe7e323c7c9e00ca12c5fabd3 (diff) | |
| download | vcpkg-b0282fea7d6d97cfc238e99027ab3e6470ac2b6e.tar.gz vcpkg-b0282fea7d6d97cfc238e99027ab3e6470ac2b6e.zip | |
[foonathan-memory] Add new port (#7350)
* [foonathan-memory] Add new port
* [foonathan-memory] Update to 2019-07-21
* [foonathan-memory] Always install nodesize_dbg
Otherwise, container_node_sizes_impl.hpp will not be generated correctly.
* [foonathan-memory] Build only static library
* [foonathan-memory] Put headers into the right place
* [foonathan-memory] Fix debug_fill_new/debug_fill_free/debug_fill_internal redefinition error in Debug mode (LNK2005)
* [foonathan-memory] Fix Linux build
| -rw-r--r-- | ports/foonathan-memory/CONTROL | 8 | ||||
| -rw-r--r-- | ports/foonathan-memory/portfile.cmake | 128 |
2 files changed, 136 insertions, 0 deletions
diff --git a/ports/foonathan-memory/CONTROL b/ports/foonathan-memory/CONTROL new file mode 100644 index 000000000..51c0ad7f2 --- /dev/null +++ b/ports/foonathan-memory/CONTROL @@ -0,0 +1,8 @@ +Source: foonathan-memory
+Version: 2019-07-21
+Description: STL compatible C++ memory allocator library
+Homepage: https://foonathan.net/doc/memory/
+Default-Features: tool
+
+Feature: tool
+Description: Build foonathan memory tool
diff --git a/ports/foonathan-memory/portfile.cmake b/ports/foonathan-memory/portfile.cmake new file mode 100644 index 000000000..e813d4517 --- /dev/null +++ b/ports/foonathan-memory/portfile.cmake @@ -0,0 +1,128 @@ +include(vcpkg_common_functions)
+
+# WINDOWS_EXPORT_ALL_SYMBOLS doesn't work.
+# unresolved external symbol "public: static unsigned int const foonathan::memory::detail::memory_block_stack::implementation_offset
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO foonathan/memory
+ REF 885a9d97bebe9a2f131d21d3c0928c42ab377c8b
+ SHA512 7ce78a6e67d590a41b7f8a3d4ae0f6c1fa157c561b718a63973dffc000df74a9f0a0d7955a099e84fbeb3cf4085092eb866a6b8cec8bafd50bdcee94d069f65d
+ HEAD_REF master
+)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH COMP_SOURCE_PATH
+ REPO foonathan/compatibility
+ REF cd142129e30f5b3e6c6d96310daf94242c0b03bf
+ SHA512 1d144f82ec46dcc546ee292846330d39536a3145e5a5d8065bda545f55699aeb9a4ef7dea5e5f684ce2327fad210488fe6bb4ba7f84ceac867ac1c72b90c6d69
+ HEAD_REF master
+)
+
+file(COPY ${COMP_SOURCE_PATH}/comp_base.cmake DESTINATION ${SOURCE_PATH}/cmake/comp)
+
+vcpkg_check_features(tool FOONATHAN_MEMORY_BUILD_TOOLS)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DFOONATHAN_MEMORY_BUILD_EXAMPLES=OFF
+ -DFOONATHAN_MEMORY_BUILD_TESTS=OFF
+ -DFOONATHAN_MEMORY_BUILD_TOOLS=${FOONATHAN_MEMORY_BUILD_TOOLS}
+)
+
+vcpkg_install_cmake()
+
+if(EXISTS ${CURRENT_PACKAGES_DIR}/cmake)
+ vcpkg_fixup_cmake_targets(CONFIG_PATH cmake TARGET_PATH share/foonathan_memory)
+elseif(EXISTS ${CURRENT_PACKAGES_DIR}/share/foonathan_memory/cmake)
+ vcpkg_fixup_cmake_targets(CONFIG_PATH share/foonathan_memory/cmake TARGET_PATH share/foonathan_memory)
+endif()
+
+vcpkg_copy_pdbs()
+
+# Place header files into the right folders
+# The original layout is not a problem for CMake-based project.
+file(COPY
+ ${CURRENT_PACKAGES_DIR}/include/foonathan_memory/foonathan
+ DESTINATION ${CURRENT_PACKAGES_DIR}/include
+)
+file(GLOB
+ COMP_INCLUDE_FILES
+ ${CURRENT_PACKAGES_DIR}/include/foonathan_memory/comp/foonathan/*.hpp
+)
+file(COPY
+ ${COMP_INCLUDE_FILES}
+ DESTINATION ${CURRENT_PACKAGES_DIR}/include/foonathan
+)
+file(COPY
+ ${CURRENT_PACKAGES_DIR}/include/foonathan_memory/config_impl.hpp
+ DESTINATION ${CURRENT_PACKAGES_DIR}/include/foonathan/memory
+)
+file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/include/foonathan_memory
+)
+vcpkg_replace_string(
+ ${CURRENT_PACKAGES_DIR}/share/foonathan_memory/foonathan_memory-config.cmake
+ "\${_IMPORT_PREFIX}/include/foonathan_memory/comp;\${_IMPORT_PREFIX}/include/foonathan_memory"
+ "\${_IMPORT_PREFIX}/include"
+)
+# Place header files into the right folders - Done!
+
+# The Debug version of this lib is built with:
+# #define FOONATHAN_MEMORY_DEBUG_FILL 1
+# and Release version is built with:
+# #define FOONATHAN_MEMORY_DEBUG_FILL 0
+# We only have the Release version header files installed, however.
+vcpkg_replace_string(
+ ${CURRENT_PACKAGES_DIR}/include/foonathan/memory/detail/debug_helpers.hpp
+ "#if FOONATHAN_MEMORY_DEBUG_FILL"
+ "#ifndef NDEBUG //#if FOONATHAN_MEMORY_DEBUG_FILL"
+)
+
+file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/debug/include
+ ${CURRENT_PACKAGES_DIR}/debug/share
+)
+
+file(REMOVE
+ ${CURRENT_PACKAGES_DIR}/debug/LICENSE
+ ${CURRENT_PACKAGES_DIR}/debug/README.md
+ ${CURRENT_PACKAGES_DIR}/LICENSE
+ ${CURRENT_PACKAGES_DIR}/README.md
+)
+
+if(FOONATHAN_MEMORY_BUILD_TOOLS)
+ if(NOT VCPKG_CMAKE_SYSTEM_NAME OR
+ VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(EXECUTABLE_SUFFIX ".exe")
+ else()
+ set(EXECUTABLE_SUFFIX "")
+ endif()
+
+ file(COPY
+ ${CURRENT_PACKAGES_DIR}/bin/nodesize_dbg${EXECUTABLE_SUFFIX}
+ DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}
+ )
+ vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
+
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/bin
+ ${CURRENT_PACKAGES_DIR}/debug/bin
+ )
+ else()
+ file(REMOVE
+ ${CURRENT_PACKAGES_DIR}/bin/nodesize_dbg${EXECUTABLE_SUFFIX}
+ ${CURRENT_PACKAGES_DIR}/debug/bin/nodesize_dbg${EXECUTABLE_SUFFIX}
+ )
+ endif()
+endif()
+
+# Handle copyright
+configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
+
+# CMake integration test
+vcpkg_test_cmake(PACKAGE_NAME ${PORT})
|
