|
| 1 | +cmake_minimum_required(VERSION 2.8.7) |
| 2 | + |
| 3 | +project(nnvm C CXX) |
| 4 | + |
| 5 | +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) |
| 6 | + |
| 7 | +include(cmake/Utils.cmake) |
| 8 | + |
| 9 | +# include path |
| 10 | +include_directories(BEFORE "include") |
| 11 | + |
| 12 | +set(nnvm_LINKER_LIBS "") |
| 13 | + |
| 14 | +add_definitions(-DNNVM_EXPORTS) |
| 15 | + |
| 16 | +# compile |
| 17 | +if(MSVC) |
| 18 | + add_definitions(-DDMLC_USE_CXX11) |
| 19 | + add_definitions(-DDMLC_STRICT_CXX11) |
| 20 | + foreach(flag_var |
| 21 | + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE |
| 22 | + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) |
| 23 | + if(${flag_var} MATCHES "/MD") |
| 24 | + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") |
| 25 | + endif(${flag_var} MATCHES "/MD") |
| 26 | + endforeach(flag_var) |
| 27 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") |
| 28 | +else(MSVC) |
| 29 | + include(CheckCXXCompilerFlag) |
| 30 | + check_cxx_compiler_flag("-std=c++0x" SUPPORT_CXX0X) |
| 31 | + check_cxx_compiler_flag("-msse2" SUPPORT_MSSE2) |
| 32 | + check_cxx_compiler_flag("-openmp" SUPPORT_OPENMP) |
| 33 | + set(CMAKE_C_FLAGS "-O3 -Wall -msse2 -Wno-unknown-pragmas -std=c++0x -fPIC") |
| 34 | + if(SUPPORT_OPENMP) |
| 35 | + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp") |
| 36 | + endif() |
| 37 | + set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS}) |
| 38 | +endif(MSVC) |
| 39 | + |
| 40 | +mxnet_source_group("Include\\c_api" GLOB "src/c_api/*.h") |
| 41 | +mxnet_source_group("Include\\core" GLOB "src/core/*.h") |
| 42 | +mxnet_source_group("Include\\pass" GLOB "src/pass/*.h") |
| 43 | +mxnet_source_group("Include\\nnvm" GLOB "include/nnvm/*.h") |
| 44 | +mxnet_source_group("Include\\dmlc" GLOB "include/dmlc/*.h") |
| 45 | + |
| 46 | +mxnet_source_group("Source" GLOB "src/*.cc") |
| 47 | +mxnet_source_group("Source\\c_api" GLOB "src/c_api/*.cc") |
| 48 | +mxnet_source_group("Source\\core" GLOB "src/core/*.cc") |
| 49 | +mxnet_source_group("Source\\pass" GLOB "src/pass/*.cc") |
| 50 | + |
| 51 | + |
| 52 | +FILE(GLOB_RECURSE SOURCE "src/*.cc" "src/*.h" "include/*.h") |
| 53 | + |
| 54 | +add_library(nnvm ${SOURCE}) |
| 55 | +target_link_libraries(nnvm ${nnvm_LINKER_LIBS}) |
| 56 | + |
| 57 | +# ---[ Linter target |
| 58 | +if(MSVC) |
| 59 | + find_package(PythonInterp 2) |
| 60 | + set(PYTHON2_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to the python 2.x executable") |
| 61 | + find_package(PythonInterp 3) |
| 62 | + set(PYTHON3_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to the python 3.x executable") |
| 63 | +endif() |
| 64 | +set(LINT_DIRS include src scripts) |
| 65 | +add_custom_target(nnvm_lint COMMAND ${CMAKE_COMMAND} -DMSVC=${MSVC} -DPYTHON2_EXECUTABLE=${PYTHON2_EXECUTABLE} -DPYTHON3_EXECUTABLE=${PYTHON3_EXECUTABLE} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DLINT_DIRS=${LINT_DIRS} -DPROJECT_NAME=dmlc -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake) |
0 commit comments