blob: 5ae6ac2a099ad2d18f301c7ecdd146be0e0e9f93 [file] [log] [blame]
Pavel Macenauer59e057f2020-04-15 14:17:26 +00001#
2# Copyright 2020 NXP
3# SPDX-License-Identifier: MIT
4#
5set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py")
6set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
7set(SWIG_GENERATE_IN "${CMAKE_CURRENT_SOURCE_DIR}/swig_generate.py")
8set(SWIG_GENERATE "${CMAKE_CURRENT_BINARY_DIR}/swig_generate.py")
9set(OUT_WRAP "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.wrap.timestamp")
10
11configure_file(${SETUP_PY_IN} ${SETUP_PY} COPYONLY)
12configure_file(${SWIG_GENERATE_IN} ${SWIG_GENERATE} COPYONLY)
13
14# local env variables passed down to the python scripts
15# scripts can thus be used standalone
16set(ARMNN_ENV ARMNN_INCLUDE=${PROJECT_SOURCE_DIR}/include
17 ARMNN_LIB=${PROJECT_BINARY_DIR}
18 SWIG_EXECUTABLE=${SWIG_EXECUTABLE})
19
20# common step - generates swig wrappers and builds the lib
21add_custom_command(OUTPUT ${OUT_WRAP}
22 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}
23 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}
24 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src
25 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_BINARY_DIR}/test
26 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Clearing Python build ..."
27 COMMAND ${Python3_EXECUTABLE} ${SETUP_PY} --quiet clean --all
28 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Generating SWIG wrappers ..."
29 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SWIG_GENERATE}
30 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python extensions ..."
31 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet build_ext --inplace
32 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/pyarmnn/_generated ${CMAKE_CURRENT_BINARY_DIR}/src/pyarmnn/_generated
33 COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WRAP}
34 DEPENDS armnn
35 armnnOnnxParser
36 armnnCaffeParser
37 armnnTfParser
38 armnnTfLiteParser)
39
40# source package
41if(BUILD_PYTHON_SRC)
42 set(OUT_SRC "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.src.timestamp")
43 add_custom_command(OUTPUT ${OUT_SRC}
44 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python source package ..."
45 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet sdist
46 COMMAND ${CMAKE_COMMAND} -E touch ${OUT_SRC}
47 DEPENDS ${OUT_WRAP})
48endif()
49# wheel package
50if(BUILD_PYTHON_WHL)
51 set(OUT_WHL "${CMAKE_CURRENT_BINARY_DIR}/pyarmnn.whl.timestamp")
52 add_custom_command(OUTPUT ${OUT_WHL}
53 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Building Python binary package ..."
54 COMMAND ${CMAKE_COMMAND} -E env ${ARMNN_ENV} ${Python3_EXECUTABLE} ${SETUP_PY} --quiet bdist_wheel
55 COMMAND ${CMAKE_COMMAND} -E touch ${OUT_WHL}
56 DEPENDS ${OUT_WRAP})
57endif()
58add_custom_target(pyarmnn ALL DEPENDS ${OUT_WRAP} ${OUT_SRC} ${OUT_WHL})