a8e309e01d
In cmake version < 3.0, the SOURCES property on targets cannot be
modified after the target is defined. There are several instances in
the code that were using `target_properties()`, which is not available
in the older versions of cmake. Unfortunately, the workaround in #3801
(381c1078fc
) assumes that this SOURCES property can be modified.
Work around this by building up any necessary sources before declaring
the target. This is more awkward, but needed to continue to be able to
support the old versions of cmake.
Fixes #3788.
Signed-off-by: David Brown <david.brown@linaro.org>
55 lines
1.2 KiB
CMake
55 lines
1.2 KiB
CMake
set(libs
|
|
${mbedtls_target}
|
|
)
|
|
|
|
if(USE_PKCS11_HELPER_LIBRARY)
|
|
set(libs ${libs} pkcs11-helper)
|
|
endif(USE_PKCS11_HELPER_LIBRARY)
|
|
|
|
if(ENABLE_ZLIB_SUPPORT)
|
|
set(libs ${libs} ${ZLIB_LIBRARIES})
|
|
endif(ENABLE_ZLIB_SUPPORT)
|
|
|
|
find_library(FUZZINGENGINE_LIB FuzzingEngine)
|
|
if(FUZZINGENGINE_LIB)
|
|
project(fuzz CXX)
|
|
endif()
|
|
|
|
set(executables_no_common_c
|
|
fuzz_privkey
|
|
fuzz_pubkey
|
|
fuzz_x509crl
|
|
fuzz_x509crt
|
|
fuzz_x509csr
|
|
)
|
|
|
|
set(executables_with_common_c
|
|
fuzz_client
|
|
fuzz_dtlsclient
|
|
fuzz_dtlsserver
|
|
fuzz_server
|
|
)
|
|
|
|
foreach(exe IN LISTS executables_no_common_c executables_with_common_c)
|
|
|
|
set(exe_sources ${exe}.c $<TARGET_OBJECTS:mbedtls_test>)
|
|
if(NOT FUZZINGENGINE_LIB)
|
|
list(APPEND exe_sources onefile.c)
|
|
endif()
|
|
|
|
# This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3
|
|
list(FIND executables_with_common_c ${exe} exe_index)
|
|
if(${exe_index} GREATER -1)
|
|
list(APPEND exe_sources common.c)
|
|
endif()
|
|
|
|
add_executable(${exe} ${exe_sources})
|
|
|
|
if (NOT FUZZINGENGINE_LIB)
|
|
target_link_libraries(${exe} ${libs})
|
|
else()
|
|
target_link_libraries(${exe} ${libs} FuzzingEngine)
|
|
SET_TARGET_PROPERTIES(${exe} PROPERTIES LINKER_LANGUAGE CXX)
|
|
endif()
|
|
|
|
endforeach()
|