xref: /aosp_15_r20/external/armnn/python/pyarmnn/CMakeLists.txt (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker#
2*89c4ff92SAndroid Build Coastguard Worker# Copyright 2020 NXP
3*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker#
5*89c4ff92SAndroid Build Coastguard Workerset(SETUP_PY_IN         "${CMAKE_CURRENT_SOURCE_DIR}/setup.py")
6*89c4ff92SAndroid Build Coastguard Workerset(SETUP_PY            "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
7*89c4ff92SAndroid Build Coastguard Workerset(SWIG_GENERATE_IN    "${CMAKE_CURRENT_SOURCE_DIR}/swig_generate.py")
8*89c4ff92SAndroid Build Coastguard Workerset(SWIG_GENERATE       "${CMAKE_CURRENT_BINARY_DIR}/swig_generate.py")
9*89c4ff92SAndroid Build Coastguard Workerset(OUT_WRAP            "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.wrap.timestamp")
10*89c4ff92SAndroid Build Coastguard Worker
11*89c4ff92SAndroid Build Coastguard Workerconfigure_file(${SETUP_PY_IN} ${SETUP_PY} COPYONLY)
12*89c4ff92SAndroid Build Coastguard Workerconfigure_file(${SWIG_GENERATE_IN} ${SWIG_GENERATE} COPYONLY)
13*89c4ff92SAndroid Build Coastguard Worker
14*89c4ff92SAndroid Build Coastguard Worker# local env variables passed down to the python scripts
15*89c4ff92SAndroid Build Coastguard Worker# scripts can thus be used standalone
16*89c4ff92SAndroid Build Coastguard Workerset(ARMNN_ENV ARMNN_INCLUDE="${PROJECT_SOURCE_DIR}/profiling:${PROJECT_SOURCE_DIR}/profiling/common/include:${PROJECT_SOURCE_DIR}/profiling/client/include:${PROJECT_SOURCE_DIR}/include"
17*89c4ff92SAndroid Build Coastguard Worker              ARMNN_LIB=${PROJECT_BINARY_DIR}
18*89c4ff92SAndroid Build Coastguard Worker              SWIG_EXECUTABLE=${SWIG_EXECUTABLE})
19*89c4ff92SAndroid Build Coastguard Worker
20*89c4ff92SAndroid Build Coastguard Worker# common step - generates swig wrappers and builds the lib
21*89c4ff92SAndroid Build Coastguard Workeradd_custom_command(OUTPUT ${OUT_WRAP}
22*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}
23*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}
24*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src
25*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_BINARY_DIR}/test
26*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Clearing Python build ..."
27*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${Python3_EXECUTABLE} ${SETUP_PY} --quiet clean --all
28*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Generating SWIG wrappers ..."
29*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SWIG_GENERATE}
30*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python extensions ..."
31*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet build_ext --inplace
32*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/pyarmnn/_generated ${CMAKE_CURRENT_BINARY_DIR}/src/pyarmnn/_generated
33*89c4ff92SAndroid Build Coastguard Worker                   COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WRAP}
34*89c4ff92SAndroid Build Coastguard Worker                   DEPENDS armnn)
35*89c4ff92SAndroid Build Coastguard Worker
36*89c4ff92SAndroid Build Coastguard Worker# source package
37*89c4ff92SAndroid Build Coastguard Workerif(BUILD_PYTHON_SRC)
38*89c4ff92SAndroid Build Coastguard Worker    set(OUT_SRC "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.src.timestamp")
39*89c4ff92SAndroid Build Coastguard Worker    add_custom_command(OUTPUT  ${OUT_SRC}
40*89c4ff92SAndroid Build Coastguard Worker                       COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python source package ..."
41*89c4ff92SAndroid Build Coastguard Worker                       COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet sdist
42*89c4ff92SAndroid Build Coastguard Worker                       COMMAND ${CMAKE_COMMAND} -E touch ${OUT_SRC}
43*89c4ff92SAndroid Build Coastguard Worker                       DEPENDS ${OUT_WRAP})
44*89c4ff92SAndroid Build Coastguard Workerendif()
45*89c4ff92SAndroid Build Coastguard Worker# wheel package
46*89c4ff92SAndroid Build Coastguard Workerif(BUILD_PYTHON_WHL)
47*89c4ff92SAndroid Build Coastguard Worker    set(OUT_WHL "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.whl.timestamp")
48*89c4ff92SAndroid Build Coastguard Worker    add_custom_command(OUTPUT  ${OUT_WHL}
49*89c4ff92SAndroid Build Coastguard Worker                       COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python binary package ..."
50*89c4ff92SAndroid Build Coastguard Worker                       COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet bdist_wheel
51*89c4ff92SAndroid Build Coastguard Worker                       COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WHL}
52*89c4ff92SAndroid Build Coastguard Worker                       DEPENDS ${OUT_WRAP})
53*89c4ff92SAndroid Build Coastguard Workerendif()
54*89c4ff92SAndroid Build Coastguard Workeradd_custom_target(pyarmnn ALL DEPENDS ${OUT_WRAP} ${OUT_SRC} ${OUT_WHL})
55