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