xref: /aosp_15_r20/external/bcc/src/python/CMakeLists.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard Worker# Copyright (c) PLUMgrid, Inc.
2*387f9dfdSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License")
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerif(NOT PYTHON_CMD)
5*387f9dfdSAndroid Build Coastguard Worker  set(PYTHON_CMD "python3")
6*387f9dfdSAndroid Build Coastguard Workerendif()
7*387f9dfdSAndroid Build Coastguard Worker
8*387f9dfdSAndroid Build Coastguard Workerif(EXISTS "/etc/debian_version" AND NOT PY_SKIP_DEB_LAYOUT)
9*387f9dfdSAndroid Build Coastguard Worker  set(PYTHON_FLAGS "${PYTHON_FLAGS} --install-layout deb")
10*387f9dfdSAndroid Build Coastguard Workerendif()
11*387f9dfdSAndroid Build Coastguard Worker
12*387f9dfdSAndroid Build Coastguard Workerfile(GLOB_RECURSE PYTHON_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
13*387f9dfdSAndroid Build Coastguard Worker  ${CMAKE_CURRENT_SOURCE_DIR}/*.py)
14*387f9dfdSAndroid Build Coastguard Workerfile(GLOB_RECURSE PYTHON_INCLUDES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
15*387f9dfdSAndroid Build Coastguard Worker  ${CMAKE_CURRENT_SOURCE_DIR}/*.py.in)
16*387f9dfdSAndroid Build Coastguard Worker
17*387f9dfdSAndroid Build Coastguard Workerforeach(PY_CMD ${PYTHON_CMD})
18*387f9dfdSAndroid Build Coastguard Worker  string(REPLACE "/" "-" PY_CMD_ESCAPED ${PY_CMD})
19*387f9dfdSAndroid Build Coastguard Worker  set(PY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bcc-${PY_CMD_ESCAPED})
20*387f9dfdSAndroid Build Coastguard Worker
21*387f9dfdSAndroid Build Coastguard Worker  foreach(PY_SRC ${PYTHON_SOURCES})
22*387f9dfdSAndroid Build Coastguard Worker    configure_file(${PY_SRC} ${PY_DIRECTORY}/${PY_SRC} COPYONLY)
23*387f9dfdSAndroid Build Coastguard Worker  endforeach()
24*387f9dfdSAndroid Build Coastguard Worker
25*387f9dfdSAndroid Build Coastguard Worker  foreach(PY_INC ${PYTHON_INCLUDES})
26*387f9dfdSAndroid Build Coastguard Worker    string(REPLACE ".py.in" ".py" PY_INC_REPLACED ${PY_INC})
27*387f9dfdSAndroid Build Coastguard Worker    configure_file(${PY_INC} ${PY_DIRECTORY}/${PY_INC_REPLACED} @ONLY)
28*387f9dfdSAndroid Build Coastguard Worker  endforeach()
29*387f9dfdSAndroid Build Coastguard Worker
30*387f9dfdSAndroid Build Coastguard Worker  set(PIP_INSTALLABLE "${PY_DIRECTORY}/dist/bcc-${REVISION}.tar.gz")
31*387f9dfdSAndroid Build Coastguard Worker  add_custom_command(
32*387f9dfdSAndroid Build Coastguard Worker    OUTPUT ${PIP_INSTALLABLE}
33*387f9dfdSAndroid Build Coastguard Worker    COMMAND ${PY_CMD} setup.py sdist
34*387f9dfdSAndroid Build Coastguard Worker    WORKING_DIRECTORY ${PY_DIRECTORY}
35*387f9dfdSAndroid Build Coastguard Worker    DEPENDS ${PYTHON_SOURCES} ${PYTHON_INCLUDES}
36*387f9dfdSAndroid Build Coastguard Worker    COMMENT "Building sdist for ${PY_CMD}"
37*387f9dfdSAndroid Build Coastguard Worker  )
38*387f9dfdSAndroid Build Coastguard Worker  add_custom_target(bcc_py_${PY_CMD_ESCAPED} ALL DEPENDS ${PIP_INSTALLABLE})
39*387f9dfdSAndroid Build Coastguard Worker
40*387f9dfdSAndroid Build Coastguard Worker  if(NOT PYTHON_PREFIX)
41*387f9dfdSAndroid Build Coastguard Worker     set(PYTHON_PREFIX, ${CMAKE_INSTALL_PREFIX} )
42*387f9dfdSAndroid Build Coastguard Worker  endif()
43*387f9dfdSAndroid Build Coastguard Worker
44*387f9dfdSAndroid Build Coastguard Worker  install(
45*387f9dfdSAndroid Build Coastguard Worker    CODE "
46*387f9dfdSAndroid Build Coastguard Worker      execute_process(
47*387f9dfdSAndroid Build Coastguard Worker        COMMAND ${PY_CMD} setup.py install -f ${PYTHON_FLAGS} --prefix=${PYTHON_PREFIX} --record ${CMAKE_BINARY_DIR}/install_manifest_python_bcc.txt
48*387f9dfdSAndroid Build Coastguard Worker        WORKING_DIRECTORY ${PY_DIRECTORY})"
49*387f9dfdSAndroid Build Coastguard Worker    COMPONENT python)
50*387f9dfdSAndroid Build Coastguard Workerendforeach()
51