@@ -491,39 +491,46 @@ find_package(JSONC REQUIRED)
491491# Set variable required by libclamav to use libjson-c
492492set (HAVE_JSON 1)
493493
494+ set (LLVM_MAX_VER "13" )
495+ set (LLVM_MIN_VER "8" )
496+
494497string (TOLOWER ${BYTECODE_RUNTIME} bytecodeRuntime)
495498if (${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 ()
528535endif ()
529536
0 commit comments