diff --git a/CMakeLists.txt b/CMakeLists.txt index 3801b9b7d3d..6d30c515b66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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.") diff --git a/caffe2/contrib/ios/CMakeLists.txt b/caffe2/contrib/ios/CMakeLists.txt index bf469aa3588..36a87f87511 100644 --- a/caffe2/contrib/ios/CMakeLists.txt +++ b/caffe2/contrib/ios/CMakeLists.txt @@ -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) diff --git a/caffe2/contrib/ios/mpscnn/CMakeLists.txt b/caffe2/contrib/ios/mpscnn/CMakeLists.txt index 3cf9b18480d..f426e41904f 100644 --- a/caffe2/contrib/ios/mpscnn/CMakeLists.txt +++ b/caffe2/contrib/ios/mpscnn/CMakeLists.txt @@ -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) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index d48ff5552aa..ae11b1b8c42 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -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() diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 37613222d75..3d08791a55e 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -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()