diff --git a/.bazelrc b/.bazelrc index fec1dd9..7c09220 100644 --- a/.bazelrc +++ b/.bazelrc @@ -18,3 +18,15 @@ build:A311D --copt -Wno-unused-function build:A311D --copt -Wno-sequence-point build:A311D --copt -Wno-implicit-fallthrough build:A311D --define target_device=aarch64_A311D + +build:S905D3 --define linux=true +build:S905D3 --spawn_strategy=standalone +build:S905D3 --crosstool_top=@TOOLCHAINS//gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu:toolchain +build:S905D3 --host_crosstool_top=@bazel_tools//tools/cpp:toolchain +build:S905D3 --cpu=aarch64 +build:S905D3 --compiler=gcc +build:S905D3 --copt -Wno-ignored-attributes +build:S905D3 --copt -Wno-unused-function +build:S905D3 --copt -Wno-sequence-point +build:S905D3 --copt -Wno-implicit-fallthrough +build:S905D3 --define target_device=aarch64_S905D3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f9f67a..931b19f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,8 @@ add_definitions(-DOVXLIB_API=${OVXLIB_API_ATTR}) if("${CONFIG}" STREQUAL "A311D") include(cmake/A311D.cmake) +elseif("${CONFIG}" STREQUAL "S905D3") + include(cmake/S905D3.cmake) else() include(cmake/X86_64.cmake) endif() diff --git a/WORKSPACE b/WORKSPACE index d34a04c..3f2855f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -15,6 +15,16 @@ http_archive( ], ) +http_archive( + name = "aarch64_S905D3", + build_file = "@//prebuilt-sdk/x86_64_linux:BUILD", + sha256 = "22e1ddb62216d286a1c0e62b673a8210291d0c045c4b8a18197e704da1007f7a", + strip_prefix = "aarch64_S905D3_D312513_A294074_R311680_T312233_O312045", + urls = [ + "https://github.com/VeriSilicon/TIM-VX/releases/download/v1.1.28/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045.tgz", + ], +) + local_repository( name = 'TOOLCHAINS', path = 'toolchains', diff --git a/cmake/S905D3.cmake b/cmake/S905D3.cmake new file mode 100644 index 0000000..0ae0d0c --- /dev/null +++ b/cmake/S905D3.cmake @@ -0,0 +1,40 @@ +set(PKG_NAME "OVXDRV") +message("Downloading S905D3 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_BINARY_DIR}/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_BINARY_DIR}/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz) + +set(TOOLCHAIN_DIR ${PROJECT_BINARY_DIR}/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 S905D3 SDK ...") +file(DOWNLOAD "https://github.com/VeriSilicon/TIM-VX/releases/download/v1.1.28/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045.tgz" + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045.tgz + EXPECTED_MD5 "09324bb8d0e17631c735348f378531ed" + SHOW_PROGRESS) +execute_process(COMMAND + tar xf ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045.tgz) + +set(OVXDRV_INCLUDE_DIRS) +list(APPEND OVXDRV_INCLUDE_DIRS + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/include + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/include/CL) + +set(OVXDRV_LIBRARIES) +list(APPEND OVXDRV_LIBRARIES + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libCLC.so + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libGAL.so + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libOpenVX.so + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libOpenVXU.so + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libVSC.so + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libArchModelSw.so + ${PROJECT_BINARY_DIR}/aarch64_S905D3_D312513_A294074_R311680_T312233_O312045/lib/libNNArchPerf.so) + +mark_as_advanced(${OVXDRV_INCLUDE_DIRS} ${OVXDRV_LIBRARIES}) diff --git a/prebuilt-sdk/BUILD b/prebuilt-sdk/BUILD index 72f75d6..4f19646 100644 --- a/prebuilt-sdk/BUILD +++ b/prebuilt-sdk/BUILD @@ -10,6 +10,11 @@ config_setting( values = {"define": "target_device=aarch64_A311D"}, ) +config_setting( + name = "aarch64_S905D3", + values = {"define": "target_device=aarch64_S905D3"}, +) + config_setting( name = "external_viv_sdk", values = {"define": "use_external_viv_sdk=true"}, @@ -20,6 +25,7 @@ cc_library( deps = select({ "external_viv_sdk": ["@external_viv_sdk//:VIV_SDK_LIB"], "aarch64_A311D": ["@aarch64_A311D//:VIV_SDK_LIB"], + "aarch64_S905D3": ["@aarch64_S905D3//:VIV_SDK_LIB"], "//conditions:default": ["//prebuilt-sdk/x86_64_linux:VIV_SDK_LIB"], }), )