diff --git a/CMakeLists.txt b/CMakeLists.txt index d99a0230..eebbd913 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,13 +37,6 @@ set(QDP_DEEP_LOG ${QDP_ENABLE_DEEP_LOG}) #set(QDP_ENABLE_CUDA_NVCC "nvcc" CACHE STRING "Path to cuda NVCC") #set(CUDA_NVCC ${QDP_ENABLE_CUDA_NVCCC}) -option(QDP_ENABLE_LLVM14 "Enable changes to compile with LLVM14 release" OFF) -option(QDP_ENABLE_LLVM15 "Enable changes to compile with LLVM15 release" OFF) -option(QDP_ENABLE_LLVM16 "Enable changes to compile with LLVM16 release" OFF) -option(QDP_ENABLE_LLVM17 "Enable changes to compile with LLVM17 release" OFF) -option(QDP_ENABLE_LLVM18 "Enable changes to compile with LLVM18 release" OFF) -option(QDP_ENABLE_LLVM19 "Enable changes to compile with LLVM19 release" OFF) -option(QDP_ENABLE_LLVM20 "Enable changes to compile with LLVM20 pre-release" OFF) option(QDP_BUILD_EXAMPLES "Build examples" ON) option(QDP_PROP_OPT "Propagator optimizations" ON) @@ -54,28 +47,6 @@ if(QDP_ENABLE_CODEGEN_VECTOR) set(QDP_CODEGEN_VECTOR "1") endif() -if( QDP_ENABLE_LLVM14 ) - set(QDP_LLVM14 "1") -endif() -if( QDP_ENABLE_LLVM15 ) - set(QDP_LLVM15 "1") -endif() -if( QDP_ENABLE_LLVM16 ) - set(QDP_LLVM16 "1") -endif() -if( QDP_ENABLE_LLVM17 ) - set(QDP_LLVM17 "1") -endif() -if( QDP_ENABLE_LLVM18 ) - set(QDP_LLVM18 "1") -endif() -if( QDP_ENABLE_LLVM19 ) - set(QDP_LLVM19 "1") -endif() -if( QDP_ENABLE_LLVM20 ) - set(QDP_LLVM20 "1") -endif() - option(QDP_ENABLE_COMM_SPLIT_DEVICEINIT "Enable using MPI_Comm_split when initializing devices" OFF) if(QDP_ENABLE_COMM_SPLIT_DEVICEINIT) set(QDP_USE_COMM_SPLIT_INIT "1") @@ -285,23 +256,12 @@ check_function_exists("gethostname" HAVE_GETHOSTNAME) check_function_exists("strnlen" HAVE_STRNLEN) find_package(LLVM CONFIG REQUIRED) - -if(QDP_ENABLE_LLVM20 AND NOT LLVM_VERSION_MAJOR EQUAL 20) - message(FATAL_ERROR "LLVM 20.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM19 AND NOT LLVM_VERSION_MAJOR EQUAL 19) - message(FATAL_ERROR "LLVM 19.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM18 AND NOT LLVM_VERSION_MAJOR EQUAL 18) - message(FATAL_ERROR "LLVM 18.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM17 AND NOT LLVM_VERSION_MAJOR EQUAL 17) - message(FATAL_ERROR "LLVM 17.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM16 AND NOT LLVM_VERSION_MAJOR EQUAL 16) - message(FATAL_ERROR "LLVM 16.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM15 AND NOT LLVM_VERSION_MAJOR EQUAL 15) - message(FATAL_ERROR "LLVM 15.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM14 AND NOT LLVM_VERSION_MAJOR EQUAL 14) - message(FATAL_ERROR "LLVM 14.x required but found ${LLVM_PACKAGE_VERSION}") +if(LLVM_VERSION_MAJOR LESS 14) + message(FATAL_ERROR "QDP++: LLVM ${LLVM_PACKAGE_VERSION} is too old. Please use LLVM 14 or newer.") +elseif(LLVM_VERSION_MAJOR GREATER 20) + message(FATAL_ERROR "QDP++: LLVM ${LLVM_PACKAGE_VERSION} is too new. Please use LLVM 20 or older.") endif() - +set(QDP_LLVM${LLVM_VERSION_MAJOR} "1") message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") message(STATUS "Using LLVMConfig.cmake in ${LLVM_DIR}") diff --git a/QDPXXConfig.cmake.in b/QDPXXConfig.cmake.in index 8e939394..7c7b2692 100644 --- a/QDPXXConfig.cmake.in +++ b/QDPXXConfig.cmake.in @@ -68,38 +68,6 @@ if(QDP_ENABLE_CODEGEN_VECTOR) endif() - -set(QDP_ENABLE_LLVM14 @QDP_ENABLE_LLVM14@) -set(QDP_ENABLE_LLVM15 @QDP_ENABLE_LLVM15@) -set(QDP_ENABLE_LLVM16 @QDP_ENABLE_LLVM16@) -set(QDP_ENABLE_LLVM17 @QDP_ENABLE_LLVM17@) -set(QDP_ENABLE_LLVM18 @QDP_ENABLE_LLVM18@) -set(QDP_ENABLE_LLVM19 @QDP_ENABLE_LLVM19@) -set(QDP_ENABLE_LLVM20 @QDP_ENABLE_LLVM20@) - -if(QDP_ENABLE_LLVM14) - set(QDP_LLVM14 "1") -endif() -if(QDP_ENABLE_LLVM15) - set(QDP_LLVM15 "1") -endif() -if(QDP_ENABLE_LLVM16) - set(QDP_LLVM16 "1") -endif() -if(QDP_ENABLE_LLVM17) - set(QDP_LLVM17 "1") -endif() -if(QDP_ENABLE_LLVM18) - set(QDP_LLVM18 "1") -endif() -if(QDP_ENABLE_LLVM19) - set(QDP_LLVM19 "1") -endif() -if(QDP_ENABLE_LLVM20) - set(QDP_LLVM20 "1") -endif() - - set(QDP_PROP_OPT @QDP_PROP_OPT@) set(QDP_IS_QDPJIT 1) @@ -131,23 +99,11 @@ if("@QIO_DIR@" STREQUAL "") endif() -find_package(LLVM CONFIG REQUIRED) - -if(QDP_ENABLE_LLVM20 AND NOT LLVM_VERSION_MAJOR EQUAL 20) - message(FATAL_ERROR "LLVM 20.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM19 AND NOT LLVM_VERSION_MAJOR EQUAL 19) - message(FATAL_ERROR "LLVM 19.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM18 AND NOT LLVM_VERSION_MAJOR EQUAL 18) - message(FATAL_ERROR "LLVM 18.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM17 AND NOT LLVM_VERSION_MAJOR EQUAL 17) - message(FATAL_ERROR "LLVM 17.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM16 AND NOT LLVM_VERSION_MAJOR EQUAL 16) - message(FATAL_ERROR "LLVM 16.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM15 AND NOT LLVM_VERSION_MAJOR EQUAL 15) - message(FATAL_ERROR "LLVM 15.x required but found ${LLVM_PACKAGE_VERSION}") -elseif(QDP_ENABLE_LLVM14 AND NOT LLVM_VERSION_MAJOR EQUAL 14) - message(FATAL_ERROR "LLVM 14.x required but found ${LLVM_PACKAGE_VERSION}") +find_dependency(LLVM CONFIG REQUIRED) +if(NOT "${LLVM_PACKAGE_VERSION}" STREQUAL "@LLVM_PACKAGE_VERSION@") + message(FATAL_ERROR "QDP++: LLVM @LLVM_PACKAGE_VERSION@ required but found ${LLVM_PACKAGE_VERSION}") endif() +set(QDP_LLVM${LLVM_VERSION_MAJOR} "1") find_dependency(XPathReader REQUIRED)