1################################################################################ 2# 3# python-pyqt5 4# 5################################################################################ 6 7PYTHON_PYQT5_VERSION = 5.15.6 8PYTHON_PYQT5_SOURCE = PyQt5-$(PYTHON_PYQT5_VERSION).tar.gz 9PYTHON_PYQT5_SITE = https://files.pythonhosted.org/packages/3b/27/fd81188a35f37be9b3b4c2db1654d9439d1418823916fe702ac3658c9c41 10PYTHON_PYQT5_LICENSE = GPL-3.0 11PYTHON_PYQT5_LICENSE_FILES = LICENSE 12 13PYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base 14PYTHON_PYQT5_MODULES = \ 15 QtCore QtGui \ 16 $(if $(BR2_PACKAGE_QT5BASE_DBUS),QtDBus) \ 17 $(if $(BR2_PACKAGE_QT5BASE_NETWORK),QtNetwork) \ 18 $(if $(BR2_PACKAGE_QT5BASE_OPENGL_LIB),QtOpenGL) \ 19 $(if $(BR2_PACKAGE_QT5BASE_PRINTSUPPORT),QtPrintSupport) \ 20 $(if $(BR2_PACKAGE_QT5BASE_XML),QtXml) 21 22ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) 23PYTHON_PYQT5_MODULES += QtWidgets 24 25# QtSql needs QtWidgets 26ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y) 27PYTHON_PYQT5_MODULES += QtSql 28endif 29 30# QtTest needs QtWidgets 31ifeq ($(BR2_PACKAGE_QT5BASE_TEST),y) 32PYTHON_PYQT5_MODULES += QtTest 33endif 34 35# QtSvg needs QtWidgets 36ifeq ($(BR2_PACKAGE_QT5SVG),y) 37PYTHON_PYQT5_DEPENDENCIES += qt5svg 38PYTHON_PYQT5_MODULES += QtSvg 39endif 40endif 41 42ifeq ($(BR2_PACKAGE_QT5CONNECTIVITY),y) 43PYTHON_PYQT5_DEPENDENCIES += qt5connectivity 44PYTHON_PYQT5_MODULES += QtBluetooth QtNfc 45endif 46 47ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) 48PYTHON_PYQT5_DEPENDENCIES += qt5declarative 49PYTHON_PYQT5_MODULES += QtQml 50 51# QtQuick module needs opengl 52ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_OPENGL_LIB),yy) 53PYTHON_PYQT5_MODULES += \ 54 QtQuick \ 55 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtQuickWidgets) 56endif 57endif 58 59ifeq ($(BR2_PACKAGE_QT5ENGINIO),y) 60PYTHON_PYQT5_DEPENDENCIES += qt5enginio 61PYTHON_PYQT5_MODULES += Enginio 62endif 63 64ifeq ($(BR2_PACKAGE_QT5LOCATION),y) 65PYTHON_PYQT5_DEPENDENCIES += qt5location 66PYTHON_PYQT5_MODULES += QtPositioning 67ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) 68PYTHON_PYQT5_MODULES += QtLocation 69endif 70endif 71 72ifeq ($(BR2_PACKAGE_QT5MULTIMEDIA),y) 73PYTHON_PYQT5_DEPENDENCIES += qt5multimedia 74PYTHON_PYQT5_MODULES += \ 75 QtMultimedia \ 76 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtMultimediaWidgets) 77endif 78 79ifeq ($(BR2_PACKAGE_QT5SENSORS),y) 80PYTHON_PYQT5_DEPENDENCIES += qt5sensors 81PYTHON_PYQT5_MODULES += QtSensors 82endif 83 84ifeq ($(BR2_PACKAGE_QT5SERIALPORT),y) 85PYTHON_PYQT5_DEPENDENCIES += qt5serialport 86PYTHON_PYQT5_MODULES += QtSerialPort 87endif 88 89ifeq ($(BR2_PACKAGE_QT5WEBCHANNEL),y) 90PYTHON_PYQT5_DEPENDENCIES += qt5webchannel 91PYTHON_PYQT5_MODULES += QtWebChannel 92endif 93 94ifeq ($(BR2_PACKAGE_QT5WEBKIT),y) 95PYTHON_PYQT5_DEPENDENCIES += qt5webkit 96PYTHON_PYQT5_MODULES += \ 97 QtWebKit \ 98 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebKitWidgets) 99endif 100 101ifeq ($(BR2_PACKAGE_QT5WEBSOCKETS),y) 102PYTHON_PYQT5_DEPENDENCIES += qt5websockets 103PYTHON_PYQT5_MODULES += QtWebSockets 104endif 105 106ifeq ($(BR2_PACKAGE_QT5X11EXTRAS),y) 107PYTHON_PYQT5_DEPENDENCIES += qt5x11extras 108PYTHON_PYQT5_MODULES += QtX11Extras 109endif 110 111ifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y) 112PYTHON_PYQT5_DEPENDENCIES += qt5xmlpatterns 113PYTHON_PYQT5_MODULES += QtXmlPatterns 114endif 115 116PYTHON_PYQT5_QTCORE_LICENSE = Open Source 117 118PYTHON_PYQT5_QTCORE_TYPE = shared 119 120# Turn off features that aren't available in current qt configuration 121PYTHON_PYQT5_QTCORE_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL) 122PYTHON_PYQT5_QTCORE_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL) 123PYTHON_PYQT5_QTCORE_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL) 124 125define PYTHON_PYQT5_QTCORE 126 echo $(1) >> $(2)/cfgtest_QtCore.out 127endef 128 129# Since we can't run generate cfgtest_QtCore.out by running qtdetail on target device 130# we must generate the configuration. 131define PYTHON_PYQT5_GENERATE_QTCORE 132 $(RM) -f $(1)/cfgtest_QtCore.out 133 $(call PYTHON_PYQT5_QTCORE,$(PYTHON_PYQT5_QTCORE_LICENSE),$(1)) 134 $(call PYTHON_PYQT5_QTCORE,$(PYTHON_PYQT5_QTCORE_TYPE),$(1)) 135 $(foreach f,$(PYTHON_PYQT5_QTCORE_DISABLE_FEATURES), 136 $(call PYTHON_PYQT5_QTCORE,$(f),$(1)) \ 137 ) 138endef 139 140# The file "qt.conf" can be used to override the hard-coded paths that are 141# compiled into the Qt library. We need it to make "qmake" relocatable and 142# tweak the per-package install pathes 143PYTHON_PYQT5_PRE_CONFIGURE_HOOKS += QT5_QT_CONF_FIXUP 144 145PYTHON_PYQT5_CONF_OPTS = \ 146 --bindir $(TARGET_DIR)/usr/bin \ 147 --destdir $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ 148 --qmake $(HOST_DIR)/bin/qmake \ 149 --sysroot $(STAGING_DIR)/usr \ 150 -w --confirm-license \ 151 --no-designer-plugin \ 152 --no-docstrings \ 153 --no-sip-files \ 154 --assume-shared \ 155 $(foreach module,$(PYTHON_PYQT5_MODULES),--enable=$(module)) 156 157define PYTHON_PYQT5_CONFIGURE_CMDS 158 $(call PYTHON_PYQT5_GENERATE_QTCORE,$(@D)) 159 (cd $(@D); \ 160 $(TARGET_MAKE_ENV) \ 161 $(TARGET_CONFIGURE_OPTS) \ 162 $(HOST_DIR)/bin/python configure.py \ 163 $(PYTHON_PYQT5_CONF_OPTS) \ 164 ) 165endef 166 167define PYTHON_PYQT5_BUILD_CMDS 168 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) 169endef 170 171# __init__.py is needed to import PyQt5 172# __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set 173define PYTHON_PYQT5_INSTALL_TARGET_CMDS 174 # Parallel install is not supported. 175 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) install 176 touch $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/PyQt5/__init__.py 177 $(RM) -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/PyQt5/uic/port_v2 178endef 179 180$(eval $(generic-package)) 181