CMakeLists.txt 4.1 KB
Newer Older
朔-望's avatar
朔-望 已提交
1 2
cmake_minimum_required(VERSION 3.0)
project(paddle-mobile)
W
wangliu 已提交
3

L
for  
liuruilong 已提交
4
option(DEBUGING "enable debug mode" ON)
W
wangliu 已提交
5
option(USE_OPENMP "openmp support" OFF)
L
liuruilong 已提交
6
option(USE_EXCEPTION "use std exception" ON)
L
liuruilong 已提交
7 8
option(LOG_PROFILE "log profile" ON)
# select the platform to build
D
dolphin8 已提交
9
option(CPU "armv7 with neon" ON)
W
wangliu 已提交
10
option(MALI_GPU "mali gpu" OFF)
R
Ruilong Liu 已提交
11
option(FPGA "fpga" OFF)
D
dolphin8 已提交
12
set(DEBUGING ON)
W
wangliu 已提交
13 14 15 16

file(GLOB_RECURSE PADDLE_MOBILE_CC src/*.cc src/*.cpp src/*.c)
file(GLOB_RECURSE PADDLE_MOBILE_H src/*.h)

L
for  
liuruilong 已提交
17
if (CPU)
D
dolphin8 已提交
18
  add_definitions(-DPADDLE_MOBILE_CPU)
W
wangliu 已提交
19 20 21 22 23
else()
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/arm/*.h)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/arm/*.cc)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/arm/*.cpp)

L
liuruilong 已提交
24 25 26
endif()

if (MALI_GPU)
L
for  
liuruilong 已提交
27
    add_definitions(-DPADDLE_MOBILE_MALI_GPU)
S
sharper 已提交
28 29 30 31 32 33 34 35 36 37 38
    add_definitions(-DUSE_ACL=1)
    add_definitions(-DUSE_OPENCL)
    set(ACL_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/mali/ACL_Android)
    include_directories(${ACL_ROOT} ${ACL_ROOT}/include)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${ACL_ROOT}/build")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -larm_compute")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -larm_compute_core")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -larm_compute_graph")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${ACL_ROOT}/build/opencl-1.2-stubs")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lOpenCL")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_ACL=1")
W
wangliu 已提交
39 40 41 42
else()
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/mali/*.h)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/mali/*.cc)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/mali/*.cpp)
L
liuruilong 已提交
43 44 45
endif()

if(FPGA)
W
wangliu 已提交
46 47 48 49 50
    add_definitions(-DPADDLE_MOBILE_FPGA)
else()
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/fpga/*.h)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/fpga/*.cc)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/kernel/fpga/*.cpp)
L
for  
liuruilong 已提交
51 52
endif()

D
dolphin8 已提交
53

Z
zhaojiaying01 已提交
54
set(CMAKE_CXX_FLAGS "-std=c++14 -O3 -s ${CMAKE_CXX_FLAGS}")
D
dolphin8 已提交
55 56 57
if (DEBUGING)
  message(STATUS "debug")
  set(CMAKE_BUILD_TYPE Debug)
D
dolphin8 已提交
58
  set(CMAKE_CXX_FLAGS_DEBUG "-g -DNDEBUG")
D
dolphin8 已提交
59 60 61
  add_definitions(-DPADDLE_MOBILE_DEBUG)
  if (ANDROID_NDK_TOOLCHAIN_INCLUDED)
    add_definitions(-DARMV7)
W
wangliu 已提交
62
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -llog")
D
dolphin8 已提交
63 64 65
  endif ()
else ()
  set(CMAKE_BUILD_TYPE Release)
D
dolphin8 已提交
66
  set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG")
D
dolphin8 已提交
67 68
  add_definitions(-fvisibility=hidden -fvisibility-inlines-hidden)
endif ()
朔-望's avatar
朔-望 已提交
69

W
wangliu 已提交
70
if (USE_EXCEPTION)
W
wangliu 已提交
71
    message(STATUS "use exception")
W
wangliu 已提交
72 73 74 75 76 77
    add_definitions(-DENABLE_EXCEPTION)
    add_definitions(-fexceptions)
else()
    add_definitions(-fno-exceptions)
endif ()

L
liuruilong 已提交
78 79 80 81
if (LOG_PROFILE)
    add_definitions(-DPADDLE_MOBILE_PROFILE)
endif()

D
dolphin8 已提交
82 83 84
if(USE_OPENMP)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
    add_definitions(-DPADDLE_MOBILE_USE_OPENMP)
85
endif()
Z
zhaojiaying01 已提交
86

朔-望's avatar
朔-望 已提交
87

W
wangliu 已提交
88

朔-望's avatar
朔-望 已提交
89

D
dolphin8 已提交
90 91 92 93
if (NOT ANDROID_NDK_TOOLCHAIN_INCLUDED)
  list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/jni/*.cpp)
  list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/jni/*.h)
  list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/math/math_func_neon.h)
W
wangliu 已提交
94 95
endif ()

朔-望's avatar
朔-望 已提交
96 97
include_directories(src/)

D
dolphin8 已提交
98 99 100 101 102
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY build)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY build)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY build)
H
Haipeng Wang 已提交
103

104 105 106 107
# NET default
set(NET "defult" CACHE STRING "select net type")
set_property(CACHE NET PROPERTY STRINGS "defult" "googlenet" "mobilenet" "yolo" "squeezenet")

D
dolphin8 已提交
108
include("${CMAKE_CURRENT_LIST_DIR}/tools/op.cmake")
H
Haipeng Wang 已提交
109

D
dolphin8 已提交
110 111 112 113
# if (IS_IOS)
#     add_library(paddle-mobile STATIC ${PADDLE_MOBILE_CC} ${PADDLE_MOBILE_H})
if (ANDROID_NDK_TOOLCHAIN_INCLUDED)
    list(REMOVE_DUPLICATES CMAKE_CXX_FLAGS)
L
liuruilong 已提交
114
    add_library(paddle-mobile SHARED ${PADDLE_MOBILE_CC} ${PADDLE_MOBILE_H})
D
dolphin8 已提交
115
else ()
L
liuruilong 已提交
116 117
    add_library(paddle-mobile SHARED ${PADDLE_MOBILE_CC} ${PADDLE_MOBILE_H})
endif ()
朔-望's avatar
朔-望 已提交
118

W
wangliu 已提交
119
if(DEBUGING)
L
liuruilong 已提交
120
    add_subdirectory(test)
W
wangliu 已提交
121
endif()
W
wangliu 已提交
122