Clean cmake script options, and add USE_METAL to optionally build ios metal code.

Summary: Closes https://github.com/caffe2/caffe2/pull/1063

Differential Revision: D5591620

Pulled By: Yangqing

fbshipit-source-id: 99a674221413568c3301cf4decb5697d0788dd48
This commit is contained in:
Yangqing Jia 2017-08-09 09:16:46 -07:00 committed by Facebook Github Bot
parent a6bf0ca4da
commit bf18d85945
5 changed files with 67 additions and 57 deletions

View file

@ -28,29 +28,34 @@ set(CMAKE_MACOSX_RPATH 1)
enable_testing()
# options
option(USE_THREADS "Use Threads" ON)
option(USE_NERVANA_GPU "Use Nervana GPU backend" OFF)
option(USE_GLOG "Use GLOG" ON)
# Note: if you add an option below, make sure you also add it to
# cmake/Summary.cmake
option(BUILD_BINARY "Build C++ binaries" ON)
option(BUILD_PYTHON "Build Python binaries" ON)
option(BUILD_SHARED_LIBS "Build libcaffe2.so" ON)
option(BUILD_TEST "Build C++ test binaries (need gtest and gbenchmark)" ON)
option(USE_CNMEM "Use CNMEM" OFF)
option(USE_CUDA "Use Cuda" ON)
option(USE_FFMPEG "Use ffmpeg" OFF)
option(USE_GFLAGS "Use GFLAGS" ON)
option(USE_LMDB "Use LMDB" ON)
option(USE_GLOG "Use GLOG" ON)
option(USE_GLOO "Use Gloo" ON)
option(USE_LEVELDB "Use LEVELDB" ON)
option(USE_LITE_PROTO "Use lite protobuf instead of full." OFF)
option(USE_NCCL "Use NCCL" ON)
option(USE_NNPACK "Use NNPACK" ON)
option(USE_OPENCV "Use openCV" ON)
option(USE_CUDA "Use Cuda" ON)
option(USE_CNMEM "Use CNMEM" OFF)
option(USE_ZMQ "Use ZMQ" OFF)
option(USE_ROCKSDB "Use RocksDB" ON)
option(USE_REDIS "Use Redis" OFF)
option(USE_MPI "Use MPI" ON)
option(USE_GLOO "Use Gloo" ON)
option(USE_OBSERVERS "Use Observer Library" OFF)
option(BUILD_SHARED_LIBS "Build libcaffe2.so" ON)
option(USE_OPENMP "Use OpenMP for parallel code" ON)
option(BUILD_PYTHON "Build Python binaries" ON)
option(BUILD_BINARY "Build C++ binaries" ON)
option(USE_LMDB "Use LMDB" ON)
option(USE_METAL "Use Metal for iOS build" ON)
option(USE_MOBILE_OPENGL "Use OpenGL for mobile code" ON)
option(USE_MPI "Use MPI" ON)
option(USE_NCCL "Use NCCL" ON)
option(USE_NERVANA_GPU "Use Nervana GPU backend" OFF)
option(USE_NNPACK "Use NNPACK" ON)
option(USE_OBSERVERS "Use Observer Library" OFF)
option(USE_OPENCV "Use openCV" ON)
option(USE_OPENMP "Use OpenMP for parallel code" ON)
option(USE_REDIS "Use Redis" OFF)
option(USE_ROCKSDB "Use RocksDB" ON)
option(USE_THREADS "Use Threads" ON)
option(USE_ZMQ "Use ZMQ" OFF)
# External projects
include(ExternalProject)
@ -58,9 +63,6 @@ include(ExternalProject)
include(cmake/Utils.cmake)
include(cmake/Summary.cmake)
# options that do not affect the main binaries, but affects testing binaries
option(BUILD_TEST "Build C++ test binaries (need gtest and gbenchmark)" ON)
set(CAFFE2_CPU_FLAGS "" CACHE STRING "Flags to specify CPU features.")
set(CAFFE2_WHITELIST "" CACHE STRING "A whitelist file of files that one should build.")

View file

@ -8,8 +8,10 @@ if(IOS)
)
set(Caffe2_CPU_SRCS ${Caffe2_CPU_SRCS} ${Caffe2_CONTRIB_IOS_SRC})
# mpscnn files
add_subdirectory(mpscnn)
if (USE_METAL)
# metal/mpscnn files
add_subdirectory(mpscnn)
endif()
endif()
set(Caffe2_CPU_SRCS ${Caffe2_CPU_SRCS} PARENT_SCOPE)

View file

@ -1,4 +1,4 @@
if(IOS)
if(USE_METAL)
file(GLOB_RECURSE tmp *.mm *.cc)
# exclude test files
file(GLOB_RECURSE test_files *_test.cc)

View file

@ -392,3 +392,10 @@ if (USE_MOBILE_OPENGL)
set(USE_MOBILE_OPENGL OFF)
endif()
endif()
if (USE_METAL)
if (NOT IOS)
message(WARNING "Metal is only used in ios builds.")
set(USE_METAL OFF)
endif()
endif()

View file

@ -25,52 +25,51 @@ function (Caffe2_print_configuration_summary)
get_directory_property(tmp DIRECTORY ${PROJECT_SOURCE_DIR} COMPILE_DEFINITIONS)
message(STATUS " Compile definitions : ${tmp}")
message(STATUS "")
message(STATUS " BUILD_SHARED_LIBS : ${BUILD_SHARED_LIBS}")
message(STATUS " BUILD_BINARY : ${BUILD_BINARY}")
message(STATUS " BUILD_PYTHON : ${BUILD_PYTHON}")
message(STATUS " Python version : ${PYTHONLIBS_VERSION_STRING}")
message(STATUS " Python library : ${PYTHON_LIBRARIES}")
if (${BUILD_PYTHON})
message(STATUS " Python version : ${PYTHONLIBS_VERSION_STRING}")
message(STATUS " Python library : ${PYTHON_LIBRARIES}")
endif()
message(STATUS " BUILD_SHARED_LIBS : ${BUILD_SHARED_LIBS}")
message(STATUS " BUILD_TEST : ${BUILD_TEST}")
message(STATUS " USE_CNMEM : ${USE_CNMEM}")
message(STATUS " USE_CUDA : ${USE_CUDA}")
if(${USE_CUDA})
message(STATUS " CUDA version : ${CUDA_VERSION}")
message(STATUS " USE_CNMEM : ${USE_CNMEM}")
message(STATUS " CUDA version : ${CUDA_VERSION}")
endif()
message(STATUS " USE_NERVANA_GPU : ${USE_NERVANA_GPU}")
if(${USE_NERVANA_GPU})
message(STATUS " NERVANA_GPU version : ${NERVANA_GPU_VERSION}")
endif()
message(STATUS " USE_GLOG : ${USE_GLOG}")
message(STATUS " USE_FFMPEG : ${USE_FFMPEG}")
message(STATUS " USE_GFLAGS : ${USE_GFLAGS}")
message(STATUS " USE_LMDB : ${USE_LMDB}")
if(${USE_LMDB})
message(STATUS " LMDB version : ${LMDB_VERSION}")
endif()
message(STATUS " USE_GLOG : ${USE_GLOG}")
message(STATUS " USE_GLOO : ${USE_GLOO}")
message(STATUS " USE_LEVELDB : ${USE_LEVELDB}")
if(${USE_LEVELDB})
message(STATUS " LevelDB version : ${LEVELDB_VERSION}")
message(STATUS " Snappy version : ${Snappy_VERSION}")
message(STATUS " LevelDB version : ${LEVELDB_VERSION}")
message(STATUS " Snappy version : ${Snappy_VERSION}")
endif()
message(STATUS " USE_OPENCV : ${USE_OPENCV}")
if(${USE_OPENCV})
message(STATUS " OpenCV version : ${OpenCV_VERSION}")
message(STATUS " USE_LMDB : ${USE_LMDB}")
if(${USE_LMDB})
message(STATUS " LMDB version : ${LMDB_VERSION}")
endif()
message(STATUS " USE_FFMPEG : ${USE_FFMPEG}")
message(STATUS " USE_ZMQ : ${USE_ZMQ}")
message(STATUS " USE_ROCKSDB : ${USE_ROCKSDB}")
message(STATUS " USE_METAL : ${USE_METAL}")
message(STATUS " USE_MOBILE_OPENGL : ${USE_MOBILE_OPENGL}")
message(STATUS " USE_MPI : ${USE_MPI}")
message(STATUS " USE_NCCL : ${USE_NCCL}")
message(STATUS " USE_NERVANA_GPU : ${USE_NERVANA_GPU}")
if(${USE_NERVANA_GPU})
message(STATUS " NERVANA_GPU version : ${NERVANA_GPU_VERSION}")
endif()
message(STATUS " USE_NNPACK : ${USE_NNPACK}")
message(STATUS " USE_OBSERVERS : ${USE_OBSERVERS}")
message(STATUS " USE_OPENCV : ${USE_OPENCV}")
if(${USE_OPENCV})
message(STATUS " OpenCV version : ${OpenCV_VERSION}")
endif()
message(STATUS " USE_OPENMP : ${USE_OPENMP}")
message(STATUS " USE_REDIS : ${USE_REDIS}")
message(STATUS " USE_GLOO : ${USE_GLOO}")
message(STATUS " USE_ROCKSDB : ${USE_ROCKSDB}")
message(STATUS " USE_THREADS : ${USE_THREADS}")
message(STATUS " USE_ZMQ : ${USE_ZMQ}")
endfunction()