Commit Graph

326 Commits

Author SHA1 Message Date
Tor Arne Vestbø
c760d2dbfd Rewrite qmake's exclusive-build feature
We used to compute the default exclusive build directory, eg 'debug', at
configure time, and then set OBJECTS_DIR, MOC_DIR, etc to include this
hard-coded default exclusive build directory. We then had to run a post-
process step where we replaced the 'debug' part with the current actual
exclusive build pass, eg 'release', resulting in long-standing bugs such
as QTBUG-491 where we end up replacing parts of the build output dirs
that were not part of the original exclusive build directory.

We now set the OBJECTS_DIR, MOC_DIR, etc defaults in configure like
before, but they do not include any exclusive-build information. The
exclusive build directory is handled as a separate step in default_post
where we adjust all entries in QMAKE_DIR_REPLACE to be exclusive
directories.

For backwards compatibility the new exclusive build behavior is only
enabled for variables named by QMAKE_DIR_REPLACE_SANE, which for Qt
itself applies globally to everything but DESTDIR, and for libs and
tools also applies to DESTDIR. The reason for leaving out DESTDIR in
the general case is because many tests and examples assume the old
behavior for DESTDIR. A side effect of including all the other
variables for Qt libs and tools is that the PCH output dir will be
uniformly set, which has been an issue on Windows in the past.

The addExclusiveBuilds function now takes two or more arguments,
each argument being the key for an exclusive build, which can be
customized eg. using $$key.{name,target,dir_affix}. Passing more
than two arguments results in three/four/etc-way exclusive builds,
eg debug/release/profile. Exclusive builds can also be combined, eg
static/shared + debug/release by making two calls to the function.

We also handle individual targets of combined exclusive builds,
eg static/shared + debug/release, meaning it is possible to run
'make debug' to build both static-debug and shared-debug.

Task-number: QTBUG-491
Change-Id: I02841dbbd065ac07d413dfb45cfcfe4c013674ac
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-10-25 20:50:51 +02:00
Kai Koehne
c584f3d9a8 Fix check for ICU on MinGW
Newer ICU versions do not generate a .lib file any more ...
Also the check doesn't take e.g. static debug builds into account.
Instead of trying to enumerate all possible variations, just rely on the
header check. That's what we're doing for the other libs, too.

Change-Id: Idc0527f0e8ad90f298337d4ab635c7aa6a35c351
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-10-24 20:20:59 +02:00
Matt Hoosier
163bbeb218 Detect pointer size at configure-time on Windows-hosted builds
The configure-time procedure used on Windows does not currently
perform the same tests to determine the width of a pointer as are
performed on Unix-based builds.

This causes QT_POINTER_SIZE to be undefined in the generated
qconfig.h file. This in turn breaks compilation of various Qt modules
such as QtDeclarative.

This patch adds the same level of support for automatically
determining the target platform's pointer size, as is currently
offered to Unix users.

Change-Id: I93838c1759b14089ba9f4daf442048fb5c8da738
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-10-22 12:15:57 +02:00
Eskil Abrahamsen Blomfeldt
50dd0232b6 Android: Default to toolchain version 4.8 on Windows as well
The default has already been changed in the configure shell script,
but configure.exe needs the same change to be compatible with the
current NDK (which no longer contains the 4.7 toolchain)

Change-Id: Icd6474c3c9b9bbefbba5a1273a466c7ff099b7e0
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-07 22:54:14 +02:00
Eskil Abrahamsen Blomfeldt
ab90eefcc0 Disable JavaScriptCore JIT for Android when building on Windows
On Linux, we will do a configure test to determine whether JIT should
be turned off when compiling JavaScriptCore in the QtScript module,
but this test is never run on Windows. The result was that JIT was
disabled on Linux and enabled on Windows, and compilation broke on
Windows.

Task-number: QTBUG-33780
Change-Id: I37991c6da98b35330c07c54f2a0b143d20780c91
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-04 14:37:22 +02:00
Mitch Curtis
a1a00fc862 Fix configure warnings on Windows 7 with MSVC2010.
Change-Id: I5c4e27d6437cdf7b0dfd17df812d4506d1be4fb9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-09-25 13:39:14 +02:00
Oliver Wolff
f6f1f44e71 Disable sqlite for Windows Phone 8 builds
sqlite cannot be supported as Windows phone is
missing the needed memory mapping functionality.

Change-Id: I20e89292b9c7802c7402e8095854b72a9f21e614
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2013-09-15 18:18:46 +02:00
Oliver Wolff
6afbb46264 build system support for WinRT
Done-With: Andrew Knight
Done-With: Oswald Buddenhagen

Change-Id: Ief4e921072a03229bb342480a85024a1fc09fa56
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-09-14 09:51:14 +02:00
Sergio Ahumada
f7837e28b5 Merge branch 'stable' into dev
Conflicts:
	src/concurrent/qtconcurrentmedian.h
	src/corelib/itemmodels/qabstractitemmodel.cpp

Change-Id: Iac46a90bbb2958cef7670031a4b59c3becd8538a
2013-09-13 18:04:17 +02:00
Joerg Bornemann
fa7f446f8f fix configure -commercial
Commit 0aad3fc742 broke
"configure -commercial". The license check needs to know where Qt's
source directory is.

Change-Id: I5e53135b6b628eb5e413b2c2b3b8721dae02b503
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
Reviewed-by: Kalle Viironen <kalle.viironen@digia.com>
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2013-09-11 15:52:51 +02:00
Konstantin Ritt
3aa163491c Add configure options for [experimental] HarfBuzz-NG support
Change-Id: I15f49b56f49ae53c16db904e03f668c3135edaa5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-08-27 18:05:08 +02:00
Konstantin Ritt
c88f1492c6 Fix help output for freetype and PCRE in windows configure app
Change-Id: I686a63a02a5544736c84bcdbe274275acabfbc3d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-08-27 18:05:03 +02:00
Konstantin Ritt
9e0cccde0a Refactor line breaks in windows configure app
As a side effect, this fixes wrong line break in "Third Party Libraries" section.

Change-Id: Ie6510fa94626a1c586621948a4681efdcf61f8b2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-08-27 18:05:00 +02:00
Frederik Gladhorn
c8ca300e49 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	qmake/doc/src/qmake-manual.qdoc
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/src.pro

Change-Id: I0a560826c420e46988da3776bd8f9160c365459a
2013-08-21 11:03:18 +02:00
Sergio Ahumada
1696f45d92 configure: Remove v8snapshot vestiges
Change-Id: I0a43320ca0ab7cc416b07396ebc795215d84fe10
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-08-20 23:00:34 +02:00
Bjoern Breitmeyer
32d4be8598 Integrate device-option into the windows configure
Windows configure does not have -device-option yet.
A hack for android already generated the
qdevice.pri. But it did this even if no android
was build, so merged the device-option with the
android generation of qdevice.pri. The qdevice.pri
is generated earlier in the configure steps than
before to match the linux configure and allow
to set device options before the config.tests
are run.

Change-Id: I753cf0d5eba1479792a685d6e1f5acb38b970893
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-08-15 18:02:42 +02:00
Oswald Buddenhagen
a6eb28d3f6 add configure -extprefix option
this adds the possibility to put the actual qt installation outside the
sysroot it is configured for. this makes it possible to install an
x-built qt without "polluting" the sysroot, which makes it possible to
have read-only sysroots, and multiple qt builds for one sysroot.

-prefix is the location within the sysroot as seen by the target itself,
and gets "burned" into QLibraryInfo in QtCore.
-extprefix is the location in the host file system and gets "burned"
into QLibraryInfo in qmake. if it is not specified, it defaults to the
sysrootified prefix, which is the previous behavior.

Task-number: QTBUG-26680
Change-Id: Ia43833c4e27733159afeb8c8b9b2d981378d0cd1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-08-15 18:02:42 +02:00
Thiago Macieira
a8467780fb Don't compile qcryptographichash into configure.exe
It doesn't need it.

Change-Id: I74a8b382fa77ba5bcdabd5b901742bec645ff0c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-08-15 01:30:54 +02:00
Frederik Gladhorn
5c23199d4e Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	configure
	mkspecs/macx-xcode/Info.plist.app
	mkspecs/macx-xcode/Info.plist.lib
	qmake/doc/qmake.qdocconf
	src/corelib/global/qglobal.h
	tests/auto/other/exceptionsafety/exceptionsafety.pro
	tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp

Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
2013-08-14 09:06:31 +02:00
Oswald Buddenhagen
0aad3fc742 purge QT_{SOURCE,BUILD}_TREE from dictionary
both variables are available class-wide anyway.

Change-Id: I97c13de9ead44638e9310b62f02d8cd1c910df94
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-08-12 19:01:52 +02:00
Oswald Buddenhagen
ae95f28997 bye-bye .qmake.cache
well, not really - qt_parts.prf will still create one, but it will be
empty.

apart from being cleaner, this now finally makes it possible to load an
unconfigured qt source tree into qtcreator without random parts of the
tree being missing from the project explorer.

Change-Id: Ida7ee77ecb450af05bfa66106caf2067b02f1a7f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-08-12 19:01:45 +02:00
Wouter Huysentruit
4acff670c5 Configure: add -no-wmf-backend option
This option is required to build qtmultimedia without
Windows Media Foundation backend. In this case,
a full DirectShow backend will be build instead.

Change-Id: Ib29ba81ca6cbb00b609cc97fab7da29e61d31d6d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-07-25 07:59:40 +02:00
Sergio Ahumada
509ed01c85 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2013-07-24 15:09:38 +02:00
Oswald Buddenhagen
d24b4a5548 set QT_TARGET_ARCH when building for the host
the built host tool may need to know what the target architecture is,
e.g. mkv8snapshot does.

Change-Id: Ie5b1f6a07fa082d212e7c5b54289de49fd74dbcf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-23 16:30:06 +02:00
Frederik Gladhorn
084c5b3db7 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp

Change-Id: I18a9d83fc14f4a9afdb1e40523ec51e3fa1d7754
2013-07-23 11:18:11 +02:00
Oswald Buddenhagen
54987c6bf5 default to -compile-examples
because of popular confusion.
the packaging scripts now need to use -no-compile-examples explicitly.

Task-number: QTBUG-32449
Change-Id: Iecab1f345afe21e540204fe69a2292ef932cbb61
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-22 19:52:06 +02:00
Oswald Buddenhagen
922df2c233 don't change timestamp of unchanged files
Change-Id: Ifa5c15a37d072c6c8edb50f8a4343d99ee0dccf9
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-15 19:45:49 +02:00
Oswald Buddenhagen
ca645afdc4 de-duplicate writeout of config files
Change-Id: Iaad06f170cf2be3d3fca533a735b69316347ed5b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-15 19:45:49 +02:00
Oswald Buddenhagen
8a245c9fc2 prune unused filesDiffer() and writeToFile() functions
Change-Id: I470a5b3514260a02e73389d057d89c64b08e05d0
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-15 19:45:49 +02:00
Sergio Ahumada
3ef6cf060e Merge branch 'stable' into dev
Conflicts:
	qmake/generators/mac/pbuilder_pbx.cpp
	src/corelib/json/qjsonwriter.cpp
	src/corelib/kernel/qeventdispatcher_blackberry.cpp
	src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm

Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
2013-07-11 16:42:01 +02:00
Joerg Bornemann
f1cdd4b297 add support for Visual Studio 2013
Add mkspec win32-msvc2013 and make VS 2013 known to configure and
qmake.

Change-Id: I6e63a4d679727a8a3f068f377956185996d72bce
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-04 12:54:58 +02:00
Matt Fischer
5782fc2fa4 Disable xkbcommon when building for QNX from Windows
A previous commit (7582bb5) added a line to disable xkbcommon
when building for Android.  A similar line needs to be added to
handle QNX builds.

Change-Id: I34e91d989567b17e7e21b87d9c377360e4e56f68
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2013-07-02 18:39:37 +02:00
Frederik Gladhorn
572200989b Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	configure
	mkspecs/features/create_cmake.prf

Change-Id: I94aea83b83833395d5db399209e0e51b92ef23b5
2013-06-27 13:06:38 +02:00
Oswald Buddenhagen
e9d539623a introduce "secret" configure -top-level option
shifts the makefile generation one directory level up.
this allows the top-level configure to leave the makefile creation
entirely to the qtbase configure.
this is not very clean modularization-wise, but consistent with -skip.

Change-Id: I7ee2d2f29f2e6619d61fe9b55faa0bacdf3c44c1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-26 05:53:41 +02:00
Oswald Buddenhagen
fb6d46131f remove pointless qmake -o argument
it's already done by the working directory.
the unix configure already did it that way.

Change-Id: Ia88d0877a2e24bc40a7083c2164982dec47f913b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-26 05:53:09 +02:00
Oswald Buddenhagen
cb37a0ef5c simplify qmake call
the directory is sufficient nowadays.
the unix configure already did it that way.

Change-Id: I887e5ad594aef1f7bf5f4f92a6bdf0a13e4d0372
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-26 05:52:41 +02:00
Oswald Buddenhagen
9f681e7a50 remove pointless variables
Change-Id: Ia4cd2292bdea49c198ee1429ab4d3f87697c3ed1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-26 05:52:17 +02:00
Frederik Gladhorn
6213b81457 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
	src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp
	tools/configure/configureapp.cpp

Change-Id: I3092bd3276af14304b7ab3ae1e1cc05d11cdede0
2013-06-20 16:45:12 +02:00
Oswald Buddenhagen
1aaeb9538b complain about bad arguments to -make/-nomake
Task-number: QTBUG-5366
Change-Id: I461a6c85fcee4a0216571d294171652b05ee6a34
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-19 20:01:45 +02:00
Oswald Buddenhagen
65b749f5ea don't try to not build non-existing parts
Change-Id: I20896f15f7ab91aac8a9b6977fd3a253bc0e187d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-17 15:43:16 +02:00
Frederik Gladhorn
9b102e953f Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2013-06-13 10:05:49 +02:00
Frederik Gladhorn
e2776b44a0 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/plugins/platforms/cocoa/qcocoamenubar.mm

Change-Id: I4a699fc8a7f30b2af9de8e496c3d5f027b7495bb
2013-06-12 19:17:07 +02:00
Oswald Buddenhagen
23d8a7fb23 don't copy/symlink doc/global to build dir
instead, use the files directly from the source dir.

Change-Id: I03b728c66de6e03cade6dc153dcc78cea8e3f606
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-12 16:27:28 +02:00
Oswald Buddenhagen
0d463c05fc don't copy mkspecs to build directory
instead, teach qmake to use the mkspecs dir from the source dir as well.

Change-Id: I9edac11f8997fcb0594d0a67419d4733dd4ed86b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-12 16:27:24 +02:00
Oswald Buddenhagen
e2765098db don't claim that we need perl for shadow builds any more
amends 0a1b89bff, which took care only of the unix version.

Change-Id: Idb82881a9c47e67c973500721fd499bcf41a848b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-12 10:10:41 +02:00
Frederik Gladhorn
80604a0786 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/corelib/global/qglobal.h
	src/plugins/platforms/cocoa/qnsview.mm

Change-Id: I6fe345df5c417cb7a55a3f91285d9b47a22c04fa
2013-06-04 19:34:36 +02:00
Oswald Buddenhagen
9a9abf8a8a Only process vcproj files if we do a -fully-process
A top-level vcproj (really a .sln file) only makes sense when sub-
projects are generated too, since the solutions generator will ignore
all non-generated projects.

Originally-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
Change-Id: Iff09279d5760b5114a4cfb9b58ad677f2f69fa58
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-03 17:59:53 +02:00
Oswald Buddenhagen
0a1b89bff5 run syncqt only for builds from git
the logic in the configures was even trying to express that, only that
nowadays we always ship syncqt, so the tests were kinda pointless.

this frees us from the perl dependency for non-developer builds of
packaged modules (except for webkit, which needs almost every scripting
language on earth anyway).

obviously, this requires that the packaging scripts run syncqt in the
source dir before tarring up the sources. note that for repositories
other than qtbase, the -version argument needs to be passed to syncqt.

Task-number: QTBUG-29465
Change-Id: Ic929ab17a5de4b30fbf48b3aa9bfa3b4d2ef37d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-03 17:59:47 +02:00
Oswald Buddenhagen
8d69232b28 let configure create the forwarding qconfig.h again
this avoids that syncqt needs to forward to a yet unexisting file (which
will have a yet unknown location, when syncqt is run at packaging time
already).

the %inject_headers syncqt config variable remains, so it can be told
not to purge "foreign" files.

Change-Id: I127ff6e0b7d5702fb0acaee9a5b7940b482d3608
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-03 17:59:31 +02:00
Oswald Buddenhagen
8ea19caacf add -compile-examples configure option
this overrides the magic that makes examples only install their sources
in production builds.

packagers may want to force the build of the examples, so they can
package them up for demo purposes.
this is actually why we formerly had the split between demos and
examples ...

Task-number: QTBUG-30788
Change-Id: I5633f69404c5aa6846f5496e8f161a273a7a7da3
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-05-26 10:09:58 +02:00