[vlc-devel] [PATCH 1/9] contrib: qt: pass compiler flags directly to the mkspec file
Steve Lhomme
robux4 at ycbcr.xyz
Mon Aug 31 07:07:29 CEST 2020
On 2020-08-28 16:25, Pierre Lamot wrote:
> the -I flags passed to Qt configure script is applied to both target and host
> compilation.
> This may cause issues to compile host tools as the headers of the target may
> be incompatible with the host (ie: pthread header)
> ---
> ...user-defined-compilation-flags-to-qt.patch | 53 +++++++++++++++++++
> contrib/src/qt/rules.mak | 6 ++-
> 2 files changed, 58 insertions(+), 1 deletion(-)
> create mode 100644 contrib/src/qt/0001-allow-to-pass-user-defined-compilation-flags-to-qt.patch
>
> diff --git a/contrib/src/qt/0001-allow-to-pass-user-defined-compilation-flags-to-qt.patch b/contrib/src/qt/0001-allow-to-pass-user-defined-compilation-flags-to-qt.patch
> new file mode 100644
> index 0000000000..71e707daae
> --- /dev/null
> +++ b/contrib/src/qt/0001-allow-to-pass-user-defined-compilation-flags-to-qt.patch
> @@ -0,0 +1,53 @@
> +From 691cced4d252d3b76dce02963c18ca85d125bf09 Mon Sep 17 00:00:00 2001
> +From: Pierre Lamot <pierre at videolabs.io>
> +Date: Tue, 18 Aug 2020 16:06:06 +0200
> +Subject: [PATCH] allow to pass user defined compilation flags to qt
> +
> +---
> + mkspecs/darwin-g++/qmake.conf | 4 ++++
> + mkspecs/win32-clang-g++/qmake.conf | 4 ++++
> + mkspecs/win32-g++/qmake.conf | 4 ++++
> + 3 files changed, 12 insertions(+)
> +
> +diff --git a/mkspecs/darwin-g++/qmake.conf b/mkspecs/darwin-g++/qmake.conf
> +index 85955f7..8602b78 100644
> +--- a/mkspecs/darwin-g++/qmake.conf
> ++++ b/mkspecs/darwin-g++/qmake.conf
> +@@ -86,4 +86,8 @@ QMAKE_PCH_OUTPUT_EXT = .gch
> + QMAKE_CXXFLAGS_PRECOMPILE += -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
> + QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
> +
> ++QMAKE_CFLAGS += $${VLC_EXTRA_CFLAGS}
> ++QMAKE_CXXFLAGS += $${VLC_EXTRA_CXXFLAGS}
> ++QMAKE_LDFLAGS += $${VLC_EXTRA_LDFLAGS}
This is very VLC specific. A solution that could be upstreamed would be
better.
Also I've had problems with pthread in 3.0 because it uses the old
pthread-GC2. With the one from mingw there's no problem. Is there any
problem with the includes ?
There should be a way to set flags for host flags. Qt should not use the
env CFLAGS when cross compiling.
> ++
> + load(qt_config)
> +diff --git a/mkspecs/win32-clang-g++/qmake.conf b/mkspecs/win32-clang-g++/qmake.conf
> +index 4630ec4..149f779 100644
> +--- a/mkspecs/win32-clang-g++/qmake.conf
> ++++ b/mkspecs/win32-clang-g++/qmake.conf
> +@@ -24,4 +24,8 @@ QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
> + QMAKE_LINK = $${CROSS_COMPILE}clang++
> + QMAKE_LINK_C = $${CROSS_COMPILE}clang
> +
> ++QMAKE_CFLAGS += $${VLC_EXTRA_CFLAGS}
> ++QMAKE_CXXFLAGS += $${VLC_EXTRA_CXXFLAGS}
> ++QMAKE_LDFLAGS += $${VLC_EXTRA_LDFLAGS}
> ++
> + load(qt_config)
> +diff --git a/mkspecs/win32-g++/qmake.conf b/mkspecs/win32-g++/qmake.conf
> +index 5e99233..b22cbce 100644
> +--- a/mkspecs/win32-g++/qmake.conf
> ++++ b/mkspecs/win32-g++/qmake.conf
> +@@ -26,4 +26,8 @@ QMAKE_CFLAGS_LTCG = -flto
> + QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
> + QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
> +
> ++QMAKE_CFLAGS += $${VLC_EXTRA_CFLAGS}
> ++QMAKE_CXXFLAGS += $${VLC_EXTRA_CXXFLAGS}
> ++QMAKE_LDFLAGS += $${VLC_EXTRA_LDFLAGS}
> ++
> + load(qt_config)
> +--
> +2.25.1
> +
> diff --git a/contrib/src/qt/rules.mak b/contrib/src/qt/rules.mak
> index 1eb09d87ae..901f6f6ce6 100644
> --- a/contrib/src/qt/rules.mak
> +++ b/contrib/src/qt/rules.mak
> @@ -28,6 +28,7 @@ $(TARBALLS)/qtbase-everywhere-src-$(QT_VERSION_FULL).tar.xz:
>
> qt: qtbase-everywhere-src-$(QT_VERSION_FULL).tar.xz .sum-qt
> $(UNPACK)
> + $(APPLY) $(SRC)/qt/0001-allow-to-pass-user-defined-compilation-flags-to-qt.patch
> ifdef HAVE_WIN32
> $(APPLY) $(SRC)/qt/0001-Windows-QPA-prefer-lower-value-when-rounding-fractio.patch
> $(APPLY) $(SRC)/qt/0002-Windows-QPA-Disable-systray-notification-sounds.patch
> @@ -81,6 +82,9 @@ endif
>
> endif
>
> +QT_PLATFORM += -device-option VLC_EXTRA_CFLAGS="-isystem $(PREFIX)/include" \
> + -device-option VLC_EXTRA_CXXFLAGS="-isystem $(PREFIX)/include"
> +
> QT_CONFIG := -static -no-shared -opensource -confirm-license -no-pkg-config \
> -no-sql-sqlite -no-gif -qt-libjpeg -no-openssl $(QT_OPENGL) -no-dbus \
> -no-vulkan -no-sql-odbc -no-pch \
> @@ -102,7 +106,7 @@ ENV_VARS := $(HOSTVARS) DXSDK_DIR=$(PREFIX)/bin
> .qt: qt
> # Prevent all Qt contribs from generating and installing libtool .la files
> cd $< && sed -i "/CONFIG/ s/ create_libtool/ -create_libtool/g" mkspecs/features/qt_module.prf
> - +cd $< && $(ENV_VARS) ./configure $(QT_PLATFORM) $(QT_CONFIG) -prefix $(PREFIX) -I $(PREFIX)/include
> + +cd $< && $(ENV_VARS) ./configure $(QT_PLATFORM) $(QT_CONFIG) -prefix $(PREFIX)
> # Make && Install libraries
> cd $< && $(ENV_VARS) $(MAKE)
> cd $< && $(MAKE) -C src sub-corelib-install_subtargets sub-gui-install_subtargets sub-widgets-install_subtargets sub-platformsupport-install_subtargets sub-zlib-install_subtargets sub-bootstrap-install_subtargets sub-network-install_subtargets sub-testlib-install_subtargets
> --
> 2.25.1
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
>
More information about the vlc-devel
mailing list