You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 4.6 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. cmake_minimum_required(VERSION 3.14)
  2. project (MindSpore)
  3. if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.0)
  4. message(FATAL_ERROR "GCC vesion ${CMAKE_CXX_COMPILER_VERSION} must not be less than 7.3.0")
  5. endif ()
  6. include(${CMAKE_SOURCE_DIR}/cmake/options.cmake)
  7. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
  8. if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
  9. add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)
  10. endif ()
  11. if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  12. set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O2 -Werror -Wno-return-std-move -Wno-unused-private-field -Wno-unused-lambda-capture -Wno-sign-compare -Wno-overloaded-virtual -Wno-unneeded-internal-declaration -Wno-unused-variable -Wno-pessimizing-move -Wno-inconsistent-missing-override -DHALF_ENABLE_CPP11_USER_LITERALS=0 -D_FORTIFY_SOURCE=2")
  13. else()
  14. set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O2 -Wl,--allow-shlib-undefined -DHALF_ENABLE_CPP11_USER_LITERALS=0 -D_FORTIFY_SOURCE=2")
  15. endif()
  16. if (ENABLE_PYTHON)
  17. add_compile_definitions(ENABLE_PYTHON)
  18. endif()
  19. set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g2 -ggdb -fno-inline-functions -fno-omit-frame-pointer -Wl,--allow-shlib-undefined -D_LIBCPP_INLINE_VISIBILITY='' -D_LIBCPP_DISABLE_EXTERN_TEMPLATE=1 -DHALF_ENABLE_CPP11_USER_LITERALS=0 -D_FORTIFY_SOURCE=2 -Wno-cpp")
  20. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include -std=c++17 -Werror -Wall -fPIC")
  21. set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
  22. set(PYBIND11_CPP_STANDARD -std=c++17)
  23. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPTION_CXX_FLAGS}")
  24. find_package(Threads)
  25. if (DEFINED ENV{MS_PATCH_PATH})
  26. find_program(Patch_EXECUTABLE patch PATHS $ENV{MS_PATCH_PATH})
  27. set(Patch_FOUND ${Patch_EXECUTABLE})
  28. else ()
  29. find_package(Patch)
  30. endif ()
  31. if (NOT Patch_FOUND)
  32. message(FATAL_ERROR "Patch not found, please set env variable MS_PATCH_PATH, "
  33. "usually locate in GIT_PATH/usr/bin in windows")
  34. endif ()
  35. message(PATCH_EXECUTABLE = ${Patch_EXECUTABLE})
  36. if (ENABLE_AKG AND (ENABLE_D OR ENABLE_GPU))
  37. add_subdirectory("${CMAKE_SOURCE_DIR}/akg")
  38. endif()
  39. include(${CMAKE_SOURCE_DIR}/cmake/mind_expression.cmake)
  40. include_directories(${CMAKE_CURRENT_SOURCE_DIR})
  41. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/third_party/flatbuffers/include)
  42. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/third_party/flatbuffers/include/flatbuffers)
  43. include(${CMAKE_SOURCE_DIR}/cmake/dependency_utils.cmake)
  44. find_package(Python3 3.7 COMPONENTS Interpreter Development)
  45. if(Python3_FOUND)
  46. set(PYTHON_INCLUDE_DIRS "${Python3_INCLUDE_DIRS}")
  47. set(PYTHON_LIBRARIES "${Python3_LIBRARIES}")
  48. if (WIN32)
  49. if (Python3_DIR)
  50. message("Python3_DIR set already: " ${Python3_DIR})
  51. else()
  52. string(LENGTH ${PYTHON_LIBRARIES} PYTHON_LIBRARIES_LEN)
  53. string(LENGTH "libpythonxx.a" Python3_NAME_LEN)
  54. math(EXPR Python3_DIR_LEN ${PYTHON_LIBRARIES_LEN}-${Python3_NAME_LEN})
  55. string(SUBSTRING ${Python3_LIBRARIES} 0 ${Python3_DIR_LEN} Python3_DIR)
  56. message("Python3_DIR: " ${Python3_DIR})
  57. endif()
  58. link_directories(${Python3_DIR})
  59. endif()
  60. else()
  61. find_python_package(py_inc py_lib)
  62. set(PYTHON_INCLUDE_DIRS "${py_inc}")
  63. set(PYTHON_LIBRARIES "${py_lib}")
  64. endif()
  65. message("PYTHON_INCLUDE_DIRS = ${PYTHON_INCLUDE_DIRS}")
  66. message("PYTHON_LIBRARIES = ${PYTHON_LIBRARIES}")
  67. include_directories(${PYTHON_INCLUDE_DIRS})
  68. set(MS_CCSRC_PATH ${CMAKE_SOURCE_DIR}/mindspore/ccsrc)
  69. set(MS_CCSRC_BUILD_PATH ${BUILD_PATH}/mindspore/mindspore/ccsrc)
  70. if (ENABLE_GE)
  71. link_directories(${CMAKE_SOURCE_DIR}/third_party/ge/lib)
  72. elseif(ENABLE_D OR ENABLE_TESTCASES)
  73. include(${CMAKE_SOURCE_DIR}/cmake/dependency_graphengine.cmake)
  74. endif()
  75. if (ENABLE_GE OR ENABLE_D OR ENABLE_TESTCASES)
  76. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/graphengine/inc)
  77. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/graphengine/inc/external)
  78. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/graphengine/inc/framework)
  79. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/graphengine/third_party/fwkacllib/inc)
  80. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/graphengine/third_party/fwkacllib/inc/toolchain)
  81. endif()
  82. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
  83. add_subdirectory(mindspore/ccsrc)
  84. add_subdirectory(mindspore/core)
  85. if (ENABLE_TESTCASES)
  86. add_subdirectory(tests)
  87. endif()
  88. if (ENABLE_SERVING)
  89. add_subdirectory(serving)
  90. add_subdirectory(serving/example/cpp_client)
  91. endif()
  92. include(cmake/package.cmake)