mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-04 04:32:24 -05:00 
			
		
		
		
	Generate programs/test/cpp_dummy_build.cpp dynamically instead of maintaining it manually. This removes the need to update it when the list of headers changes. Include all the headers unconditionally except for the ones that cannot be included directly. Support this dynamic generation both with make and with cmake. Adapt all.sh accordingly. Remove the redundant C build from component_build_default_make_gcc_and_cxx (it was also done in component_test_default_out_of_box), leaving a component_test_make_cxx. Also run the C++ program, because why not. Do this in the full configuration which may catch a bit more problems in headers. Fixes #2570 for good. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
set(libs
 | 
						|
    ${mbedtls_target}
 | 
						|
)
 | 
						|
 | 
						|
set(executables_libs
 | 
						|
    selftest
 | 
						|
    udp_proxy
 | 
						|
)
 | 
						|
 | 
						|
set(executables_mbedcrypto
 | 
						|
    benchmark
 | 
						|
    query_compile_time_config
 | 
						|
    zeroize
 | 
						|
)
 | 
						|
 | 
						|
if(TEST_CPP)
 | 
						|
    set(cpp_dummy_build_cpp "${CMAKE_CURRENT_BINARY_DIR}/cpp_dummy_build.cpp")
 | 
						|
    set(generate_cpp_dummy_build "${CMAKE_CURRENT_SOURCE_DIR}/generate_cpp_dummy_build.sh")
 | 
						|
    add_custom_command(
 | 
						|
        OUTPUT "${cpp_dummy_build_cpp}"
 | 
						|
        COMMAND "${generate_cpp_dummy_build}" "${cpp_dummy_build_cpp}"
 | 
						|
        DEPENDS "${generate_cpp_dummy_build}"
 | 
						|
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
 | 
						|
    )
 | 
						|
    add_executable(cpp_dummy_build "${cpp_dummy_build_cpp}")
 | 
						|
    target_include_directories(cpp_dummy_build PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
 | 
						|
    target_link_libraries(cpp_dummy_build ${mbedcrypto_target})
 | 
						|
endif()
 | 
						|
 | 
						|
foreach(exe IN LISTS executables_libs executables_mbedcrypto)
 | 
						|
    set(extra_sources "")
 | 
						|
    if(exe STREQUAL "query_compile_time_config")
 | 
						|
        list(APPEND extra_sources
 | 
						|
            ${CMAKE_CURRENT_SOURCE_DIR}/query_config.c)
 | 
						|
    endif()
 | 
						|
    add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>
 | 
						|
        ${extra_sources})
 | 
						|
    target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
 | 
						|
 | 
						|
    # This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3
 | 
						|
    list(FIND executables_libs ${exe} exe_index)
 | 
						|
    if (${exe_index} GREATER -1)
 | 
						|
        target_link_libraries(${exe} ${libs})
 | 
						|
    else()
 | 
						|
        target_link_libraries(${exe} ${mbedcrypto_target})
 | 
						|
    endif()
 | 
						|
endforeach()
 | 
						|
 | 
						|
install(TARGETS ${executables_libs} ${executables_mbedcrypto}
 | 
						|
        DESTINATION "bin"
 | 
						|
        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 |