python-pyqt.mk 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. # Yes, this looks a bit weird: when OpenGL ES is available, we have to
  35. # disable the feature that consists in not having OpenGL ES support.
  36. ifeq ($(BR2_PACKAGE_QT_OPENGL_ES),y)
  37. PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_NoOpenGLES
  38. endif
  39. # PyQt_qreal_double must be disabled on a number of architectures that
  40. # use float for qreal.
  41. ifeq ($(BR2_PACKAGE_PYTHON_PYQT_ARCH_USES_QREAL_FLOAT),y)
  42. PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_qreal_double
  43. endif
  44. define PYTHON_PYQT_QTDETAIL
  45. echo $(1) >> $(2)/qtdetail.out
  46. endef
  47. # Since we can't run generate qtdetail.out by running qtdetail on target device
  48. # we must generate the configuration.
  49. define PYTHON_PYQT_GENERATE_QTDETAIL
  50. $(RM) -f $(1)/qtdetail.out
  51. $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_LICENSE),$(1))
  52. $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_TYPE),$(1))
  53. $(foreach f,$(PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES),
  54. $(call PYTHON_PYQT_QTDETAIL,$(f),$(1)) \
  55. )
  56. endef
  57. PYTHON_PYQT_CONF_OPTS = \
  58. --bindir $(TARGET_DIR)/usr/bin \
  59. --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages \
  60. --qmake $(HOST_DIR)/usr/bin/qmake \
  61. --sysroot $(STAGING_DIR)/usr \
  62. -w --confirm-license \
  63. --no-designer-plugin \
  64. --no-docstrings \
  65. --no-sip-files \
  66. --qt-flavor=$(PYTHON_PYQT_QTFLAVOR)
  67. # The VendorID related information is only needed for Python 2.x, not
  68. # Python 3.x.
  69. ifeq ($(BR2_PACKAGE_PYTHON),y)
  70. PYTHON_PYQT_CONF_OPTS += \
  71. --vendorid-incdir $(STAGING_DIR)/usr/include/$(PYTHON_PYQT_PYTHON_DIR) \
  72. --vendorid-libdir $(STAGING_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/config
  73. endif
  74. define PYTHON_PYQT_CONFIGURE_CMDS
  75. $(call PYTHON_PYQT_GENERATE_QTDETAIL,$(@D))
  76. (cd $(@D); \
  77. $(TARGET_MAKE_ENV) \
  78. $(TARGET_CONFIGURE_OPTS) \
  79. $(HOST_DIR)/usr/bin/python configure-ng.py \
  80. $(PYTHON_PYQT_CONF_OPTS) \
  81. )
  82. endef
  83. define PYTHON_PYQT_BUILD_CMDS
  84. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
  85. endef
  86. # __init__.py is needed to import PyQt4
  87. # __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set
  88. define PYTHON_PYQT_INSTALL_TARGET_CMDS
  89. $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install
  90. touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/__init__.py
  91. PYTHONPATH="$(PYTHON_PATH)" \
  92. $(HOST_DIR)/usr/bin/python -c "import compileall; \
  93. compileall.compile_dir('$(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4')"
  94. endef
  95. $(eval $(generic-package))