diff options
author | Chunseok Lee <chunseok.lee@samsung.com> | 2020-03-05 15:10:09 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2020-03-05 15:22:53 +0900 |
commit | d91a039e0eda6fd70dcd22672b8ce1817c1ca50e (patch) | |
tree | 62668ec548cf31fadbbf4e99522999ad13434a25 /infra/nncc/CMakeLists.txt | |
parent | bd11b24234d7d43dfe05a81c520aa01ffad06e42 (diff) | |
download | nnfw-d91a039e0eda6fd70dcd22672b8ce1817c1ca50e.tar.gz nnfw-d91a039e0eda6fd70dcd22672b8ce1817c1ca50e.tar.bz2 nnfw-d91a039e0eda6fd70dcd22672b8ce1817c1ca50e.zip |
catch up to tizen_5.5 and remove unness dir
- update to tizen_5.5
- remove dirs
Diffstat (limited to 'infra/nncc/CMakeLists.txt')
-rw-r--r-- | infra/nncc/CMakeLists.txt | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/infra/nncc/CMakeLists.txt b/infra/nncc/CMakeLists.txt new file mode 100644 index 000000000..12b840636 --- /dev/null +++ b/infra/nncc/CMakeLists.txt @@ -0,0 +1,144 @@ +cmake_minimum_required(VERSION 3.1) + +project(nncc) + +enable_testing() + +set(CMAKE_CXX_STANDARD 11) + +# 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.1.0, 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) + +set(NNCC_PROJECT_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." CACHE + INTERNAL "Where to find nncc top-level source directory" +) + +set(NNCC_EXTERNALS_DIR + "${NNCC_PROJECT_SOURCE_DIR}/externals" CACHE + INTERNAL "Where to download external dependencies" +) +set(NNCC_OVERLAY_DIR "${CMAKE_BINARY_DIR}/overlay" CACHE + INTERNAL "Where locally built external dependencies are installed") + +# This allows find_package to access configurations installed inside overlay +list(APPEND CMAKE_PREFIX_PATH "${NNCC_OVERLAY_DIR}") + +macro(nncc_include PREFIX) + include("${NNCC_PROJECT_SOURCE_DIR}/infra/nncc/cmake/modules/${PREFIX}.cmake") +endmacro(nncc_include) + +macro(nncc_find_package PREFIX) + find_package(${PREFIX} CONFIG NO_DEFAULT_PATH + PATHS ${NNCC_PROJECT_SOURCE_DIR}/infra/nncc/cmake/packages + ${ARGN} + ) +endmacro(nncc_find_package) + +# nncc_find_resource(NAME) will update the following variables +# +# NAME_FOUND +# NAME_DIR +# +# TODO Explain how to add a resource in README.md +function(nncc_find_resource NAME) + set(RESOURCE_DIR "${NNCC_PROJECT_SOURCE_DIR}/res/${NAME}") + + if(NOT IS_DIRECTORY ${RESOURCE_DIR}) + set(${NAME}_FOUND FALSE PARENT_SCOPE) + return() + endif(NOT IS_DIRECTORY ${RESOURCE_DIR}) + + set(${NAME}_DIR ${RESOURCE_DIR} PARENT_SCOPE) + set(${NAME}_FOUND TRUE PARENT_SCOPE) +endfunction(nncc_find_resource) + +### +### CMake configuration +### +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Type of build" FORCE) +endif(NOT CMAKE_BUILD_TYPE) +message(STATUS "Use '${CMAKE_BUILD_TYPE}' configuration") + +# Prefer -pthread to -lpthread for find_package(Threads ...) +# +# std::thread code compiled only with -lpthread emits the following runtime error (on GCC 4.8.4) +# +# terminate called after throwing an instance of 'std::system_error' +# what(): Enable multithreading to use std::thread: Operation not permitted +# +set(THREADS_PREFER_PTHREAD_FLAG TRUE) + +### +### Configuration +### +option(DOWNLOAD_PROTOBUF "Download Protocol Buffer source" ON) +option(BUILD_PROTOBUF "Locally build Protocol Buffer from the downloaded source" ON) +option(DOWNLOAD_EIGEN "Download Eigen source" ON) +option(DOWNLOAD_FARMHASH "Download farmhash source" ON) +option(DOWNLOAD_GEMMLOWP "Download GEMM low precesion library source" ON) +option(DOWNLOAD_NEON2SSE "Download NEON2SSE library source" ON) +option(DOWNLOAD_GFLAGS "Download GFlags source" OFF) +option(DOWNLOAD_FLATBUFFERS "Download FlatBuffers source" ON) +option(BUILD_FLATBUFFERS "Locally build Flatbuffers from the downloaded source" ON) +option(DOWNLOAD_TENSORFLOW "Download TensorFlow source" ON) +option(DOWNLOAD_CAFFE "Download Caffe source" ON) +option(DOWNLOAD_PYTORCH "Download Pytorch source" ON) +option(DOWNLOAD_ONNX "Download ONNX source" ON) +option(DOWNLOAD_ABSEIL "Download Abseil-cpp source" ON) + +option(DOWNLOAD_GTEST "Download Google Test source" ON) +option(BUILD_GTEST "Build Google Test from the downloaded source" ON) + +nncc_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}) + +option(ENABLE_COVERAGE "Build for coverage test" OFF) +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}) + +if(${ENABLE_TEST}) + include(CTest) +endif(${ENABLE_TEST}) + +option(ENABLE_CONTRIB_BUILD "Build incubating projects under contrib/" ON) +option(ENABLE_STRICT_BUILD "Treat warning as error" OFF) + +### +### Target +### +add_library(nncc_common INTERFACE) +if(ENABLE_STRICT_BUILD) + # TODO Remove -Wno-reoder + target_compile_options(nncc_common INTERFACE -Werror -Wall -Wextra -Wno-reorder) +endif(ENABLE_STRICT_BUILD) + +add_library(nncc_coverage INTERFACE) +if(ENABLE_COVERAGE) + target_compile_options(nncc_coverage INTERFACE -g -O0 -fprofile-arcs -ftest-coverage) + target_link_libraries(nncc_coverage INTERFACE gcov) +endif(ENABLE_COVERAGE) + +### +### Function +### +# TODO Remove this nncc_include +nncc_include(OptionalTargetTools) +nncc_include(add_subdirectories) + +### +### Components +### +if(ENABLE_CONTRIB_BUILD) + add_subdirectory("${NNCC_PROJECT_SOURCE_DIR}/compiler" "${CMAKE_BINARY_DIR}/compiler") +endif(ENABLE_CONTRIB_BUILD) |