Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / RunCMake / CompilerLauncher / RunCMakeTest.cmake
1 include(RunCMake)
2
3 function(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})
16 endfunction()
17
18 function(run_compiler_launcher_env lang)
19   string(REGEX REPLACE "-.*" "" core_lang "${lang}")
20   # Use the noop genexp $<PATH:...> genexp to validate genexp support.
21   set(ENV{CMAKE_${core_lang}_COMPILER_LAUNCHER} "$<PATH:CMAKE_PATH,${CMAKE_COMMAND}>;-E;env;USED_LAUNCHER=1")
22   run_compiler_launcher(${lang})
23   unset(ENV{CMAKE_${core_lang}_COMPILER_LAUNCHER})
24 endfunction()
25
26 set(langs C CXX)
27 if(CMake_TEST_CUDA)
28   list(APPEND langs CUDA)
29 endif()
30 if(CMake_TEST_Fortran)
31   list(APPEND langs Fortran)
32 endif()
33 if(CMake_TEST_HIP)
34   list(APPEND langs HIP)
35 endif()
36 if(CMake_TEST_ISPC)
37   list(APPEND langs ISPC)
38 endif()
39 if(CMake_TEST_OBJC)
40   list(APPEND langs OBJC OBJCXX)
41 endif()
42
43 foreach(lang ${langs})
44   run_compiler_launcher(${lang})
45   run_compiler_launcher_env(${lang}-env)
46   if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake")
47     run_compiler_launcher(${lang}-launch)
48     run_compiler_launcher_env(${lang}-launch-env)
49   endif()
50 endforeach()