mirror of
				https://github.com/Mbed-TLS/mbedtls.git
				synced 2025-10-28 23:14:56 +03:00 
			
		
		
		
	Allow CMake to generate query_config.c
This one was trickier for two reasons: 1. It's used from another directory, see https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#how-can-i-add-a-dependency-to-a-source-file-which-is-generated-in-a-subdirectory 2. The C file being generated after CMake is run means CMake can't automatically scan for included headers and do its usual magic, so we need to declare the dependency and more importantly the include path. Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
		
				
					committed by
					
						 David Horstmann
						David Horstmann
					
				
			
			
				
	
			
			
			
						parent
						
							3a8413d316
						
					
				
				
					commit
					86cfa6c27f
				
			| @@ -18,17 +18,32 @@ set(executables | |||||||
|     ssl_server2 |     ssl_server2 | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | # Inform CMake the the following file will be generated as part of the build | ||||||
|  | # process, so it doesn't complain that it doesn't exist yet. Starting from | ||||||
|  | # CMake 3.20, this will no longer be necessary as CMake will automatically | ||||||
|  | # propagate this information accross the tree, for now it's only visible | ||||||
|  | # inside the same directory, so we need to propagate manually. | ||||||
|  | set_source_files_properties( | ||||||
|  |     ${CMAKE_CURRENT_BINARY_DIR}/../test/query_config.c | ||||||
|  |     PROPERTIES GENERATED TRUE) | ||||||
|  |  | ||||||
| foreach(exe IN LISTS executables) | foreach(exe IN LISTS executables) | ||||||
|     set(extra_sources "") |     set(extra_sources "") | ||||||
|     if(exe STREQUAL "ssl_client2" OR exe STREQUAL "ssl_server2") |     if(exe STREQUAL "ssl_client2" OR exe STREQUAL "ssl_server2") | ||||||
|         list(APPEND extra_sources |         list(APPEND extra_sources | ||||||
|             ssl_test_lib.c |             ssl_test_lib.c | ||||||
|             ${CMAKE_CURRENT_SOURCE_DIR}/../test/query_config.c) |             ${CMAKE_CURRENT_SOURCE_DIR}/../test/query_config.h | ||||||
|  |             ${CMAKE_CURRENT_BINARY_DIR}/../test/query_config.c) | ||||||
|     endif() |     endif() | ||||||
|     add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test> |     add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test> | ||||||
|         ${extra_sources}) |         ${extra_sources}) | ||||||
|     target_link_libraries(${exe} ${libs}) |     target_link_libraries(${exe} ${libs}) | ||||||
|     target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include) |     target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include) | ||||||
|  |     if(exe STREQUAL "ssl_client2" OR exe STREQUAL "ssl_server2") | ||||||
|  |         add_dependencies(${exe} generate_query_config_c) | ||||||
|  |         target_include_directories(${exe} | ||||||
|  |             PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../test) | ||||||
|  |     endif() | ||||||
| endforeach() | endforeach() | ||||||
|  |  | ||||||
| if(THREADS_FOUND) | if(THREADS_FOUND) | ||||||
|   | |||||||
| @@ -27,15 +27,40 @@ if(TEST_CPP) | |||||||
|     target_link_libraries(cpp_dummy_build ${mbedcrypto_target}) |     target_link_libraries(cpp_dummy_build ${mbedcrypto_target}) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|  | find_package(Perl REQUIRED) | ||||||
|  |  | ||||||
|  | add_custom_command( | ||||||
|  |     OUTPUT | ||||||
|  |         ${CMAKE_CURRENT_BINARY_DIR}/query_config.c | ||||||
|  |     COMMAND | ||||||
|  |         ${PERL} | ||||||
|  |             ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl | ||||||
|  |             ${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h | ||||||
|  |             ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt | ||||||
|  |             ${CMAKE_CURRENT_BINARY_DIR}/query_config.c | ||||||
|  |     DEPENDS | ||||||
|  |         ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl | ||||||
|  |         ${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h | ||||||
|  |         ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt | ||||||
|  | ) | ||||||
|  | # this file will also be used in anoter directory, so create a target, see | ||||||
|  | # https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#how-can-i-add-a-dependency-to-a-source-file-which-is-generated-in-a-subdirectory | ||||||
|  | add_custom_target(generate_query_config_c | ||||||
|  |     DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/query_config.c) | ||||||
|  |  | ||||||
| foreach(exe IN LISTS executables_libs executables_mbedcrypto) | foreach(exe IN LISTS executables_libs executables_mbedcrypto) | ||||||
|     set(extra_sources "") |     set(extra_sources "") | ||||||
|     if(exe STREQUAL "query_compile_time_config") |     if(exe STREQUAL "query_compile_time_config") | ||||||
|         list(APPEND extra_sources |         list(APPEND extra_sources | ||||||
|             ${CMAKE_CURRENT_SOURCE_DIR}/query_config.c) |             ${CMAKE_CURRENT_SOURCE_DIR}/query_config.h | ||||||
|  |             ${CMAKE_CURRENT_BINARY_DIR}/query_config.c) | ||||||
|     endif() |     endif() | ||||||
|     add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test> |     add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test> | ||||||
|         ${extra_sources}) |         ${extra_sources}) | ||||||
|     target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include) |     target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include) | ||||||
|  |     if(exe STREQUAL "query_compile_time_config") | ||||||
|  |         target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) | ||||||
|  |     endif() | ||||||
|  |  | ||||||
|     # This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3 |     # This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3 | ||||||
|     list(FIND executables_libs ${exe} exe_index) |     list(FIND executables_libs ${exe} exe_index) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user