forked from NVIDIA/caffe
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
43 changed files
with
2,017 additions
and
832 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,177 +1,64 @@ | ||
cmake_minimum_required(VERSION 2.8.8) | ||
project( Caffe ) | ||
|
||
### Build Options ########################################################################## | ||
# ---[ Caffe project | ||
project(Caffe C CXX) | ||
|
||
option(CPU_ONLY "Build Caffe without GPU support" OFF) | ||
option(BUILD_PYTHON "Build Python wrapper" OFF) | ||
option(BUILD_MATLAB "Build Matlab wrapper" OFF) | ||
option(BUILD_EXAMPLES "Build examples" ON) | ||
option(BUILD_SHARED_LIBS "Build SHARED libs if ON and STATIC otherwise" OFF) | ||
# ---[ Using cmake scripts and modules | ||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) | ||
|
||
if(NOT BLAS) | ||
set(BLAS atlas) | ||
endif() | ||
include(cmake/Utils.cmake) | ||
include(cmake/Targets.cmake) | ||
include(cmake/Misc.cmake) | ||
include(cmake/Summary.cmake) | ||
include(cmake/ConfigGen.cmake) | ||
|
||
if(NOT CUDA_TEST_DEVICE) | ||
set(CUDA_TEST_DEVICE -1) | ||
endif() | ||
# ---[ Options | ||
caffe_option(CPU_ONLY "Build Caffe wihtout CUDA support" OFF) # TODO: rename to USE_CUDA | ||
caffe_option(USE_CUDNN "Build Caffe with cuDNN libary support" ON IF NOT CPU_ONLY) | ||
caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON) | ||
caffe_option(BUILD_python "Build Python wrapper" ON) | ||
caffe_option(BUILD_matlab "Build Matlab wrapper" OFF IF UNIX OR APPLE) | ||
caffe_option(BUILD_docs "Build documentation" ON IF UNIX OR APPLE) | ||
|
||
# Install Prefix | ||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) | ||
set (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Default install path" FORCE ) | ||
endif() | ||
# ---[ Dependencies | ||
include(cmake/Dependencies.cmake) | ||
|
||
### Configuration ########################################################################### | ||
# Compiler Flags | ||
set(CMAKE_CXX_COMPILER_FLAGS ${CMAKE_CXX_COMPILER_FLAGS} -Wall) | ||
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC) # set global flags | ||
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) # set debug flags | ||
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) # set release flags | ||
|
||
# Link Flags | ||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # clang++ | ||
set(CAFFE_STATIC_LINK -Wl,-force_load $(STATIC_NAME)) | ||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # g++ | ||
set(CAFFE_STATIC_LINK -Wl,--whole-archive caffe -Wl,--no-whole-archive) | ||
# ---[ Flags | ||
if(UNIX OR APLE) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall") | ||
endif() | ||
|
||
# Global Definitions | ||
if(CPU_ONLY) | ||
add_definitions(-DCPU_ONLY) | ||
endif() | ||
|
||
# Include Directories | ||
set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include) | ||
include_directories(${${PROJECT_NAME}_INCLUDE_DIRS}) | ||
include_directories(${CMAKE_SOURCE_DIR}/src) | ||
|
||
# CMake Scripts dir | ||
set(CMAKE_SCRIPT_DIR ${CMAKE_SOURCE_DIR}/CMakeScripts) | ||
|
||
# CMake module path for custom module finding | ||
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SCRIPT_DIR}) | ||
|
||
### Dependencies ########################################################################## | ||
|
||
# Boost | ||
find_package(Boost 1.46 COMPONENTS system thread REQUIRED) | ||
include_directories(${Boost_INCLUDE_DIR}) | ||
link_directories(${Boost_LIBRARY_DIRS}) | ||
|
||
# CUDA | ||
if(NOT CPU_ONLY) | ||
find_package(CUDA 5.5 REQUIRED) | ||
include_directories(${CUDA_INCLUDE_DIRS}) | ||
|
||
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} | ||
-gencode arch=compute_20,code=sm_20 | ||
-gencode arch=compute_20,code=sm_21 | ||
-gencode arch=compute_30,code=sm_30 | ||
-gencode arch=compute_35,code=sm_35 | ||
) | ||
|
||
# https://github.com/ComputationalRadiationPhysics/picongpu/blob/master/src/picongpu/CMakeLists.txt | ||
# work-arounds | ||
if(Boost_VERSION EQUAL 105500) | ||
# see https://svn.boost.org/trac/boost/ticket/9392 | ||
message(STATUS "Boost: Applying noinline work around") | ||
# avoid warning for CMake >= 2.8.12 | ||
set(CUDA_NVCC_FLAGS | ||
"${CUDA_NVCC_FLAGS} \"-DBOOST_NOINLINE=__attribute__((noinline))\" ") | ||
endif(Boost_VERSION EQUAL 105500) | ||
if(APPLE) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++") | ||
endif() | ||
|
||
# Threads | ||
find_package(Threads REQUIRED) | ||
|
||
# Google-glog | ||
find_package(Glog REQUIRED) | ||
include_directories(${GLOG_INCLUDE_DIRS}) | ||
|
||
# Google-gflags | ||
find_package(GFlags REQUIRED) | ||
include_directories(${GFLAGS_INCLUDE_DIRS}) | ||
|
||
# BLAS | ||
if(BLAS STREQUAL "atlas") | ||
|
||
find_package(Atlas REQUIRED) | ||
include_directories(${Atlas_INCLUDE_DIR}) | ||
set(BLAS_LIBRARIES ${Atlas_LIBRARIES}) | ||
|
||
elseif(BLAS STREQUAL "open") | ||
add_definitions(-DGTEST_USE_OWN_TR1_TUPLE) | ||
|
||
find_package(OpenBLAS REQUIRED) | ||
include_directories(${OpenBLAS_INCLUDE_DIR}) | ||
set(BLAS_LIBRARIES ${OpenBLAS_LIB}) | ||
# ---[ Warnings | ||
caffe_warnings_disable(CMAKE_CXX_FLAGS -Wno-sign-compare -Wno-uninitialized) | ||
|
||
elseif(BLAS STREQUAL "mkl") | ||
# ---[ Config generation | ||
configure_file(cmake/Templates/caffe_config.h.in "${CMAKE_BINARY_DIR}/caffe_config.h") | ||
|
||
find_package(MKL REQUIRED) | ||
include_directories(${MKL_INCLUDE_DIR}) | ||
set(BLAS_LIBRARIES ${MKL_LIBRARIES}) | ||
|
||
endif() | ||
|
||
# HDF5 | ||
find_package(HDF5 COMPONENTS HL REQUIRED) | ||
include_directories(${HDF5_INCLUDE_DIRS}) | ||
|
||
# LevelDB | ||
find_package(LevelDB REQUIRED) | ||
include_directories(${LEVELDB_INCLUDE}) | ||
if(LEVELDB_FOUND) | ||
find_package(Snappy REQUIRED) | ||
include_directories(${SNAPPY_INCLUDE_DIR}) | ||
set(LEVELDB_LIBS | ||
${LEVELDB_LIBS} | ||
${SNAPPY_LIBS} | ||
) | ||
endif() | ||
|
||
# LMDB | ||
find_package(LMDB REQUIRED) | ||
include_directories(${LMDB_INCLUDE_DIR}) | ||
|
||
# OpenCV | ||
find_package(OpenCV REQUIRED) | ||
include_directories(${OpenCV_INCLUDE_DIRS}) | ||
|
||
### Subdirectories ########################################################################## | ||
# ---[ Includes | ||
set(Caffe_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include) | ||
include_directories(${Caffe_INCLUDE_DIR} ${CMAKE_BINARY_DIR}) | ||
include_directories(BEFORE src) # This is needed for gtest. | ||
|
||
# ---[ Subdirectories | ||
add_subdirectory(src/gtest) | ||
add_subdirectory(src/caffe) | ||
add_subdirectory(tools) | ||
add_subdirectory(examples) | ||
add_subdirectory(python) | ||
add_subdirectory(matlab) | ||
add_subdirectory(docs) | ||
|
||
if(BUILD_EXAMPLES) | ||
message(STATUS "Examples enabled") | ||
add_subdirectory(examples) | ||
endif() | ||
|
||
if(BUILD_PYTHON) | ||
message(STATUS "Python enabled") | ||
add_subdirectory(python) | ||
endif() | ||
|
||
if(BUILD_MATLAB) | ||
message(STATUS "Matlab enabled") | ||
add_subdirectory(matlab) | ||
endif() | ||
|
||
### Lint Target Setup ########################################################################## | ||
|
||
set(LINT_TARGET lint) | ||
set(LINT_SCRIPT ${CMAKE_SCRIPT_DIR}/lint.cmake) | ||
add_custom_target( | ||
${LINT_TARGET} | ||
COMMAND ${CMAKE_COMMAND} -P ${LINT_SCRIPT} | ||
) | ||
|
||
### Install ################################################################################# | ||
|
||
# Install Includes | ||
file(GLOB folders ${${PROJECT_NAME}_INCLUDE_DIRS}/*) | ||
install(DIRECTORY ${folders} DESTINATION include) | ||
# ---[ Linter target | ||
add_custom_target(lint COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lint.cmake) | ||
|
||
# ---[ Configuration summary | ||
caffe_print_configuration_summary() | ||
|
||
# ---[ Export configs generation | ||
caffe_generate_export_configs() |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.