mirror of
https://git.busybox.net/buildroot.git
synced 2024-12-02 18:03:39 +08:00
5770a645a3
This points all qt5 packages to the latest kde submodule versions available at https://invent.kde.org/qt/qt/qt5/-/tree/kde/5.15 There is no 5.15.8 release of the kde-maintained modules, no release tarballs and no tags. Instead, there's just a rolling maintenance branch. We take a snapshot of that branch and call it 5.15.8, to match the latest qt5webengine release. We need to remove some patches applied upstream already. qt5location has mapboxgl as a submodule, which is not included in the gitlab-generated tarball. Therefore, use the git download method with submodules enabled. We need to pin qt5 packages not available in the new upstream to the previous 5.15.2 version. We need to set SYNC_QT_HEADERS for all qt5 packages in the new upstream as headers are only copied in release archives which are not provided in the kde upstream. Instead of calling syncqt.pl, update the MODULE_VERSION in .qmake.conf to 5.15.8 and create a .git file so to trigger headers sync during configure. Hold back updating qt5webengine for now since the latest version requires significant changes to build, just tweak existing version to be compatible with latest kde versions for now. Signed-off-by: James Hilliard <james.hilliard1@gmail.com> Reviewed-by: Adam Duskett <aduskett@gmail.com> Tested-by: Adam Duskett <aduskett@gmail.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
122 lines
4.3 KiB
Makefile
122 lines
4.3 KiB
Makefile
################################################################################
|
|
# QMake package infrastructure
|
|
#
|
|
# This file implements an infrastructure that eases development of package
|
|
# .mk files for QMake packages. It should be used for all packages that use
|
|
# Qmake as their build system.
|
|
#
|
|
# See the Buildroot documentation for details on the usage of this
|
|
# infrastructure
|
|
#
|
|
# In terms of implementation, this QMake infrastructure requires the .mk file
|
|
# to only specify metadata information about the package: name, version,
|
|
# download URL, etc.
|
|
#
|
|
# We still allow the package .mk file to override what the different steps
|
|
# are doing, if needed. For example, if <PKG>_BUILD_CMDS is already defined,
|
|
# it is used as the list of commands to perform to build the package,
|
|
# instead of the default QMake behaviour. The package can also define some
|
|
# post operation hooks.
|
|
#
|
|
################################################################################
|
|
|
|
#
|
|
# Hook to sync Qt headers
|
|
#
|
|
define QT_HEADERS_SYNC_HOOK
|
|
sed -e '/^MODULE_VERSION/s/5\.15\.[3456789]/$(QT5_VERSION)/' -i \
|
|
$($(PKG)_BUILDDIR)/.qmake.conf
|
|
touch $($(PKG)_BUILDDIR)/.git
|
|
endef
|
|
|
|
################################################################################
|
|
# inner-qmake-package -- defines how the configuration, compilation and
|
|
# installation of a qmake package should be done, implements a few hooks
|
|
# to tune the build process for qmake specifities and calls the generic
|
|
# package infrastructure to generate the necessary make targets
|
|
#
|
|
# argument 1 is the lowercase package name
|
|
# argument 2 is the uppercase package name, including a HOST_ prefix
|
|
# for host packages
|
|
################################################################################
|
|
|
|
define inner-qmake-package
|
|
|
|
$(2)_INSTALL_STAGING_OPTS ?= install
|
|
$(2)_INSTALL_TARGET_OPTS ?= $$($(2)_INSTALL_STAGING_OPTS)
|
|
|
|
ifneq ($(1),qt5base)
|
|
$(2)_DEPENDENCIES += qt5base
|
|
endif
|
|
|
|
ifeq ($$($(2)_SYNC_QT_HEADERS),YES)
|
|
$(2)_DEPENDENCIES += host-perl
|
|
$(2)_PRE_CONFIGURE_HOOKS += QT_HEADERS_SYNC_HOOK
|
|
endif
|
|
|
|
$(2)_POST_PREPARE_HOOKS += QT5_QT_CONF_FIXUP
|
|
|
|
#
|
|
# Configure step. Only define it if not already defined by the package
|
|
# .mk file.
|
|
#
|
|
ifndef $(2)_CONFIGURE_CMDS
|
|
define $(2)_CONFIGURE_CMDS
|
|
cd $$($(2)_BUILDDIR) && \
|
|
$$(TARGET_MAKE_ENV) $$($(2)_CONF_ENV) $$(QT5_QMAKE) $$($(2)_CONF_OPTS)
|
|
endef
|
|
endif
|
|
|
|
#
|
|
# Build step. Only define it if not already defined by the package .mk
|
|
# file.
|
|
#
|
|
ifndef $(2)_BUILD_CMDS
|
|
define $(2)_BUILD_CMDS
|
|
$$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) $$($(2)_MAKE_OPTS)
|
|
endef
|
|
endif
|
|
|
|
#
|
|
# Staging installation step. Only define it if not already defined by
|
|
# the package .mk file.
|
|
#
|
|
ifndef $(2)_INSTALL_STAGING_CMDS
|
|
define $(2)_INSTALL_STAGING_CMDS
|
|
$$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) $$($(2)_INSTALL_STAGING_OPTS)
|
|
endef
|
|
endif
|
|
|
|
#
|
|
# Target installation step. Only define it if not already defined by
|
|
# the package .mk file.
|
|
#
|
|
# Unfortunately we can't use INSTALL_ROOT to directly install to TARGET_DIR
|
|
# because in a crosscompile setup, the qmake generated install destinations
|
|
# are prefixed with the hardcoded sysroot (=STAGING_DIR) and hostprefix
|
|
# (=HOST_DIR).
|
|
# Instead we set INSTALL_ROOT, which comes before the install path, to a
|
|
# temporary folder inside the build directory and effectively install to
|
|
# $(@D)/tmp-target-install/$(STAGING_DIR) and $(@D)/tmp-target-install/$(HOST_DIR).
|
|
# We subsequently rsync only the files from the temporary staging dir and that
|
|
# way exclude files for the build host from target.
|
|
#
|
|
ifndef $(2)_INSTALL_TARGET_CMDS
|
|
define $(2)_INSTALL_TARGET_CMDS
|
|
$$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) INSTALL_ROOT=$$($(2)_BUILDDIR)tmp-target-install $$($(2)_INSTALL_TARGET_OPTS)
|
|
rsync -arv $$($(2)_BUILDDIR)tmp-target-install$$(STAGING_DIR)/ $$(TARGET_DIR)/
|
|
endef
|
|
endif
|
|
|
|
# Call the generic package infrastructure to generate the necessary
|
|
# make targets
|
|
$(call inner-generic-package,$(1),$(2),$(3),$(4))
|
|
|
|
endef
|
|
|
|
################################################################################
|
|
# qmake-package -- the target generator macro for QMake packages
|
|
################################################################################
|
|
|
|
qmake-package = $(call inner-qmake-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
|