1include(RunCMake) 2 3function(run_compiler_launcher lang) 4 # Preserve build tree so we can reuse it for the ${lang}-Build subtest below 5 set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-build) 6 set(RunCMake_TEST_NO_CLEAN 1) 7 file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") 8 file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") 9 run_cmake(${lang}) 10 11 set(RunCMake_TEST_OUTPUT_MERGE 1) 12 if("${RunCMake_GENERATOR}" MATCHES "Ninja") 13 set(verbose_args -- -v) 14 endif() 15 run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args}) 16endfunction() 17 18function(run_compiler_launcher_env lang) 19 string(REGEX REPLACE "-.*" "" core_lang "${lang}") 20 set(ENV{CMAKE_${core_lang}_COMPILER_LAUNCHER} "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") 21 run_compiler_launcher(${lang}) 22 unset(ENV{CMAKE_${core_lang}_COMPILER_LAUNCHER}) 23endfunction() 24 25set(langs C CXX) 26if(CMake_TEST_CUDA) 27 list(APPEND langs CUDA) 28endif() 29if(CMake_TEST_Fortran) 30 list(APPEND langs Fortran) 31endif() 32if(CMake_TEST_HIP) 33 list(APPEND langs HIP) 34endif() 35if(CMake_TEST_ISPC) 36 list(APPEND langs ISPC) 37endif() 38if(CMake_TEST_OBJC) 39 list(APPEND langs OBJC OBJCXX) 40endif() 41 42foreach(lang ${langs}) 43 run_compiler_launcher(${lang}) 44 run_compiler_launcher_env(${lang}-env) 45 if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") 46 run_compiler_launcher(${lang}-launch) 47 run_compiler_launcher_env(${lang}-launch-env) 48 endif() 49endforeach() 50