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