Commit Graph

17 Commits

Author SHA1 Message Date
Alexandru Croitor
8ffb6ce64c CMake: Add a config.redo script similar to qt5's config.status
The config.redo script can be executed to reconfigure a pre-existing
qt build dir with the configure options that were last passed to the
build.

It just calls the original configure script with the -redo option.

It's nicer than calling configure + -redo manually because you don't
need to write out the full source path for configure.

In qt 5 times this script was called config.status.

On windows the script is called config.redo.bat.

Rename the config.redo file that QtWriteArgsFile.cmake writes to
to config.redo.last, so it doesn't conflict with the name of new
config.redo script.

Amends 5c40cb0f1a

Pick-to: 6.5 6.6
Change-Id: Id47c56a24561410aec6fbaa79b13fc8a78d12ed0
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-09-20 21:20:13 +02:00
Joerg Bornemann
d766caa429 Remove syncqt.pl
This script has been superseded by a C++ implementation.

Change-Id: I2a9b55dbf7fabbb422040f601d9ba1035d88bba4
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
2023-06-30 13:23:46 +02:00
Amir Masoud Abdol
bafe9dfc61 Pass native path in qt-internal-configure-tests
In the previous patch, I did not account for how we usually use the
qt-internal-configure-test.bat in our CI. This should be a more robust
script, where we search for the source path, -S <PATH>, make it native,
and put it back.

Amend 389b3a131a

Pick-to: 6.5
Change-Id: Ic59de2eb1e6720de150a9e15a4b38fae4d871815
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-17 23:32:34 +02:00
Amir Masoud Abdol
389b3a131a Add drive letter to source paths when calling qt-internal- scripts
Like qt-configure-module.bat, when building with unity build, CMake
needs to know the full path of the source directory to be able to
correctly generate its `*_cxx.cxx` files. So far, this seems to only
affect Windows' LLVM/MinGW builds. By this patch, I make sure that we
pass the full path to CMake.

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: Ida2da127ecba95856b6e0091936c471c2a116936
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-14 18:34:05 +02:00
Lucie Gérard
05fc3aef53 Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
Files that have to be modified by hand are modified.
License files are organized under LICENSES directory.

Task-number: QTBUG-67283
Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-05-16 16:37:38 +02:00
Alexandru Croitor
2061cea0f3 CMake: Pass -v to ninja when using ctest --build-and-test
So we can see the command line invocations of the built cmake
auto tests.

To achieve that, we create a ninja shell script wrapper, because
ctest --build-and-test does not currently allow specifying custom
build tool options.

Details at
https://gitlab.kitware.com/cmake/cmake/-/issues/22443

Pick-to: 6.2 6.3
Change-Id: I7fb3b7f7f802943a7013c859b2cf39842a34e2e4
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-04-04 15:41:20 +02:00
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