Commit Graph

11 Commits

Author SHA1 Message Date
Alexandru Croitor
39f657032b CMake: Generate and use a wrapper script for stripping binaries
MinGW 11.2.0 comes with a strip.exe that strips the ".gnu_debuglink"
section in binaries, a section that is needed for the separate debug
information feature.

binutils version 2.34 mentions the feature for the first time:
https://sourceware.org/binutils/docs-2.34/binutils/strip.html#strip

To ensure the debuglink section is preserved, generate a shell wrapper
that calls the original strip binary with an extra option to keep the
required section.

To determine if the option is supported, we build a real shared library
on which strip will be called with the --keep-section option.
If the option is not supported, a wrapper is not generated and the
stock strip binary is used.

This logic only applies when targeting Linux and MinGW + a shared
library Qt. For other targets, the stock strip binary is used.

Developers can opt out of this logic by passing
-DQT_NO_STRIP_WRAPPER=TRUE when configuring each Qt repo.

Pick-to: 6.2 6.3
Fixes: QTBUG-101653
Change-Id: Idd213d48d087d3c9600c853362aebaba348cde33
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-03-24 21:50:50 +01:00
Kai Köhne
38c7c2ea30 syncqt: Do not print info about generating deprecated headers by default
Do not print information about deprecated headers when running in "quiet"
mode (-quiet argument, the default when configuring Qt modules).

Pick-to: 6.3
Change-Id: I4ea7f9251725527addef6c382b41f639048b8a9f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-03-16 00:30:34 +01:00
Michal Klocek
be2745e478 Install 3rdparty headers for static builds
For static builds we need 3rdparty headers to be installed.
Leaf modules like qtwebengine needs 3rdparty libs and header for
zlib, freetype, harfbuzz, png, jpeg. Without those the Chromium bundled
versions are used, however it might end up badly if qt has already
bundled one.

Introduce new header only modules with additional arguments for
qt_internal_add_module:

 * EXTERNAL_HEADERS to pick exactly which headers are public
 * EXTERNAL_HEADERS_DIR to include whole directory preserving the
   files directory structure

Fix qtsync so it keep directory structure for all non-qt modules when
syncing headers and do not generate warnings for headers files.

Task-number: QTBUG-87154
Task-number: QTBUG-88614
Change-Id: If1c27bf8608791cd4e0a21839d6316a445a96e9f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-02-19 01:52:32 +01:00
Kai Köhne
ca298bbefc Fix various configure time warnings about missing QT_BEGIN_NAMESPACE
We now have a couple of global.h headers that do only start with 'q'.
We can't change this anymore, so let's just accommodate for that.

This fixes the following warnings

  qtserialport/src/serialport/qserialportglobal.h does not include QT_BEGIN_NAMESPACE
  qtwebsockets/src/websockets/qwebsockets_global.h does not include QT_BEGIN_NAMESPACE
  qtwebchannel/src/webchannel/qwebchannelglobal.h does not include QT_BEGIN_NAMESPACE

Pick-to: 6.2
Fixes: QTBUG-97831
Change-Id: I12aae13eb0d782d366cb84999392a544c30cdd79
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-11-01 17:17:29 +02:00
Joerg Bornemann
6c17436449 Teach syncqt to filter out QT_DEPRECATED_* macros
We already had code that filtered out QT_DEPRECATED_X("text").  But that
isn't enough, because, by now, we have a true cornucopia of
QT_DEPRECATED_* macros.  And only some are called with an argument list.

Move the filtering code into the subroutine filterDeprecationMacros,
because our filtering is slightly more complex now:

- Try to match a QT_DEPRECATED_* macro call.
- Try to match balanced parentheses with a recursive regular expression.
- Check whether the found balanced parentheses are directly behind
  QT_DEPRECATED_*, because only then it is the argument list of that
  macro.
- Filter out what we've found.

With this patch, syncqt doesn't discard deprecated classes anymore.

Task-number: QTBUG-80347
Change-Id: I7872159639be330d5a039c98eac0c5007d9acb93
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-09-07 08:28:09 +02:00
Alexey Edelev
766d5d168f Fix global header exclusion regex
Make the dot explicit in global header exclusion regex.
Ensure that '.h' states in the end of file name and support
paths.

Amends 50b55b89f3

Change-Id: I25b3d2fb54ed606a0b0806a10dbcb4ce1c65d2d8
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-07-09 13:56:18 +02:00
Alexey Edelev
50b55b89f3 Exclude 'global' headers from QT_BEGIN_NAMESPACE check in syncqt.pl
Add 'global' headers to the ignore list of the QT_BEGIN_NAMESPACE
check. The QT_BEGIN/END_NAMESPACE use in some of global header files
makes no sense. This will suppress warnings caused by migration to
the generated cpp exports.

Amends b10e4e846e

Task-number: QTBUG-90492
Change-Id: Ic7e3f284263740021f86cade4dc19d810cb8fe02
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-07-06 15:17:15 +02:00
Alexey Edelev
1c2ca4004d Fix invalid path to the qt-cmake.bat when calling qt-internal-configure-tests.bat
Since qt-internal-configure-tests.bat is located in the same folder as
qt-cmake.bat the relative_path_from_libexec_dir_to_bin_dir is empty.

Passing doubled backslash in the windows path causes an issue for the
cmd.exe batch interpreter. Extra backslashes are treated by %~dp0 as a
start of the relative path. The following error appears:

   Could not find toolchain file:
     ...\install\bin\..\/../lib/cmake/Qt6/qt.toolchain.cmake

This appends an extra backslash to relative_bin_dir only if
relative_path_from_libexec_dir_to_bin_dir is not empty.

Change-Id: Id2fd6c5fa9d73060350f298262c6e93a4887eeb3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-06-23 14:26:18 +02:00
Alexandru Croitor
adf29329ea CMake: Make qt-internal-configure-tests relocatable
It's important for conan CI builds where the correct installation
location of Qt should be used when configuring standalone tests.

Task-number: QTBUG-93037
Change-Id: I2465a439aea6826dedfb3217d1c909ad639d4ac0
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-04-26 23:11:28 +02:00
Joerg Bornemann
4ae9922166 Move bin/qt-internal-configure-tests to libexec
Pick-to: 6.1
Task-number: QTBUG-88791
Change-Id: I78613128760b5820e6db17b0c09462e34f7c7bb2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-03-30 14:39:12 +01:00
Joerg Bornemann
800f745140 Move syncqt.pl to libexec
To not disturb the qmake build we kept syncqt.pl in <src>/bin but
installed it to libexec. This is not necessary anymore.

This also removes the need for having syncqt.pl in both, bin and libexec
in the build dir of qtbase.

Pick-to: 6.1
Fixes: QTBUG-91076
Change-Id: I44b014ea41e3f00c420e02fd5c76f11169340b8c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2021-03-04 09:56:07 +01:00