Commit Graph

86 Commits

Author SHA1 Message Date
Oswald Buddenhagen
bc2666d916 suppress error output from pkg-config
under normal circumstances, any errors will be noticed already by the
pkg-config --exists call, which is silent anyway. therefore this doesn't
change anything in normal qmake usage.

however, lupdate's and creator's evaluators skip the --exists calls and
subsequently invoke the normal query, which then prints useless noise to
the terminal.

Task-number: QTBUG-28159
Change-Id: I536412060f3830aafeb0587f855cd6af11227bca
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-08-15 18:02:42 +02:00
Oswald Buddenhagen
6d8f7a8d34 make requirement for -private suffix explicit, take 2
the previous attempt broke ActiveQt, as it actually has public modules
without headers (they are provided by a common base module).
so explicitly mark the internal modules as such instead of applying
heuristics.

Change-Id: I8d8a2ee66f02c3444da2036a497e7f382f089f62
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-05 11:36:22 +02:00
Sergio Ahumada
645637cbdc Merge branch 'release' into stable
Change-Id: I982a86e1b99e3ae629e8c5667bc7bdf9f4018b2e
2013-07-03 18:33:26 +02:00
Oswald Buddenhagen
68fd6878ab make requirement for -private suffix explicit
if a private module was used without the suffix, it would not add any
include paths, but the library would be still added. as long as the
includes were written as <Module/private/Header>, this would not become
visible, as the public modules would add the common include path ...
however, this soon won't be the case for mac frameworks any more. this
change makes the problem visible early on.

Change-Id: I8b1a20313ad736cb49507f07fa623e9aa812f651
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-03 15:31:17 +02:00
Frederik Gladhorn
1867ad741a Merge remote-tracking branch 'origin/release' into stable
Change-Id: I4c0ae2ac1c10d4d50c03625c802d981b7850ed6f
2013-06-25 23:25:35 +02:00
Oswald Buddenhagen
7ea8c9d0f0 install private headers into frameworks
Task-number: QTBUG-31641
Change-Id: Ifadc380c0a8983b2be93194e2e2257494b13dff8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-06-25 09:18:25 +02:00
Oswald Buddenhagen
7090d4a458 un-nest conditionals
it's cleaner, and it makes it possible to actually have a single else
branch.

Change-Id: I5ef917b678e2bd5a2face8ee19e942e5e952aa80
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-06-25 09:18:17 +02:00
Oswald Buddenhagen
d0e82ede55 mac framework build: always set QMAKE_FRAMEWORKPATH
don't mess with the -F linker flag manually. qt headers include other
headers via the canonical Module/Header syntax, which means that the
compiler also needs the -F flag. QMAKE_FRAMEWORKPATH does exactly that.

Task-number: QTBUG-29003
Change-Id: I5f4af1a462697cd6996c54436ccdb9fc2b216020
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-25 09:18:13 +02:00
Frederik Gladhorn
533820320c Merge remote-tracking branch 'origin/release' into stable
Change-Id: I94bb158562ae6b80a87b40139d7302ea7b9b9aa8
2013-06-20 16:13:38 +02:00
Oswald Buddenhagen
172fa29dff fix LD_LIBRARY_PATH manipulation in uic calls not being make-escaped
the evaluator has the bug that function arguments are inherited.
work around that by passing an explicitly empty 3rd parameter to
qtAddTargetEnv().
proper fix upcoming in less critical branch.

Change-Id: Ic45cc890abaa6271985590d4ebe02c96bff6dec4
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-20 12:49:14 +02:00
Oswald Buddenhagen
1ebef55cf7 remove pointless return code checking
qtAddModule() always returns true anyway.
the real checking is done by qtAddModules() and qtAddLibrary() itself.

Change-Id: Ieed821acc36dc57ca52aec3e6b2dd6513be9b6c1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-17 15:43:41 +02:00
Oswald Buddenhagen
7d4980f3ee make use of QT_MODULES to simplify code
Change-Id: I1124088f807023faf678e030cfb1fc4a4c8b40d7
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-17 15:43:34 +02:00
Oswald Buddenhagen
17c38b25f4 fix rcc & uic .depend_commands
unlike the .command, the .depend_command is not executed by make via its
chosen shell, but qmake itself via the system's native shell.
consequently, it needs different path separators and no make-escaping.

Task-number: QTBUG-31289
Change-Id: I480f815753632db6e8d4725f463f8a1fc59680a6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-15 21:39:34 +02:00
Oswald Buddenhagen
9d48f14a3c always $-escape make commands
nmake needs %-escaping in addition to $-escaping, not instead.
this has little practical impact, so it went unnoticed.

Change-Id: I144b6142eec0151d83a22e0ac5ead7b0415cdafa
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-15 21:39:22 +02:00
Oswald Buddenhagen
c932f2cc13 fix command over-escaping in vcproj files
the vs ide executes the commands verbatim, so they must not be
make-escaped.

Task-number: QTBUG-31289
Change-Id: Ie73fd5c4da5527c2d10bc94ccdf60f8a1ca21351
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-15 21:39:17 +02:00
Oswald Buddenhagen
13e01fda19 assemble the tool commands at use time, after all
the precise syntax depends on what exactly the command is used for, so
we need to resolve it at the last moment. see followup commits.

This logically reverts commits 6f4ff81380
and 731e6bece5.

Change-Id: If285c91d7521069be86d32593b5c2ae2027b3038
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-15 21:39:12 +02:00
Thiago Macieira
3523c9e138 Support setting the library-search environment on a few more OSs
Most Unix systems will honor LD_LIBRARY_PATH (all ELF-based systems
definitely do), so let's not make it an error if the user isn't
compiling on Linux or FreeBSD. The only known exception are Darwin /
Mac OS X and AIX. For everything else, cause an error.

The list of unames came from: http://en.wikipedia.org/wiki/Uname.

AIX does not use ELF, so its variable is called LIBPATH:
 http://publib.boulder.ibm.com/infocenter/forms/v3r5m0/index.jsp?topic=/com.ibm.form.api.configuring.doc/api_configuring_unix_path.html

Change-Id: I67055e6a231aa1430d91431e7cab5f98f0e1bd95
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-05-31 08:05:33 +02:00
Oswald Buddenhagen
2b3055f7dc remove qtPrepareTool()'s ability to run batch files
it was only meant to automatically support syncqt.bat, which is gone
now.

fwiw, invoking batch files from within msys Makefiles was broken to
start with, as sh cannot directly run them.

Change-Id: I435568c578ce79e46f4e230e985ca9a04b34ffff
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-05-13 21:54:55 +02:00
Oswald Buddenhagen
2c033e00d4 remove pointless extension check from qtPrepareTool()
we never call it with an explicit extension, so this only complicates
matters.

Change-Id: Ib15180130359bb9575bf5dda564f8b817431618f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-05-13 21:54:52 +02:00
Oswald Buddenhagen
8a78225a33 make qtPrepareTool recognize perl scripts by extension
this makes it possible to directly execute perl scripts on windows.

Change-Id: Ibbb90d46518ea8ac4f695d07141700630b33fab3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-05-13 21:54:46 +02:00
Oswald Buddenhagen
b6f8557af8 fix LD_LIBRARY_PATH setup of check targets
amends 4c34b418

Change-Id: Id9d214fe936d947aaea4a56fd724ad50381032e1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-03-15 18:04:23 +01:00
Oswald Buddenhagen
23762682c1 simplify qtAddModule() by using $$qtPlatformTargetSuffix()
Change-Id: I02b6c1eb2db0c8a36c50b1ec3c79dea215fba03a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-02-20 15:22:55 +01:00
Oswald Buddenhagen
67f20d66e4 remove pointless conditionals and expansions from qtLibraryTarget()
this function is called only from library TEMPLATEs, and always with
exactly one word as the only argument.

Change-Id: I6282e3826791f89e6cf89dde625c8166e4e56028
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-02-20 15:22:55 +01:00
Oswald Buddenhagen
489d8a0627 add QT_CONFIG's static/shared to CONFIG on startup
... instead of as a fallback in default_post.
it was this way in qt4, and it requires less code to be written in the
end. we are already doing it for debug/release as well.

Change-Id: I6e02849d61d14a18375cf64a5990768931ebac48
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-02-18 15:52:43 +01:00
Oswald Buddenhagen
e3554d7274 remove useless unset()s
there is mightily little point in unsetting variables right before
unconditionally assigning to them.

Change-Id: I24c1814ce38bf9aab4496679b1a670f3cd55c536
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-02-13 12:42:40 +01:00
Oswald Buddenhagen
46f1c12b9e use install path as fallback when locating tools
all non-installed tools are properly registered, so they don't need the
fallback. conversely, we can assume that non-registered tools are
already installed.

this enables us to build docs in qtbase after an incremental
build+install up to qttools.

Change-Id: I95a55f6b84e01885bcf6dd656caf0dd2b679bb73
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-02-11 18:00:17 +01:00
Oswald Buddenhagen
04478614c1 fix transitive linking for x-builds
-rpath does *not* imply -rpath-link when x-building:
ld(1): "Searching -rpath in this way is only supported by native linkers
and cross linkers which have been configured with the --with-sysroot
option."

it doesn't hurt to have the "excess" -rpath-link for native builds, so
just remove the cleanup.

Change-Id: Ic39c1f4d6c2e3770d43a5ed3e56cf89a146edf85
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-02-05 22:50:28 +01:00
Oswald Buddenhagen
4c34b418b8 fix lack of rpath-link when using modules from final location
if the libraries are in a non-standard location, but no rpath is used,
rpath-link is needed. this is often the case for non-prefix builds
(which have no forwarding pris any more).

as we cannot store absolute paths in the final pris, we need to store the
module names, and resolve them only at use time.

Change-Id: I1538b5d531611c76a2d7058a3b2ff683bdcbe427
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-02-04 15:10:22 +01:00
Oswald Buddenhagen
586adeabe4 add and use qtHaveModule() function
this is much more elegant than the so far propagated !isEmpty(QT.foo.name).
also replace feature-specific tests (no-gui and no-widgets) and the
obsolete contains(QT_CONFIG, foo) syntax.

Change-Id: Ia4b3c8febcabf9eeca67b1f9173a523820b1038b
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
Reviewed-by: Tasuku Suzuki <stasuku@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-21 19:05:02 +01:00
Oswald Buddenhagen
95a158d40f fix static lib dep addition
leave MODULE_LIBS unmodified - MODULE_LIBS_ADD takes the role of the
filtered variable.

Change-Id: I2a67078bbc453eccc08317a1ca8e3228cbc3a8f7
Reviewed-by: Davide Pesavento <davidepesa@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-11 13:37:57 +01:00
Oswald Buddenhagen
d2179014f9 introduce QMAKE_RPATHLINKDIR (and QMAKE_LFLAGS_RPATHLINK)
complementary to QMAKE_RPATHDIR. this avoids that we need to sprinkle
linux/gcc specific code all over the place.

Task-number: QTBUG-27427
Change-Id: Iebafd1749d1a0d803704902473df8c743f074ddc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-03 16:26:37 +01:00
Oswald Buddenhagen
b1ff4712f2 resolve private dependencies of tools as well
Change-Id: I25c73661489f0a6e6ecf3bb423cdae6435221e25
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-02 02:16:00 +01:00
Milian Wolff
a0ac93c73d packagesExist(): always return false if QT_CONFIG contains no-pkg-config
On QNX e.g. you'll end up with a Qt configured without pkg-config support
by default. Once you try to compile e.g. QtWebKit which contains a check
like packagesExist(libudev) the system pkg-config (see default branch
of pkgConfigExecutable) will be called without any special config sysroot
or libdir. Thus libudev will be found in your system host, even though
it is not available for the cross compile target. This leads to compile
errors as described in https://bugs.webkit.org/show_bug.cgi?id=98032 .

Change-Id: If1474cb3b3f3b71fad7269e4aedd4e10f70a9b2a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-11-21 16:36:50 +01:00
J-P Nurmi
9cdcd2f639 qtAddModule(): define PRE_TARGETDEPS for static modules
This ensures that for example the platform plugins get properly
re-linked when the static platform-support lib changes.

Change-Id: Iad493d4de30d6f6977f80aa56d0b27d05e9e3770
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-11-14 12:29:01 +01:00
Oswald Buddenhagen
c3637ce66b define the module rpath in the installed module pri file
the fallback path wouldn't account for a sysroot. as there is no clean
way to implement that, rather remove the fallback alltogether and make
the rpath a mandatory part of modules.

Change-Id: I6f2bd6e36889be2f61e17a579174380aa3c6622d
Reviewed-by: Romain Pokrzywka <romain.pokrzywka@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-11-13 16:05:50 +01:00
Thiago Macieira
d725239c3e Insert the Qt major version (5) in the library names
As discussed on the mailing list, insert the Qt major library version in
the library name, so even the development files can be co-installed with
Qt 4.

Discussed-on: http://lists.qt-project.org/pipermail/development/2012-September/006545.html
Discussed-on: http://lists.qt-project.org/pipermail/development/2012-September/006551.html
Change-Id: If0be11ebf9454a9fb6d96cda161790dfd53c00f5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-11-10 09:20:26 +01:00
Oswald Buddenhagen
f1841d864d make it possible to put removals into modules' .CONFIG and .DEFINES
the respective flags/defines need to be prefixed with a minus sign.

Change-Id: I8a3a46254f90d4ecdbd692a0eca635038691d078
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-11-08 16:59:50 +01:00
Oswald Buddenhagen
f05a392f3e fix tool invocation for -prefix + -framework builds on macx
set DYLD_FRAMEWORK_PATH instead of DYLD_LIBRARY_PATH

Change-Id: I9849f12063b8c7a45d040c087f4611c3a48180b8
Reviewed-by: Johanna Äijälä <johanna.aijala@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-10-29 22:21:32 +01:00
Oswald Buddenhagen
c9266e7cb9 redo QT_PLUGIN_PATH assembly for non-installed execution
it is a bad idea to extract plugin paths from library modules.
instead, just collect plugin paths from all known repositories.

Change-Id: I527325f20e9cf98ae974997530af1b2893537e5d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-10-29 22:21:32 +01:00
Oswald Buddenhagen
a3941c2f6e escape constructed command for makefiles
Change-Id: Iec7f2bd7b02d03bf6a99dde363a41578924e523c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-10-26 14:33:15 +02:00
Tor Arne Vestbø
b9facbf345 Refactor recursive target logic out of default_post into function
The qmake function prepareRecursiveTarget can now be used both by the
existing logic in default_post, as well as future recursive targets that
will be needed as part of the modularization of documentation builds.

Change-Id: Ibc72c3e224cb57c9f1796de3b04fda9de663dbb4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-10-18 21:01:09 +02:00
Romain Pokrzywka
84118ffa2c Fix accessing the rpath dir from included modules
The wrong variable was used when reading the module settings

Change-Id: If35dc9694240a68393b24d7dba72520108cb9ac3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-09-28 21:09:35 +02:00
Oswald Buddenhagen
aad3410864 factor out qtAddTargetEnv()
Change-Id: Ib0517da54da98de4b1f2ee7d80bee22316231091
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-19 19:54:44 +02:00
Oswald Buddenhagen
321687f03b factor out qtAddToolEnv()
so it's available for other users as well

Change-Id: I2d5a14ae427575c07321ac532b13ee03308b837f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-18 00:59:08 +02:00
Oswald Buddenhagen
fb8a6297f4 remove 3rd parameter from qtPrepareTool()
it's been superseded by the QTTOOL.* module stuff.

Change-Id: I01c9fc3ebbb22111bfb03f82693c7cf08b5fc9d4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-18 00:59:08 +02:00
Oswald Buddenhagen
2e10b38c6a use each module's lib_bundle setting
... instead of relying on the global qt_framework flag.

Change-Id: Ie23f55788c26d732ada87aab7284c0a1fe0bfa28
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-07 23:35:20 +02:00
Oswald Buddenhagen
07e187a341 make .private_includes in module pri files "self-contained"
this puts the whole logic of assembling those paths into qt_module.

Change-Id: Iafbe3969e3092e294bdb8243b2dffa7a899a7eb8
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-15 09:18:58 +02:00
Oswald Buddenhagen
b603fd36c2 support -rpath for modules which are not installed to QT_INSTALL_PREFIX
a module's project file may set MODULE_INSTALL_LIBS before loading
qt_module.prf to have an alternative RPATH linked into the users of that
module.
this is relevant only for linking against non-installed -prefix builds
of that module, as otherwise .libs from the module's pri file is used
for rpath.

Change-Id: Ib240e748cf130a71a5991dc643c368a983092ead
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-08-11 10:40:23 +02:00
Oswald Buddenhagen
43af0260b8 fix -rpath-link handling for non-installed prefix builds
forwarding module pris get rpath_link{,_private} fields, which are
used accordingly by qtAddModule().

Change-Id: I0abc2dc8b1e8744dbf7f439aa7fed9ae159c2c74
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-11 10:40:16 +02:00
Oswald Buddenhagen
0fc4f2b4cf qtAddModule(): put search paths directly into LIBS{,_PRIVATE}
QMAKE_LIBDIR and QMAKE_FRAMEWORKPATH have the downside that they
always effectively end up in LIBS, which makes for weird prl files.

Change-Id: Iaf61b0038504ff91ae5ec7f9b1255fe3a2d134f1
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-11 00:41:07 +02:00