mirror of https://github.com/microsoft/vcpkg.git
[yubico-piv-tool] Add new port (#50590)
This commit is contained in:
parent
45c49259e4
commit
6bb5d895fb
|
|
@ -0,0 +1,111 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -63,10 +63,12 @@
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
- if((NOT GETOPT_LIB_DIR) OR (NOT GETOPT_INCLUDE_DIR))
|
||||
- message(FATAL_ERROR "please provide definitions for "
|
||||
- "GETOPT_LIB_DIR and GETOPT_INCLUDE_DIR when building "
|
||||
- "under msvc")
|
||||
+ if(NOT BUILD_ONLY_LIB)
|
||||
+ if((NOT GETOPT_LIB_DIR) OR (NOT GETOPT_INCLUDE_DIR))
|
||||
+ message(FATAL_ERROR "please provide definitions for "
|
||||
+ "GETOPT_LIB_DIR and GETOPT_INCLUDE_DIR when building "
|
||||
+ "under msvc")
|
||||
+ endif()
|
||||
endif()
|
||||
if(SUPRESS_MSVC_WARNINGS)
|
||||
set(MSVC_DISABLED_WARNINGS_LIST
|
||||
@@ -93,7 +95,7 @@
|
||||
else()
|
||||
find_package (PkgConfig REQUIRED)
|
||||
|
||||
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
|
||||
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat -Wformat-security")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow -Wpointer-arith")
|
||||
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
|
||||
--- a/lib/CMakeLists.txt
|
||||
+++ b/lib/CMakeLists.txt
|
||||
@@ -79,38 +79,43 @@
|
||||
endif(BUILD_STATIC_LIB)
|
||||
|
||||
# dynamic library
|
||||
-add_library(ykpiv_shared SHARED ${SOURCE})
|
||||
-target_link_libraries(ykpiv_shared ${LIBCRYPTO_LIBRARIES} ${PCSC_LIBRARIES} ${ZLIB_LIBS} ${ADDITIONAL_LIBRARY})
|
||||
-set_target_properties(ykpiv_shared PROPERTIES SOVERSION ${SO_VERSION} VERSION ${VERSION})
|
||||
-if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
- set_target_properties(ykpiv_shared PROPERTIES INSTALL_RPATH "${YKPIV_INSTALL_LIB_DIR}")
|
||||
-endif()
|
||||
-if(WIN32)
|
||||
- set_target_properties(ykpiv_shared PROPERTIES OUTPUT_NAME libykpiv)
|
||||
-else(WIN32)
|
||||
- set_target_properties(ykpiv_shared PROPERTIES OUTPUT_NAME ykpiv)
|
||||
-endif(WIN32)
|
||||
-add_coverage(ykpiv_shared)
|
||||
+if(NOT BUILD_STATIC_LIB)
|
||||
+ add_library(ykpiv_shared SHARED ${SOURCE})
|
||||
+ target_link_libraries(ykpiv_shared ${LIBCRYPTO_LIBRARIES} ${PCSC_LIBRARIES} ${ZLIB_LIBS} ${ADDITIONAL_LIBRARY})
|
||||
+ set_target_properties(ykpiv_shared PROPERTIES SOVERSION ${SO_VERSION} VERSION ${VERSION})
|
||||
+ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
+ set_target_properties(ykpiv_shared PROPERTIES INSTALL_RPATH "${YKPIV_INSTALL_LIB_DIR}")
|
||||
+ endif()
|
||||
+ if(WIN32)
|
||||
+ set_target_properties(ykpiv_shared PROPERTIES OUTPUT_NAME libykpiv)
|
||||
+ else(WIN32)
|
||||
+ set_target_properties(ykpiv_shared PROPERTIES OUTPUT_NAME ykpiv)
|
||||
+ endif(WIN32)
|
||||
+ add_coverage(ykpiv_shared)
|
||||
+endif()
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ykpiv.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/ykpiv.pc @ONLY)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ykpiv-config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/ykpiv-config.h @ONLY)
|
||||
|
||||
-install(
|
||||
- TARGETS ykpiv_shared
|
||||
- ARCHIVE DESTINATION ${YKPIV_INSTALL_LIB_DIR}
|
||||
- LIBRARY DESTINATION ${YKPIV_INSTALL_LIB_DIR}
|
||||
- RUNTIME DESTINATION ${YKPIV_INSTALL_BIN_DIR})
|
||||
-if(BUILD_STATIC_LIB)
|
||||
- install(
|
||||
+if(NOT BUILD_STATIC_LIB)
|
||||
+ install(
|
||||
+ TARGETS ykpiv_shared
|
||||
+ ARCHIVE DESTINATION ${YKPIV_INSTALL_LIB_DIR}
|
||||
+ LIBRARY DESTINATION ${YKPIV_INSTALL_LIB_DIR}
|
||||
+ RUNTIME DESTINATION ${YKPIV_INSTALL_BIN_DIR})
|
||||
+else()
|
||||
+ install(
|
||||
TARGETS ykpiv
|
||||
ARCHIVE DESTINATION ${YKPIV_INSTALL_LIB_DIR}
|
||||
LIBRARY DESTINATION ${YKPIV_INSTALL_LIB_DIR}
|
||||
RUNTIME DESTINATION ${YKPIV_INSTALL_BIN_DIR})
|
||||
-endif(BUILD_STATIC_LIB)
|
||||
+endif()
|
||||
|
||||
install(FILES ykpiv.h DESTINATION ${YKPIV_INSTALL_INC_DIR}/ykpiv)
|
||||
install(FILES ykpiv-config.h DESTINATION ${YKPIV_INSTALL_INC_DIR}/ykpiv)
|
||||
|
||||
install(FILES ykpiv.pc DESTINATION ${YKPIV_INSTALL_PKGCONFIG_DIR})
|
||||
|
||||
-add_subdirectory(tests)
|
||||
+if(NOT DEFINED SKIP_TESTS)
|
||||
+ add_subdirectory(tests)
|
||||
+endif()
|
||||
diff --git a/lib/ykpiv.pc.in b/lib/ykpiv.pc.in
|
||||
--- a/lib/ykpiv.pc.in
|
||||
+++ b/lib/ykpiv.pc.in
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
-libdir=@YKPIV_INSTALL_LIB_DIR@
|
||||
-includedir=@YKPIV_INSTALL_INC_DIR@
|
||||
+libdir=${prefix}/@YKPIV_INSTALL_LIB_DIR@
|
||||
+includedir=${prefix}/@YKPIV_INSTALL_INC_DIR@
|
||||
|
||||
Name: @CMAKE_PROJECT_NAME@
|
||||
Description: Yubico PIV C Library
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://developers.yubico.com/yubico-piv-tool/Releases/yubico-piv-tool-${VERSION}.tar.gz"
|
||||
FILENAME "yubico-piv-tool-${VERSION}.tar.gz"
|
||||
SHA512 2bac8a875c7c5c3d1e5e8ec84fc70b37fc5b08985ef7ef96f6a9eaf5be882eeb9b1dbfb6cc0d6f5c00586f625cefa38c2d34d0e5aef5164be7274162af3554b8
|
||||
)
|
||||
|
||||
vcpkg_extract_source_archive(SOURCE_PATH
|
||||
ARCHIVE "${ARCHIVE}"
|
||||
PATCHES
|
||||
patches/fix-build-system.patch
|
||||
)
|
||||
|
||||
# Map vcpkg linkage to upstream's BUILD_STATIC_LIB option
|
||||
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" YKPIV_BUILD_STATIC)
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
DISABLE_PARALLEL_CONFIGURE
|
||||
OPTIONS
|
||||
-DBUILD_ONLY_LIB=ON
|
||||
-DBUILD_STATIC_LIB=${YKPIV_BUILD_STATIC}
|
||||
-DSKIP_TESTS=1
|
||||
-DENABLE_HARDWARE_TESTS=OFF
|
||||
-DGENERATE_MAN_PAGES=OFF
|
||||
-DENABLE_COVERAGE=OFF
|
||||
-DENABLE_CERT_COMPRESS=ON
|
||||
-DYKPIV_INSTALL_LIB_DIR=lib
|
||||
-DYKPIV_INSTALL_INC_DIR=include
|
||||
-DYKPIV_INSTALL_BIN_DIR=bin
|
||||
-DYKPIV_INSTALL_PKGCONFIG_DIR=lib/pkgconfig
|
||||
MAYBE_UNUSED_VARIABLES
|
||||
SKIP_TESTS # Not consumed when BUILD_ONLY_LIB is ON
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
vcpkg_copy_pdbs()
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
# Remove duplicate/unnecessary dirs from debug
|
||||
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
|
||||
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
|
||||
|
||||
# Install unofficial CMake config
|
||||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/unofficial-libykpiv-config.cmake"
|
||||
DESTINATION "${CURRENT_PACKAGES_DIR}/share/unofficial-libykpiv")
|
||||
|
||||
# Install usage instructions
|
||||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage"
|
||||
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
|
||||
|
||||
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
include(CMakeFindDependencyMacro)
|
||||
|
||||
find_dependency(OpenSSL)
|
||||
find_dependency(ZLIB)
|
||||
|
||||
if(NOT TARGET unofficial::libykpiv::ykpiv)
|
||||
add_library(unofficial::libykpiv::ykpiv UNKNOWN IMPORTED)
|
||||
|
||||
find_library(_unofficial_ykpiv_library_release
|
||||
NAMES ykpiv ykpiv_static libykpiv
|
||||
PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
find_library(_unofficial_ykpiv_library_debug
|
||||
NAMES ykpiv ykpiv_static libykpiv
|
||||
PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
# Transitive dependencies
|
||||
set(_ykpiv_link_libs OpenSSL::Crypto ZLIB::ZLIB)
|
||||
if(WIN32)
|
||||
list(APPEND _ykpiv_link_libs winscard ws2_32)
|
||||
elseif(APPLE)
|
||||
list(APPEND _ykpiv_link_libs "-framework PCSC")
|
||||
else()
|
||||
find_library(_unofficial_ykpiv_pcsclite pcsclite)
|
||||
if(NOT _unofficial_ykpiv_pcsclite)
|
||||
message(FATAL_ERROR "libpcsclite not found.")
|
||||
endif()
|
||||
list(APPEND _ykpiv_link_libs ${_unofficial_ykpiv_pcsclite})
|
||||
endif()
|
||||
|
||||
set_target_properties(unofficial::libykpiv::ykpiv PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/../../include"
|
||||
INTERFACE_LINK_LIBRARIES "${_ykpiv_link_libs}"
|
||||
)
|
||||
|
||||
if(_unofficial_ykpiv_library_release)
|
||||
set_property(TARGET unofficial::libykpiv::ykpiv APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(unofficial::libykpiv::ykpiv PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${_unofficial_ykpiv_library_release}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(_unofficial_ykpiv_library_debug)
|
||||
set_property(TARGET unofficial::libykpiv::ykpiv APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(unofficial::libykpiv::ykpiv PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${_unofficial_ykpiv_library_debug}"
|
||||
)
|
||||
endif()
|
||||
|
||||
unset(_ykpiv_link_libs)
|
||||
endif()
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
yubico-piv-tool provides CMake targets:
|
||||
|
||||
find_package(unofficial-libykpiv CONFIG REQUIRED)
|
||||
target_link_libraries(main PRIVATE unofficial::libykpiv::ykpiv)
|
||||
|
||||
yubico-piv-tool provides pkg-config modules:
|
||||
|
||||
# Yubico PIV C Library
|
||||
ykpiv
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"name": "yubico-piv-tool",
|
||||
"version": "2.7.3",
|
||||
"description": "YubiKey PIV library (libykpiv) for interacting with the PIV application on a YubiKey",
|
||||
"homepage": "https://github.com/Yubico/yubico-piv-tool",
|
||||
"license": "BSD-2-Clause",
|
||||
"supports": "!android & !ios",
|
||||
"dependencies": [
|
||||
"openssl",
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
},
|
||||
"zlib"
|
||||
]
|
||||
}
|
||||
|
|
@ -716,6 +716,8 @@ xbitmaps:x64-android=fail
|
|||
xbitmaps:x64-linux=fail
|
||||
xdigest:arm64-linux=fail
|
||||
yara:arm64-linux=fail
|
||||
yubico-piv-tool:arm64-linux=fail # requires system libpcsclite-dev
|
||||
yubico-piv-tool:x64-linux=fail # requires system libpcsclite-dev
|
||||
z3:arm64-linux=fail
|
||||
zeroc-ice:arm-neon-android=fail
|
||||
zeroc-ice:arm64-android=fail
|
||||
|
|
|
|||
|
|
@ -1541,6 +1541,8 @@ xdigest:arm64-linux=fail
|
|||
xerces-c[xmlch-wchar](!windows)=feature-fails # wchar_t must be 16 bit and not 32
|
||||
yara:arm64-linux=fail
|
||||
yoctolib:arm64-linux=cascade
|
||||
yubico-piv-tool:arm64-linux=fail # requires system libpcsclite-dev
|
||||
yubico-piv-tool:x64-linux=fail # requires system libpcsclite-dev
|
||||
z3:arm64-linux=fail
|
||||
zeroc-ice:arm64-linux=fail
|
||||
zeroc-ice[icediscovery]:x64-windows-static-md=cascade
|
||||
|
|
|
|||
|
|
@ -11020,6 +11020,10 @@
|
|||
"baseline": "1.6.0",
|
||||
"port-version": 0
|
||||
},
|
||||
"yubico-piv-tool": {
|
||||
"baseline": "2.7.3",
|
||||
"port-version": 0
|
||||
},
|
||||
"yyjson": {
|
||||
"baseline": "0.12.0",
|
||||
"port-version": 0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "40436deb11b8ddf2267cb5d4633d1853040316b1",
|
||||
"version": "2.7.3",
|
||||
"port-version": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue