qt5base-lts/mkspecs
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
..
aix-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
aix-g++-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
aix-xlc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
aix-xlc-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
android-g++ Clean up support library linkage on Android 2013-10-15 20:17:50 +02:00
blackberry-armle-v7-qcc Rename BlackBerry arm mkspecs to be aligned with NDK structure 2013-10-23 19:09:54 +02:00
blackberry-armv7le-qcc Rename BlackBerry arm mkspecs to be aligned with NDK structure 2013-10-23 19:09:54 +02:00
blackberry-x86-qcc BlackBerry mkspecs: optimize linker flags 2012-11-26 15:11:59 +01:00
common make sure that installed meta files are always postprocessed 2013-10-11 21:04:04 +02:00
cygwin-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
darwin-g++ Add osx and darwin scopes to qmake. 2013-07-11 18:26:45 +02:00
devices Rename BlackBerry arm mkspecs to be aligned with NDK structure 2013-10-23 19:09:54 +02:00
features Rewrite qmake's exclusive-build feature 2013-10-25 20:50:51 +02:00
freebsd-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
freebsd-g++46 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
freebsd-icc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpux-acc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpux-acc-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpux-acc-o64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpux-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpux-g++-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpuxi-acc-32 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpuxi-acc-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hpuxi-g++-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
hurd-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
irix-cc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
irix-cc-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
irix-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
irix-g++-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
linux-arm-gnueabi-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
linux-clang Update copyright year in Digia's license headers 2013-01-18 09:07:35 +01:00
linux-cxx Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-g++ Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-g++-32 Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-g++-64 Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-g++-maemo Update copyright year in Digia's license headers 2013-01-18 09:07:35 +01:00
linux-icc Add support for disabling exceptions with ICC 2013-10-17 09:50:58 +02:00
linux-icc-32 Update copyright year in Digia's license headers 2013-01-18 09:07:35 +01:00
linux-icc-64 Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-kcc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
linux-llvm Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-lsb-g++ Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
linux-pgcc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
lynxos-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
macx-clang Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-clang-32 Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-g++ Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-g++40 Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-g++42 Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-g++-32 Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-icc Add Info.plist templates for the macx-icc makespec 2013-08-05 17:11:15 +02:00
macx-ios-clang qmake: Expose qmake arguments as QMAKE_ARGS 2013-10-24 20:20:59 +02:00
macx-llvm Update Info.plist templates to use the current standard plist format. 2013-08-02 05:42:37 +02:00
macx-xcode macx-xcode: Change wrapper to write to QMAKESPEC to change mkspec 2013-10-14 12:07:53 +02:00
modules update readme to current reality 2012-01-27 13:55:27 +01:00
netbsd-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
openbsd-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
qnx-armv7le-qcc Change copyrights from Nokia to Digia 2012-09-22 19:20:11 +02:00
qnx-x86-qcc Change copyrights from Nokia to Digia 2012-09-22 19:20:11 +02:00
sco-cc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
sco-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
solaris-cc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
solaris-cc-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
solaris-cc-64-stlport Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
solaris-cc-stlport Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
solaris-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
solaris-g++-64 Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
tru64-cxx Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
tru64-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
unixware-cc Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
unixware-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
unsupported Fix device-specific eglfs hooks to provide createNativeWindow correctly 2013-09-26 18:45:16 +02:00
win32-g++ Add QMAKE_NM to the mkspecs 2013-06-10 16:46:06 +02:00
win32-icc Replace win32-icc/qplatformdefs.h with the MSVC one 2013-06-26 12:37:53 +02:00
win32-msvc2005 qmake/vcxproj: add WIN64 macro for x86_46 builds 2013-05-07 15:02:59 +02:00
win32-msvc2008 qmake/vcxproj: add WIN64 macro for x86_46 builds 2013-05-07 15:02:59 +02:00
win32-msvc2010 qmake/vcxproj: add WIN64 macro for x86_46 builds 2013-05-07 15:02:59 +02:00
win32-msvc2012 set QMAKE_PLATFORM in win32-msvc2012 2013-05-07 15:03:03 +02:00
win32-msvc2013 win32-msvc2013: force synchronous writes to .pdb files 2013-10-25 12:29:43 +02:00
wince60standard-armv4i-msvc2005 Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
wince60standard-x86-msvc2005 Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
wince70embedded-armv4i-msvc2008 Remove not supported mkspecs for Windows CE. 2013-08-15 11:37:27 +02:00
wince70embedded-x86-msvc2008 Remove not supported mkspecs for Windows CE. 2013-08-15 11:37:27 +02:00
winphone-arm-msvc2012 build system support for WinRT 2013-09-14 09:51:14 +02:00
winphone-x86-msvc2012 build system support for WinRT 2013-09-14 09:51:14 +02:00
winrt-arm-msvc2012 build system support for WinRT 2013-09-14 09:51:14 +02:00
winrt-x64-msvc2012 build system support for WinRT 2013-09-14 09:51:14 +02:00
winrt-x86-msvc2012 build system support for WinRT 2013-09-14 09:51:14 +02:00