Files
TheRock/compiler/hipify/CMakeLists.txt
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

473 lines
18 KiB
CMake
Executable File

cmake_minimum_required(VERSION 3.16.8)
project(hipify-clang)
include(GNUInstallDirs)
option(HIPIFY_CLANG_TESTS "Build HIPIFY tests, if lit is installed" OFF)
option(HIPIFY_CLANG_TESTS_ONLY "Build HIPIFY tests only, if lit is installed and hipify-clang binary is already produced" OFF)
option(HIPIFY_INCLUDE_IN_HIP_SDK "Include HIPIFY in HIP SDK" OFF)
option(HIPIFY_INSTALL_CLANG_HEADERS "Include clang headers in HIPIFY installation" ON)
if(NOT WIN32)
set(CPACK_SET_DESTDIR ON CACHE BOOL "Installer package will install hipify to CMAKE_INSTALL_PREFIX instead of CPACK_PACKAGING_INSTALL_PREFIX")
endif()
if(HIPIFY_CLANG_TESTS OR HIPIFY_CLANG_TESTS_ONLY)
set(HIPIFY_TEST "ON")
else()
set(HIPIFY_TEST "OFF")
endif()
if(HIPIFY_CLANG_TESTS_ONLY)
set(HIPIFY_BUILD "OFF")
else()
set(HIPIFY_BUILD "ON")
endif()
message(STATUS "HIPIFY config:")
message(STATUS " - Build hipify-clang : ${HIPIFY_BUILD}")
message(STATUS " - Test hipify-clang : ${HIPIFY_TEST}")
message(STATUS " - Is part of HIP SDK : ${HIPIFY_INCLUDE_IN_HIP_SDK}")
message(STATUS " - Install clang headers : ${HIPIFY_INSTALL_CLANG_HEADERS}")
if(HIPIFY_INCLUDE_IN_HIP_SDK)
if(NOT WIN32)
message(FATAL_ERROR "HIPIFY_INCLUDE_IN_HIP_SDK is only supported on Windows")
elseif(CMAKE_GENERATOR MATCHES "Visual Studio")
message(FATAL_ERROR "HIPIFY_INCLUDE_IN_HIP_SDK is not targeting Visual Studio")
endif()
else()
find_package(Clang REQUIRED CONFIG PATHS ${CMAKE_PREFIX_PATH})
find_package(LLVM REQUIRED CONFIG PATHS ${CMAKE_PREFIX_PATH})
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}:")
message(STATUS " - CMake module path : ${LLVM_CMAKE_DIR}")
message(STATUS " - Clang include path : ${CLANG_INCLUDE_DIRS}")
message(STATUS " - LLVM Include path : ${LLVM_INCLUDE_DIRS}")
message(STATUS " - Binary path : ${LLVM_TOOLS_BINARY_DIR}")
endif()
list(APPEND CMAKE_MODULE_PATH ${LLVM_CMAKE_DIR})
include(AddLLVM)
if (NOT HIPIFY_CLANG_TESTS_ONLY)
if(MSVC AND MSVC_VERSION VERSION_LESS "1900")
message(SEND_ERROR "hipify-clang could be built by Visual Studio 14 2015 or higher.")
return()
endif()
include_directories(${CLANG_INCLUDE_DIRS})
include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
file(GLOB_RECURSE HIPIFY_SOURCES src/*.cpp)
file(GLOB_RECURSE HIPIFY_HEADERS src/*.h)
# In order to be compatible with an LLVM that uses LLVM_LINK_LLVM_DYLIB=ON,
# hipify-clang must link core LLVM libraries via LLVM_LINK_COMPONENTS vs directly adding
# them.
set(HIPIFY_ADDL_LINK_LIBS)
set(LLVM_LINK_COMPONENTS
ProfileData
Support
MCParser
MC
BitReader
Option
Core
)
if(LLVM_PACKAGE_VERSION VERSION_GREATER "6.0.1")
list(APPEND HIPIFY_ADDL_LINK_LIBS clangToolingInclusions)
endif()
if(LLVM_PACKAGE_VERSION VERSION_GREATER "9.0.1")
list(APPEND LLVM_LINK_COMPONENTS FrontendOpenMP)
endif()
if(LLVM_PACKAGE_VERSION VERSION_EQUAL "15.0.0" OR LLVM_PACKAGE_VERSION VERSION_GREATER "15.0.0")
list(APPEND LLVM_LINK_COMPONENTS WindowsDriver)
list(APPEND HIPIFY_ADDL_LINK_LIBS clangSupport)
endif()
add_llvm_executable(hipify-clang
${HIPIFY_SOURCES} ${HIPIFY_HEADERS}
)
target_link_directories(hipify-clang PRIVATE ${LLVM_LIBRARY_DIRS})
if(HIPIFY_INCLUDE_IN_HIP_SDK)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
message(FATAL_ERROR "In order to include HIPIFY in HIP SDK, HIPIFY needs to be built with LLVM_EXTERNAL_PROJECTS")
endif()
# Need to add clang include directories explicitly if building as part of llvm.
if(LLVM_EXTERNAL_CLANG_SOURCE_DIR)
target_include_directories(hipify-clang
PRIVATE
${LLVM_BINARY_DIR}/tools/clang/include
${LLVM_EXTERNAL_CLANG_SOURCE_DIR}/include)
endif()
# Need to add lld include directories explicitly if building as part of llvm.
if(LLVM_EXTERNAL_LLD_SOURCE_DIR)
target_include_directories(hipify-clang
PRIVATE
${LLVM_BINARY_DIR}/tools/lld/include
${LLVM_EXTERNAL_LLD_SOURCE_DIR}/include)
endif()
# Keep the existing compiler since MSVC-specific flags will be set later.
elseif(MSVC)
else()
# Overriding CMAKE_CXX_COMPILER/CMAKE_C_COMPILER below is sketchy - could
# that be removed or reworked instead?
set(CMAKE_CXX_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang++)
set(CMAKE_C_COMPILER ${LLVM_TOOLS_BINARY_DIR}/clang)
endif()
# Link against LLVM and CLANG libraries.
target_link_libraries(hipify-clang PRIVATE
clangASTMatchers
clangFrontend
clangTooling
clangParse
clangSerialization
clangSema
clangEdit
clangFormat
clangLex
clangAnalysis
clangDriver
clangAST
clangToolingCore
clangRewrite
clangBasic
${HIPIFY_ADDL_LINK_LIBS}
)
if(LLVM_PACKAGE_VERSION VERSION_EQUAL "5.0.0" OR LLVM_PACKAGE_VERSION VERSION_GREATER "5.0.0")
if(MSVC)
set(STD "/std:c++17")
else()
set(STD "-std=c++17")
endif()
elseif(LLVM_PACKAGE_VERSION VERSION_GREATER "3.4.0")
if(MSVC)
set(STD "/std:c++14")
else()
set(STD "-std=c++14")
endif()
endif()
if(MSVC)
target_link_libraries(hipify-clang PRIVATE version)
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
target_compile_options(hipify-clang PRIVATE ${STD} /Od /GR- /EHs- /EHc- /MP)
if((LLVM_PACKAGE_VERSION VERSION_EQUAL "18.0.0" OR LLVM_PACKAGE_VERSION VERSION_GREATER "18.0.0") AND MSVC_VERSION VERSION_GREATER "1919")
target_compile_options(hipify-clang PRIVATE /Zc:preprocessor)
endif()
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} /SUBSYSTEM:WINDOWS")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STD} -pthread -fno-rtti -fvisibility-inlines-hidden")
endif()
# Address Sanitize Flag.
if(ADDRESS_SANITIZER)
set(addr_var -fsanitize=address)
else()
set(addr_var )
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${addr_var}")
if(LLVM_PACKAGE_VERSION VERSION_EQUAL "16.0.0" OR LLVM_PACKAGE_VERSION VERSION_GREATER "16.0.0")
set(LIB_CLANG_RES ${LLVM_VERSION_MAJOR})
else()
set(LIB_CLANG_RES ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -DLIB_CLANG_RES=${LIB_CLANG_RES} ${addr_var}")
set(INSTALL_PATH_DOC_STRING "hipify-clang Installation Path")
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/dist" CACHE PATH ${INSTALL_PATH_DOC_STRING} FORCE)
endif()
set(HIPIFY_BIN_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/bin")
set(HIPIFY_LIBEXEC_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/hipify")
install(TARGETS hipify-clang DESTINATION bin)
install(
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipify-perl
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/findcode.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/findcode_headers.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/findcode_sources.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/findcode_custom.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/finduncodep.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipconvertinplace.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipconvertinplace-perl.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipexamine.sh
PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipexamine-perl.sh
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/hipify)
# Adding symlink for hipify-perl for backward compatibility
# Note: To be removed once hipify-perl install location usages
# are fully updated across modules Or hipify-perl is deprecated.
# This backward compatibility Not enabled for Win32 platforms
if( NOT WIN32 )
install(
CODE "execute_process(
COMMAND bash -c \"set -e
cd \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}
ln -sf ../${CMAKE_INSTALL_LIBEXECDIR}/hipify/hipify-perl ${CMAKE_INSTALL_BINDIR}/hipify-perl
\")")
endif()
# Headers are already included in HIP SDK, so skip those if including HIPIFY in HIP SDK.
if( HIPIFY_INSTALL_CLANG_HEADERS)
if(NOT HIPIFY_INCLUDE_IN_HIP_SDK)
# Install all folders under clang/version/ in CMAKE_INSTALL_PREFIX path.
install(
DIRECTORY ${LLVM_LIBRARY_DIRS}/clang/${LIB_CLANG_RES}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hipify/${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT clang-resource-headers
FILES_MATCHING
PATTERN "*.h"
PATTERN "*.modulemap"
PATTERN "algorithm"
PATTERN "complex"
PATTERN "new"
PATTERN "ppc_wrappers" EXCLUDE
PATTERN "omp-tools.h" EXCLUDE
PATTERN "omp.h" EXCLUDE
PATTERN "ompt.h" EXCLUDE
PATTERN "openmp_wrappers" EXCLUDE)
endif()
endif()
if(UNIX)
# Get rid of any RPATH definations already.
set_target_properties(hipify-clang PROPERTIES INSTALL_RPATH "")
# Set RPATH for the binary.
set_target_properties(hipify-clang PROPERTIES LINK_FLAGS "-Wl,--enable-new-dtags -Wl,--rpath,\\$ORIGIN/../lib" )
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE PATH "HIP Package Installation Path")
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/hipify-clang)
configure_file(packaging/hipify-clang.txt ${BUILD_DIR}/CMakeLists.txt @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/LICENSE.txt ${BUILD_DIR}/LICENSE.txt @ONLY)
add_custom_target(package_hipify-clang COMMAND ${CMAKE_COMMAND} .
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMAND rm -rf *.deb *.rpm *.tar.gz
COMMAND make package
COMMAND cp *.deb ${PROJECT_BINARY_DIR}
COMMAND cp *.rpm ${PROJECT_BINARY_DIR}
COMMAND cp *.tar.gz ${PROJECT_BINARY_DIR}
WORKING_DIRECTORY ${BUILD_DIR})
endif()
endif() # if (NOT HIPIFY_CLANG_TESTS_ONLY)
if(HIPIFY_CLANG_TESTS OR HIPIFY_CLANG_TESTS_ONLY)
message(STATUS "---- The below configuring for hipify-clang testing only ----")
set (HIPIFY_CLANG_RES "${LLVM_LIBRARY_DIRS}/clang/${LIB_CLANG_RES}")
if(${CMAKE_VERSION} VERSION_LESS "3.27.0")
find_package(PythonInterp 3.0 REQUIRED)
else()
find_package(Python 3.0...3.15 REQUIRED)
endif()
function (require_program PROGRAM_NAME)
find_program(FOUND_${PROGRAM_NAME} ${PROGRAM_NAME})
if(FOUND_${PROGRAM_NAME})
message(STATUS "Found ${PROGRAM_NAME}: ${FOUND_${PROGRAM_NAME}}")
else()
message(SEND_ERROR "Can't find ${PROGRAM_NAME}. Either set HIPIFY_CLANG_TESTS(_ONLY) to OFF to disable HIPIFY tests, or install the missing program.")
endif()
endfunction()
require_program(lit)
require_program(FileCheck)
set(CUDA_TOOLKIT_ROOT_DIR "" CACHE PATH "Path to CUDA Toolkit to use in hipify-clang unit testing")
set(CUDA_SDK_ROOT_DIR "" CACHE PATH "Path to CUDA Toolkit Samples")
set(CUDA_DNN_ROOT_DIR "" CACHE PATH "Path to cuDNN")
set(CUDA_TENSOR_ROOT_DIR "" CACHE PATH "Path to cuTENSOR")
set(CUDA_CUB_ROOT_DIR "" CACHE PATH "Path to CUB")
set(CUDA_FILE_ROOT_DIR "" CACHE PATH "Path to cuFile")
if(NOT CUDA_TOOLKIT_ROOT_DIR STREQUAL "" AND NOT CUDA_TOOLKIT_ROOT_DIR MATCHES "OFF")
if(NOT DEFINED CUDAToolkit_ROOT OR CUDAToolkit_ROOT MATCHES "OFF")
set(CUDAToolkit_ROOT "${CUDA_TOOLKIT_ROOT_DIR}")
endif()
else()
if(DEFINED CUDAToolkit_ROOT AND NOT CUDAToolkit_ROOT MATCHES "OFF")
set(CUDA_TOOLKIT_ROOT_DIR "${CUDAToolkit_ROOT}")
endif()
endif()
message(STATUS "Initial CUDA to configure:")
message(STATUS " - CUDA Toolkit path : ${CUDA_TOOLKIT_ROOT_DIR}")
message(STATUS " - CUDA Samples path : ${CUDA_SDK_ROOT_DIR}")
message(STATUS " - cuDNN path : ${CUDA_DNN_ROOT_DIR}")
message(STATUS " - cuTENSOR path : ${CUDA_TENSOR_ROOT_DIR}")
message(STATUS " - CUB path : ${CUDA_CUB_ROOT_DIR}")
message(STATUS " - cuFile path : ${CUDA_FILE_ROOT_DIR}")
if(${CMAKE_VERSION} VERSION_LESS "3.27.0")
find_package(CUDA REQUIRED)
set(CUDA_VERSION_FULL "${CUDA_VERSION}")
else()
find_package(CUDAToolkit REQUIRED)
set(CUDA_VERSION_MAJOR "${CUDAToolkit_VERSION_MAJOR}")
set(CUDA_VERSION_MINOR "${CUDAToolkit_VERSION_MINOR}")
set(CUDA_VERSION_PATCH "${CUDAToolkit_VERSION_PATCH}")
set(CUDA_VERSION_FULL "${CUDAToolkit_VERSION}")
set(CUDA_VERSION "${CUDAToolkit_VERSION_MAJOR}.${CUDAToolkit_VERSION_MINOR}")
set(CUDA_TOOLKIT_ROOT_DIR "${CUDAToolkit_LIBRARY_ROOT}")
endif()
if(CUDA_SDK_ROOT_DIR STREQUAL "")
if(WIN32)
if(CUDA_VERSION VERSION_LESS "11.6")
set(NVCUDASAMPLES "NVCUDASAMPLES${CUDA_VERSION_MAJOR}_${CUDA_VERSION_MINOR}_ROOT")
if(DEFINED ENV{${NVCUDASAMPLES}})
set(CUDA_SDK_ROOT_DIR "$ENV{${NVCUDASAMPLES}}")
string(REPLACE "\\" "/" CUDA_SDK_ROOT_DIR ${CUDA_SDK_ROOT_DIR})
endif()
endif()
elseif(UNIX)
if(NOT CUDA_TOOLKIT_ROOT_DIR STREQUAL "" AND NOT CUDA_TOOLKIT_ROOT_DIR STREQUAL "OFF" AND CUDA_VERSION VERSION_LESS "10.1")
set(CUDA_SDK_ROOT_DIR "${CUDA_TOOLKIT_ROOT_DIR}/samples")
endif()
endif()
endif()
if(CUDA_SDK_ROOT_DIR STREQUAL "")
set(CUDA_SDK_ROOT_DIR OFF)
endif()
if(CUDA_DNN_ROOT_DIR STREQUAL "")
set(CUDA_DNN_ROOT_DIR OFF)
else()
set(CUDNN_VERSION_FILE_NAMES
cudnn_version.h
cudnn_version_v9.h
cudnn_version_v999.h
)
unset(CUDNN_VERSION_FILE CACHE)
find_file(CUDNN_VERSION_FILE NAMES ${CUDNN_VERSION_FILE_NAMES} PATHS ${CUDA_DNN_ROOT_DIR} NO_DEFAULT_PATH)
if(NOT DEFINED CUDNN_VERSION_FILE OR CUDNN_VERSION_FILE STREQUAL "CUDNN_VERSION_FILE-NOTFOUND")
unset(CUDNN_VERSION_FILE CACHE)
find_file(CUDNN_VERSION_FILE NAMES ${CUDNN_VERSION_FILE_NAMES} PATHS ${CUDA_DNN_ROOT_DIR}/include NO_DEFAULT_PATH)
if(DEFINED CUDNN_VERSION_FILE)
set(CUDA_DNN_ROOT_DIR "${CUDA_DNN_ROOT_DIR}/include")
endif()
endif()
endif()
if(CUDA_TENSOR_ROOT_DIR STREQUAL "")
set(CUDA_TENSOR_ROOT_DIR OFF)
else()
unset(CUDA_TENSOR_FILE CACHE)
find_file(CUDA_TENSOR_FILE NAMES cutensor.h PATHS ${CUDA_TENSOR_ROOT_DIR} NO_DEFAULT_PATH)
if(NOT DEFINED CUDA_TENSOR_FILE OR CUDA_TENSOR_FILE STREQUAL "CUDA_TENSOR_FILE-NOTFOUND")
unset(CUDA_TENSOR_FILE CACHE)
find_file(CUDA_TENSOR_FILE NAMES cutensor.h PATHS ${CUDA_TENSOR_ROOT_DIR}/include NO_DEFAULT_PATH)
if(DEFINED CUDA_TENSOR_FILE)
set(CUDA_TENSOR_ROOT_DIR "${CUDA_TENSOR_ROOT_DIR}/include")
endif()
endif()
endif()
if(CUDA_CUB_ROOT_DIR STREQUAL "")
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
if(WIN32 OR (UNIX AND CUDA_VERSION VERSION_LESS "11.4" OR CUDA_VERSION VERSION_GREATER_EQUAL "11.6"))
if (CUDA_VERSION VERSION_GREATER_EQUAL "13.0")
set(CUDA_CUB_ROOT_DIR "${CUDA_TOOLKIT_ROOT_DIR}/include/cccl")
else()
set(CUDA_CUB_ROOT_DIR "${CUDA_TOOLKIT_ROOT_DIR}/include")
endif()
else()
set(CUDA_CUB_ROOT_DIR OFF)
endif()
else()
set(CUDA_CUB_ROOT_DIR OFF)
endif()
endif()
if(CUDA_FILE_ROOT_DIR STREQUAL "")
set(CUDA_FILE_ROOT_DIR OFF)
else()
set(CUDA_FILE_ROOT_DIR "${CUDA_FILE_ROOT_DIR}/include")
endif()
message(STATUS "Found CUDA config:")
message(STATUS " - CUDA Toolkit path : ${CUDA_TOOLKIT_ROOT_DIR}")
message(STATUS " - CUDA Samples path : ${CUDA_SDK_ROOT_DIR}")
message(STATUS " - cuDNN path : ${CUDA_DNN_ROOT_DIR}")
message(STATUS " - cuTENSOR path : ${CUDA_TENSOR_ROOT_DIR}")
message(STATUS " - CUB path : ${CUDA_CUB_ROOT_DIR}")
message(STATUS " - cuFile path : ${CUDA_FILE_ROOT_DIR}")
if((CUDA_VERSION VERSION_LESS "7.0") OR (LLVM_PACKAGE_VERSION VERSION_LESS "3.8") OR
(CUDA_VERSION VERSION_GREATER "7.5" AND LLVM_PACKAGE_VERSION VERSION_LESS "4.0") OR
(CUDA_VERSION VERSION_GREATER "8.0" AND LLVM_PACKAGE_VERSION VERSION_LESS "6.0") OR
(CUDA_VERSION VERSION_GREATER "9.0" AND LLVM_PACKAGE_VERSION VERSION_LESS "7.0") OR
(CUDA_VERSION VERSION_GREATER "9.2" AND LLVM_PACKAGE_VERSION VERSION_LESS "8.0") OR
(CUDA_VERSION VERSION_GREATER "10.0" AND LLVM_PACKAGE_VERSION VERSION_LESS "9.0") OR
(CUDA_VERSION VERSION_GREATER "10.1" AND LLVM_PACKAGE_VERSION VERSION_LESS "10.0"))
message(SEND_ERROR "CUDA ${CUDA_VERSION} is not supported by LLVM ${LLVM_PACKAGE_VERSION}.")
if(CUDA_VERSION_MAJOR VERSION_LESS "7")
message(STATUS "Please install CUDA 7.0 or higher.")
elseif(CUDA_VERSION_MAJOR VERSION_LESS "8")
message(STATUS "Please install LLVM + clang 3.8 or higher.")
elseif(CUDA_VERSION_MAJOR VERSION_LESS "9")
message(STATUS "Please install LLVM + clang 4.0 or higher.")
elseif(CUDA_VERSION VERSION_EQUAL "9.0")
message(STATUS "Please install LLVM + clang 6.0 or higher.")
elseif(CUDA_VERSION_MAJOR VERSION_LESS "10")
message(STATUS "Please install LLVM + clang 7.0 or higher.")
elseif(CUDA_VERSION VERSION_EQUAL "10.0")
message(STATUS "Please install LLVM + clang 8.0 or higher.")
elseif(CUDA_VERSION VERSION_EQUAL "10.1")
message(STATUS "Please install LLVM + clang 9.0 or higher.")
elseif(CUDA_VERSION VERSION_EQUAL "10.2" OR CUDA_VERSION VERSION_EQUAL "11.0")
message(STATUS "Please install LLVM + clang 10.0 or higher.")
endif()
endif()
configure_file(
${CMAKE_CURRENT_LIST_DIR}/tests/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/tests/lit.site.cfg
@ONLY)
if(NOT LIT_ARGS)
set(LIT_ARGS -v)
endif()
if(HIPIFY_CLANG_TESTS_ONLY)
add_lit_testsuite(test-hipify "Running HIPIFY regression tests"
${CMAKE_CURRENT_LIST_DIR}/tests
PARAMS site_config=${CMAKE_CURRENT_BINARY_DIR}/tests/lit.site.cfg
ARGS ${LIT_ARGS})
else()
add_lit_testsuite(test-hipify "Running HIPIFY regression tests"
${CMAKE_CURRENT_LIST_DIR}/tests
PARAMS site_config=${CMAKE_CURRENT_BINARY_DIR}/tests/lit.site.cfg
ARGS ${LIT_ARGS}
DEPENDS hipify-clang)
endif()
add_custom_target(test-hipify-clang)
add_dependencies(test-hipify-clang test-hipify)
set_target_properties(test-hipify-clang PROPERTIES FOLDER "Tests")
endif() # if(HIPIFY_CLANG_TESTS OR HIPIFY_CLANG_TESTS_ONLY)