lite.cmake 4.4 KB
Newer Older
石晓伟 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed 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.

if(NOT LINUX OR NOT WITH_MKL)
  message("Paddle-lite will not build because the required Linux and MKL do not exist.")
  set(WITH_LITE OFF)
  return()
endif()

21 22 23 24 25 26 27 28 29
if(XPU_SDK_ROOT)
  set(LITE_WITH_XPU ON)
  include_directories("${XPU_SDK_ROOT}/XTDK/include")
  include_directories("${XPU_SDK_ROOT}/XTCL/include")
  add_definitions(-DPADDLE_WITH_XPU)
  LINK_DIRECTORIES("${XPU_SDK_ROOT}/XTDK/shlib/")
  LINK_DIRECTORIES("${XPU_SDK_ROOT}/XTDK/runtime/shlib/")
endif()

石晓伟 已提交
30 31 32 33 34 35
if (NOT LITE_SOURCE_DIR OR NOT LITE_BINARY_DIR)
  include(ExternalProject)
  set(LITE_PROJECT extern_lite)
  set(LITE_SOURCES_DIR ${THIRD_PARTY_PATH}/lite)
  set(LITE_INSTALL_DIR ${THIRD_PARTY_PATH}/install/lite)

36
  if(NOT LITE_GIT_TAG)
37 38 39 40 41
    set(LITE_GIT_TAG 42ab4d559f6659edfc35040fb30fdcec3dc3f8aa)
  endif()

  if(NOT CUDA_ARCH_NAME)
    set(CUDA_ARCH_NAME "Auto")
42 43
  endif()

石晓伟 已提交
44
  # No quotes, so cmake can resolve it as a command with arguments.
45
  set(LITE_BUILD_COMMAND $(MAKE) publish_inference -j)
石晓伟 已提交
46 47 48 49 50 51 52 53
  set(LITE_OPTIONAL_ARGS -DWITH_MKL=ON
                         -DLITE_WITH_CUDA=${WITH_GPU}
                         -DWITH_MKLDNN=OFF
                         -DLITE_WITH_X86=ON
                         -DLITE_WITH_PROFILE=OFF
                         -DWITH_LITE=OFF
                         -DLITE_WITH_LIGHT_WEIGHT_FRAMEWORK=OFF
                         -DWITH_PYTHON=OFF
54
                         -DWITH_TESTING=OFF
石晓伟 已提交
55 56
                         -DLITE_BUILD_EXTRA=ON
                         -DCUDNN_ROOT=${CUDNN_ROOT}
57
                         -DLITE_WITH_STATIC_CUDA=OFF
58
                         -DCUDA_ARCH_NAME=${CUDA_ARCH_NAME}
59 60
                         -DLITE_WITH_XPU=${LITE_WITH_XPU}
                         -DXPU_SDK_ROOT=${XPU_SDK_ROOT}
石晓伟 已提交
61 62 63 64 65 66
                         -DLITE_WITH_ARM=OFF)

  ExternalProject_Add(
      ${LITE_PROJECT}
      ${EXTERNAL_PROJECT_LOG_ARGS}
      GIT_REPOSITORY      "https://github.com/PaddlePaddle/Paddle-Lite.git"
67
      GIT_TAG             ${LITE_GIT_TAG}
石晓伟 已提交
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
      PREFIX              ${LITE_SOURCES_DIR}
      UPDATE_COMMAND      ""
      BUILD_COMMAND       ${LITE_BUILD_COMMAND}
      INSTALL_COMMAND     ""
      CMAKE_ARGS          -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
                          -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
                          -DCMAKE_CXX_FLAGS=${LITE_CMAKE_CXX_FLAGS}
                          -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
                          -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
                          -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
                          -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
                          -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
                          -DCMAKE_POSITION_INDEPENDENT_CODE=ON
                          -DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE}
                          ${EXTERNAL_OPTIONAL_ARGS}
                          ${LITE_OPTIONAL_ARGS}
  )
  ExternalProject_Get_property(${LITE_PROJECT} BINARY_DIR)
  ExternalProject_Get_property(${LITE_PROJECT} SOURCE_DIR)
  set(LITE_BINARY_DIR ${BINARY_DIR})
  set(LITE_SOURCE_DIR ${SOURCE_DIR})

endif()

message(STATUS "Paddle-lite BINARY_DIR: ${LITE_BINARY_DIR}")
message(STATUS "Paddle-lite SOURCE_DIR: ${LITE_SOURCE_DIR}")
include_directories(${LITE_SOURCE_DIR})
include_directories(${LITE_BINARY_DIR})

97
function(external_lite_libs alias path)
98
  add_library(${alias} SHARED IMPORTED GLOBAL)
石晓伟 已提交
99 100 101 102 103 104 105
  SET_PROPERTY(TARGET ${alias} PROPERTY IMPORTED_LOCATION
               ${path})
  if (LITE_PROJECT)
    add_dependencies(${alias} ${LITE_PROJECT})
  endif()
endfunction()

106 107
external_lite_libs(lite_full_static ${LITE_BINARY_DIR}/inference_lite_lib/cxx/lib/libpaddle_full_api_shared.so)
set(LITE_SHARED_LIB ${LITE_BINARY_DIR}/inference_lite_lib/cxx/lib/libpaddle_full_api_shared.so)
石晓伟 已提交
108 109

add_definitions(-DPADDLE_WITH_LITE)
110
add_definitions(-DLITE_WITH_LOG)