65 lines
2.5 KiB
CMake
65 lines
2.5 KiB
CMake
include(GNUInstallDirs)
|
|
execute_process(
|
|
COMMAND git log -1 --format=%h
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if (USE_ENCODING_LIB)
|
|
include(ExternalProject)
|
|
set(encoder_LIBRARY ${CMAKE_BINARY_DIR}/install/lib/${CMAKE_STATIC_LIBRARY_PREFIX}qsc_key_encoder${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
set(encoder_LIBRARY_INCLUDE ${CMAKE_BINARY_DIR}/install/include)
|
|
ExternalProject_Add(encoder
|
|
GIT_REPOSITORY https://github.com/Quantum-Safe-Collaboration/qsc-key-encoder.git
|
|
GIT_TAG main
|
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/install -DCMAKE_BUILD_TYPE=Release
|
|
UPDATE_DISCONNECTED 1
|
|
BUILD_BYPRODUCTS ${encoder_LIBRARY}
|
|
)
|
|
add_library(qsc_key_encoder STATIC IMPORTED)
|
|
set_target_properties(qsc_key_encoder PROPERTIES IMPORTED_LOCATION ${encoder_LIBRARY})
|
|
endif()
|
|
add_definitions(-DOQSPROVIDER_VERSION_TEXT="${OQSPROVIDER_VERSION_TEXT}")
|
|
message(STATUS "Building commit ${GIT_COMMIT_HASH} in ${CMAKE_SOURCE_DIR}")
|
|
add_definitions(-DOQS_PROVIDER_COMMIT=" \(${GIT_COMMIT_HASH}\)")
|
|
if (NOT WIN32)
|
|
add_compile_options(-Wunused-function)
|
|
endif()
|
|
set(PROVIDER_SOURCE_FILES
|
|
oqsprov.c oqsprov_capabilities.c oqsprov_keys.c
|
|
oqs_kmgmt.c oqs_sig.c oqs_kem.c
|
|
oqs_encode_key2any.c oqs_endecoder_common.c oqs_decode_der2key.c oqsprov_bio.c
|
|
oqsprov.def
|
|
)
|
|
set(PROVIDER_HEADER_FILES
|
|
oqs_prov.h oqs_endecoder_local.h
|
|
)
|
|
add_library(oqsprovider SHARED ${PROVIDER_SOURCE_FILES})
|
|
if (USE_ENCODING_LIB)
|
|
add_dependencies(oqsprovider encoder)
|
|
endif()
|
|
set_target_properties(oqsprovider
|
|
PROPERTIES
|
|
PREFIX ""
|
|
OUTPUT_NAME "oqsprovider"
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
VERSION ${OQSPROVIDER_VERSION_TEXT}
|
|
SOVERSION 1
|
|
# For Windows DLLs
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
|
target_link_libraries(oqsprovider OQS::oqs ${OPENSSL_CRYPTO_LIBRARY})
|
|
if (USE_ENCODING_LIB)
|
|
target_link_libraries(oqsprovider qsc_key_encoder)
|
|
target_include_directories(oqsprovider PRIVATE ${encoder_LIBRARY_INCLUDE})
|
|
endif()
|
|
install(TARGETS oqsprovider
|
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
RUNTIME DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
|
set(CPACK_GENERATOR "DEB")
|
|
set(CPACK_PACKAGE_VENDOR "www.openquantumsafe.org")
|
|
set(CPACK_PACKAGE_VERSION ${OQSPROVIDER_VERSION_TEXT})
|
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, openssl (>= 3.0.0)")
|
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "www.openquantumsafe.org")
|
|
include(CPack)
|
|
|