• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) PLUMgrid, Inc.
2# Licensed under the Apache License, Version 2.0 (the "License")
3
4if(NOT PYTHON_CMD)
5  set(PYTHON_CMD "python3")
6endif()
7
8if(EXISTS "/etc/debian_version")
9  set(PYTHON_FLAGS "${PYTHON_FLAGS} --install-layout deb")
10endif()
11
12file(GLOB_RECURSE PYTHON_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
13  ${CMAKE_CURRENT_SOURCE_DIR}/*.py)
14file(GLOB_RECURSE PYTHON_INCLUDES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
15  ${CMAKE_CURRENT_SOURCE_DIR}/*.py.in)
16
17foreach(PY_CMD ${PYTHON_CMD})
18  string(REPLACE "/" "-" PY_CMD_ESCAPED ${PY_CMD})
19  set(PY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bcc-${PY_CMD_ESCAPED})
20
21  foreach(PY_SRC ${PYTHON_SOURCES})
22    configure_file(${PY_SRC} ${PY_DIRECTORY}/${PY_SRC} COPYONLY)
23  endforeach()
24
25  foreach(PY_INC ${PYTHON_INCLUDES})
26    string(REPLACE ".py.in" ".py" PY_INC_REPLACED ${PY_INC})
27    configure_file(${PY_INC} ${PY_DIRECTORY}/${PY_INC_REPLACED} @ONLY)
28  endforeach()
29
30  set(PIP_INSTALLABLE "${PY_DIRECTORY}/dist/bcc-${REVISION}.tar.gz")
31  add_custom_command(
32    OUTPUT ${PIP_INSTALLABLE}
33    COMMAND ${PY_CMD} setup.py sdist
34    WORKING_DIRECTORY ${PY_DIRECTORY}
35    DEPENDS ${PYTHON_SOURCES} ${PYTHON_INCLUDES}
36    COMMENT "Building sdist for ${PY_CMD}"
37  )
38  add_custom_target(bcc_py_${PY_CMD_ESCAPED} ALL DEPENDS ${PIP_INSTALLABLE})
39
40  install(
41    CODE "
42      execute_process(
43        COMMAND ${PY_CMD} setup.py install -f ${PYTHON_FLAGS} --prefix=${CMAKE_INSTALL_PREFIX}
44        WORKING_DIRECTORY ${PY_DIRECTORY})"
45    COMPONENT python)
46endforeach()
47