python-pyqt.mk 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 PyQt_qreal_double \
  30. PyQt_Shortcut PyQt_RawFont
  31. ifeq ($(BR2_PACKAGE_QT_OPENSSL),)
  32. PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_OpenSSL
  33. endif
  34. define PYTHON_PYQT_QTDETAIL
  35. echo $(1) >> $(2)/qtdetail.out
  36. endef
  37. # Since we can't run generate qtdetail.out by running qtdetail on target device
  38. # we must generate the configuration.
  39. define PYTHON_PYQT_GENERATE_QTDETAIL
  40. $(RM) -f $(1)/qtdetail.out
  41. $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_LICENSE),$(1))
  42. $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_TYPE),$(1))
  43. $(foreach f,$(PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES),
  44. $(call PYTHON_PYQT_QTDETAIL,$(f),$(1)) \
  45. )
  46. endef
  47. PYTHON_PYQT_CONF_OPTS = \
  48. --bindir $(TARGET_DIR)/usr/bin \
  49. --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages \
  50. --qmake $(HOST_DIR)/usr/bin/qmake \
  51. --sysroot $(STAGING_DIR)/usr \
  52. -w --confirm-license \
  53. --no-designer-plugin \
  54. --no-docstrings \
  55. --no-sip-files \
  56. --qt-flavor=$(PYTHON_PYQT_QTFLAVOR)
  57. # The VendorID related information is only needed for Python 2.x, not
  58. # Python 3.x.
  59. ifeq ($(BR2_PACKAGE_PYTHON),y)
  60. PYTHON_PYQT_CONF_OPTS += \
  61. --vendorid-incdir $(STAGING_DIR)/usr/include/$(PYTHON_PYQT_PYTHON_DIR) \
  62. --vendorid-libdir $(STAGING_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/config
  63. endif
  64. define PYTHON_PYQT_CONFIGURE_CMDS
  65. $(call PYTHON_PYQT_GENERATE_QTDETAIL,$(@D))
  66. (cd $(@D); \
  67. $(TARGET_MAKE_ENV) \
  68. $(TARGET_CONFIGURE_OPTS) \
  69. $(HOST_DIR)/usr/bin/python configure-ng.py \
  70. $(PYTHON_PYQT_CONF_OPTS) \
  71. )
  72. endef
  73. define PYTHON_PYQT_BUILD_CMDS
  74. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
  75. endef
  76. # __init__.py is needed to import PyQt4
  77. # __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set
  78. define PYTHON_PYQT_INSTALL_TARGET_CMDS
  79. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install
  80. touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/__init__.py
  81. PYTHONPATH="$(PYTHON_PATH)" \
  82. $(HOST_DIR)/usr/bin/python -c "import compileall; \
  83. compileall.compile_dir('$(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4')"
  84. endef
  85. $(eval $(generic-package))