CMakeLists.txt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. cmake_minimum_required(VERSION 3.0)
  2. if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
  3. set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
  4. CACHE STRING "")
  5. MESSAGE(STATUS "Using vcpkg")
  6. endif()
  7. project(traph)
  8. SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
  9. SET(TRAPH_PATH ${PROJECT_SOURCE_DIR} CACHE STRING "Adds a path to TRAPH" FORCE)
  10. SET(TRAPH_PATH_INCLUDE ${TRAPH_PATH}/traph/include CACHE STRING "Adds a path to TRAPH header" FORCE)
  11. SET(TRAPH_PATH_HEADER ${TRAPH_PATH_INCLUDE}/traph CACHE STRING "Adds a path to TRAPH header" FORCE)
  12. SET(TRAPH_PATH_SOURCE ${TRAPH_PATH}/traph/source CACHE STRING "Adds a path to TRAPH source" FORCE)
  13. SET(TRAPH_PATH_DEPENDENCIES ${TRAPH_PATH}/traph/contrib CACHE STRING "Adds a path to TRAPH dependencies" FORCE)
  14. set(CMAKE_CXX_STANDARD 17)
  15. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  16. set(CMAKE_CXX_EXTENSIONS OFF)
  17. find_package(Boost)
  18. if(Boost_FOUND)
  19. message(STATUS Boost found: ${Boost_INCLUDE_DIRS})
  20. endif()
  21. # languge feature
  22. set(ENABLE_PYTHON True CACHE BOOL "Language: Python")
  23. # gpgpu feature
  24. set(ENABLE_CUDA FALSE CACHE BOOL "Feature: OPENCL")
  25. set(ENABLE_OPENCL FALSE CACHE BOOL "Feature: OPENCL")
  26. IF(ENABLE_CUDA)
  27. SET(TRAPH_ENABLE_CUDA TRUE)
  28. ADD_DEFINITIONS(-DTRAPH_ENABLE_CUDA)
  29. FIND_PACKAGE(CUDA REQUIRED)
  30. SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_61,code=sm_61;-std=c++11;)
  31. IF(CUDA_FOUND)
  32. include_directories(${CUDA_INCLUDE_DIRS})
  33. message(STATUS cuda found)
  34. ENDIF()
  35. ENDIF()
  36. IF(ENABLE_OPENCL)
  37. SET(TRAPH_ENABLE_OPENCL TRUE)
  38. ADD_DEFINITIONS(-DTRAPH_ENABLE_OPENCL)
  39. find_package(OpenCL REQUIRED)
  40. if (OpenCL_FOUND)
  41. include_directories(${OpenCL_INCLUDE_DIRS})
  42. message(STATUS opencl found: ${OpenCL_INCLUDE_DIRS})
  43. endif()
  44. ENDIF()
  45. # blas feature
  46. SET(TRAPH_ACCELERATE 0 CACHE STRING
  47. "Specify the feature Possible values:
  48. 0 - only eigen
  49. 1 - mkl
  50. 2 - openblas")
  51. IF(TRAPH_ACCELERATE EQUAL 0)
  52. SET(TRAPH_BUILD_EIGEN TRUE)
  53. ADD_DEFINITIONS(-DTRAPH_BUILD_EIGEN)
  54. message(STATUS using eigen blas)
  55. ELSEIF(TRAPH_ACCELERATE EQUAL 1)
  56. SET(TRAPH_BUILD_MKL TRUE)
  57. ADD_DEFINITIONS(-DTRAPH_BUILD_MKL)
  58. # set(BLA_VENDOR Intel)
  59. find_package(BLAS REQUIRED)
  60. if (BLAS_FOUND)
  61. include_directories(${BLAS_INCDIR})
  62. message(STATUS BLAS found: ${BLAS_DIR})
  63. endif()
  64. ELSEIF(TRAPH_ACCELERATE EQUAL 2)
  65. SET(TRAPH_BUILD_OPENBLAS TRUE)
  66. ADD_DEFINITIONS(-DTRAPH_BUILD_OPENBLAS)
  67. set(BLA_VENDOR Open)
  68. find_package(BLAS REQUIRED)
  69. if (BLAS_FOUND)
  70. include_directories(${BLAS_INCDIR})
  71. message(STATUS BLAS found: ${BLAS_DIR})
  72. endif()
  73. ELSE()
  74. MESSAGE(FATAL_ERROR "Unsupported build platform: " ${OCTOON_BUILD_PLATFORM})
  75. ENDIF()
  76. ADD_SUBDIRECTORY(traph)