| # |
| # Copyright 2020 NXP |
| # 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") |
| |
| 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}/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 |
| armnnOnnxParser |
| armnnCaffeParser |
| armnnTfParser |
| 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}) |