# Common variables
#
set(NNFW_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
-# TODO fix this for tizen to use installed version
-set(NNFW_ACL_FOLDER ${CMAKE_SOURCE_DIR}/externals/acl)
-set(NNFW_ACL_INCLUDES ${NNFW_ACL_FOLDER}
- ${NNFW_ACL_FOLDER}/include)
+
+if(NOT "${TARGET_OS}" STREQUAL "tizen")
+ set(NNFW_ACL_FOLDER ${CMAKE_SOURCE_DIR}/externals/acl)
+ set(NNFW_ACL_INCLUDES ${NNFW_ACL_FOLDER}
+ ${NNFW_ACL_FOLDER}/include)
+else()
+ set(NNFW_ACL_FOLDER "")
+ set(NNFW_ACL_INCLUDES "")
+endif()
set(NNFW_ACL_LIBS arm_compute_graph arm_compute arm_compute_core)
#
# GTest support
#
-if(NOT "${TARGET_OS}" STREQUAL "tizen")
+if("${TARGET_OS}" STREQUAL "tizen")
+ enable_testing()
+ find_package(GTest REQUIRED)
+ include_directories(${GTEST_INCLUDE_DIR})
+else("${TARGET_OS}" STREQUAL "tizen")
include(ExternalProject)
# Download and install GoogleTest
ExternalProject_Add(
LOG_BUILD 1
LOG_CONFIGURE 1
CMAKE_ARGS
- -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/config/config_${TARGET_ARCH}-linux.cmake
+ -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/config/config_${TARGET_ARCH}-${TARGET_OS}.cmake
)
ExternalProject_Get_Property(googletest source_dir binary_dir)
# include and link path for all sub project
include_directories(${source_dir}/googletest/include/)
link_directories(${binary_dir}/googlemock/gtest/)
-endif(NOT "${TARGET_OS}" STREQUAL "tizen")
-
-# tizen obs build support gtest, but tizen-cross not yet prepared
-# TODO : gtest for tizen-cross build
-if("${TARGET_OS}" STREQUAL "tizen" AND BUILD_IS_NATIVE)
- enable_testing()
- find_package(GTest REQUIRED)
- include_directories(${GTEST_INCLUDE_DIR})
-endif()
+endif("${TARGET_OS}" STREQUAL "tizen")
# gtest libs
set(NNFW_GTEST_LIBS libgtest.a libgtest_main.a pthread)
-add_subdirectory(externals)
+if (NOT ${TARGET_OS} STREQUAL "tizen")
+ add_subdirectory(externals)
+endif()
add_subdirectory(tools)
add_subdirectory(src)
# Todo: we may set CROSS_BUILD=1 when ROOTFS_DIR is given
# the toolchain file, only for cross build
ifeq ($(CROSS_BUILD),1)
- TOOLCHAIN_FILE=cmake/config/config_$(TARGET_ARCH_LC)-linux.cmake
+ TOOLCHAIN_FILE=cmake/config/config_$(TARGET_ARCH_LC)-$(HOST_OS).cmake
OPTION_TOOLCHAIN=-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE)
else
OPTION_TOOLCHAIN=
endif
ifeq ($(USE_NNAPI), 1)
- OPTION_USE_NNAPI=USE_NNAPI=1
+ OPTION_USE_NNAPI=USE_NNAPI=1
else
OPTION_USE_NNAPI=
endif
### Command (internal)
###
configure_internal:
+ifneq ($(HOST_OS),tizen)
git submodule update --init --recursive
+endif
mkdir -p $(BUILD_ROOT)
cmake -B$(CURDIR)/$(BUILD_ROOT) -H$(CURDIR) \
-DCMAKE_INSTALL_PREFIX=$(INSTALL_PATH) \
--- /dev/null
+#!/bin/bash
+
+# default DOCKER_IMAGE_NAME=nnfw_docker
+DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker}
+echo "Using docker image $DOCKER_IMAGE_NAME"
+
+SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+HOST_HOME=$SCRIPT_ROOT/../
+DOCKER_HOME=/home
+
+GIT_SSL_NO_VERIFY=1
+
+DOCKER_VOLUMES+=" -v $HOST_HOME:$DOCKER_HOME"
+
+DOCKER_ENV_VARS+=" -e http_proxy"
+DOCKER_ENV_VARS+=" -e no_proxy"
+DOCKER_ENV_VARS+=" -e GIT_SSL_NO_VERIFY"
+
+DOCKER_ENV_VARS+=" -e TARGET_ARCH=armv7l"
+DOCKER_ENV_VARS+=" -e CROSS_BUILD=1"
+DOCKER_ENV_VARS+=" -e ROOTFS_DIR=/opt/rootfs/armel"
+DOCKER_ENV_VARS+=" -e HOST_OS=tizen"
+
+DOCKER_RUN_OPTS="--rm"
+DOCKER_RUN_OPTS+=" -w $DOCKER_HOME"
+
+
+TMP_DIR=$HOST_HOME/tmp/
+mkdir -p $TMP_DIR/armel
+
+# prepare rootfs
+wget http://npuarchive.mooo.com/archive/nnfw/rootfs/rootfs_arm_tizen.tar.gz -O $TMP_DIR/rootfs.tar.gz
+chmod 755 $TMP_DIR/rootfs.tar.gz
+
+
+DOCKER_VOLUMES+=" -v $TMP_DIR/:/opt/rootfs"
+
+CMD="tar -zxf /opt/rootfs/rootfs.tar.gz -C /opt/rootfs/armel && make && make install && make build_test_suite"
+
+docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "$CMD"
+BUILD_RESULT=$?
+
+# change owner of root dir and delete rootfs dir
+NNFW_OWNER_UID=$(stat -c "%u" $HOST_HOME)
+NNFW_OWNER_GID=$(stat -c "%g" $HOST_HOME)
+
+CMD="chown -R $NNFW_OWNER_UID:$NNFW_OWNER_GID $DOCKER_HOME && chown -R $NNFW_OWNER_UID:$NNFW_OWNER_GID /opt/rootfs && rm -rf /opt/rootfs/armel"
+docker run $DOCKER_RUN_OPTS $DOCKER_ENV_VARS $DOCKER_VOLUMES $DOCKER_IMAGE_NAME sh -c "$CMD"
+
+rm -rf $TMP_DIR
+exit $BUILD_RESULT
--- /dev/null
+#
+# config for arm-linux
+#
+include(CMakeForceCompiler)
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_PROCESSOR armv7l)
+
+set(CMAKE_C_COMPILER arm-linux-gnueabi-gcc-5)
+set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++-5)
+
+set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/6.2.1")
+
+# where is the target environment
+set(ROOTFS_ARM $ENV{ROOTFS_ARM})
+if(NOT EXISTS "${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+ set(ROOTFS_ARM "${CMAKE_SOURCE_DIR}/tools/cross/rootfs/armel")
+endif()
+
+set(CMAKE_SYSROOT ${ROOTFS_ARM})
+set(CMAKE_FIND_ROOT_PATH ${ROOTFS_ARM})
+set(CMAKE_SHARED_LINKER_FLAGS
+ "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=${ROOTFS_ARM}"
+ CACHE INTERNAL "" FORCE)
+set(CMAKE_EXE_LINKER_FLAGS
+ "${CMAKE_EXE_LINKER_FLAGS} --sysroot=${ROOTFS_ARM}"
+ CACHE INTERNAL "" FORCE)
+
+# search for programs in the build host directories
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+
+# for libraries and headers in the target directories
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+
+
+
+add_compile_options(-mthumb)
+add_compile_options(-mfpu=neon-vfpv4)
+add_compile_options(-mfloat-abi=softfp)
+add_compile_options(--sysroot=${ROOTFS_ARM})
+
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=${ROOTFS_ARM}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --sysroot=${ROOTFS_ARM}")
+
+include_directories(SYSTEM ${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
+include_directories(SYSTEM ${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
+add_compile_options(-Wno-deprecated-declarations) # compile-time option
+add_compile_options(-D__extern_always_inline=inline) # compile-time option
+
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -B${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${ROOTFS_ARM}/lib")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${ROOTFS_ARM}/usr/lib")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -B${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${ROOTFS_ARM}/lib")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${ROOTFS_ARM}/usr/lib")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${ROOTFS_ARM}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
${NNAPI_INCLUDE_DIR}
${NNFW_INCLUDE_DIR}
${NNFW_ACL_INCLUDES})
- target_link_libraries(${TESTNAME} nnfw_util ${NNFW_ACL_LIBS})
-
+ if (${TARGET_OS} STREQUAL "tizen")
+ target_link_libraries(${TESTNAME} nnfw_util OpenCL ${NNFW_ACL_LIBS})
+ else()
+ target_link_libraries(${TESTNAME} nnfw_util ${NNFW_ACL_LIBS})
+ endif()
install(TARGETS ${TESTNAME} DESTINATION bin)
endfunction()
BuildRequires: boost-devel
BuildRequires: libarmcl-devel
BuildRequires: gtest-devel
+BuildRequires: tensorflow-lite
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
${RUNTIME_INCLUDES}
${NNFW_ACL_INCLUDES}
)
-add_dependencies(${LIB_KERNELACL_TEST} googletest)
+if (NOT ${TARGET_OS} STREQUAL "tizen")
+ add_dependencies(${LIB_KERNELACL_TEST} googletest)
+endif()
target_link_libraries(${LIB_KERNELACL_TEST}
${LIB_KERNELACL}
nnfw_util ${NNFW_ACL_LIBS}
add_executable(${RUNTIME_ANDROID_NN_TEST} TestMain.cpp
TestValidation.cpp
TestTrivialModel.cpp)
-add_dependencies(${RUNTIME_ANDROID_NN_TEST} googletest)
+if (NOT ${TARGET_OS} STREQUAL "tizen")
+ add_dependencies(${RUNTIME_ANDROID_NN_TEST} googletest)
+endif()
target_link_libraries(${RUNTIME_ANDROID_NN_TEST} ${LIB_RUNTIME})
target_link_libraries(${RUNTIME_ANDROID_NN_TEST} gtest)
target_link_libraries(${RUNTIME_ANDROID_NN_TEST} pthread)
add_library(nnfw_support_tflite ${SOURCES})
target_include_directories(nnfw_support_tflite PUBLIC ${CMAKE_SOURCE_DIR}/include)
-target_link_libraries(nnfw_support_tflite nnfw_util tensorflow-lite)
+target_link_libraries(nnfw_support_tflite nnfw_util tensorflow-lite pthread dl)
add_executable(nnfw_support_tflite_test_TensorView src/TensorView.test.cpp)
target_link_libraries(nnfw_support_tflite_test_TensorView nnfw_support_tflite)
list(APPEND SOURCES "src/tflite_benchmark.cc")
add_executable(tflite_benchmark ${SOURCES})
-target_link_libraries(tflite_benchmark tensorflow-lite nnfw_util)
+target_link_libraries(tflite_benchmark tensorflow-lite pthread dl nnfw_util)
add_executable(tflite_conv_example "src/conv.cpp")
-target_link_libraries(tflite_conv_example tensorflow-lite)
+target_link_libraries(tflite_conv_example tensorflow-lite pthread dl)
add_executable(tflite_run ${TFLITE_RUN_SRCS})
target_include_directories(tflite_run PRIVATE src)
-target_link_libraries(tflite_run tensorflow-lite)
+target_link_libraries(tflite_run tensorflow-lite pthread dl)
target_link_libraries(tflite_run boost_program_options boost_system boost_filesystem)
install(TARGETS tflite_run DESTINATION bin)
## Add test cpp file
add_executable(tflite_test
src/tflite_test.cc)
-add_dependencies(tflite_test googletest)
+if (NOT ${TARGET_OS} STREQUAL "tizen")
+ add_dependencies(tflite_test googletest)
+endif()
+
## Link test executable against gtest & gtest_main
target_link_libraries(tflite_test libgtest.a libgtest_main.a pthread)