xref: /aosp_15_r20/external/mbedtls/programs/test/CMakeLists.txt (revision 62c56f9862f102b96d72393aff6076c951fb8148)
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