From 9c4fc590950226beb405fffa339a2c5e76f919bb Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Senior=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Fri, 4 May 2018 15:00:17 +0900 Subject: [PATCH] Add 'Caffe' as an external module (#195) This commit adds 'Caffe' external module which builds libcaffe.so from Caffe source (with CPU_ONLY flag). Signed-off-by: Jonghyun Park --- cmake/packages/CaffeConfig.cmake | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 cmake/packages/CaffeConfig.cmake diff --git a/cmake/packages/CaffeConfig.cmake b/cmake/packages/CaffeConfig.cmake new file mode 100644 index 0000000..026720e --- /dev/null +++ b/cmake/packages/CaffeConfig.cmake @@ -0,0 +1,76 @@ +function(_Caffe_import) + nncc_find_package(CaffeSource QUIET) + + if(NOT CaffeSource_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif(NOT CaffeSource_FOUND) + + nncc_find_package(CaffeProto QUIET) + + if(NOT CaffeProto_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif() + + find_package(Boost 1.54 COMPONENTS system thread filesystem) + + if(NOT Boost_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif() + + find_package(HDF5 COMPONENTS HL) + + if(NOT HDF5_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif() + + list(APPEND CMAKE_MODULE_PATH ${CaffeSource_DIR}/cmake/Modules) + + find_package(Atlas) + + if(NOT ATLAS_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif() + + find_package(Glog) + + if(NOT GLOG_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif() + + find_package(GFlags) + + if(NOT GFLAGS_FOUND) + set(Caffe_FOUND FALSE PARENT_SCOPE) + return() + endif() + + if(NOT TARGET caffe) + file(GLOB CORE_SOURCES "${CaffeSource_DIR}/src/caffe/*.cpp" "${CaffeSource_DIR}/src/caffe/util/*.cpp") + file(GLOB LAYER_SOURCES "${CaffeSource_DIR}/src/caffe/layers/*.cpp") + + add_library(caffe SHARED ${CORE_SOURCES} ${LAYER_SOURCES}) + target_compile_definitions(caffe PUBLIC CPU_ONLY) + target_include_directories(caffe PUBLIC ${CaffeSource_DIR}/include) + target_include_directories(caffe PRIVATE ${Boost_INCLUDE_DIRS}) + target_include_directories(caffe PRIVATE ${GLOG_INCLUDE_DIRS}) + target_include_directories(caffe PRIVATE ${GFLAGS_INCLUDE_DIRS}) + target_include_directories(caffe PRIVATE ${HDF5_INCLUDE_DIRS}) + target_include_directories(caffe PRIVATE ${Atlas_INCLUDE_DIRS}) + target_link_libraries(caffe caffeproto) + target_link_libraries(caffe ${GLOG_LIBRARIES}) + target_link_libraries(caffe ${GFLAGS_LIBRARIES}) + target_link_libraries(caffe ${Boost_LIBRARIES}) + target_link_libraries(caffe ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) + target_link_libraries(caffe ${Atlas_LIBRARIES}) + endif(NOT TARGET caffe) + + set(Caffe_FOUND TRUE PARENT_SCOPE) +endfunction(_Caffe_import) + +_Caffe_import() -- 2.7.4