CROSSCOMPILING_EMULATOR: Fix test generation for empty value

If CROSSCOMPILING_EMULATOR was set to an empty string, and a test
was generated with the executable as the command, CMake would segfault
upon trying to generate the test file. Fix this.

Fixes: #18819
This commit is contained in:
Kyle Edwards
2019-01-21 09:57:25 -05:00
parent 02f7e997e9
commit ab3b549ee0
2 changed files with 7 additions and 1 deletions

View File

@@ -90,7 +90,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
// Prepend with the emulator when cross compiling if required.
const char* emulator = target->GetProperty("CROSSCOMPILING_EMULATOR");
if (emulator != nullptr) {
if (emulator != nullptr && *emulator) {
std::vector<std::string> emulatorWithArgs;
cmSystemTools::ExpandListArgument(emulator, emulatorWithArgs);
std::string emulatorExe(emulatorWithArgs[0]);

View File

@@ -26,3 +26,9 @@ get_property(emulator TARGET target_without_emulator
if(NOT "${emulator}" STREQUAL "")
message(SEND_ERROR "Default CROSSCOMPILING_EMULATOR property not set to null")
endif()
add_executable(target_with_empty_emulator simple_src_exiterror.cxx)
set_property(TARGET target_with_empty_emulator PROPERTY CROSSCOMPILING_EMULATOR "")
enable_testing()
add_test(NAME test_target_with_empty_emulator COMMAND target_with_empty_emulator)