1*62c56f98SSadaf Ebrahimiset(libs 2*62c56f98SSadaf Ebrahimi ${mbedtls_target} 3*62c56f98SSadaf Ebrahimi) 4*62c56f98SSadaf Ebrahimi 5*62c56f98SSadaf Ebrahimiset(executables_libs 6*62c56f98SSadaf Ebrahimi query_included_headers 7*62c56f98SSadaf Ebrahimi selftest 8*62c56f98SSadaf Ebrahimi udp_proxy 9*62c56f98SSadaf Ebrahimi) 10*62c56f98SSadaf Ebrahimi 11*62c56f98SSadaf Ebrahimiset(executables_mbedcrypto 12*62c56f98SSadaf Ebrahimi benchmark 13*62c56f98SSadaf Ebrahimi query_compile_time_config 14*62c56f98SSadaf Ebrahimi zeroize 15*62c56f98SSadaf Ebrahimi) 16*62c56f98SSadaf Ebrahimi 17*62c56f98SSadaf Ebrahimiif(TEST_CPP) 18*62c56f98SSadaf Ebrahimi set(cpp_dummy_build_cpp "${CMAKE_CURRENT_BINARY_DIR}/cpp_dummy_build.cpp") 19*62c56f98SSadaf Ebrahimi set(generate_cpp_dummy_build "${CMAKE_CURRENT_SOURCE_DIR}/generate_cpp_dummy_build.sh") 20*62c56f98SSadaf Ebrahimi add_custom_command( 21*62c56f98SSadaf Ebrahimi OUTPUT "${cpp_dummy_build_cpp}" 22*62c56f98SSadaf Ebrahimi COMMAND "${generate_cpp_dummy_build}" "${cpp_dummy_build_cpp}" 23*62c56f98SSadaf Ebrahimi DEPENDS "${generate_cpp_dummy_build}" 24*62c56f98SSadaf Ebrahimi WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 25*62c56f98SSadaf Ebrahimi ) 26*62c56f98SSadaf Ebrahimi add_executable(cpp_dummy_build "${cpp_dummy_build_cpp}") 27*62c56f98SSadaf Ebrahimi target_include_directories(cpp_dummy_build PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include) 28*62c56f98SSadaf Ebrahimi target_link_libraries(cpp_dummy_build ${mbedcrypto_target}) 29*62c56f98SSadaf Ebrahimiendif() 30*62c56f98SSadaf Ebrahimi 31*62c56f98SSadaf Ebrahimiif(USE_SHARED_MBEDTLS_LIBRARY AND 32*62c56f98SSadaf Ebrahimi NOT ${CMAKE_SYSTEM_NAME} MATCHES "[Ww][Ii][Nn]") 33*62c56f98SSadaf Ebrahimi add_executable(dlopen "dlopen.c") 34*62c56f98SSadaf Ebrahimi target_include_directories(dlopen PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include) 35*62c56f98SSadaf Ebrahimi target_link_libraries(dlopen ${CMAKE_DL_LIBS}) 36*62c56f98SSadaf Ebrahimiendif() 37*62c56f98SSadaf Ebrahimi 38*62c56f98SSadaf Ebrahimiif(GEN_FILES) 39*62c56f98SSadaf Ebrahimi find_package(Perl REQUIRED) 40*62c56f98SSadaf Ebrahimi 41*62c56f98SSadaf Ebrahimi add_custom_command( 42*62c56f98SSadaf Ebrahimi OUTPUT 43*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_BINARY_DIR}/query_config.c 44*62c56f98SSadaf Ebrahimi COMMAND 45*62c56f98SSadaf Ebrahimi ${PERL} 46*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl 47*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h 48*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_config.h 49*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt 50*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_BINARY_DIR}/query_config.c 51*62c56f98SSadaf Ebrahimi DEPENDS 52*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl 53*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h 54*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_config.h 55*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt 56*62c56f98SSadaf Ebrahimi ) 57*62c56f98SSadaf Ebrahimi # this file will also be used in another directory, so create a target, see 58*62c56f98SSadaf Ebrahimi # https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#how-can-i-add-a-dependency-to-a-source-file-which-is-generated-in-a-subdirectory 59*62c56f98SSadaf Ebrahimi add_custom_target(generate_query_config_c 60*62c56f98SSadaf Ebrahimi DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/query_config.c) 61*62c56f98SSadaf Ebrahimielse() 62*62c56f98SSadaf Ebrahimi link_to_source(query_config.c) 63*62c56f98SSadaf Ebrahimiendif() 64*62c56f98SSadaf Ebrahimi 65*62c56f98SSadaf Ebrahimiforeach(exe IN LISTS executables_libs executables_mbedcrypto) 66*62c56f98SSadaf Ebrahimi set(extra_sources "") 67*62c56f98SSadaf Ebrahimi if(exe STREQUAL "query_compile_time_config") 68*62c56f98SSadaf Ebrahimi list(APPEND extra_sources 69*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_SOURCE_DIR}/query_config.h 70*62c56f98SSadaf Ebrahimi ${CMAKE_CURRENT_BINARY_DIR}/query_config.c) 71*62c56f98SSadaf Ebrahimi endif() 72*62c56f98SSadaf Ebrahimi add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test> 73*62c56f98SSadaf Ebrahimi ${extra_sources}) 74*62c56f98SSadaf Ebrahimi target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include) 75*62c56f98SSadaf Ebrahimi if(exe STREQUAL "query_compile_time_config") 76*62c56f98SSadaf Ebrahimi target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) 77*62c56f98SSadaf Ebrahimi endif() 78*62c56f98SSadaf Ebrahimi 79*62c56f98SSadaf Ebrahimi # This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3 80*62c56f98SSadaf Ebrahimi list(FIND executables_libs ${exe} exe_index) 81*62c56f98SSadaf Ebrahimi if (${exe_index} GREATER -1) 82*62c56f98SSadaf Ebrahimi target_link_libraries(${exe} ${libs}) 83*62c56f98SSadaf Ebrahimi else() 84*62c56f98SSadaf Ebrahimi target_link_libraries(${exe} ${mbedcrypto_target}) 85*62c56f98SSadaf Ebrahimi endif() 86*62c56f98SSadaf Ebrahimiendforeach() 87*62c56f98SSadaf Ebrahimi 88*62c56f98SSadaf Ebrahimiinstall(TARGETS ${executables_libs} ${executables_mbedcrypto} 89*62c56f98SSadaf Ebrahimi DESTINATION "bin" 90*62c56f98SSadaf Ebrahimi PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) 91