summaryrefslogtreecommitdiffstats
path: root/qmake/generators/unix
Commit message (Collapse)AuthorAgeFilesLines
* qmake: Apply modernize-use-nullptrAlessandro Portale2018-08-082-2/+2
| | | | | | | Use nullptr instead of 0. Change-Id: Ib3120b9c424a274a2d4dd4c42ec5d7cd5bdead65 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: Apply modernize-use-overrideAlessandro Portale2018-08-081-12/+12
| | | | | | | Add overrides to functions, except for destructors. Change-Id: I6e4640aa95a5c97d6bd6f6d8692d3290c421344e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-07-171-7/+7
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbintegration.cpp Conflicts git missed: src/plugins/platforms/qnx/qqnxglcontext.cpp Change-Id: I0582cdc9e66e43efe79038b9c43d4f9572ac88fc
| * qmake: make sure 'move' commands to DESTDIR are valid on mingwOswald Buddenhagen2018-07-091-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | the code ensures that the path ends with a path separator, which is unhealthy under mingw when the command ends with that path, because it's interpreted as a line continuation. the easiest fix is just duplicating the name of the moved file to the destination side. the cleaner fix would have been cleaning up the path separator mess, but that's a more invasive change and doesn't seem worth it. Task-number: QTBUG-69255 Change-Id: I338f8997b84ed7049b5665872dd25f90b9d4d16a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | qmake: get rid of (some) makefile expansions in dependency pathsOswald Buddenhagen2018-07-161-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the variables are quoted correctly for commands, which is incompatible with quoting for dependencies under mingw. so insert the paths as literals, where we can control quoting. this fixes building in directories with spaces, which i broke in 7c34e0a7b by using different quoting styles for deps and commands in the first place. this breaks the hypothetical use case where somebody wants to override TARGET or DESTDIR (or DESTDIR_TARGET under windows) on the *make* command line. not sure why anyone would do that - just do it at the *qmake* level. we did not get rid of OBJECTS, because that would cause significant duplication in the makefile (not that it would matter too much, given the dependency lists ...). this isn't a problem, because these are short relative paths which are not expected to contain "funny" characters. an alternative would have been to change the variables' quoting and eliminate them from the commands instead, but that would be backwards-incompatible, because commands are "user-servicable". for the same reason, we cannot get rid of the variables entirely. Change-Id: Ic7592c7fc67d8b7d2b64de80808365cd1c3f79d0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | qmake: slightly optimize processPrlFile() callsOswald Buddenhagen2018-07-161-6/+6
|/ | | | | | | | | add a parameter that indicates whether the passed filename can be only the basename of a prl file. if so, we can skip the other attempts at interpreting the file name. that's not only faster, but also clearer. Change-Id: I6f6da3f4485216021282a08acaefb53e60e7242a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: use consistent path separators in makefile dependenciesOswald Buddenhagen2018-06-121-2/+2
| | | | | | | Task-number: QTBUG-65072 Change-Id: I3456d9b2cdfa9c65be5933f592abb640f81c39f2 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Fix prl lookup for suffixed frameworks on Apple platformsTor Arne Vestbø2018-04-221-2/+16
| | | | | | | We need to take into account the presence of a possible ',_debug' suffix. Change-Id: I5655394b78723bbc6cc32e56849acc2366d288e2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: fix QMAKE_BUNDLE_DATA for (some) generated filesOswald Buddenhagen2018-04-121-1/+3
| | | | | | | | | | | | | the source file must not be written with an absolute path to the makefile, as this won't match the name of the target which generates it, thus leading to an unsatisfied dependency. this is the proper fix for QTBUG-60413 and a bunch of others. amends historical f173e217cd. Change-Id: I28140351c4b4759de35e60daf63bc54b82d104ec Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-071-1/+15
|\ | | | | | | | | | | | | Conflicts: tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp Change-Id: Ib6dd965a7eb6f59103e276b3407739147ecd37b2
| * qmake: replace invalid characters in generated bundle identifiersJake Petroules2018-01-051-1/+15
| | | | | | | | | | | | | | | | This problem does not affect the Xcode generator. Task-number: QTBUG-65477 Change-Id: I6194edc5b679edad9ae1a25e35b71e5df9bd4c95 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Rewrite the Info.plist variable replacement handlingJake Petroules2018-01-061-13/+35
|/ | | | | | | | | | This ensures that the same set of variables can be successfully replaced in both the Makefile and Xcode generators. It also switches the default templates to use the Xcode-style ${var} syntax instead of the @var@ syntax for better Info.plist compatibility across generators. Change-Id: Iff330bafd152773aafac9143c4a34e34f92f0ce6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* make mkspecs not mess up -rpath-linkOswald Buddenhagen2017-05-311-0/+2
| | | | | | | | | | | | | | | adding shared install paths via QMAKE_LFLAGS in the spec has the tiny side effect that they are searched _first_, which is generally a really bad idea - they should be _last_. for that purpose, introduce QMAKE_RPATHLINKDIR_POST, and migrate all specs to use it. QMAKE_RPATHDIR_POST is added for consistency, but not actually used. Task-number: QTBUG-59457 Change-Id: Iac6cda5e9111ef8cca454a69861fe8408bb40589 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* make mkspecs not mess up library and include search pathsOswald Buddenhagen2017-05-311-0/+2
| | | | | | | | | | | | | | adding shared install paths to QMAKE_{INCDIR,LIBDIR} in the spec has the tiny side effect that they are searched _first_, which is generally a really bad idea - they should be _last_. for that purpose, make QMAKE_{INCDIR,LIBDIR}_POST live up to their names (i.e., search them actually last) and migrate all affected specs to use them. Task-number: QTBUG-40825 Change-Id: Ie0de81c3cc49e193186d2fedd7d6c77590c8ef79 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Simplify built-in qmake install commandSimon Hausmann2017-05-041-4/+4
| | | | | | | | As the directory installation command also works with files as a source we can unify the external commands, resulting in simpler command lines. Change-Id: I65013626eedbdb3ce1c77ed230d46edd1603b986 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Preserve last modification timestamps of installed directoriesSimon Hausmann2017-05-021-2/+2
| | | | | | | | | Similar to the two parent commits, this patchs preserves the time stamps of files we install as a result of recursive directory copying. Change-Id: Id5931a467196d5cd67acfa0deffc2488af8a3669 Task-number: QTBUG-59004 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix precompiled headers on Apple platforms, with multiple architecturesJake Petroules2017-04-142-36/+58
| | | | | | | | | | The original commit only added support for GCC and Clang, but not ICC. Amends 73331eeb Change-Id: Id7638cf1b538edb1008fb3aa10754c1f517a994f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Preserve last modification timestamps of installed program filesSimon Hausmann2017-04-131-1/+1
| | | | | | | | | | Similar to the parent commit, this patch adds a unified code path in qmake itself for installing program files while preserving their original last modification timestamp. Change-Id: I7b7dcfa6228c2bfd48ea6036549398bb6f90032f Task-number: QTBUG-59004 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Preserve last modification timestamps of installed filesSimon Hausmann2017-04-121-2/+2
| | | | | | | | | | | On non-windows platforms, we use the "-p" parameter of install(1) to preserve the last modification timestamps of files. On Windows the use of copy does not preserve them. As a cross-platform solution, this patch introduces a simple built-in install command in qmake to copy files. Task-number: QTBUG-59004 Change-Id: I3064d29a2b8c7b009a1efbf8f00b84c079ea5417 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Merge remote-tracking branch 'origin/5.8' into devLiang Qi2017-01-251-3/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf mkspecs/common/msvc-desktop.conf mkspecs/common/msvc-version.conf mkspecs/common/winrt_winphone/qmake.conf mkspecs/features/mac/default_post.prf mkspecs/features/mac/sdk.prf mkspecs/features/qt.prf mkspecs/features/uikit/default_post.prf mkspecs/features/winrt/default_pre.prf mkspecs/winphone-arm-msvc2013/qmake.conf mkspecs/winphone-x86-msvc2013/qmake.conf mkspecs/winrt-arm-msvc2013/qmake.conf mkspecs/winrt-x64-msvc2013/qmake.conf mkspecs/winrt-x86-msvc2013/qmake.conf qmake/generators/win32/msvc_vcproj.cpp src/gui/kernel/qwindowsysteminterface.cpp src/network/kernel/qhostaddress.cpp src/plugins/platforms/mirclient/qmirclientplugin.cpp src/plugins/platforms/mirclient/qmirclientplugin.h src/widgets/util/qsystemtrayicon.cpp tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp tools/configure/Makefile.mingw tools/configure/Makefile.win32 Done-with: Jake Petroules <jake.petroules@qt.io> Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Change-Id: I4be3262d3994e11929d3b1ded2c3379783797dbe
| * Support QMAKE_PRE_LINK and QMAKE_POST_LINK for static libs on unixOrgad Shaneh2017-01-201-2/+10
| | | | | | | | | | | | | | | | | | | | | | prelink was not supported at all for ar. postlink was done for most cases, but missing in one particular ar invocation. Task-number: QTBUG-57276 Change-Id: Ic72c42a9502c97d7111b3f3941b387024d46a27d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * don't pass qmake configure arguments to sub-projectsOswald Buddenhagen2017-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | the arguments after '--' are by definition meant only for the top-level project, as that's where configure is invoked from. passing them to sub-projects just adds noise to the make output and misleads users. note that this specifically does not support qmake -r, which will break if the subprojects rely on the arguments being absent. this isn't a problem, because the qt build doesn't support qmake -r anyway. Change-Id: I7ecff6212ce3137526005fc324a4a7ae45e3345e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-09-152-18/+67
|\| | | | | | | | | | | | | | | | | Conflicts: configure.json mkspecs/macx-tvos-clang/qmake.conf mkspecs/macx-watchos-clang/qmake.conf Change-Id: Iaf32339ace59dff9ed344972472744c55d75025c
| * Enable precompiled headers on iOS, tvOS, watchOSJake Petroules2016-09-022-18/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The actual blocker for precompiled headers is not the iOS/tvOS/watchOS platforms, but the way qmake handled multiple-architecture builds on Apple platforms. This patch allows multi-arch builds to be performed while using precompiled headers. Since df91ef3d6c55692a0236f67b6c6b134a3bf84098 (April 2009), Clang has had support for PCH files in the driver, which allows to use the -include flag to automatically translate to -include-pch. We can then take advantage of the fact that the -include option is allowed to not be separate from its argument, which lets us take advantage of -Xarch to specify a per-architecture precompiled header file. This is done through some magic in the qmake Makefile generator which "multiplexes" the PCH creation rule across multiple architectures and replaces a series of tokens with the proper precompiled header paths and architecture flags at usage point. Change-Id: I76c8dc9cda7e218869c2919f023d9b04f311c6fd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-08-311-1/+1
|\| | | | | | | Change-Id: I843994939f126ced22f7fe978ec4403f599fc7c9
| * fix argument order in recursive qmake invocationsOswald Buddenhagen2016-08-251-1/+1
| | | | | | | | | | | | | | | | | | | | the inherited arguments may contain the '--' argument, which turns additional arguments into configure arguments. the simplest fix for that is injecting additional arguments at the front, not at the end. Change-Id: I7cc00a42f0148e5ccbbeda2ad59fa8c63749f02d Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | qmake: Use correct CFBundleExecutable in framework bundlesJake Petroules2016-08-261-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a bug where joined device and simulator builds would get for example, QtCore_iphonesimulator as the CFBundleExecutable. According to Apple: "For frameworks, the value of this key is REQUIRED to be the same as the framework name, minus the .framework extension." This does not affect the ability to load a framework whose executable name differs from the bundle name (as is the case for simulator builds), as the application will be linked to the correct framework executable at link time by specifying (for example) the linker flag: -framework QtCore,_iphonesimulator Change-Id: Ib7614670d0620e0235cd7e2606d42dd034a90c68 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | qmake: tighten up isFramework check so it doesn't match plugin bundlesJake Petroules2016-08-251-1/+3
| | | | | | | | | | | | | | | | | | | | Plugin bundles are not frameworks, so this fixes the case where a lib template with plugin and lib_bundle in the CONFIG would be mistaken for a framework bundle, which has a different filesystem layout and handling. Change-Id: I9ce9daf22d4e3de70bfe7bc8bb219068de0bca42 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | qmake: Add shallow bundle supportJake Petroules2016-08-252-35/+54
|/ | | | | | | | | | | | | | This is a prerequisite for properly constructed framework bundles. On certain Apple platforms (iOS, tvOS, watchOS), bundles are used in "shallow" format, meaning that the directory structures are flattened compared to the one used in macOS bundles. shallow_bundle allows the difference to be expressed independently of the platform. Note that the term "shallow bundle" is used by Apple in Xcode internals. Change-Id: I1189c52b0ea66843c313783176c11cc2af97ad25 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-06-211-2/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/global/qsysinfo.h src/corelib/kernel/qcoreapplication_win.cpp src/gui/text/qdistancefield.cpp src/gui/text/qdistancefield_p.h src/plugins/platforms/windows/qwindowsglcontext.cpp src/plugins/platforms/windows/qwindowsglcontext.h Change-Id: Ib3500acc2b28553bde06758cd9a2e19eb7fe2978
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-201-2/+5
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And blacklisted a few tests in tst_QUdpSocket. Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtNative.java src/corelib/global/qglobal.cpp src/corelib/global/qsystemdetection.h src/corelib/io/qfileselector.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp tests/auto/network/socket/qudpsocket/BLACKLIST Task-number: QTBUG-54205 Change-Id: I11dd1c90186eb1b847d45be87a26041f61d89ef6
| | * Fix an issue causing qmake to generate corrupt Makefiles.Jake Petroules2016-06-151-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This resolves an issue where qmake would generate a Makefile with an install command immediately followed by a test command, with no intermediary newline and tab to separate them. Task-number: QTBUG-54035 Change-Id: I7f9226f25e92b49ce689d252e9c4a58b877f2972 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | | add ProStringList::join(ProString) overload and make use of itOswald Buddenhagen2016-05-241-2/+3
|/ / | | | | | | | | | | | | | | this introduces an ambiguity, so some char* arguments need explicit QString construction now. Change-Id: Ic3919a1fa9419bbb3b57dd1aa7eb95643ee59e53 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-03-111-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change partially reverts 1bfc7f68 about QT_HAS_BUILTIN define and undef in src/corelib/tools/qsimd_p.h. This change is also squashed with "Fall back to c++11 standard compiler flag for host builds" which is done by Peter Seiderer. Conflicts: mkspecs/features/default_post.prf src/3rdparty/sqlite/0001-Fixing-the-SQLite3-build-for-WEC2013-again.patch src/3rdparty/sqlite/sqlite3.c src/corelib/tools/qsimd_p.h src/gui/kernel/qevent.cpp src/gui/kernel/qwindowsysteminterface.cpp src/gui/kernel/qwindowsysteminterface_p.h src/plugins/bearer/blackberry/blackberry.pro src/plugins/platforms/cocoa/qcocoasystemsettings.mm src/plugins/platformthemes/gtk2/gtk2.pro src/plugins/styles/bb10style/bb10style.pro src/sql/drivers/sqlite2/qsql_sqlite2.cpp tools/configure/configureapp.cpp Task-number: QTBUG-51644 Done-with: Peter Seiderer <ps.report@gmx.net> Change-Id: I6100d6ace31b2e8d41a95f0b5d5ebf8f1fd88b44
| * fix file separators in target.targets INSTALLSOswald Buddenhagen2016-03-101-1/+1
| | | | | | | | | | | | Task-number: QTBUG-51775 Change-Id: I8d9442bfd5084f1670b79dfdd422638bc62780aa Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-02-112-12/+12
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qfilesystemwatcher_win.cpp src/corelib/plugin/plugin.pri src/plugins/platforms/cocoa/qcocoaaccessibility.mm tests/auto/corelib/tools/qlocale/tst_qlocale.cpp Change-Id: Id6824631252609a75eff8b68792e4d10095c8fc1
| * qmake: use QString::replace() overloaded with QLatin1StringAnton Kudryavtsev2016-02-042-12/+12
| | | | | | | | | | | | | | | | | | instead of QStringLiteral, QString, const char*. Results: reduce .rodata, prevent re-creation of QString. Change-Id: Ie2e3089974c42e6733457bbe58521bccd1da3a53 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | qmake: eradicate Q_FOREACH loops [needing qAsConst()]Marc Mutz2016-01-282-3/+3
| | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. To avoid detaches of these mutable Qt containers, wrap the container in qAsConst(). Change-Id: If086bea06fe26232a7bb99fad8b09fce4dc74c27 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | qmake: eradicate Q_FOREACH loops [const-& returns]Marc Mutz2016-01-282-8/+8
| | | | | | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. The functions QMakeProject::values(), QMakeMetaInfo::values() and QHashIterator::value() all return by const-reference, so they can be passed to range-for without further changes. Change-Id: Ic3b39ed8ff8cd7a6f287f1aa9d61a1acd67d7aaa Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-262-1/+18
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java src/dbus/qdbusconnection_p.h src/dbus/qdbusintegrator.cpp src/dbus/qdbusintegrator_p.h tests/auto/corelib/io/qdir/qdir.pro tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp Change-Id: I3d3fd07aed015c74b1f545f1327aa73d5f365fcc
| * Work around MinGW-make's magic prefixing of paths.Frederik Gladhorn2016-01-212-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building QNX on MS-Windows, make magically adds the Msys root as prefix to variables whose values look like paths; this applies to both environment variables and variables given values on the command-line. When we don't actually want to install under the Msys root, this is unwelcome "help". So (for MinGW's make) support a magic prefix of our own, @msyshack@, that'll make a path value for INSTALL_ROOT not look like a path to make; we can then strip it off when we come to use it. Change-Id: I951ad3c8fe3e5cfb49e6e361d7fff779f3a9d716 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Add Intel copyright to files that Intel has had non-trivial contributionThiago Macieira2016-01-211-0/+1
| | | | | | | | | | | | | | | | | | 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>
* | Updated license headersJani Heikkinen2016-01-213-51/+36
|/ | | | | | | | | | | | | 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>
* support relative paths in QMAKE_RPATHDIROswald Buddenhagen2015-10-201-3/+16
| | | | | | | | | | | | | | | | ... and make use of it in qt.prf. [ChangeLog][qmake][Unix] Added support for relative paths in QMAKE_RPATHDIR. Note that this technically breaks backwards compatibility, as relative paths were previously silently resolved against $$_PRO_FILE_PWD_. This was not documented and seems rather useless, so i'm not worried. Change-Id: I855042a8962ab34ad4617899a5b9825af0087f8a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* fix the trailing-backslash-in-DESTDIR-on-mingw workaroundOswald Buddenhagen2015-10-141-5/+7
| | | | | | | | | | | | at least the mingw version we use now interprets the sequence \# as a literal hashmark, which completely defeats the previous hack. the new hack escapes the backslash with another backslash, which appears to work. however, make does *not* remove the additional backslash, so the result is a bit ugly. Change-Id: I591a2be443880b162094d04e5a5e624216b59311 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Stop generating implicit suffix rules in MakefilesTor Arne Vestbø2015-10-091-11/+0
| | | | | | | | | | | | Suffix rules are the old-fashioned way of defining implicit rules for make. We don't need them as we generate explicit rules for all sources we build. [ChangeLog][qmake] Makefile output no longer contains implicit suffix rules, as all sources are built using explicit rules. Change-Id: I4ecfa5b80c8ae33aea8730836f3baf99dd4951dd Task-number: QTBUG-30813 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Distinguish between Objective-C and Objective-C++ sourcesTor Arne Vestbø2015-10-092-102/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of lumping both Objective-C (.m) and Objective-C++ (.mm) sources into the same pile, passing them on to the same compiler as for C++ (CXX), with the C++ flags (CXXFLAGS), we follow Apple's lead and treat them as variants of the C and C++ languages separately, so that Objective-C sources are built with CC and with CFLAGS, and Objective-C++ sources with CXX, and CXXFLAGS. This lets us remove a lot of duplicated flags and definitions from the QMAKE_OBJECTIVE_CFLAGS variable, which in 99% of the cases just matched the C++ equivalent. The remaining Objective-C/C++ flags are added to CFLAGS/CXXFLAGS, as the compiler will just ignore them when running in C/C++ mode. This matches Xcode, which also doesn't have a separate build setting for Objective-C/C++ flags. The Makefile qmake generator has been rewritten to support Objective-C/C++ fully, by not assuming that we're just iterating over the C and C++ extensions when dealing with compilation rules, precompiled headers, etc. There's some duplicated logic in this code, as inherent by qmake's already duplicated code paths, but this can be cleaned up when C++11 support is mandatory and we can use lambda functions. Task-number: QTBUG-36575 Change-Id: I4f06576d5f49e939333a2e03d965da54119e5e31 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* rewrite windows library handlingOswald Buddenhagen2015-10-021-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | first, store the library's full name in the .prl file, like we do on unix. this is not expected to have any side effects, as QMAKE_PRL_TARGET was entirely unused under windows so far. then, rewrite the mingw library handling: instead of letting the linker resolve the actual libraries, do it ourselves like we do for msvc. we could not do that before due to the partial file names in the .prl files: if the library didn't exist at qmake execution time, we'd have to guess the file extension (the msvc generators never had that problem, as they know about only one possible extension for libraries anyway). make use of processPrlFile()'s ability to replace the reference to the .prl file with the actual library. that way we don't need to re-assemble the file name from pieces, which was fragile and inefficient. QMAKE_*_VERSION_OVERRIDE does not affect libraries coming with .prl files any more. additionally, it is now used literally (not numerically), and values less or equal to zero lost their special meaning as "none" - this isn't a problem, because that's the default anyway, and there is no need to override bogus versions from .prl files any more. no changelog for that, as i found no public traces of that feature outside qtbase. [ChangeLog][qmake][Windows] Libraries coming with .prl files can now have non-standard file extensions and a major version of zero. [ChangeLog][qmake][Windows][Important Behavior Changes] The .prl files written by earlier versions of Qt cannot be used any more. This will affect you if you depend on 3rd party libraries which come with .prl files. Patch up QMAKE_PRL_TARGET to contain the complete file name of the library, and replace any /LIBPATH: in QMAKE_PRL_LIBS with -L. (the part about /LIBPATH: actually refers to the next commit.) Change-Id: I07399341bff0609cb6db9660cbc62b141fb2ad96 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* merge processPrlFiles() into findLibraries()Oswald Buddenhagen2015-10-022-85/+50
| | | | | | | | seems pointless to tear apart the functions, on the way duplicating some boilerplate. Change-Id: Ide3697ca1c931e8de607ac48c21cecce4781fe13 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove QMAKE_<lib>_SUFFIX supportOswald Buddenhagen2015-10-011-4/+1
| | | | | | | | | | | | | this feature was added with a dubious commit message a decade ago, was undocumented, and there are no public traces of it being used. if i had to guess what it was meant for: to be able to consistently use -lfoo throughout a project and centrally (e.g., in .qmake.cache) choose to use foo<bar> (bar possibly being "d") instead. however, more explicit methods are being used instead, including in qt itself. Change-Id: Ic3a98dc3aec59876f26909fbf9f7aba32baa05bf Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>