blob: d1d80601711ada13b9fba68e29413134c59f0998 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
SET(SINGA_LINKER_LIBS "")
IF(USE_MODULES)
#IF(USE_SHARED_LIBS)
# include(FindProtobuf)
# SET(CMAKE_INSTALL_RPATH "${CMAKE_BINARY_DIR}/lib")
# link_directories(${CMAKE_BINARY_DIR}/lib)
# SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
# SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.so")
# SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotoc.so")
# SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
# INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIR})
# LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
# #IF(USE_CBLAS)
# SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
# SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.so")
# INCLUDE_DIRECTORIES(SYSTEM ${CBLAS_INCLUDE_DIR})
# LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
#ENDIF()
#ELSE()
include(FindProtobuf)
SET(PROTOBUF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
SET(PROTOBUF_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
SET(PROTOBUF_PROTOC_LIBRARY "${CMAKE_BINARY_DIR}/lib/libprotobuf.a")
SET(PROTOBUF_PROTOC_EXECUTABLE "${CMAKE_BINARY_DIR}/bin/protoc")
INCLUDE_DIRECTORIES( ${PROTOBUF_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
#IF(USE_CBLAS)
SET(CBLAS_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
SET(CBLAS_LIBRARIES "${CMAKE_BINARY_DIR}/lib/libopenblas.a")
INCLUDE_DIRECTORIES( ${CBLAS_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
#ENDIF()
#ENDIF()
ELSE()
FIND_PACKAGE( Protobuf 3.0 REQUIRED )
#MESSAGE(STATUS "proto libs " ${PROTOBUF_LIBRARY})
LIST(APPEND SINGA_LINKER_LIBS ${PROTOBUF_LIBRARY})
#IF(USE_CBLAS)
FIND_PACKAGE(CBLAS REQUIRED)
INCLUDE_DIRECTORIES( ${CBLAS_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${CBLAS_LIBRARIES})
#MESSAGE(STATUS "Found cblas at ${CBLAS_LIBRARIES}")
#ENDIF()
ENDIF()
#INCLUDE("cmake/ProtoBuf.cmake")
#INCLUDE("cmake/Protobuf.cmake")
FIND_PACKAGE(Glog)
IF(GLOG_FOUND)
#MESSAGE(STATUS "GLOG FOUND at ${GLOG_INCLUDE_DIR}")
#ADD_DEFINITIONS("-DUSE_GLOG")
SET(USE_GLOG TRUE)
LIST(APPEND SINGA_LINKER_LIBS ${GLOG_LIBRARIES})
INCLUDE_DIRECTORIES(${GLOG_INCLUDE_DIR})
ENDIF()
IF(USE_LMDB)
FIND_PACKAGE(LMDB REQUIRED)
INCLUDE_DIRECTORIES( ${LMDB_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${LMDB_LIBRARIES})
#MESSAGE(STATUS "FOUND lmdb at ${LMDB_INCLUDE_DIR}")
ENDIF()
IF(USE_CUDA)
INCLUDE("cmake/Cuda.cmake")
SET(CNMEM_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include")
SET(CNMEM_LIBRARY "${CMAKE_BINARY_DIR}/lib/libcnmem.a")
LIST(APPEND SINGA_LINKER_LIBS ${CNMEM_LIBRARY})
ELSE()
SET(USE_CUDNN FALSE)
ENDIF()
IF(USE_OPENCL)
FIND_PACKAGE(OpenCL REQUIRED)
IF(NOT OPENCL_FOUND)
MESSAGE(SEND_ERROR "OpenCL was requested, but not found.")
ELSE()
INCLUDE_DIRECTORIES( ${OPENCL_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${OPENCL_LIBRARIES})
FIND_PACKAGE(ViennaCL REQUIRED)
IF(NOT ViennaCL_FOUND)
MESSAGE(SEND_ERROR "ViennaCL is required if OpenCL is enabled.")
ELSE()
#MESSAGE(STATUS "Found ViennaCL headers at ${ViennaCL_INCLUDE_DIR}")
INCLUDE_DIRECTORIES( ${ViennaCL_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${ViennaCL_LIBRARIES})
ENDIF()
ENDIF()
ENDIF()
#FIND_PACKAGE(Glog REQUIRED)
#INCLUDE_DIRECTORIES(SYSTEM ${GLOG_INCLUDE_DIRS})
#LIST(APPEND SINGA_LINKER_LIBS ${GLOG_LIBRARIES})
#MESSAGE(STATUS "Found glog at ${GLOG_INCLUDE_DIRS}")
IF(USE_OPENCV)
FIND_PACKAGE(OpenCV REQUIRED)
MESSAGE(STATUS "Found OpenCV_${OpenCV_VERSION} at ${OpenCV_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES( ${OpenCV_INCLUDE_DIRS})
LIST(APPEND SINGA_LINKER_LIBS ${OpenCV_LIBRARIES})
ENDIF()
#LIST(APPEND SINGA_LINKER_LIBS "/home/wangwei/local/lib/libopenblas.so")
#MESSAGE(STATUS "link lib : " ${SINGA_LINKER_LIBS})
IF(USE_PYTHON)
IF(USE_PYTHON3)
set(Python_ADDITIONAL_VERSIONS 3.6 3.5 3.4)
FIND_PACKAGE(PythonInterp 3 REQUIRED)
FIND_PACKAGE(PythonLibs 3 REQUIRED)
FIND_PACKAGE(SWIG 3.0.10 REQUIRED)
ELSE()
FIND_PACKAGE(PythonInterp 2.7 REQUIRED)
FIND_PACKAGE(PythonLibs 2.7 REQUIRED)
FIND_PACKAGE(SWIG 3.0.8 REQUIRED)
ENDIF()
ENDIF()
IF(USE_JAVA)
FIND_PACKAGE(Java REQUIRED)
FIND_PACKAGE(JNI REQUIRED)
FIND_PACKAGE(SWIG 3.0 REQUIRED)
ENDIF()
IF(USE_MKLDNN)
FIND_PATH(MKLDNN_INCLUDE_DIR NAME "mkldnn.hpp" PATHS "$ENV{CMAKE_INCLUDE_PATH}")
FIND_LIBRARY(MKLDNN_LIBRARIES NAME "mkldnn" PATHS "$ENV{CMAKE_LIBRARY_PATH}")
MESSAGE(STATUS "Found MKLDNN at ${MKLDNN_INCLUDE_DIR}")
INCLUDE_DIRECTORIES(${MKLDNN_INCLUDE_DIR})
LIST(APPEND SINGA_LINKER_LIBS ${MKLDNN_LIBRARIES})
ENDIF()