diff options
Diffstat (limited to 'vcpkg/ports/metrohash')
| -rw-r--r-- | vcpkg/ports/metrohash/CMakeLists.txt | 69 | ||||
| -rw-r--r-- | vcpkg/ports/metrohash/Config.cmake.in | 4 | ||||
| -rw-r--r-- | vcpkg/ports/metrohash/portfile.cmake | 29 | ||||
| -rw-r--r-- | vcpkg/ports/metrohash/vcpkg.json | 17 |
4 files changed, 119 insertions, 0 deletions
diff --git a/vcpkg/ports/metrohash/CMakeLists.txt b/vcpkg/ports/metrohash/CMakeLists.txt new file mode 100644 index 0000000..d63a713 --- /dev/null +++ b/vcpkg/ports/metrohash/CMakeLists.txt @@ -0,0 +1,69 @@ +cmake_minimum_required(VERSION 3.5) +project(metrohash LANGUAGES CXX) +set(CMAKE_CXX_STANDARD 11) + +add_library(metrohash + src/metrohash64.cpp + src/metrohash128.cpp + ) +list(APPEND metro_headers src/metrohash.h src/metrohash64.h src/metrohash128.h) + +include(CheckCXXSourceCompiles) +include(CheckCXXCompilerFlag) + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + check_cxx_compiler_flag("-msse4.2" HAS_MSSE42) + if(HAS_MSSE42) + target_compile_options(metrohash PRIVATE -msse4.2) + string(APPEND CMAKE_REQUIRED_FLAGS " -msse4.2") + endif() +endif() + +check_cxx_source_compiles( +"#include <nmmintrin.h> +int main() { + _mm_crc32_u64(0, 0); + return 0; +}" +HAS_mm_crc32_u64) + +if(HAS_mm_crc32_u64) + list(APPEND metro_headers src/metrohash128crc.h) + target_sources(metrohash PRIVATE src/metrohash128crc.cpp) +endif() +if(CMAKE_CXX_COMPILER_ID MATCHES GNU) + target_compile_options(metrohash PRIVATE -march=native) +endif() + +set_target_properties(metrohash PROPERTIES + PUBLIC_HEADER "${metro_headers}" + ) + +include(CMakePackageConfigHelpers) + +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") +set(config_install_dir "lib/cmake/${PROJECT_NAME}") +set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") +set(namespace "${PROJECT_NAME}::") + +configure_package_config_file( + "${CMAKE_SOURCE_DIR}/cmake/Config.cmake.in" + "${project_config}" + INSTALL_DESTINATION "${config_install_dir}" +) +#Installation +install(TARGETS metrohash + EXPORT "${TARGETS_EXPORT_NAME}" + LIBRARY DESTINATION "lib" + ARCHIVE DESTINATION "lib" + PUBLIC_HEADER DESTINATION "include") + +install( + FILES "${project_config}" + DESTINATION "${config_install_dir}" +) +install(EXPORT "${TARGETS_EXPORT_NAME}" + NAMESPACE "${namespace}" + DESTINATION "${config_install_dir}" + ) diff --git a/vcpkg/ports/metrohash/Config.cmake.in b/vcpkg/ports/metrohash/Config.cmake.in new file mode 100644 index 0000000..38bbde7 --- /dev/null +++ b/vcpkg/ports/metrohash/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/vcpkg/ports/metrohash/portfile.cmake b/vcpkg/ports/metrohash/portfile.cmake new file mode 100644 index 0000000..f4c669b --- /dev/null +++ b/vcpkg/ports/metrohash/portfile.cmake @@ -0,0 +1,29 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO jandrewrogers/MetroHash + REF v1.1.3 + SHA512 02b6316e5ebf3d81465eea8a068565452be642394ddf5a53350affbbc9b9bfe1c3d182f7e8f7d49895351c48e11929e465777535e4354e01b6d0ba459e583ac5 + HEAD_REF master +) + +file(COPY "${CURRENT_PORT_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") +configure_file("${CURRENT_PORT_DIR}/Config.cmake.in" "${SOURCE_PATH}/cmake/Config.cmake.in" COPYONLY) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) +vcpkg_copy_pdbs() + +if(NOT EXISTS "${CURRENT_PACKAGES_DIR}/include/metrohash128crc.h") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/metrohash.h" + "#include \"metrohash128crc.h\"" + "//#include \"metrohash128crc.h\" // The target platform does not support _mm_crc32_u64") +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/vcpkg/ports/metrohash/vcpkg.json b/vcpkg/ports/metrohash/vcpkg.json new file mode 100644 index 0000000..f12705e --- /dev/null +++ b/vcpkg/ports/metrohash/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "metrohash", + "version": "1.1.3", + "port-version": 5, + "description": "MetroHash is a set of state-of-the-art hash functions for non-cryptographic use cases", + "homepage": "https://github.com/jandrewrogers/MetroHash", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |