blob: 0a4cf1b09eed64dc9551314cee605c9ca90aec0e [file] [log] [blame]
Pavel Macenauer59e057f2020-04-15 14:17:26 +00001#
2# Copyright 2020 NXP
Ryan OShea7d1b1ca2023-08-01 17:15:24 +01003# Copyright © 2023 Arm Ltd. All rights reserved.
Pavel Macenauer59e057f2020-04-15 14:17:26 +00004# SPDX-License-Identifier: MIT
5#
6set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py")
7set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
8set(SWIG_GENERATE_IN "${CMAKE_CURRENT_SOURCE_DIR}/swig_generate.py")
9set(SWIG_GENERATE "${CMAKE_CURRENT_BINARY_DIR}/swig_generate.py")
10set(OUT_WRAP "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.wrap.timestamp")
11
Ryan OShea7d1b1ca2023-08-01 17:15:24 +010012message(WARNING "PyArmNN is deprecated. To use ArmNN on python, please use the tflite delegate. Expected to be removed in release 24.05.")
13
Pavel Macenauer59e057f2020-04-15 14:17:26 +000014configure_file(${SETUP_PY_IN} ${SETUP_PY} COPYONLY)
15configure_file(${SWIG_GENERATE_IN} ${SWIG_GENERATE} COPYONLY)
16
17# local env variables passed down to the python scripts
18# scripts can thus be used standalone
Jim Flynn27761832022-03-20 21:52:17 +000019set(ARMNN_ENV ARMNN_INCLUDE="${PROJECT_SOURCE_DIR}/profiling:${PROJECT_SOURCE_DIR}/profiling/common/include:${PROJECT_SOURCE_DIR}/profiling/client/include:${PROJECT_SOURCE_DIR}/include"
Pavel Macenauer59e057f2020-04-15 14:17:26 +000020 ARMNN_LIB=${PROJECT_BINARY_DIR}
21 SWIG_EXECUTABLE=${SWIG_EXECUTABLE})
22
23# common step - generates swig wrappers and builds the lib
24add_custom_command(OUTPUT ${OUT_WRAP}
25 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}
26 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}
27 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src
28 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_BINARY_DIR}/test
29 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Clearing Python build ..."
30 COMMAND ${Python3_EXECUTABLE} ${SETUP_PY} --quiet clean --all
31 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Generating SWIG wrappers ..."
32 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SWIG_GENERATE}
33 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python extensions ..."
34 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet build_ext --inplace
35 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/pyarmnn/_generated ${CMAKE_CURRENT_BINARY_DIR}/src/pyarmnn/_generated
36 COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WRAP}
Francis Murtagh1f0e2f92020-09-21 15:27:00 +010037 DEPENDS armnn)
Pavel Macenauer59e057f2020-04-15 14:17:26 +000038
39# source package
40if(BUILD_PYTHON_SRC)
41 set(OUT_SRC "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.src.timestamp")
42 add_custom_command(OUTPUT ${OUT_SRC}
43 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python source package ..."
44 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet sdist
45 COMMAND ${CMAKE_COMMAND} -E touch ${OUT_SRC}
46 DEPENDS ${OUT_WRAP})
47endif()
48# wheel package
49if(BUILD_PYTHON_WHL)
50 set(OUT_WHL "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.whl.timestamp")
51 add_custom_command(OUTPUT ${OUT_WHL}
52 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python binary package ..."
53 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet bdist_wheel
54 COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WHL}
55 DEPENDS ${OUT_WRAP})
56endif()
57add_custom_target(pyarmnn ALL DEPENDS ${OUT_WRAP} ${OUT_SRC} ${OUT_WHL})