1################################################################################ 2# 3# python-pyqt5 4# 5################################################################################ 6 7PYTHON_PYQT5_VERSION = 5.7 8PYTHON_PYQT5_SOURCE = PyQt5_gpl-$(PYTHON_PYQT5_VERSION).tar.gz 9PYTHON_PYQT5_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-$(PYTHON_PYQT5_VERSION) 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_PYTHON),y) 23PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR) 24PYTHON_PYQT5_RM_PORT_BASE = port_v3 25else ifeq ($(BR2_PACKAGE_PYTHON3),y) 26PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR) 27PYTHON_PYQT5_RM_PORT_BASE = port_v2 28endif 29 30ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) 31PYTHON_PYQT5_MODULES += QtWidgets 32 33# QtSql needs QtWidgets 34ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y) 35PYTHON_PYQT5_MODULES += QtSql 36endif 37 38# QtTest needs QtWidgets 39ifeq ($(BR2_PACKAGE_QT5BASE_TEST),y) 40PYTHON_PYQT5_MODULES += QtTest 41endif 42 43# QtSvg needs QtWidgets 44ifeq ($(BR2_PACKAGE_QT5SVG),y) 45PYTHON_PYQT5_DEPENDENCIES += qt5svg 46PYTHON_PYQT5_MODULES += QtSvg 47endif 48endif 49 50ifeq ($(BR2_PACKAGE_QT5CONNECTIVITY),y) 51PYTHON_PYQT5_DEPENDENCIES += qt5connectivity 52PYTHON_PYQT5_MODULES += QtBluetooth QtNfc 53endif 54 55ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) 56PYTHON_PYQT5_DEPENDENCIES += qt5declarative 57PYTHON_PYQT5_MODULES += QtQml 58 59# QtQuick module needs opengl 60ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_OPENGL_LIB),yy) 61PYTHON_PYQT5_MODULES += \ 62 QtQuick \ 63 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtQuickWidgets) 64endif 65endif 66 67ifeq ($(BR2_PACKAGE_QT5ENGINIO),y) 68PYTHON_PYQT5_DEPENDENCIES += qt5enginio 69PYTHON_PYQT5_MODULES += Enginio 70endif 71 72ifeq ($(BR2_PACKAGE_QT5LOCATION),y) 73PYTHON_PYQT5_DEPENDENCIES += qt5location 74PYTHON_PYQT5_MODULES += QtPositioning 75ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) 76PYTHON_PYQT5_MODULES += QtLocation 77endif 78endif 79 80ifeq ($(BR2_PACKAGE_QT5MULTIMEDIA),y) 81PYTHON_PYQT5_DEPENDENCIES += qt5multimedia 82PYTHON_PYQT5_MODULES += \ 83 QtMultimedia \ 84 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtMultimediaWidgets) 85endif 86 87ifeq ($(BR2_PACKAGE_QT5SENSORS),y) 88PYTHON_PYQT5_DEPENDENCIES += qt5sensors 89PYTHON_PYQT5_MODULES += QtSensors 90endif 91 92ifeq ($(BR2_PACKAGE_QT5SERIALPORT),y) 93PYTHON_PYQT5_DEPENDENCIES += qt5serialport 94PYTHON_PYQT5_MODULES += QtSerialPort 95endif 96 97ifeq ($(BR2_PACKAGE_QT5WEBCHANNEL),y) 98PYTHON_PYQT5_DEPENDENCIES += qt5webchannel 99PYTHON_PYQT5_MODULES += QtWebChannel 100endif 101 102ifeq ($(BR2_PACKAGE_QT5WEBENGINE),y) 103PYTHON_PYQT5_DEPENDENCIES += qt5webengine 104PYTHON_PYQT5_MODULES += \ 105 QtWebEngineCore \ 106 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebEngineWidgets) 107endif 108 109ifeq ($(BR2_PACKAGE_QT5WEBKIT),y) 110PYTHON_PYQT5_DEPENDENCIES += qt5webkit 111PYTHON_PYQT5_MODULES += \ 112 QtWebKit \ 113 $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebKitWidgets) 114endif 115 116ifeq ($(BR2_PACKAGE_QT5WEBSOCKETS),y) 117PYTHON_PYQT5_DEPENDENCIES += qt5websockets 118PYTHON_PYQT5_MODULES += QtWebSockets 119endif 120 121ifeq ($(BR2_PACKAGE_QT5X11EXTRAS),y) 122PYTHON_PYQT5_DEPENDENCIES += qt5x11extras 123PYTHON_PYQT5_MODULES += QtX11Extras 124endif 125 126ifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y) 127PYTHON_PYQT5_DEPENDENCIES += qt5xmlpatterns 128PYTHON_PYQT5_MODULES += QtXmlPatterns 129endif 130 131PYTHON_PYQT5_QTDETAIL_LICENSE = Open Source 132 133PYTHON_PYQT5_QTDETAIL_TYPE = shared 134 135# Turn off features that aren't available in current qt configuration 136PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL) 137PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL) 138PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL) 139 140define PYTHON_PYQT5_QTDETAIL 141 echo $(1) >> $(2)/qtdetail.out 142endef 143 144# Since we can't run generate qtdetail.out by running qtdetail on target device 145# we must generate the configuration. 146define PYTHON_PYQT5_GENERATE_QTDETAIL 147 $(RM) -f $(1)/qtdetail.out 148 $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_LICENSE),$(1)) 149 $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_TYPE),$(1)) 150 $(foreach f,$(PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES), 151 $(call PYTHON_PYQT5_QTDETAIL,$(f),$(1)) \ 152 ) 153endef 154 155PYTHON_PYQT5_CONF_OPTS = \ 156 --bindir $(TARGET_DIR)/usr/bin \ 157 --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages \ 158 --qmake $(HOST_DIR)/bin/qmake \ 159 --sysroot $(STAGING_DIR)/usr \ 160 -w --confirm-license \ 161 --no-designer-plugin \ 162 --no-docstrings \ 163 --no-sip-files \ 164 $(foreach module,$(PYTHON_PYQT5_MODULES),--enable=$(module)) 165 166define PYTHON_PYQT5_CONFIGURE_CMDS 167 $(call PYTHON_PYQT5_GENERATE_QTDETAIL,$(@D)) 168 (cd $(@D); \ 169 $(TARGET_MAKE_ENV) \ 170 $(TARGET_CONFIGURE_OPTS) \ 171 $(HOST_DIR)/bin/python configure.py \ 172 $(PYTHON_PYQT5_CONF_OPTS) \ 173 ) 174endef 175 176define PYTHON_PYQT5_BUILD_CMDS 177 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) 178endef 179 180# __init__.py is needed to import PyQt5 181# __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set 182define PYTHON_PYQT5_INSTALL_TARGET_CMDS 183 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install 184 touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/__init__.py 185 $(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/uic/$(PYTHON_PYQT5_RM_PORT_BASE) 186endef 187 188$(eval $(generic-package)) 189