Fix try_compile failure
For unknown reasons, CMake does not propagate the compiler settings to the try_compile process but instead forwards the toolchain directly. This is weird.
This commit is contained in:
@@ -20,6 +20,14 @@ cmake_minimum_required(VERSION 3.30...4.0)
|
||||
include_guard(GLOBAL)
|
||||
list(APPEND CMAKE_MESSAGE_INDENT "[Ninja] ")
|
||||
|
||||
# Necessary for propagation into the try_compile CMake subprocesses. It's unclear why this is not the default behavior.
|
||||
foreach(_T IN ITEMS CMAKE_MAKE_PROGRAM)
|
||||
if(DEFINED ENV{${_T}})
|
||||
set(${_T} "$ENV{${_T}}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT IS_EXECUTABLE CMAKE_MAKE_PROGRAM)
|
||||
# Try and figure out what processor we need to get binaries for.
|
||||
if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows")
|
||||
string(TOLOWER "$ENV{PROCESSOR_ARCHITECTURE}" _ARCH)
|
||||
@@ -157,4 +165,6 @@ elseif(IS_EXECUTABLE "${NINJA_BIN}")
|
||||
endif()
|
||||
|
||||
set(CMAKE_MAKE_PROGRAM "${NINJA_BIN}" CACHE STRING "" FORCE)
|
||||
endif()
|
||||
|
||||
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||
@@ -20,10 +20,26 @@ cmake_minimum_required(VERSION 3.30...4.0)
|
||||
include_guard(GLOBAL)
|
||||
list(APPEND CMAKE_MESSAGE_INDENT "[LLVM] ")
|
||||
|
||||
if(CMAKE_C_COMPILER OR CMAKE_CXX_COMPILER)
|
||||
return()
|
||||
# Necessary for propagation into the try_compile CMake subprocesses. It's unclear why this is not the default behavior.
|
||||
foreach(_T IN ITEMS CMAKE_AR CMAKE_RANLIB CMAKE_LINKER CMAKE_C_COMPILER CMAKE_C_COMPILER_AR CMAKE_C_COMPILER_RANLIB CMAKE_C_COMPILER_LINKER CMAKE_C_COMPILER_LINKER_ID CMAKE_C_COMPILER_LINKER_VERSION CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER_AR CMAKE_CXX_COMPILER_RANLIB CMAKE_CXX_COMPILER_LINKER CMAKE_CXX_COMPILER_LINKER_ID CMAKE_CXX_COMPILER_LINKER_VERSION CMAKE_ASM_COMPILER CMAKE_ASM_COMPILER_AR CMAKE_ASM_COMPILER_RANLIB CMAKE_ASM_COMPILER_LINKER CMAKE_ASM_COMPILER_LINKER_ID CMAKE_ASM_COMPILER_LINKER_VERSION CMAKE_RC_COMPILER CMAKE_RC_COMPILER_AR CMAKE_RC_COMPILER_RANLIB CMAKE_RC_COMPILER_LINKER CMAKE_RC_COMPILER_LINKER_ID CMAKE_RC_COMPILER_LINKER_VERSION)
|
||||
if(DEFINED ENV{${_T}})
|
||||
set(${_T} "$ENV{${_T}}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(
|
||||
(NOT IS_EXECUTABLE CMAKE_C_COMPILER) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_C_COMPILER_AR) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_C_COMPILER_RANLIB) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_C_COMPILER_LINKER) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER_AR) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER_RANLIB) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER_LINKER) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_LINKER) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_RANLIB) OR
|
||||
(NOT IS_EXECUTABLE CMAKE_AR)
|
||||
)
|
||||
# Try and figure out what processor we need to get binaries for.
|
||||
set(LLVM_VERSION "19.1.7")
|
||||
if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows")
|
||||
@@ -328,8 +344,14 @@ if(LLVM_FOUND AND (LLVM_CLANG_VERSION VERSION_GREATER_EQUAL LLVM_VERSION))
|
||||
# set(CMAKE_STATIC_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||
# set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||
# set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
|
||||
|
||||
foreach(_T IN ITEMS CMAKE_AR CMAKE_RANLIB CMAKE_LINKER CMAKE_C_COMPILER CMAKE_C_COMPILER_AR CMAKE_C_COMPILER_RANLIB CMAKE_C_COMPILER_LINKER CMAKE_C_COMPILER_LINKER_ID CMAKE_C_COMPILER_LINKER_VERSION CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER_AR CMAKE_CXX_COMPILER_RANLIB CMAKE_CXX_COMPILER_LINKER CMAKE_CXX_COMPILER_LINKER_ID CMAKE_CXX_COMPILER_LINKER_VERSION CMAKE_ASM_COMPILER CMAKE_ASM_COMPILER_AR CMAKE_ASM_COMPILER_RANLIB CMAKE_ASM_COMPILER_LINKER CMAKE_ASM_COMPILER_LINKER_ID CMAKE_ASM_COMPILER_LINKER_VERSION CMAKE_RC_COMPILER CMAKE_RC_COMPILER_AR CMAKE_RC_COMPILER_RANLIB CMAKE_RC_COMPILER_LINKER CMAKE_RC_COMPILER_LINKER_ID CMAKE_RC_COMPILER_LINKER_VERSION)
|
||||
set(ENV{${_T}} "${${_T}}")
|
||||
endforeach()
|
||||
else()
|
||||
message(FATAL_ERROR "Failed to find or provide a compatible LLVM installation.")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||
Reference in New Issue
Block a user