quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

CMakeLists.txt (4349B)


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