Added a new port hexl. (#18043)

This commit is contained in:
Wei Dai 2021-06-09 15:29:56 -07:00 committed by GitHub
parent 0c1b57592b
commit c423e49f43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 173 additions and 0 deletions

View File

@ -0,0 +1,101 @@
From 16095678843dadf13b0f786ddf53c726e837bc74 Mon Sep 17 00:00:00 2001
From: Wei Dai <wei.dai@microsoft.com>
Date: Tue, 8 Jun 2021 15:55:18 -0700
Subject: [PATCH] Disabled downloading cpu-features.
---
CMakeLists.txt | 9 ++++++++-
hexl/CMakeLists.txt | 15 ++++++---------
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 05e42f9..a7ad993 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,7 +183,14 @@ message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
#------------------------------------------------------------------------------
# Third-party code...
#------------------------------------------------------------------------------
-add_subdirectory(cmake/cpu-features)
+find_package(CpuFeatures CONFIG REQUIRED)
+if(CpuFeatures_FOUND)
+ add_library(cpu_features ALIAS CpuFeatures::cpu_features)
+ get_target_property(
+ CpuFeatures_INCLUDE_DIR
+ CpuFeatures::cpu_features
+ INTERFACE_INCLUDE_DIRECTORIES)
+endif()
if (HEXL_TESTING OR HEXL_BENCHMARK OR HEXL_DEBUG)
if(NOT TARGET Threads::Threads)
diff --git a/hexl/CMakeLists.txt b/hexl/CMakeLists.txt
index 7e603e3..b83a94e 100644
--- a/hexl/CMakeLists.txt
+++ b/hexl/CMakeLists.txt
@@ -44,6 +44,7 @@ target_include_directories(hexl
PUBLIC $<BUILD_INTERFACE:${HEXL_INC_ROOT_DIR}> # Public headers
PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> # Public headers
)
+target_include_directories(hexl PUBLIC ${CpuFeatures_INCLUDE_DIR}) # Public headers
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(hexl PRIVATE -Wall -Wconversion -Wshadow -pedantic -Wextra
@@ -74,7 +75,7 @@ else ()
# For proper export of IntelHEXLConfig.cmake / IntelHEXLTargts.cmake,
# we avoid explicitly linking dependencies via target_link_libraries, since
# this would add dependencies to the exported hexl target.
- add_dependencies(hexl cpu_features)
+ target_link_libraries(hexl PRIVATE cpu_features)
if (HEXL_DEBUG)
add_dependencies(hexl gflags)
# Manually add logging include directory
@@ -95,42 +96,38 @@ else ()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_custom_command(TARGET hexl POST_BUILD
COMMAND ar -x $<TARGET_FILE:hexl>
- COMMAND ar -x $<TARGET_FILE:cpu_features>
COMMAND ar -x $<TARGET_FILE:gflags>
COMMAND ar -x $<TARGET_FILE:easyloggingpp>
COMMAND ar -qcs $<TARGET_FILE:hexl> *.o
COMMAND rm -f *.o
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS hexl cpu_features gflags easyloggingpp
+ DEPENDS hexl gflags easyloggingpp
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_custom_command(TARGET hexl POST_BUILD
COMMAND lib.exe /OUT:$<TARGET_FILE:hexl>
$<TARGET_FILE:hexl>
- $<TARGET_FILE:cpu_features>
$<TARGET_FILE:gflags>
$<TARGET_FILE:easyloggingpp>
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS hexl cpu_features gflags easyloggingpp
+ DEPENDS hexl gflags easyloggingpp
)
endif()
else()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_custom_command(TARGET hexl POST_BUILD
COMMAND ar -x $<TARGET_FILE:hexl>
- COMMAND ar -x $<TARGET_FILE:cpu_features>
COMMAND ar -qcs $<TARGET_FILE:hexl> *.o
COMMAND rm -f *.o
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS hexl cpu_features
+ DEPENDS hexl
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_custom_command(TARGET hexl POST_BUILD
COMMAND lib.exe /OUT:$<TARGET_FILE:hexl>
$<TARGET_FILE:hexl>
- $<TARGET_FILE:cpu_features>
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS hexl cpu_features
+ DEPENDS hexl
)
endif()
endif()
--
2.25.1

41
ports/hexl/portfile.cmake Normal file
View File

@ -0,0 +1,41 @@
# This library only supports "x64" architecture
vcpkg_fail_port_install(ON_ARCH "x86" "arm" "arm64")
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO intel/hexl
REF 2dc1db6824be3fc89d13740efd0270ec9afec77e
SHA512 aaa80dc53a21586d763a2b84b40d60062020470988422601bc5e9c2b31c6263847a97ea8f956d002a95e2d5e843cafa96fabdfd8b8ee892c7a7b9747133adebb
HEAD_REF main
PATCHES disable_downloading_cpu_features.patch
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
set(HEXL_SHARED OFF)
else()
set(HEXL_SHARED ON)
endif()
vcpkg_cmake_configure(
SOURCE_PATH ${SOURCE_PATH}
DISABLE_PARALLEL_CONFIGURE
OPTIONS
"-DHEXL_DEBUG=OFF"
"-DHEXL_BENCHMARK=OFF"
"-DHEXL_EXPORT=ON"
"-DHEXL_COVERAGE=OFF"
"-DHEXL_TESTING=OFF"
"-DHEXL_SHARED_LIB=${HEXL_SHARED}"
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(PACKAGE_NAME "HEXL" CONFIG_PATH "lib/cmake")
vcpkg_fixup_pkgconfig()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME "copyright")
vcpkg_copy_pdbs()

18
ports/hexl/vcpkg.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "hexl",
"version": "1.1.0",
"description": "Intel® HEXL is an open-source library which provides efficient implementations of integer arithmetic on Galois fields.",
"homepage": "https://github.com/intel/hexl",
"supports": "x64 & !(windows & !static)",
"dependencies": [
"cpu-features",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View File

@ -2480,6 +2480,10 @@
"baseline": "15",
"port-version": 0
},
"hexl": {
"baseline": "1.1.0",
"port-version": 0
},
"hffix": {
"baseline": "1.0.0",
"port-version": 0

9
versions/h-/hexl.json Normal file
View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "7f5bcef6355a0cb88d04f4a3664568c74e2fd6bb",
"version": "1.1.0",
"port-version": 0
}
]
}