Skip to content

Commit c2d0589

Browse files
authored
[mono] Fail on LLVM version mismatch and add instructions for updating (#105873)
Follow-up to #105110.
1 parent 483db3e commit c2d0589

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

src/mono/CMakeLists.txt

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,11 @@ if(LLVM_PREFIX)
604604
file(STRINGS ${llvm_config_path} llvm_api_version_line REGEX "MONO_API_VERSION ")
605605
string(REGEX REPLACE ".*MONO_API_VERSION ([0-9]+)" "\\1" llvm_api_version ${llvm_api_version_line})
606606

607+
# IMPORTANT: when bumping LLVM make sure to rerun the llvm-config commands below and update the variables accordingly
608+
if (NOT ${llvm_api_version} EQUAL 1900)
609+
message(FATAL_ERROR "Unexpected LLVM version: ${llvm_api_version}.")
610+
endif()
611+
607612
# llvm-config --libs analysis core bitwriter mcjit orcjit
608613
set(MONO_llvm_core_libs "LLVMOrcJIT" "LLVMPasses" "LLVMIRPrinter" "LLVMHipStdPar" "LLVMCoroutines" "LLVMipo" "LLVMInstrumentation" "LLVMVectorize" "LLVMLinker" "LLVMFrontendOpenMP" "LLVMFrontendOffloading" "LLVMCodeGen" "LLVMScalarOpts" "LLVMInstCombine" "LLVMObjCARCOpts" "LLVMCodeGenTypes" "LLVMCFGuard" "LLVMAggressiveInstCombine" "LLVMTransformUtils" "LLVMWindowsDriver" "LLVMJITLink" "LLVMOption" "LLVMMCJIT" "LLVMExecutionEngine" "LLVMTarget" "LLVMRuntimeDyld" "LLVMOrcTargetProcess" "LLVMOrcShared" "LLVMBitWriter" "LLVMAnalysis" "LLVMProfileData" "LLVMSymbolize" "LLVMDebugInfoBTF" "LLVMDebugInfoPDB" "LLVMDebugInfoMSF" "LLVMDebugInfoDWARF" "LLVMObject" "LLVMTextAPI" "LLVMMCParser" "LLVMIRReader" "LLVMAsmParser" "LLVMMC" "LLVMDebugInfoCodeView" "LLVMBitReader" "LLVMCore" "LLVMRemarks" "LLVMBitstreamReader" "LLVMBinaryFormat" "LLVMTargetParser" "LLVMSupport" "LLVMDemangle")
609614

@@ -616,24 +621,16 @@ if(LLVM_PREFIX)
616621
# llvm-config --libs aarch64codegen
617622
set(MONO_llvm_extra_libs_aarch64codegen "LLVMAArch64CodeGen" "LLVMGlobalISel" "LLVMSelectionDAG" "LLVMCFGuard" "LLVMAsmPrinter" "LLVMCodeGen" "LLVMTarget" "LLVMScalarOpts" "LLVMInstCombine" "LLVMAggressiveInstCombine" "LLVMObjCARCOpts" "LLVMTransformUtils" "LLVMBitWriter" "LLVMAnalysis" "LLVMProfileData" "LLVMSymbolize" "LLVMDebugInfoBTF" "LLVMDebugInfoPDB" "LLVMDebugInfoMSF" "LLVMDebugInfoDWARF" "LLVMObject" "LLVMTextAPI" "LLVMMCParser" "LLVMIRReader" "LLVMAsmParser" "LLVMBitReader" "LLVMAArch64Desc" "LLVMCodeGenTypes" "LLVMAArch64Utils" "LLVMCore" "LLVMRemarks" "LLVMBitstreamReader" "LLVMAArch64Info" "LLVMMC" "LLVMDebugInfoCodeView" "LLVMBinaryFormat" "LLVMTargetParser" "LLVMSupport" "LLVMDemangle")
618623

619-
if(HOST_LINUX AND NOT HOST_WASM AND NOT HOST_WASI AND ${llvm_api_version} GREATER_EQUAL 1600)
624+
if(HOST_LINUX AND NOT HOST_WASM AND NOT HOST_WASI)
620625
set(MONO_stdlib "-nostdinc++ -nostdlib++")
621626
set(MONO_cxx_lib "-L${LLVM_PREFIX}/lib -lc++ -lc++abi")
622627
set(MONO_cxx_include "-isystem ${LLVM_PREFIX}/include/c++/v1")
623628
endif()
624629

625-
if(${llvm_api_version} GREATER_EQUAL 1600)
626-
if(HOST_WIN32)
627-
set(MONO_cxx_std_version "/std:c++17")
628-
else()
629-
set(MONO_cxx_std_version "-std=c++17")
630-
endif()
630+
if(HOST_WIN32)
631+
set(MONO_cxx_std_version "/std:c++17")
631632
else()
632-
if(HOST_WIN32)
633-
set(MONO_cxx_std_version "/std:c++14")
634-
else()
635-
set(MONO_cxx_std_version "-std=c++14")
636-
endif()
633+
set(MONO_cxx_std_version "-std=c++17")
637634
endif()
638635

639636
# llvm-config --cflags
@@ -672,10 +669,6 @@ if(LLVM_PREFIX)
672669
list(TRANSFORM llvm_libs PREPEND "${LLVM_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}")
673670
list(TRANSFORM llvm_libs APPEND "${CMAKE_STATIC_LIBRARY_SUFFIX}")
674671

675-
if (${llvm_api_version} LESS 1100)
676-
message(FATAL_ERROR "LLVM version too old.")
677-
endif()
678-
679672
set(ENABLE_LLVM 1)
680673
set(ENABLE_LLVM_RUNTIME 1)
681674
set(LLVM_LIBS ${llvm_libs} ${llvm_system_libs})

0 commit comments

Comments
 (0)