blob: 4375735418de6ace0452ba761f55b46396a8c91b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
cmake_minimum_required(VERSION 3.5.1)
project(nnfw)
enable_testing()
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib:$ORIGIN/")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(NNAS_PROJECT_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." CACHE
INTERNAL "Where to find nnas top-level source directory"
)
set(NNAS_EXTERNALS_DIR
"${NNAS_PROJECT_SOURCE_DIR}/externals" CACHE
INTERNAL "Where to download external dependencies"
)
set(NNFW_OVERLAY_DIR "${CMAKE_BINARY_DIR}/overlay" CACHE
INTERNAL "Where locally built external dependencies are installed")
# Share package build script with compiler
set(EXT_OVERLAY_DIR ${NNFW_OVERLAY_DIR})
# This allows find_package to access configurations installed inside overlay
list(APPEND CMAKE_PREFIX_PATH "${EXT_OVERLAY_DIR}")
macro(nnas_include PREFIX)
include("${NNAS_PROJECT_SOURCE_DIR}/infra/cmake/modules/${PREFIX}.cmake")
endmacro(nnas_include)
# 'find_package()' wrapper to find in cmake/packages folder
#
# Example:
# nnfw_find_package(Boost): Load settings from 'BoostConfig.cmake' file
# - this may drop warnings like "-- Could NOT find Boost (missing: Boost_DIR)
# nnfw_find_package(Boost QUIET): Load settings silently, without warnings
# nnfw_find_package(Boost REQUIRED): Load settings but stop with error when failed
macro(nnfw_find_package PREFIX)
find_package(${PREFIX} CONFIG NO_DEFAULT_PATH PATHS ${CMAKE_SOURCE_DIR}/cmake/packages ${ARGN})
endmacro(nnfw_find_package)
# TODO Remove nnfw_find_pacakge
macro(nnas_find_package PREFIX)
find_package(${PREFIX} CONFIG NO_DEFAULT_PATH
PATHS ${NNAS_PROJECT_SOURCE_DIR}/infra/cmake/packages
${ARGN}
)
endmacro(nnas_find_package)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)
# This feature works with CMake 3.5.2 or later. However, using previous versions does not produce
# an error. We are still officially using CMake 3.5.1, but put this code for the sake of semantic
# support in various development tools.
# Todo: Someday, CMake needs to be updated to 3.7.2 or later to take advantage of improvements
# such as `cmake-server`.
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# identify platform: HOST_PLATFORM, TARGET_PLATFORM and related
# note: this should be placed before flags and options setting
nnas_include(IdentifyPlatform)
# Configuration flags
include("cmake/CfgOptionFlags.cmake")
# and besides CfgOptionFlags.cmake that can be given outside
# COVERAGE_BUILD: build boolean flag that enables converage test
# ROOTFS_DIR: rootfs path for cross building
# TARGET_ARCH: target architecture string for cross building
# TARGET_OS: target os string for cross building
# apply compilation flags
# NOTE This should be placed after cmake/CfgOptionFlags.cmake files include
# because compile flag setting can be decided using option (ex. ENABLE_COVERAGE)
include("cmake/ApplyCompileFlags.cmake")
nnfw_find_package(GTest QUIET)
option(ENABLE_TEST "Build Tests using Google Test" ${GTest_FOUND})
if(${ENABLE_TEST} AND NOT ${GTest_FOUND})
message(FATAL_ERROR "Google Test is required to enable test")
endif(${ENABLE_TEST} AND NOT ${GTest_FOUND})
if(${ENABLE_COVERAGE} AND NOT ${ENABLE_TEST})
message(FATAL_ERROR "Test should be enabled to measure test coverage")
endif(${ENABLE_COVERAGE} AND NOT ${ENABLE_TEST})
add_library(nnfw_common INTERFACE)
if(ENABLE_STRICT_BUILD)
target_compile_options(nnfw_common INTERFACE -Werror -Wall -Wextra)
endif(ENABLE_STRICT_BUILD)
macro(nnfw_strict_build TARGET)
if(ENABLE_STRICT_BUILD)
target_compile_options(${TARGET} PRIVATE -Werror -Wall -Wextra)
endif(ENABLE_STRICT_BUILD)
endmacro(nnfw_strict_build)
# TODO Replace using default build option setting in cmake/buildtool/config/config_linux.cmake
# to link nnfw_coverage on each module which want to check coverage
add_library(nnfw_coverage INTERFACE)
if(ENABLE_COVERAGE)
target_compile_options(nnfw_coverage INTERFACE -fprofile-arcs -ftest-coverage)
target_link_libraries(nnfw_coverage INTERFACE gcov)
endif(ENABLE_COVERAGE)
nnas_include(AddSubdirectories)
add_subdirectory(${NNAS_PROJECT_SOURCE_DIR}/compute compute)
add_subdirectory(${NNAS_PROJECT_SOURCE_DIR}/runtime runtime)
add_subdirectory(${NNAS_PROJECT_SOURCE_DIR}/tests tests)
add_subdirectory(${NNAS_PROJECT_SOURCE_DIR}/tools tools)
|