Commit Graph

53 Commits

Author SHA1 Message Date
Amir Masoud Abdol
60968090ad Update -redo option such that it removes CMakeCache.txt and CMakeFiles/
In the case of re-doing, `configure` and `configure.bat` pass an extra
parameter to the `QtProcessConfigureArgs.cmake`. As a result, CMake
removes CMakeCache.txt and CMakeFiles/ before the reconfiguration. If
the user is using CMake 3.24 or newer, this is achieved by passing
the `--fresh` option to CMake call. In older CMake(s), CMakeCache.txt
and CMakeFiles/ found in CMAKE_BINARY_DIR will be removed using a
file(REMOVE_RECURSIVE call.

[ChangeLog] The -redo option now additionally removes existing
CMakeCache.txt file, and CMakeFiles/ directory, and recreates them from
scratch.

Task-number: QTBUG-108287
Change-Id: I11a5c8f9df1247d11eb7097552e6764463583346
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-12-01 02:23:51 +01: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
Kai Köhne
7c801ec93a configure.bat: Fix call without arguments
If there are no arguments, echo will print its status, and config.opt.in
will contain

  ECHO
  is
  off.

Fix this by using "echo." idiom.

This amends 57ad532e75

Pick-to: 6.2 6.3
Change-Id: I1697e59f23cd28256a4a6ce357eae70e36c49d5a
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-02-16 12:05:48 +01:00
Björn Schäpers
c6808d4296 configure: Fix -redo when configure line contained equal sign(s)
If the original configure arguments contained equal sign(s) like in
    configure ... -- -DQT_BUILD_SUBMODULES=qtbase;...

The following error message was printed:
    =qtbase was unexpected at this time.

The reason is that the conditional
    if "%rargs%" == ""
would expand to something like
    if ""-DQT_BUILD_SUBMODULES=qtsvg"" == ""
which is invalid, because the equal sign is used outside of a string
literal.

Use delayed expansion in the conditional to fix this.

Pick-to: 6.2 6.3
Change-Id: I8c40d799db2c5aae8cba190ed31804c71a605935
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-02-15 08:08:48 +00:00
Joerg Bornemann
57ad532e75 Fix our usage of CMake script mode in Windows configure
This is a preparation for adding the -help argument to
qt-configure-module.bat.

Consider the call
  qt-configure-module.bat path/to/qt-module -help
Internally, we called
  cmake ... -P .../QtWriteArgsFile.cmake path/to/qt-module -help
which was supposed to separate the arguments and write them into
config.opt.

However, passing arbitrary arguments after "-P script.cmake" only worked
by accident and is not supported.  As soon as arguments are passed that
are valid CMake arguments, like -help or -G, the CMake call would fail.

Now, we let configure.bat and qt-configure-module.bat write the
arguments as is into config.opt.in and let QtWriteArgsFile.cmake read
this file, separate the arguments and write config.opt.

Pick-to: 6.2
Task-number: QTBUG-95943
Change-Id: I80f298a2aaf55b0f79fed86320a055eb2d2b6faa
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-20 19:44:43 +02:00
Joerg Bornemann
24f790490f Remove superfluous variable assignments from configure.bat
Change-Id: I18d17a4ec8f5a33cb13282b584ecd75dd861d040
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-03-11 16:39:54 +01:00
Joerg Bornemann
081b5398f8 Remove the -qmake and -cmake configure arguments
Qt is built with CMake since 6.0 and the QMake build system was removed
in 6.1. It's time to remove the -cmake and -qmake configure arguments
for Qt 6.2.

Fixes: QTBUG-88286
Change-Id: Ie726ec364ded025f8d93bd69b469561a6ae40aa9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-03-11 16:39:50 +01:00
Joerg Bornemann
31396f0aff Remove qmake-related code from configure
This leaves a very simple script that delegates the heavy configure work
to a CMake script.

This also removes the Makefile templates that were used for
bootstrapping qmake.

Task-number: QTBUG-88742
Change-Id: Iab9c477e0bb611d680bda2cf8aaa7ad88356a8d1
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-12-21 10:33:33 +01:00
Alexandru Croitor
126c5c501a CMake: Disable building Qt with qmake
Print an error message when configure is passed the -qmake option.
The only supported way to build Qt now is with CMake.

This means the CMakeLists.txt files are the source of truth now, and
pro2cmake will not have to be used anymore.
The .pro files can be removed at a later time.

The same is true for configure.cmake files. They are the authoritative
source, and the configure.json files will be removed at a later time.

Task-number: QTBUG-88741
Change-Id: Ia9de4c1411978b40b13e9b982977e7818164c984
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-12-10 15:25:37 +01:00
Joerg Bornemann
9a50d62039 CMake: Fix Windows top-level configure.bat
We must write config.opt in the same directory we're reading it from.
We must not write the -top-level argument to config.opt.
This amends commit 2a29426e39.

Change-Id: I96da9094579fec29c290411677d6b538878399f4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-03 13:06:14 +01:00
Volker Hilsheimer
ba7ef28ea9 Default to cmake when building Qt
People that insist on qmake builds of Qt can configure with -qmake

Task-number: QTBUG-87049
Change-Id: I5729b654d4c8b9c6b526234ba5563aff8fd750e1
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-02 15:36:13 +00:00
Joerg Bornemann
2a29426e39 CMake: Fix argument passing for configure.bat / qt-configure-module.bat
Passing arguments with equal signs was broken for configure.bat and
qt-configure-module.bat. An argument FOO=BAR was split at = and written
as
    FOO
    BAR
to config.opt, breaking every attempt of assigning CMake variables.

We must not iterate over %* in batch files to avoid splitting arguments
at equal signs. Instead, pass %* unmodified to a CMake script that
writes config.opt.

Fixes: QTBUG-88019
Change-Id: I7c743a206961d1ed168f2313f864905f6b345b49
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-30 08:22:30 +01:00
Joerg Bornemann
077ea0c633 configure: add -qmake argument
This option configures Qt with the qmake-based build system.
Currently, this is the default, so this option is a no-op until the
default switches to CMake.

Task-number: QTBUG-87049
Change-Id: I56f3080a4f1423788ffb743287a7b2e67a8e2cc4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-10-01 14:34:05 +02:00
Joerg Bornemann
25cc901f04 CMake: Fix configure -redo for top-level builds
When re-doing in a top-level build, we did not read the config.opt file
from the top-level directory.

Also, the config.opt file should not contain the -top-level argument.
This is an internal option, and on Windows, it was already missing. The
information whether we're doing a top-level build is now passed in the
CMake variable TOP_LEVEL.

Change-Id: Iaecd7306a4b6d9ad494684c201cf12f8e74d684b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-22 22:20:43 +02:00
Joerg Bornemann
044cb3ce20 CMake: Fix top-level configure
The working directory for CMake must be the top-level build dir, not the
qtbase one.

Change-Id: I1090aca8bf2617719e724f96b1fa356eb9fabb46
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-07-16 15:00:37 +02:00
Joerg Bornemann
dbd3c75965 CMake: Teach configure.bat the -cmake argument
The configure scripts need to translate configure options to CMake
arguments. It is not sensible to implement this translation twice, in
sh and Windows batch language, so we're doing this once, in CMake
language.

The configure scripts write their options into config.opt and call a
CMake script that reads config.opt, does the translation to CMake
arguments and calls CMake to generate the build system.

While we're at it, implement some more translations than the sh
configure provided, like -extprefix, -top-level and -skip.

Fixes: QTBUG-85349
Fixes: QTBUG-85350
Task-number: QTBUG-85373
Change-Id: Ida5d8b2a3c178b9349d41ec76d190c69a9456e74
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-07-06 17:43:28 +02:00
Lars Knoll
7f67e91e55 Don't compile qmake in c++11 mode
Change-Id: Ia43dd67f3b83263b4be16e468b8c22598db9ac78
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-02-03 17:43:30 +01:00
Yuhang Zhao
85250da09d Configure: simplify logic
Replace hard-coded win32-msvc20XX mkspec names with
a variable substitution expression.

Change-Id: I4911cb3e169cd7603453d7c8a67a2a291d15c796
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-03-14 12:13:58 +00:00
Yuhang Zhao
b9c4add832 Configure: add missing "clang.exe"
This amends commit 16b7afc.

Change-Id: I6c0e4b476035e4733e828724109b950d5b3a8dd6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-03-14 12:13:37 +00:00
Yuhang Zhao
16b7afc4de Fix win32-clang-g++ build
Change-Id: Ide803de12736d545807a4ae650ff8f8bce5dccd8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-03-13 16:12:34 +00:00
Orgad Shaneh
534ad22b32 configure: Prefer cl.exe over clang-cl.exe
This is a remake of 8e4c8be0b9 that was
undone by mistake in 8f49da6c18.

Change-Id: I9596b860dea90b042baa8b2b95b1e3b050e9b835
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-01-04 21:22:42 +00:00
Oswald Buddenhagen
7967d8dadb configure: balk at any of {{,X}QMAKESPEC,QMAKE{PATH,FEATURES}} being set
these variables have no legitimate use when building qt itself, but have
great potential to wreak havoc.

Task-number: QTBUG-60016
Change-Id: I161837463443af82d48145e75952fa529212fe75
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-04-21 09:22:27 +00:00
Oswald Buddenhagen
ecb025e346 reduce nesting in configure.bat
for some inexplicable reason, configure.bat went into an endless loop
on win 8.1+ while attempting to parse the command line; this is clearly
a bug in cmd, so work around it.

amends 7af6e9bb.

Task-number: QTBUG-58019
Change-Id: I698a2a51891a4e7af75836c075888f70df865409
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-10 12:44:21 +00:00
Oswald Buddenhagen
696c3f9af8 complain about various invalid configuration attempts
Task-number: QTBUG-56049
Change-Id: Id5eeb014c2b88195d2d14566a62dcb9185206b37
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-01-06 20:10:10 +00:00
Oswald Buddenhagen
7af6e9bbe6 print help from all modules in top-level builds
this is rather hacky. a proper solution would auto-generate help from
the command line argument definitions, at the cost of needing to
bootstrap qmake first.

Change-Id: Iada6e25d5b31d7db0595309887f2d13295bbc1e3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-12-30 10:25:47 +00:00
Oswald Buddenhagen
8f49da6c18 ... and so configureapp.exe disappeareth
Change-Id: I3fd9f2b0d4cf05a625484fce21532da8563cd62c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-12-23 13:45:59 +00:00
Oswald Buddenhagen
5a4d469dcb rename configure.exe => configureapp.exe
now that the bat file is responsible for displaying the help in addition
to bootstrapping configure, the exe file should not shadow it any more.

amends c027cffbe.

Change-Id: I5c8a52f59ff455575e646fae55cd214db98a3736
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-04 08:25:08 +00:00
Oswald Buddenhagen
85a36111bb don't rely on configure.exe being in source packages any more
now that configure.bat takes care of printing the help screen itself,
there is no compelling reason to ship configure.exe in the source
packages any more. consequently, always bootstrap it.

Change-Id: I5bf0946549e3c426c1a4a94b1c22f6c0f4b4993c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-26 14:22:51 +00:00
Oswald Buddenhagen
c027cffbef make the windows configure also use config_help.txt
specifically, make configure.bat dump the text file (which got some
windows-specific adjustments).

incidentally, this change removes the need for including a pre-built
configure.exe into our source packages.

Change-Id: Ib3515c113f3602767554fe1493df226551a7bf10
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-18 17:10:39 +00:00
Thiago Macieira
8e4c8be0b9 Don't compile configure.exe with clang-cl.exe if cl.exe is available
Sometimes clang-cl.exe is on PATH and would get picked up by the
build. That is often by mistake, but it will inreasingly happen
as clang-cl becomes more popular. Unfortunately, configure.bat is
too early to detect which MSVC version it's set to compile
against, so the -fms-compatibility-version option will often be
wrong. One such case is when trying to build for MSVC
2013. Microsoft headers for VS2013 are unsuitable for our use in
Qt with clang-cl.

Instead, use cl.exe. It's a much better-known quantity and is
always on PATH if trying to build with clang-cl, as the latter
needs the former to fall back to if necessary.

This does not affect the build of Qt libraries and tools.

Task-number: QTBUG-51534
Change-Id: I149e0540c00745fe8119fffd146287662436c4b9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-21 00:16:04 +00:00
Thiago Macieira
fdb956a3ed Ensure that configure.exe is built in C++11 mode with ICC
I changed qmake with commit f5eeadb9, but that change was apparently
incomplete.

Change-Id: Ib57b52598e2f452985e9fffd1458b02579f33c5d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-17 16:28:11 +00:00
Andreas Holzammer
7e85e7ced7 Add initial clang-cl support to Qt
This adds the functionality to build Qt with clang under Windows against
the Microsoft Visual Studio 2015 runtime.

In order to replicate this, a Clang 3.8 build with Visual Studio 2015
Update 1 is needed.

Adds compiler detection to Qt to distinguish correctly the clang compiler
and Windows with Visual Studio.

Clang has some built-in numeric functions, there is no need to use the
Microsoft versions, which also conflict here.

Task-number: QTBUG-50804
Change-Id: Ia4b267a298310ac7d73edf473b12792991249d8a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-02-11 12:54:06 +00:00
Thiago Macieira
cfe891eeb8 Add Intel copyright to files that Intel has had non-trivial contribution
I wrote a script to help find the files, but I reviewed the
contributions manually to be sure I wasn't claiming copyright for search
& replace, adding Q_DECL_NOTHROW or adding "We mean it" headers.

Change-Id: I7a9e11d7b64a4cc78e24ffff142b506368fc8842
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-21 22:44:21 +00:00
Jani Heikkinen
f776595cc1 Updated license headers
From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some
exceptions, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one
(in those files which will be under GPL 3 with exceptions)

Change-Id: I42a473ddc97101492a60b9287d90979d9eb35ae1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-21 18:55:18 +00:00
Thiago Macieira
2d2cb6434f Move the official Qt version from qglobal.h to .qmake.conf
It's easier to parse than qglobal.h. The objective is actually to have
macros with parts of the version number, so the major or minor numbers
could be used in other preprocessor macros.

Change-Id: I42e7ef1a481840699a8dffff1404eda1dd5c308d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-10-14 20:12:57 +00:00
Thiago Macieira
9072edb5f7 Use jom instead of nmake to compile configure.exe
Change-Id: Ib463f09c2031e41515a7e3b1f9d1961712915413
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-07-21 22:50:30 +00:00
Thiago Macieira
0d9db5821c configure.bat: Search for icl.exe before cl.exe
The Intel compiler's compilervars.bat also puts the MSVC compiler in
PATH, so cl.exe was always being found first.

Change-Id: I72e524da10fb0e221c4530a3e5c1a4a347c3f878
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-07-17 00:52:57 +00:00
Oswald Buddenhagen
b6f0060f60 support spaces in build and install dirs
spaces in the source dir are not supported for now, as that requires
some more profound refactoring of the bootstrap makefiles.

Change-Id: Ie0c07a1558b8326f642f2ea144bc1cd85ee761af
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-17 18:28:00 +00:00
Jani Heikkinen
83a5694dc2 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Outdated header.LGPL removed (use header.LGPL21 instead)

Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)

Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination

Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
2015-02-11 06:49:51 +00:00
Oswald Buddenhagen
b8ed5d3c6f remove some redundant backslashes
%QTSRC% always contains a trailing backslash.

Change-Id: I96772c18f45655f8dbe386f9351d0823fa70f1d0
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-04 16:33:40 +00:00
Matti Paaso
974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00
Oswald Buddenhagen
6b38524bba get rid of syncqt wrapper scripts
instead, rename it to syncqt.pl and rely on qtPrepareTool()'s new
ability to correctly invoke it as a perl script even under windows.
the wrappers themselves have been trivial at this point, so there is no
added value in keeping them, either.

Change-Id: I77cf65edbcfaa48ed1900defe940d4eb4b82d5b9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-05-13 21:54:48 +02:00
Sergio Ahumada
48e0c4df23 Update copyright year in Digia's license headers
Change-Id: Ic804938fc352291d011800d21e549c10acac66fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-18 09:07:35 +01:00
Iikka Eklund
be15856f61 Change copyrights from Nokia to Digia
Change copyrights and license headers from Nokia to Digia

Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2012-09-22 19:20:11 +02:00
Oswald Buddenhagen
38832db576 don't skip the configure.exe build even when it already exists
the build steps are now fast enough to make no-op rebuilds no problem.

Change-Id: I1018735bf50f3e7a66e22637237f26f98a3baf1d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-21 02:44:22 +02:00
Oswald Buddenhagen
c089f5e440 don't skip the syncqt call even when include/ exists
the syncqt run is now fast enough

Change-Id: Ie95a617fe99791ed38d02fe41578a0136fb68ddc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-21 02:44:22 +02:00
Oswald Buddenhagen
eff0349102 don't require a fake qconfig.h for the configure bootstrap
Change-Id: I3d1224ad19b9e5278e35cf7c5142a29ccb589140
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-19 19:54:44 +02:00
Oswald Buddenhagen
f104640fa5 syncqt only the QtCore headers for the bootstrap
Change-Id: I26e19805823bfe987c721f6a274803e54f0e4003
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-19 19:54:44 +02:00
Oswald Buddenhagen
8d97eb298d introduce -minimal mode to syncqt and use it for bootstrapping
the bootstrap does not need CamelCase includes, deprecated headers and
whatnot, so just don't do it. the full thing will be run on qtbase by
qmake.

Change-Id: Idffdd4750a73574c8c32ee75d00080abfe37e03c
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-11 17:23:27 +02:00
Oswald Buddenhagen
fe0ff5d689 bypass configure bootstrap for non-git builds
Change-Id: Ifa56297db0c5f198080a728f033393ab60eb1b74
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-05 03:03:14 +02:00