python-pyqt5.mk 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. ################################################################################
  2. #
  3. # python-pyqt5
  4. #
  5. ################################################################################
  6. PYTHON_PYQT5_VERSION = 5.7
  7. PYTHON_PYQT5_SOURCE = PyQt5_gpl-$(PYTHON_PYQT5_VERSION).tar.gz
  8. PYTHON_PYQT5_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-$(PYTHON_PYQT5_VERSION)
  9. PYTHON_PYQT5_LICENSE = GPLv3
  10. PYTHON_PYQT5_LICENSE_FILES = LICENSE
  11. PYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base
  12. ifeq ($(BR2_PACKAGE_PYTHON),y)
  13. PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR)
  14. PYTHON_PYQT5_RM_PORT_BASE = port_v3
  15. else ifeq ($(BR2_PACKAGE_PYTHON3),y)
  16. PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR)
  17. PYTHON_PYQT5_RM_PORT_BASE = port_v2
  18. endif
  19. PYTHON_PYQT5_QTDETAIL_LICENSE = Open Source
  20. PYTHON_PYQT5_QTDETAIL_TYPE = shared
  21. # Turn off features that aren't available in current qt configuration
  22. PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL)
  23. PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL)
  24. PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL)
  25. define PYTHON_PYQT5_QTDETAIL
  26. echo $(1) >> $(2)/qtdetail.out
  27. endef
  28. # Since we can't run generate qtdetail.out by running qtdetail on target device
  29. # we must generate the configuration.
  30. define PYTHON_PYQT5_GENERATE_QTDETAIL
  31. $(RM) -f $(1)/qtdetail.out
  32. $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_LICENSE),$(1))
  33. $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_TYPE),$(1))
  34. $(foreach f,$(PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES),
  35. $(call PYTHON_PYQT5_QTDETAIL,$(f),$(1)) \
  36. )
  37. endef
  38. PYTHON_PYQT5_CONF_OPTS = \
  39. --bindir $(TARGET_DIR)/usr/bin \
  40. --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages \
  41. --qmake $(HOST_DIR)/usr/bin/qmake \
  42. --sysroot $(STAGING_DIR)/usr \
  43. -w --confirm-license \
  44. --no-designer-plugin \
  45. --no-docstrings \
  46. --no-sip-files
  47. define PYTHON_PYQT5_CONFIGURE_CMDS
  48. $(call PYTHON_PYQT5_GENERATE_QTDETAIL,$(@D))
  49. (cd $(@D); \
  50. $(TARGET_MAKE_ENV) \
  51. $(TARGET_CONFIGURE_OPTS) \
  52. $(HOST_DIR)/usr/bin/python configure.py \
  53. $(PYTHON_PYQT5_CONF_OPTS) \
  54. )
  55. endef
  56. define PYTHON_PYQT5_BUILD_CMDS
  57. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
  58. endef
  59. # __init__.py is needed to import PyQt5
  60. # __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set
  61. define PYTHON_PYQT5_INSTALL_TARGET_CMDS
  62. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install
  63. touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/__init__.py
  64. $(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/uic/$(PYTHON_PYQT5_RM_PORT_BASE)
  65. endef
  66. $(eval $(generic-package))