"system" refers to the system's native shell, which is what qmake's
system() invokes, and whose convention by far most commands invoked from
a makefile will need.
"shell" refers to the shell invoked by make, which diverges from the
system shell only when qmake/mingw32-make is called from an msys shell.
its conventions need to be used for anything the shell itself does
(e.g., assembling env variables, but also command line argument
unquoting) and the commands the mkspec sets according to the shell
(e.g., QMAKE_MOVE).
Change-Id: I0000aa9417c199cf8a810619d31ded24bb0675f9
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Makes it possible to join two separate builds, and opens up for using
exclusive builds to do this.
Change-Id: I87ccbdd55511fdfbef3fe8b581f40525ebf077ed
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
module names use dashes, but the internal module representation uses
underscores, so we must translate.
Change-Id: Ib6983d3731e7dae2a4d6232f8a5202390fd425e9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
instead of being magic attributes of the main modules, the privates
are now proper modules of their own.
this cleans up some code paths, is more mappable to other build tools,
and enables private modules to depend on other private modules.
note that the library path is needed even in the "empty" private
modules, as in the framework case that's where headers are found.
consequently, the modules need to be explicitly marked with the new
"no_link" flag. this required some reorganization of qtAddModule().
Change-Id: I8e4f44a609f8d639cc01bcb658256870a627eb63
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
it was introduced as a hack to simplify writing tests, but the change to
make use of it was backed out of testlib and nobody seems to care.
Change-Id: Icc86621b865276e86593afdb923247bbdca19d49
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
we never call it with an explicit extension, so this only complicates
matters.
Change-Id: Ib15180130359bb9575bf5dda564f8b817431618f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
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>
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>
... 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>
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>
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>
-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>
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>
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>
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>
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>
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>
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>
the respective flags/defines need to be prefixed with a minus sign.
Change-Id: I8a3a46254f90d4ecdbd692a0eca635038691d078
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
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>
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>