Skip to content

Commit 1341cff

Browse files
authored
Implement CMake LLVM version overrides; add hard MAX and MIN version
1 parent 6fffae9 commit 1341cff

1 file changed

Lines changed: 30 additions & 23 deletions

File tree

CMakeLists.txt

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -491,39 +491,46 @@ find_package(JSONC REQUIRED)
491491
# Set variable required by libclamav to use libjson-c
492492
set(HAVE_JSON 1)
493493

494+
set(LLVM_MAX_VER "13")
495+
set(LLVM_MIN_VER "8")
496+
494497
string (TOLOWER ${BYTECODE_RUNTIME} bytecodeRuntime)
495498
if(${bytecodeRuntime} STREQUAL "llvm")
496-
set (LLVM_FIND_VERSION "8.0.0")
497-
find_package(LLVM REQUIRED)
499+
if(DEFINED LLVM_ROOT_DIR AND DEFINED LLVM_FIND_VERSION)
500+
find_package(LLVM EXACT ${LLVM_FIND_VERSION} REQUIRED HINTS ${LLVM_ROOT_DIR})
501+
elseif(DEFINED LLVM_ROOT_DIR)
502+
find_package(LLVM REQUIRED HINTS ${LLVM_ROOT_DIR})
503+
elseif(DEFINED LLVM_FIND_VERSION)
504+
find_package(LLVM EXACT ${LLVM_FIND_VERSION} REQUIRED)
505+
else()
506+
set (LLVM_FIND_VERSION ${LLVM_MIN_VER})
507+
find_package(LLVM REQUIRED)
508+
endif()
498509
if(LLVM_FOUND)
499510
if (LLVM_AVAILABLE_LIBS)
500-
# Found using LLVMConfig.cmake
501-
message("LLVM found using LLVMConfig.cmake")
502-
set(LLVM_VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR})
511+
message(STATUS "LLVM found using LLVMConfig.cmake")
503512
set(LLVM_LIBRARIES ${LLVM_AVAILABLE_LIBS})
504-
505-
if (${LLVM_PACKAGE_VERSION} VERSION_LESS "8.0.0")
506-
message(FATAL "LLVM version ${LLVM_PACKAGE_VERSION} is too old")
507-
endif()
508-
509513
else()
510-
# Found using FindLLVM.cmake
511-
message("LLVM found using FindLLVM.cmake")
514+
message(STATUS "LLVM found using FindLLVM.cmake")
515+
set(LLVM_PACKAGE_VERSION ${LLVM_VERSION_STRING})
512516

513-
# Set variable required by libclamav to use llvm instead of interpreter
514-
set(LLVM_VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR})
515-
message("LLVM_FOUND ${LLVM_FOUND}")
516-
517-
if (${LLVM_VERSION_STRING} VERSION_GREATER_EQUAL "9.0.0")
518-
if (${LLVM_VERSION_STRING} VERSION_LESS "10.0.0")
519-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG")
520-
endif()
517+
if (${LLVM_VERSION_STRING} VERSION_GREATER_EQUAL "9.0.0" AND ${LLVM_VERSION_STRING} VERSION_LESS "10.0.0")
518+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG")
521519
endif()
520+
endif()
522521

523-
if (${LLVM_VERSION_STRING} VERSION_LESS "8.0.0")
524-
message(FATAL "LLVM version ${LLVM_VERSION_STRING} is too old")
525-
endif()
522+
math(EXPR TOO_HIGH_VERSION "${LLVM_MAX_VER} + 1" OUTPUT_FORMAT DECIMAL)
523+
524+
if(${LLVM_PACKAGE_VERSION} VERSION_LESS ${LLVM_MIN_VER})
525+
message(FATAL_ERROR "LLVM version ${LLVM_PACKAGE_VERSION} is too old")
526+
elseif (${LLVM_PACKAGE_VERSION} VERSION_GREATER_EQUAL ${TOO_HIGH_VERSION} )
527+
message(FATAL_ERROR "LLVM version ${LLVM_PACKAGE_VERSION} is too new")
528+
else()
529+
message(STATUS "LLVM version ${LLVM_PACKAGE_VERSION} found")
526530
endif()
531+
532+
# Set variable required by libclamav to use llvm instead of interpreter
533+
set(LLVM_VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR})
527534
endif()
528535
endif()
529536

0 commit comments

Comments
 (0)