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
|
#
# Copyright 2020 NXP
# Copyright © 2023 Arm Ltd. All rights reserved.
# SPDX-License-Identifier: MIT
#
set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py")
set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
set(SWIG_GENERATE_IN "${CMAKE_CURRENT_SOURCE_DIR}/swig_generate.py")
set(SWIG_GENERATE "${CMAKE_CURRENT_BINARY_DIR}/swig_generate.py")
set(OUT_WRAP "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.wrap.timestamp")
message(WARNING "PyArmNN is deprecated. To use ArmNN on python, please use the tflite delegate. Expected to be removed in release 24.05.")
configure_file(${SETUP_PY_IN} ${SETUP_PY} COPYONLY)
configure_file(${SWIG_GENERATE_IN} ${SWIG_GENERATE} COPYONLY)
# local env variables passed down to the python scripts
# scripts can thus be used standalone
set(ARMNN_ENV ARMNN_INCLUDE="${CMAKE_CURRENT_BINARY_DIR}/../../../profiling:${CMAKE_CURRENT_BINARY_DIR}/../../../profiling/common/include:${CMAKE_CURRENT_BINARY_DIR}/../../../profiling/client/include:${CMAKE_CURRENT_BINARY_DIR}/../../../include"
ARMNN_LIB=${PROJECT_BINARY_DIR}
SWIG_EXECUTABLE=${SWIG_EXECUTABLE})
# common step - generates swig wrappers and builds the lib
include(GNUInstallDirs)
add_custom_command(OUTPUT ${OUT_WRAP}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_BINARY_DIR}/test
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Clearing Python build ..."
COMMAND ${Python3_EXECUTABLE} ${SETUP_PY} --quiet clean --all
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Generating SWIG wrappers ..."
COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SWIG_GENERATE}
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python extensions ..."
COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet build_ext --inplace
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/pyarmnn/_generated ${CMAKE_CURRENT_BINARY_DIR}/src/pyarmnn/_generated
COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WRAP}
DEPENDS armnn
armnnTfLiteParser)
# source package
if(BUILD_PYTHON_SRC)
set(OUT_SRC "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.src.timestamp")
add_custom_command(OUTPUT ${OUT_SRC}
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python source package ..."
COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet sdist
COMMAND ${CMAKE_COMMAND} -E touch ${OUT_SRC}
DEPENDS ${OUT_WRAP})
endif()
# wheel package
if(BUILD_PYTHON_WHL)
set(OUT_WHL "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.whl.timestamp")
add_custom_command(OUTPUT ${OUT_WHL}
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python binary package ..."
COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet bdist_wheel
COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WHL}
DEPENDS ${OUT_WRAP})
endif()
add_custom_target(pyarmnn ALL DEPENDS ${OUT_WRAP} ${OUT_SRC} ${OUT_WHL})
# allow installation via make install
install(CODE "execute_process(COMMAND ${Python3_EXECUTABLE} ${SETUP_PY} install --root=${CMAKE_CURRENT_BINARY_DIR}/../../../debian/tmp/ --install-layout=deb WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
|