diff --git a/Windows.Clang.toolchain.cmake b/Windows.Clang.toolchain.cmake index 14fbb96..72fec98 100644 --- a/Windows.Clang.toolchain.cmake +++ b/Windows.Clang.toolchain.cmake @@ -72,6 +72,10 @@ option(TOOLCHAIN_ADD_VS_NINJA_PATH "Whether the toolchain should add the path to set(UNUSED ${CMAKE_TOOLCHAIN_FILE}) # Note: only to prevent cmake unused variable warninig list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + CMAKE_C_COMPILER + CMAKE_CXX_COMPILER + CMAKE_MT + CMAKE_RC_COMPILER CMAKE_SYSTEM_PROCESSOR CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE CMAKE_VS_PRODUCTS @@ -183,32 +187,36 @@ else() message(FATAL_ERROR "Unable identify compiler architecture for CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}") endif() -set(TOOLCHAIN_C_COMPILER_EXE clang.exe) -if(CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL MSVC) - set(TOOLCHAIN_C_COMPILER_EXE clang-cl.exe) +if(NOT CMAKE_C_COMPILER) + set(TOOLCHAIN_C_COMPILER_EXE clang.exe) + if(CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL MSVC) + set(TOOLCHAIN_C_COMPILER_EXE clang-cl.exe) + endif() + + find_program(CMAKE_C_COMPILER + ${TOOLCHAIN_C_COMPILER_EXE} + HINTS + "${VS_INSTALLATION_PATH}/VC/Tools/Llvm/x64/bin" + "$ENV{ProgramFiles}/LLVM/bin" + REQUIRED + ) endif() -find_program(CMAKE_C_COMPILER - ${TOOLCHAIN_C_COMPILER_EXE} - HINTS - "${VS_INSTALLATION_PATH}/VC/Tools/Llvm/x64/bin" - "$ENV{ProgramFiles}/LLVM/bin" - REQUIRED -) +if(NOT CMAKE_CXX_COMPILER) + set(TOOLCHAIN_CXX_COMPILER_EXE clang++.exe) + if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL MSVC) + set(TOOLCHAIN_CXX_COMPILER_EXE clang-cl.exe) + endif() -set(TOOLCHAIN_CXX_COMPILER_EXE clang++.exe) -if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL MSVC) - set(TOOLCHAIN_CXX_COMPILER_EXE clang-cl.exe) + find_program(CMAKE_CXX_COMPILER + ${TOOLCHAIN_CXX_COMPILER_EXE} + HINTS + "${VS_INSTALLATION_PATH}/VC/Tools/Llvm/x64/bin" + "$ENV{ProgramFiles}/LLVM/bin" + REQUIRED + ) endif() -find_program(CMAKE_CXX_COMPILER - ${TOOLCHAIN_CXX_COMPILER_EXE} - HINTS - "${VS_INSTALLATION_PATH}/VC/Tools/Llvm/x64/bin" - "$ENV{ProgramFiles}/LLVM/bin" - REQUIRED -) - if(CMAKE_SYSTEM_PROCESSOR STREQUAL ARM) set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} /EHsc") endif() diff --git a/Windows.Kits.cmake b/Windows.Kits.cmake index b94bc22..1cddbfd 100644 --- a/Windows.Kits.cmake +++ b/Windows.Kits.cmake @@ -114,9 +114,14 @@ if(NOT EXISTS ${WINDOWS_KITS_LIB_PATH}) message(FATAL_ERROR "Windows SDK ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} cannot be found: Folder '${WINDOWS_KITS_LIB_PATH}' does not exist.") endif() -set(CMAKE_MT "${WINDOWS_KITS_BIN_PATH}/${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}/mt.exe") -set(CMAKE_RC_COMPILER_INIT "${WINDOWS_KITS_BIN_PATH}/${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}/rc.exe") -set(CMAKE_RC_FLAGS_INIT "/nologo") +if(NOT CMAKE_MT) + set(CMAKE_MT "${WINDOWS_KITS_BIN_PATH}/${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}/mt.exe") +endif() + +if((NOT CMAKE_RC_COMPILER) AND (NOT CMAKE_RC_COMPILER_INIT)) + set(CMAKE_RC_COMPILER_INIT "${WINDOWS_KITS_BIN_PATH}/${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}/rc.exe") + set(CMAKE_RC_FLAGS_INIT "/nologo") +endif() set(MIDL_COMPILER "${WINDOWS_KITS_BIN_PATH}/${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}/midl.exe") set(MDMERGE_TOOL "${WINDOWS_KITS_BIN_PATH}/${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}/mdmerge.exe") diff --git a/Windows.MSVC.toolchain.cmake b/Windows.MSVC.toolchain.cmake index ffe1b25..3de72ac 100644 --- a/Windows.MSVC.toolchain.cmake +++ b/Windows.MSVC.toolchain.cmake @@ -81,6 +81,10 @@ option(TOOLCHAIN_ADD_VS_NINJA_PATH "Whether the toolchain should add the path to set(UNUSED ${CMAKE_TOOLCHAIN_FILE}) # Note: only to prevent cmake unused variable warninig list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + CMAKE_C_COMPILER + CMAKE_CXX_COMPILER + CMAKE_MT + CMAKE_RC_COMPILER CMAKE_SYSTEM_PROCESSOR CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE CMAKE_VS_PRODUCTS