diff --git a/CMakeLists.txt b/CMakeLists.txt index a9f615b..295c077 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,8 +9,12 @@ set(OVXLIB_API_ATTR "__attribute__\(\(visibility\(\"default\"\)\)\)") message(${OVXLIB_API_ATTR}) add_definitions(-DOVXLIB_API=${OVXLIB_API_ATTR}) -# find dependencies -find_package(OvxDrv REQUIRED PATHS ${PROJECT_SOURCE_DIR}/cmake) +if("${HARDWARE}" STREQUAL "A311D") + include(cmake/A311D.cmake) +else() + include(cmake/X86_64.cmake) +endif() + include_directories(${PROJECT_SOURCE_DIR}/include/tim/vx) include_directories(${OVXDRV_INCLUDE_DIRS}) diff --git a/cmake/A311D.cmake b/cmake/A311D.cmake new file mode 100644 index 0000000..8292ef6 --- /dev/null +++ b/cmake/A311D.cmake @@ -0,0 +1,40 @@ +set(PKG_NAME "OVXDRV") +message("Downloading A311D toolchain ...") +file(DOWNLOAD "https://cnbj1.fds.api.xiaomi.com/mace/third-party/gcc-linaro/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz" + ${PROJECT_SOURCE_DIR}/build/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz + EXPECTED_MD5 "6ec789d642584a01e240ab3366599dbb" + SHOW_PROGRESS) +execute_process(COMMAND + tar xf ${PROJECT_SOURCE_DIR}/build/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz) + +set(TOOLCHAIN_DIR ${PROJECT_SOURCE_DIR}/build/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu) +set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-g++) +set(CMAKE_AR ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc-ar) +set(CMAKE_AS ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc-as) +set(CMAKE_LD ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc-ld) + +message("Downloading A311D SDK ...") +file(DOWNLOAD "https://github.com/VeriSilicon/TIM-VX/releases/download/v1.1.28/aarch64_A311D_D312513_A294074_R311680_T312233_O312045.tgz" + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045.tgz + EXPECTED_MD5 "26f4766c25a4776caf41b93e9b1c6af9" + SHOW_PROGRESS) +execute_process(COMMAND + tar xf ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045.tgz) + +set(OVXDRV_INCLUDE_DIRS) +list(APPEND OVXDRV_INCLUDE_DIRS + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/include + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/include/CL) + +set(OVXDRV_LIBRARIES) +list(APPEND OVXDRV_LIBRARIES + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libCLC.so + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libGAL.so + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libOpenVX.so + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libOpenVXU.so + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libVSC.so + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libArchModelSw.so + ${PROJECT_SOURCE_DIR}/build/aarch64_A311D_D312513_A294074_R311680_T312233_O312045/lib/libNNArchPerf.so) + +mark_as_advanced(${OVXDRV_INCLUDE_DIRS} ${OVXDRV_LIBRARIES}) \ No newline at end of file diff --git a/cmake/OvxDrvConfig.cmake b/cmake/OvxDrvConfig.cmake deleted file mode 100644 index 96857f2..0000000 --- a/cmake/OvxDrvConfig.cmake +++ /dev/null @@ -1,35 +0,0 @@ -message("==================================================") -message("Processing OvxDrvConfig.cmake ...") -set(PKG_NAME "OVXDRV") - -set(OVXDRV_INCLUDE_DIRS) -list(APPEND OVXDRV_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/include - ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/include/CL) - -set(LIBS CLC GAL OpenVX OpenVXU VSC ArchModelSw NNArchPerf) -if(CMAKE_CROSSCOMPILING) - # todo (sven) add any library if only avaiable in cross build -endif() - -list(LENGTH LIBS count) -math(EXPR count "${count} - 1") -foreach(i RANGE ${count}) - list(GET LIBS ${i} lib) - find_library(${PKG_NAME}_FOUND_LIB_${i} - NAMES ${lib} - PATHS ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/lib - ) - message("found lib ${lib} at ${${PKG_NAME}_FOUND_LIB_${i}}") - list(APPEND ${PKG_NAME}_LIBRARIES ${${PKG_NAME}_FOUND_LIB_${i}}) - - message("--->" ${PKG_NAME}_LIBRARIES ${${PKG_NAME}_FOUND_LIB_${i}}) -endforeach() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(${PKG_NAME} DEFAULT_MSG - ${PKG_NAME}_LIBRARIES) - -mark_as_advanced(${PKG_NAME}_INCLUDE_DIRS ${PKG_NAME}_LIBRARIES) - -message("==================================================") \ No newline at end of file diff --git a/cmake/X86_64.cmake b/cmake/X86_64.cmake new file mode 100644 index 0000000..20c3184 --- /dev/null +++ b/cmake/X86_64.cmake @@ -0,0 +1,29 @@ +message("Processing X86_64.cmake ...") +set(PKG_NAME "OVXDRV") + +set(OVXDRV_INCLUDE_DIRS) + +list(APPEND OVXDRV_INCLUDE_DIRS + ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/include + ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/include/CL) + + +set(LIBS CLC GAL OpenVX OpenVXU VSC ArchModelSw NNArchPerf) +list(LENGTH LIBS count) +math(EXPR count "${count} - 1") +foreach(i RANGE ${count}) + list(GET LIBS ${i} lib) + find_library(${PKG_NAME}_FOUND_LIB_${i} + NAMES ${lib} + PATHS ${PROJECT_SOURCE_DIR}/prebuilt-sdk/x86_64_linux/lib + ) + message("found lib ${lib} at ${${PKG_NAME}_FOUND_LIB_${i}}") + list(APPEND ${PKG_NAME}_LIBRARIES ${${PKG_NAME}_FOUND_LIB_${i}}) + message("--->" ${PKG_NAME}_LIBRARIES ${${PKG_NAME}_FOUND_LIB_${i}}) +endforeach() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(${PKG_NAME} DEFAULT_MSG + ${PKG_NAME}_LIBRARIES) + +mark_as_advanced(${PKG_NAME}_INCLUDE_DIRS ${PKG_NAME}_LIBRARIES) \ No newline at end of file