Merge pull request #2963 from longjon/superfluous-toproto
[platform/upstream/caffeonacl.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8.7)
2
3 # ---[ Caffe project
4 project(Caffe C CXX)
5
6 # ---[ Using cmake scripts and modules
7 list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
8
9 include(ExternalProject)
10
11 include(cmake/Utils.cmake)
12 include(cmake/Targets.cmake)
13 include(cmake/Misc.cmake)
14 include(cmake/Summary.cmake)
15 include(cmake/ConfigGen.cmake)
16
17 # ---[ Options
18 caffe_option(CPU_ONLY  "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA
19 caffe_option(USE_CUDNN "Build Caffe with cuDNN libary support" ON IF NOT CPU_ONLY)
20 caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON)
21 caffe_option(BUILD_python "Build Python wrapper" ON)
22 set(python_version "2" CACHE STRING "Specify which python version to use")
23 caffe_option(BUILD_matlab "Build Matlab wrapper" OFF IF UNIX OR APPLE)
24 caffe_option(BUILD_docs   "Build documentation" ON IF UNIX OR APPLE)
25 caffe_option(BUILD_python_layer "Build the Caffe python layer" ON)
26
27 # ---[ Dependencies
28 include(cmake/Dependencies.cmake)
29
30 # ---[ Flags
31 if(UNIX OR APPLE)
32   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
33 endif()
34
35 if(USE_libstdcpp)
36   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
37   message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)")
38 endif()
39
40 add_definitions(-DGTEST_USE_OWN_TR1_TUPLE)
41
42 # ---[ Warnings
43 caffe_warnings_disable(CMAKE_CXX_FLAGS -Wno-sign-compare -Wno-uninitialized)
44
45 # ---[ Config generation
46 configure_file(cmake/Templates/caffe_config.h.in "${PROJECT_BINARY_DIR}/caffe_config.h")
47
48 # ---[ Includes
49 set(Caffe_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
50 include_directories(${Caffe_INCLUDE_DIR} ${PROJECT_BINARY_DIR})
51 include_directories(BEFORE src) # This is needed for gtest.
52
53 # ---[ Subdirectories
54 add_subdirectory(src/gtest)
55 add_subdirectory(src/caffe)
56 add_subdirectory(tools)
57 add_subdirectory(examples)
58 add_subdirectory(python)
59 add_subdirectory(matlab)
60 add_subdirectory(docs)
61
62 # ---[ Linter target
63 add_custom_target(lint COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake)
64
65 # ---[ pytest target
66 add_custom_target(pytest COMMAND python${python_version} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python )
67 add_dependencies(pytest pycaffe)
68
69 # ---[ Configuration summary
70 caffe_print_configuration_summary()
71
72 # ---[ Export configs generation
73 caffe_generate_export_configs()