ubuntu-buildroot/package/qt6/qt6base/qt6base.mk

386 lines
9.7 KiB
Makefile

################################################################################
#
# qt6base
#
################################################################################
QT6BASE_VERSION = $(QT6_VERSION)
QT6BASE_SITE = $(QT6_SITE)
QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz
QT6BASE_LICENSE = \
GPL-2.0+ or LGPL-3.0, \
GPL-3.0 with exception (tools), \
GFDL-1.3 (docs), \
Apache-2.0, \
BSD-3-Clause, \
BSL-1.0, \
MIT
QT6BASE_LICENSE_FILES = \
LICENSES/Apache-2.0.txt \
LICENSES/BSD-3-Clause.txt \
LICENSES/BSL-1.0.txt \
LICENSES/GFDL-1.3-no-invariants-only.txt \
LICENSES/GPL-2.0-only.txt \
LICENSES/GPL-3.0-only.txt \
LICENSES/LGPL-3.0-only.txt \
LICENSES/MIT.txt \
LICENSES/Qt-GPL-exception-1.0.txt
QT6BASE_DEPENDENCIES = \
host-ninja \
host-qt6base \
double-conversion \
libb2 \
pcre2 \
zlib
QT6BASE_INSTALL_STAGING = YES
QT6BASE_CONF_OPTS = \
-GNinja \
-DQT_HOST_PATH=$(HOST_DIR) \
-DFEATURE_concurrent=OFF \
-DFEATURE_xml=OFF \
-DFEATURE_sql=OFF \
-DFEATURE_testlib=OFF \
-DFEATURE_network=OFF \
-DFEATURE_dbus=OFF \
-DFEATURE_icu=OFF \
-DFEATURE_glib=OFF \
-DFEATURE_system_doubleconversion=ON \
-DFEATURE_system_pcre2=ON \
-DFEATURE_system_zlib=ON \
-DFEATURE_system_libb2=ON
# x86 optimization options. While we have a BR2_X86_CPU_HAS_AVX512, it
# is not clear yet how it maps to all the avx512* options of Qt, so we
# for now keeps them disabled.
QT6BASE_CONF_OPTS += \
-DFEATURE_sse2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \
-DFEATURE_sse3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \
-DFEATURE_sse4_1=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \
-DFEATURE_sse4_2=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \
-DFEATURE_ssse3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) \
-DFEATURE_avx=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \
-DFEATURE_avx2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \
-DFEATURE_avx512bw=OFF \
-DFEATURE_avx512cd=OFF \
-DFEATURE_avx512dq=OFF \
-DFEATURE_avx512er=OFF \
-DFEATURE_avx512f=OFF \
-DFEATURE_avx512ifma=OFF \
-DFEATURE_avx512pf=OFF \
-DFEATURE_avx512vbmi=OFF \
-DFEATURE_avx512vbmi2=OFF \
-DFEATURE_avx512vl=OFF \
-DFEATURE_vaes=OFF
define QT6BASE_BUILD_CMDS
$(TARGET_MAKE_ENV) $(BR2_CMAKE) --build $(QT6BASE_BUILDDIR)
endef
define QT6BASE_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) $(BR2_CMAKE) --install $(QT6BASE_BUILDDIR)
endef
define QT6BASE_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) $(BR2_CMAKE) --install $(QT6BASE_BUILDDIR)
endef
HOST_QT6BASE_DEPENDENCIES = \
host-ninja \
host-double-conversion \
host-libb2 \
host-pcre2 \
host-zlib
HOST_QT6BASE_CONF_OPTS = \
-GNinja \
-DFEATURE_gui=OFF \
-DFEATURE_concurrent=OFF \
-DFEATURE_xml=ON \
-DFEATURE_sql=OFF \
-DFEATURE_testlib=OFF \
-DFEATURE_network=OFF \
-DFEATURE_dbus=OFF \
-DFEATURE_icu=OFF \
-DFEATURE_glib=OFF \
-DFEATURE_system_doubleconversion=ON \
-DFEATURE_system_libb2=ON \
-DFEATURE_system_pcre2=ON \
-DFEATURE_system_zlib=ON
define HOST_QT6BASE_BUILD_CMDS
$(HOST_MAKE_ENV) $(BR2_CMAKE) --build $(HOST_QT6BASE_BUILDDIR)
endef
define HOST_QT6BASE_INSTALL_CMDS
$(HOST_MAKE_ENV) $(BR2_CMAKE) --install $(HOST_QT6BASE_BUILDDIR)
endef
# Conditional blocks below are ordered by alphabetic ordering of the
# BR2_PACKAGE_* option.
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
QT6BASE_CONF_OPTS += -DFEATURE_libudev=ON
QT6BASE_DEPENDENCIES += udev
else
QT6BASE_CONF_OPTS += -DFEATURE_libudev=OFF
endif
ifeq ($(BR2_PACKAGE_ICU),y)
QT6BASE_CONF_OPTS += -DFEATURE_icu=ON
QT6BASE_DEPENDENCIES += icu
else
QT6BASE_CONF_OPTS += -DFEATURE_icu=OFF
endif
ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
QT6BASE_CONF_OPTS += -DFEATURE_glib=ON
QT6BASE_DEPENDENCIES += libglib2
else
QT6BASE_CONF_OPTS += -DFEATURE_glib=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_GUI),y)
QT6BASE_CONF_OPTS += \
-DFEATURE_gui=ON \
-DFEATURE_freetype=ON \
-DFEATURE_vulkan=OFF
QT6BASE_DEPENDENCIES += freetype
ifeq ($(BR2_PACKAGE_QT6BASE_LINUXFB),y)
QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_XCB),y)
QT6BASE_CONF_OPTS += \
-DFEATURE_xcb=ON \
-DFEATURE_xcb_xlib=ON \
-DFEATURE_xkbcommon=ON \
-DFEATURE_xkbcommon_x11=ON
QT6BASE_DEPENDENCIES += \
libxcb \
libxkbcommon \
xcb-util-wm \
xcb-util-image \
xcb-util-keysyms \
xcb-util-renderutil \
xlib_libX11
else
QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_HARFBUZZ),y)
QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=ON
ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y)
# system harfbuzz in case __sync for 4 bytes is supported
QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=OFF
QT6BASE_DEPENDENCIES += harfbuzz
else #BR2_TOOLCHAIN_HAS_SYNC_4
# qt harfbuzz otherwise (using QAtomic instead)
QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=ON
QT6BASE_LICENSE += , MIT (harfbuzz)
QT6BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING
endif
else
QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_PNG),y)
QT6BASE_CONF_OPTS += -DFEATURE_png=ON -DFEATURE_system_png=ON
QT6BASE_DEPENDENCIES += libpng
else
QT6BASE_CONF_OPTS += -DFEATURE_png=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_GIF),y)
QT6BASE_CONF_OPTS += -DFEATURE_gif=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_gif=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_JPEG),y)
QT6BASE_CONF_OPTS += -DFEATURE_jpeg=ON
QT6BASE_DEPENDENCIES += jpeg
else
QT6BASE_CONF_OPTS += -DFEATURE_jpeg=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_PRINTSUPPORT),y)
QT6BASE_CONF_OPTS += -DFEATURE_printsupport=ON
ifeq ($(BR2_PACKAGE_CUPS),y)
QT6BASE_CONF_OPTS += -DFEATURE_cups=ON
QT6BASE_DEPENDENCIES += cups
else
QT6BASE_CONF_OPTS += -DFEATURE_cups=OFF
endif
else
QT6BASE_CONF_OPTS += -DFEATURE_printsupport=OFF
endif
ifeq ($(BR2_PACKAGE_LIBDRM),y)
QT6BASE_CONF_OPTS += -DFEATURE_kms=ON
QT6BASE_DEPENDENCIES += libdrm
else
QT6BASE_CONF_OPTS += -DFEATURE_kms=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_FONTCONFIG),y)
QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=ON
QT6BASE_DEPENDENCIES += fontconfig
else
QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y)
QT6BASE_CONF_OPTS += -DFEATURE_widgets=ON
# only enable gtk support if libgtk3 X11 backend is enabled
ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy)
QT6BASE_CONF_OPTS += -DFEATURE_gtk3=ON
QT6BASE_DEPENDENCIES += libgtk3
else
QT6BASE_CONF_OPTS += -DFEATURE_gtk3=OFF
endif
else
QT6BASE_CONF_OPTS += -DFEATURE_widgets=OFF
endif
ifeq ($(BR2_PACKAGE_LIBINPUT),y)
QT6BASE_CONF_OPTS += -DFEATURE_libinput=ON
QT6BASE_DEPENDENCIES += libinput
else
QT6BASE_CONF_OPTS += -DFEATURE_libinput=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_TSLIB),y)
QT6BASE_CONF_OPTS += -DFEATURE_tslib=ON
QT6BASE_DEPENDENCIES += tslib
else
QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y)
QT6BASE_CONF_OPTS += -DFEATURE_egl=ON -DFEATURE_eglfs=ON
QT6BASE_DEPENDENCIES += libegl libgbm
else
QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP),y)
QT6BASE_CONF_OPTS += -DFEATURE_opengl=ON -DFEATURE_opengl_desktop=ON
QT6BASE_DEPENDENCIES += libgl
else ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_ES2),y)
QT6BASE_CONF_OPTS += -DFEATURE_opengl=ON -DFEATURE_opengles2=ON
QT6BASE_DEPENDENCIES += libgles
else
QT6BASE_CONF_OPTS += -DFEATURE_opengl=OFF -DINPUT_opengl=no
endif
else
QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF
endif
QT6BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT6BASE_DEFAULT_QPA))
QT6BASE_CONF_OPTS += $(if $(QT6BASE_DEFAULT_QPA),-DQT_QPA_DEFAULT_PLATFORM=$(QT6BASE_DEFAULT_QPA))
ifeq ($(BR2_PACKAGE_OPENSSL),y)
QT6BASE_CONF_OPTS += -DINPUT_openssl=yes
QT6BASE_DEPENDENCIES += openssl
else
QT6BASE_CONF_OPTS += -DINPUT_openssl=no
endif
ifeq ($(BR2_PACKAGE_QT6BASE_CONCURRENT),y)
QT6BASE_CONF_OPTS += -DFEATURE_concurrent=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_concurrent=OFF
endif
# We need host-qt6base with D-Bus support, otherwise: "the tool
# "Qt6::qdbuscpp2xml" was not found in the Qt6DBusTools package."
ifeq ($(BR2_PACKAGE_QT6BASE_DBUS),y)
QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON -DINPUT_dbus=linked
QT6BASE_DEPENDENCIES += dbus
HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON
HOST_QT6BASE_DEPENDENCIES += host-dbus
else
QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF
HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_NETWORK),y)
QT6BASE_CONF_OPTS += -DFEATURE_network=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_network=OFF
endif
# Qt6 SQL Plugins
ifeq ($(BR2_PACKAGE_QT6BASE_SQL),y)
QT6BASE_CONF_OPTS += -DFEATURE_sql=ON
QT6BASE_CONF_OPTS += -DFEATURE_sql_db2=OFF -DFEATURE_sql_ibase=OFF -DFEATURE_sql_oci=OFF -DFEATURE_sql_odbc=OFF
ifeq ($(BR2_PACKAGE_QT6BASE_MYSQL),y)
QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=ON
QT6BASE_DEPENDENCIES += mysql
else
QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_PSQL),y)
QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=ON
QT6BASE_DEPENDENCIES += postgresql
else
QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_SQLITE),y)
QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=ON -DFEATURE_system_sqlite=ON
QT6BASE_DEPENDENCIES += sqlite
else
QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=OFF
endif
else
QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_SYSLOG),y)
QT6BASE_CONF_OPTS += -DFEATURE_syslog=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_syslog=OFF
endif
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
QT6BASE_CONF_OPTS += -DFEATURE_journald=ON
QT6BASE_DEPENDENCIES += systemd
else
QT6BASE_CONF_OPTS += -DFEATURE_journald=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_TEST),y)
QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF
endif
ifeq ($(BR2_PACKAGE_QT6BASE_XML),y)
QT6BASE_CONF_OPTS += -DFEATURE_xml=ON
else
QT6BASE_CONF_OPTS += -DFEATURE_xml=OFF
endif
ifeq ($(BR2_PACKAGE_ZSTD),y)
QT6BASE_CONF_OPTS += -DFEATURE_zstd=ON
QT6BASE_DEPENDENCIES += zstd
else
QT6BASE_CONF_OPTS += -DFEATURE_zstd=OFF
endif
$(eval $(cmake-package))
$(eval $(host-cmake-package))