Skip to content
Snippets Groups Projects
CMakeLists.txt 2.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • Yifan Zhao's avatar
    Yifan Zhao committed
    cmake_minimum_required(VERSION 3.18)
    
    project(hpvm CXX)
    
    include(CheckLanguage)
    check_language(CUDA)
    if(CMAKE_CUDA_COMPILER)
      # Enable CUDA
      set(HPVM_USE_CUDA 1)
      enable_language(CUDA)
      get_filename_component(
        CUDA_TOOLKIT_ROOT_DIR "${CMAKE_CUDA_COMPILER}/../.." ABSOLUTE
      )  # Set CUDA_TOOLKIT_ROOT_DIR by our own, to the parent folder of cuda nvcc
      message(STATUS "CUDA Architecture: ${CMAKE_CUDA_ARCHITECTURES}")
    
      # find_package will use the auxillary cmake/Find*.cmake we provide
      list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
      find_package(CUDNN 7 EXACT REQUIRED)  # CUDNN_INCLUDE_PATH, CUDNN_LIBRARY_DIR and CUDNN::cudnn
    else()
      set(HPVM_USE_CUDA 0)
      message(WARNING "CUDA is not found in this system; all ApproxHPVM features will be unavailable.")
    endif()
    
    find_package(OpenCL)  # Defines ${OpenCL_INCLUDE_DIRS} and ${OpenCL_LIBRARY}
    if(${OpenCL_FOUND})
      set(HPVM_USE_OPENCL 1)
    else()
      message(WARNING "OpenCL not found. --opencl flag of hpvm-clang will be unavailable for this build.")
      set(HPVM_USE_OPENCL 0)
    endif()
    
    include_directories(./include/)
    
    
    # Generate TENSOR_RT_PREFIX into config.h
    set(TENSOR_RT_PREFIX ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
    set(TENSOR_RT_LL ${TENSOR_RT_PREFIX}/tensor_runtime.ll)
    configure_file(
        ./include/Config.h.in
        ${CMAKE_CURRENT_BINARY_DIR}/Config.h
    )
    include_directories(${CMAKE_CURRENT_BINARY_DIR})
    
    
    add_subdirectory(lib)
    
    add_subdirectory(projects)
    
    Akash Kothari's avatar
    Akash Kothari committed
    add_subdirectory(tools)
    
    Akash Kothari's avatar
    Akash Kothari committed
    
    add_subdirectory(test)
    
    # Add a global check rule now that all subdirectories have been traversed
    # and we know the total set of lit testsuites.
    get_property(LLVM_LIT_TESTSUITES GLOBAL PROPERTY LLVM_LIT_TESTSUITES)
    get_property(LLVM_LIT_PARAMS GLOBAL PROPERTY LLVM_LIT_PARAMS)
    get_property(LLVM_LIT_DEPENDS GLOBAL PROPERTY LLVM_LIT_DEPENDS)
    get_property(LLVM_LIT_EXTRA_ARGS GLOBAL PROPERTY LLVM_LIT_EXTRA_ARGS)
    get_property(LLVM_ADDITIONAL_TEST_TARGETS
                     GLOBAL PROPERTY LLVM_ADDITIONAL_TEST_TARGETS)
    
    add_lit_target(hpmv-check-all
    "Running all regression tests"
    ${LLVM_LIT_TESTSUITES}
    PARAMS ${LLVM_LIT_PARAMS}
    DEPENDS ${LLVM_LIT_DEPENDS} ${LLVM_ADDITIONAL_TEST_TARGETS}
    ARGS ${LLVM_LIT_EXTRA_ARGS}
    )