python-pyqt.mk 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. ################################################################################
  2. #
  3. # python-pyqt
  4. #
  5. ################################################################################
  6. PYTHON_PYQT_VERSION = 4.11.3
  7. PYTHON_PYQT_SOURCE = PyQt-x11-gpl-$(PYTHON_PYQT_VERSION).tar.gz
  8. PYTHON_PYQT_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt4/PyQt-$(PYTHON_PYQT_VERSION)
  9. PYTHON_PYQT_LICENSE = GPLv2 or GPLv3
  10. PYTHON_PYQT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3
  11. PYTHON_PYQT_DEPENDENCIES = python-sip host-python-sip qt
  12. ifeq ($(BR2_PACKAGE_PYTHON),y)
  13. PYTHON_PYQT_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR)
  14. else ifeq ($(BR2_PACKAGE_PYTHON3),y)
  15. PYTHON_PYQT_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR)
  16. endif
  17. ifeq ($(BR2_PACKAGE_QT_EMBEDDED),y)
  18. PYTHON_PYQT_QTFLAVOR = WS_QWS
  19. else
  20. PYTHON_PYQT_QTFLAVOR = WS_X11
  21. endif
  22. PYTHON_PYQT_QTDETAIL_LICENSE = Open Source
  23. ifeq ($(BR2_PACKAGE_QT_SHARED),y)
  24. PYTHON_PYQT_QTDETAIL_TYPE = shared
  25. endif
  26. # Turn off features that aren't available in QWS and current qt
  27. # configuration.
  28. PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES = \
  29. PyQt_Accessibility PyQt_SessionManager \
  30. PyQt_Shortcut PyQt_RawFont
  31. ifeq ($(BR2_PACKAGE_QT_OPENSSL),)
  32. PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_OpenSSL
  33. endif
  34. # PyQt_qreal_double must be disabled on a number of architectures that
  35. # use float for qreal.
  36. ifeq ($(BR2_PACKAGE_PYTHON_PYQT_ARCH_USES_QREAL_FLOAT),y)
  37. PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_qreal_double
  38. endif
  39. define PYTHON_PYQT_QTDETAIL
  40. echo $(1) >> $(2)/qtdetail.out
  41. endef
  42. # Since we can't run generate qtdetail.out by running qtdetail on target device
  43. # we must generate the configuration.
  44. define PYTHON_PYQT_GENERATE_QTDETAIL
  45. $(RM) -f $(1)/qtdetail.out
  46. $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_LICENSE),$(1))
  47. $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_TYPE),$(1))
  48. $(foreach f,$(PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES),
  49. $(call PYTHON_PYQT_QTDETAIL,$(f),$(1)) \
  50. )
  51. endef
  52. PYTHON_PYQT_CONF_OPTS = \
  53. --bindir $(TARGET_DIR)/usr/bin \
  54. --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages \
  55. --qmake $(HOST_DIR)/usr/bin/qmake \
  56. --sysroot $(STAGING_DIR)/usr \
  57. -w --confirm-license \
  58. --no-designer-plugin \
  59. --no-docstrings \
  60. --no-sip-files \
  61. --qt-flavor=$(PYTHON_PYQT_QTFLAVOR)
  62. # The VendorID related information is only needed for Python 2.x, not
  63. # Python 3.x.
  64. ifeq ($(BR2_PACKAGE_PYTHON),y)
  65. PYTHON_PYQT_CONF_OPTS += \
  66. --vendorid-incdir $(STAGING_DIR)/usr/include/$(PYTHON_PYQT_PYTHON_DIR) \
  67. --vendorid-libdir $(STAGING_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/config
  68. endif
  69. define PYTHON_PYQT_CONFIGURE_CMDS
  70. $(call PYTHON_PYQT_GENERATE_QTDETAIL,$(@D))
  71. (cd $(@D); \
  72. $(TARGET_MAKE_ENV) \
  73. $(TARGET_CONFIGURE_OPTS) \
  74. $(HOST_DIR)/usr/bin/python configure-ng.py \
  75. $(PYTHON_PYQT_CONF_OPTS) \
  76. )
  77. endef
  78. define PYTHON_PYQT_BUILD_CMDS
  79. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
  80. endef
  81. # __init__.py is needed to import PyQt4
  82. # __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set
  83. define PYTHON_PYQT_INSTALL_TARGET_CMDS
  84. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install
  85. touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/__init__.py
  86. PYTHONPATH="$(PYTHON_PATH)" \
  87. $(HOST_DIR)/usr/bin/python -c "import compileall; \
  88. compileall.compile_dir('$(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4')"
  89. endef
  90. $(eval $(generic-package))