CMakeLists.txt 4.8 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" ON)
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)
W
wangliu 已提交
12

13
file(GLOB_RECURSE PADDLE_MOBILE_CC src/*.cc src/*.cpp src/*.c src/*.mm)
W
wangliu 已提交
14
file(GLOB_RECURSE PADDLE_MOBILE_H src/*.h)
L
liuruilong 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
include_directories(src/)

set(CMAKE_CXX_FLAGS "-std=c++14 -O3 -s ${CMAKE_CXX_FLAGS}")
if (DEBUGING)
    message(STATUS "debug")
    set(CMAKE_BUILD_TYPE Debug)
    set(CMAKE_CXX_FLAGS_DEBUG "-g -DNDEBUG")
    add_definitions(-DPADDLE_MOBILE_DEBUG)
else ()
    set(CMAKE_BUILD_TYPE Release)
    set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG")
    add_definitions(-fvisibility=hidden -fvisibility-inlines-hidden)
endif ()

if (USE_EXCEPTION)
    message(STATUS "use exception")
    add_definitions(-DENABLE_EXCEPTION)
    add_definitions(-fexceptions)
else()
    add_definitions(-fno-exceptions)
endif ()

if (LOG_PROFILE)
    add_definitions(-DPADDLE_MOBILE_PROFILE)
endif()

if(USE_OPENMP)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
    add_definitions(-DPADDLE_MOBILE_USE_OPENMP)
endif()

# platform control
if (ARM_LINUX)
    include("${CMAKE_CURRENT_LIST_DIR}/tools/arm-platform.cmake")
endif ()
W
wangliu 已提交
50

L
for  
liuruilong 已提交
51
if (CPU)
D
dolphin8 已提交
52
  add_definitions(-DPADDLE_MOBILE_CPU)
W
wangliu 已提交
53
else()
L
liuruilong 已提交
54 55 56 57
    file(GLOB_RECURSE _tmp_list src/operators/kernel/arm/*.cpp src/operators/kernel/arm/*.cc)
    foreach(f ${_tmp_list})
        list(REMOVE_ITEM PADDLE_MOBILE_CC ${f})
    endforeach()
W
wangliu 已提交
58

L
liuruilong 已提交
59 60 61 62
    file(GLOB_RECURSE _tmp_list_h src/operators/kernel/arm/*.h)
    foreach(f ${_tmp_list_h})
        list(REMOVE_ITEM PADDLE_MOBILE_H ${f})
    endforeach()
L
liuruilong 已提交
63 64 65
endif()

if (MALI_GPU)
L
for  
liuruilong 已提交
66
    add_definitions(-DPADDLE_MOBILE_MALI_GPU)
S
sharper 已提交
67 68 69 70 71 72 73 74 75 76 77
    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 已提交
78
else()
79 80 81 82 83 84 85 86 87
    file(GLOB_RECURSE _tmp_list src/operators/kernel/mali/*.cpp src/operators/kernel/mali/*.cc)
    foreach(f ${_tmp_list})
        list(REMOVE_ITEM PADDLE_MOBILE_CC ${f})
    endforeach()

    file(GLOB_RECURSE _tmp_list_h src/operators/kernel/mali/*.h)
    foreach(f ${_tmp_list_h})
        list(REMOVE_ITEM PADDLE_MOBILE_H ${f})
    endforeach()
L
liuruilong 已提交
88 89 90
endif()

if(FPGA)
W
wangliu 已提交
91 92
    add_definitions(-DPADDLE_MOBILE_FPGA)
else()
L
liuruilong 已提交
93 94 95 96 97 98 99 100 101
    file(GLOB_RECURSE _tmp_list src/operators/kernel/fpga/*.cpp src/operators/kernel/fpga/*.cc)
    foreach(f ${_tmp_list})
        list(REMOVE_ITEM PADDLE_MOBILE_CC ${f})
    endforeach()

    file(GLOB_RECURSE _tmp_list_h src/operators/kernel/fpga/*.h)
    foreach(f ${_tmp_list_h})
        list(REMOVE_ITEM PADDLE_MOBILE_H ${f})
    endforeach()
L
for  
liuruilong 已提交
102 103
endif()

D
dolphin8 已提交
104

L
liuruilong 已提交
105
if (ANDROID_NDK_TOOLCHAIN_INCLUDED)
W
wangliu 已提交
106
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -llog")
L
liuruilong 已提交
107
    add_definitions(-DARMV7)
W
wangliu 已提交
108
else()
109 110 111
    list(REMOVE_ITEM PADDLE_MOBILE_H ${CMAKE_CURRENT_SOURCE_DIR}/src/jni/paddle_mobile_jni.h)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/jni/paddle_mobile_jni.cpp)
    list(REMOVE_ITEM PADDLE_MOBILE_H ${CMAKE_CURRENT_SOURCE_DIR}/src/operators/math/math_func_neon.h)
W
wangliu 已提交
112 113
endif ()

L
liuruilong 已提交
114 115 116 117 118 119
if (IS_IOS)
else()
    list(REMOVE_ITEM PADDLE_MOBILE_H ${CMAKE_CURRENT_SOURCE_DIR}/src/ios_io/PaddleMobile.h)
    list(REMOVE_ITEM PADDLE_MOBILE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/ios_io/PaddleMobile.mm)
    list(REMOVE_ITEM PADDLE_MOBILE_H ${CMAKE_CURRENT_SOURCE_DIR}/src/ios_io/op_symbols.h)
endif ()
朔-望's avatar
朔-望 已提交
120

D
dolphin8 已提交
121 122 123 124 125
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 已提交
126

127 128 129
# NET default
set(NET "defult" CACHE STRING "select net type")
set_property(CACHE NET PROPERTY STRINGS "defult" "googlenet" "mobilenet" "yolo" "squeezenet")
D
dolphin8 已提交
130
include("${CMAKE_CURRENT_LIST_DIR}/tools/op.cmake")
H
Haipeng Wang 已提交
131

132

L
liuruilong 已提交
133
# build library
D
dolphin8 已提交
134 135
if (ANDROID_NDK_TOOLCHAIN_INCLUDED)
    list(REMOVE_DUPLICATES CMAKE_CXX_FLAGS)
L
liuruilong 已提交
136
    add_library(paddle-mobile SHARED ${PADDLE_MOBILE_CC} ${PADDLE_MOBILE_H})
137
elseif(IS_IOS)
L
liuruilong 已提交
138
    add_library(paddle-mobile STATIC ${PADDLE_MOBILE_CC} ${PADDLE_MOBILE_H})
D
dolphin8 已提交
139
else ()
L
liuruilong 已提交
140 141
    add_library(paddle-mobile SHARED ${PADDLE_MOBILE_CC} ${PADDLE_MOBILE_H})
endif ()
朔-望's avatar
朔-望 已提交
142

L
liuruilong 已提交
143
# unit test
W
wangliu 已提交
144
if(DEBUGING)
L
liuruilong 已提交
145 146 147 148
    if(IS_IOS)
    else()
        add_subdirectory(test)
    endif()
W
wangliu 已提交
149
endif()
W
wangliu 已提交
150