1- # Copyright 2017-2020 AVSystem <avsystem@avsystem.com>
1+ # Copyright 2021 AVSystem <avsystem@avsystem.com>
22#
33# Licensed under the Apache License, Version 2.0 (the "License");
44# you may not use this file except in compliance with the License.
1616
1717cmake_minimum_required (VERSION 3.6.0)
1818project (avs_commons C)
19- set (AVS_COMMONS_VERSION SNAPSHOT)
19+
20+ set (AVS_COMMONS_VERSION "4.7" )
2021
2122################# DISTRIBUTION #################################################
2223
2324set (AVS_COMMONS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} " )
2425set (AVS_COMMONS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /output" )
26+
27+ if (NOT "${CMAKE_SOURCE_DIR} " STREQUAL "${CMAKE_CURRENT_SOURCE_DIR} " )
28+ set (AVS_COMMONS_VERSION "${AVS_COMMONS_VERSION} " PARENT_SCOPE)
29+ set (AVS_COMMONS_SOURCE_DIR "${AVS_COMMONS_SOURCE_DIR} " PARENT_SCOPE)
30+ set (AVS_COMMONS_BINARY_DIR "${AVS_COMMONS_BINARY_DIR} " PARENT_SCOPE)
31+ endif ()
32+
2533set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${AVS_COMMONS_BINARY_DIR} /bin" )
2634set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${AVS_COMMONS_BINARY_DIR} /lib" )
2735set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${AVS_COMMONS_BINARY_DIR} /lib" )
@@ -268,6 +276,30 @@ if(NOT HAVE_MATH_LIBRARY)
268276 endif ()
269277endif ()
270278
279+ if (NOT DEFINED AVS_COMMONS_HAVE_DLSYM)
280+ # On Linux, one needs to link libdl to use dlsym(). On BSD, it is not necessary,
281+ # and even harmful, since libdl does not exist.
282+ set (DETECTED_DLSYM_LIBRARY "" CACHE STRING "" FORCE)
283+ set (CMAKE_REQUIRED_INCLUDES "dlfcn.h" )
284+ foreach (lib "" dl)
285+ message (STATUS "Looking for dlsym() in library: ${lib} " )
286+ set (CMAKE_REQUIRED_LIBRARIES ${lib} )
287+
288+ # check_function_exists caches its result; make sure the check is
289+ # actually repeated for each lib
290+ unset (AVS_COMMONS_HAVE_DLSYM CACHE )
291+ check_function_exists(dlsym AVS_COMMONS_HAVE_DLSYM)
292+ set (CMAKE_REQUIRED_LIBRARIES)
293+
294+ if (AVS_COMMONS_HAVE_DLSYM)
295+ set (DETECTED_DLSYM_LIBRARY "${lib} " CACHE STRING "" FORCE)
296+ break ()
297+ endif ()
298+ endforeach ()
299+ set (CMAKE_REQUIRED_INCLUDES)
300+ endif ()
301+ set (DLSYM_LIBRARY "${DETECTED_DLSYM_LIBRARY} " CACHE STRING "Name of the library containing dlsym() symbol" )
302+
271303option (WITH_IPV4 "Enable IPv4 support" ON )
272304option (WITH_IPV6 "Enable IPv6 support" ON )
273305
@@ -363,8 +395,10 @@ function(add_module_with_include_dirs)
363395 file (GLOB_RECURSE MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR} /${AMWID_PATH} /*.c
364396 ${CMAKE_CURRENT_SOURCE_DIR} /${AMWID_PATH} /*.h)
365397 foreach (F ${MODULE_FILES} )
366- add_test (NAME test_${F} _visibility COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /test_visibility.py ${F} )
367- add_test (NAME test_${F} _headers COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /test_headers.py ${F} )
398+ add_test (NAME test_${F} _visibility COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /test_visibility.py ${F} )
399+ add_test (NAME test_${F} _headers
400+ COMMAND ./test_headers.py ${F} conditional_headers_whitelist.json
401+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
368402 endforeach ()
369403 endif ()
370404endfunction ()
@@ -395,11 +429,11 @@ if(WITH_TEST)
395429
396430 # license check is only possible if running in a Git working tree
397431 if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR} /.git" )
398- add_custom_target (license_check COMMAND "${CMAKE_CURRENT_SOURCE_DIR} /tools/check-license-headers .py" --root "${CMAKE_CURRENT_SOURCE_DIR} " )
432+ add_custom_target (license_check COMMAND "${CMAKE_CURRENT_SOURCE_DIR} /tools/check_license_headers .py" --root "${CMAKE_CURRENT_SOURCE_DIR} " )
399433 add_dependencies (avs_commons_check license_check)
400434 endif ()
401435
402- add_custom_target (avs_commons_extern_c_check COMMAND "${CMAKE_CURRENT_SOURCE_DIR} /tools/check-extern-c .py" )
436+ add_custom_target (avs_commons_extern_c_check COMMAND "${CMAKE_CURRENT_SOURCE_DIR} /tools/check_extern_c .py" )
403437 add_dependencies (avs_commons_check avs_commons_extern_c_check)
404438
405439 add_custom_target (avs_commons_symbols_check COMMAND ${CMAKE_CTEST_COMMAND} -R "'^test_.*_symbols$$'" --output -on -failure)
@@ -412,7 +446,7 @@ if(WITH_TEST)
412446 add_dependencies (avs_commons_check avs_commons_headers_check)
413447
414448 add_custom_target (avs_commons_filename_check
415- COMMAND ! find src include_public -name "'*.[ch]'" | sed -e "'s|^.*/||'" | grep -v "'^avs_'"
449+ COMMAND ! find src include_public -name "'*.[ch]'" | sed -e "'s|^.*/||'" | grep -v "'^avs_'" | grep -v "'^pkcs11. \\ ? \\ .h'"
416450 COMMAND ! find src include_public -name "'*.[ch]'" | sed -e "'s|^.*/||'" | sort | uniq -c | grep -v "'^ *1 '"
417451 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} " )
418452 add_dependencies (avs_commons_check avs_commons_filename_check)
@@ -489,24 +523,9 @@ cmake_dependent_option(WITH_PKI "Enable X.509 certificate support" "${WITH_PKI_D
489523set (AVS_COMMONS_WITH_AVS_CRYPTO_PKI ${WITH_PKI} )
490524
491525# Hardware security engines
492- cmake_dependent_option(WITH_AVS_CRYPTO_ENGINE "Enable hardware-based security engine support" OFF WITH_OPENSSL OFF )
526+ cmake_dependent_option(WITH_AVS_CRYPTO_ENGINE "Enable hardware-based security engine support" OFF " WITH_OPENSSL OR WITH_MBEDTLS" OFF )
493527set (AVS_COMMONS_WITH_AVS_CRYPTO_ENGINE ${WITH_AVS_CRYPTO_ENGINE} )
494528
495- # SoftHSM module
496- # Used only in tests
497- find_library (SOFTHSM2_LIB NAMES softhsm2 PATHS /usr/lib/softhsm)
498-
499- # PKCS11
500- find_package (PkgConfig)
501- pkg_search_module(LIBP11 libp11 IMPORTED_TARGET)
502- cmake_dependent_option(WITH_OPENSSL_PKCS11_ENGINE "Enable OpenSSL pkcs11 support" ON "WITH_AVS_CRYPTO_ENGINE;LIBP11_FOUND;WITH_PKI" OFF )
503- set (AVS_COMMONS_WITH_OPENSSL_PKCS11_ENGINE ${WITH_OPENSSL_PKCS11_ENGINE} )
504- if (WITH_OPENSSL_PKCS11_ENGINE)
505- avs_add_find_routine("
506- find_package(PkgConfig REQUIRED)
507- pkg_search_module(LIBP11 REQUIRED libp11 IMPORTED_TARGET)" )
508- endif ()
509-
510529if (WITH_OPENSSL)
511530 avs_add_find_routine("find_package(OpenSSL REQUIRED)" )
512531endif ()
0 commit comments