aboutsummaryrefslogtreecommitdiff
path: root/python/pyarmnn/CMakeLists.txt
blob: 0a4cf1b09eed64dc9551314cee605c9ca90aec0e (plain)
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
#
# 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="${PROJECT_SOURCE_DIR}/profiling:${PROJECT_SOURCE_DIR}/profiling/common/include:${PROJECT_SOURCE_DIR}/profiling/client/include:${PROJECT_SOURCE_DIR}/include"
              ARMNN_LIB=${PROJECT_BINARY_DIR}
              SWIG_EXECUTABLE=${SWIG_EXECUTABLE})

# common step - generates swig wrappers and builds the lib
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)

# 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})