first replaceExtraCompilerVariables(..., NoShell), then fix the final result.
Change-Id: If8cebeaa59f48d91b33b5a74e6a48a0d2d049643
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it makes no sense to call it on paths that are fixified right before or
after, as fileFixify() calls it itself.
and verifyExtraCompiler() calls normalizePath() on its file argument.
Change-Id: I8fb21e129fd29428d1855de73483087842bc1bdd
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
in most cases, it actually means normalizePath() (because the file name is
used with qt i/o functions afterwards).
this affects QMakeLocalFile::local() as well, so many not immediately
obvious places are affected as well.
there was also one case of fixPathToTargetOS() falling into this category.
this is mostly a no-op, as the qt functions are agnostic to the path
separator.
in some other cases (in particular in the vcproj generator), it actually
means fixPathToTargetOS().
this is mostly a no-op as well, as the two functions are equal except on
msys anyway.
in the <meta file>FileName() functions, the use of a fixPath*() function
is bogus in the first place - fileFixify() already does
fixPathToTargetOS(), and this is correct when the file name is used
verbatim in a make command (which it is). otherwise it's irrelevant.
Change-Id: I26712da8f888c704f8b7f42dbe24c941b6ad031d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
there is no reason why there should be unexpected leading or trailing
whitespace in an extra compiler's .depends list.
Change-Id: I46be75063180131e135fc6eea0238a482073618a
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
instead of quoting more or less random variable contents early,
consistently quote everything only right before it is needed. this way
we can be sure that everything is correctly quoted, but not over-quoted.
this removed the need for the insanity that unescapeFilePath() and
similar ad-hoc contraptions were.
this had the somewhat counter-intuitive effect that it was possible to
remove escapeFilePath() calls from PBX::writeSettings() calls - these
were actually only unescaping.
[ChangeLog][qmake][Important Behavior Changes] A lot of quoting issues
have been fixed. As a side effect, qmake has become more sensitive to
over-quoted file names in project files.
(*) ok, maybe not. close enough.
Task-number: fatal: out of memory
Change-Id: I8c51cfffb59ccd156b46bd5c56754c480667443a
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
fixing and escaping is now a tri-state option:
- none (this removes the need to unescape the result right afterwards in
some cases)
- local shell (for system())
- target shell (for Makefile)
Change-Id: I5b78d9b70630fe4484dc964eff5f62793da35764
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Use of FileFixifyAbsolute with non-default in_dir and out_dir
is not defined (and produces bogus results).
Using FileFixifyRelative when handling QMAKE_BUNDLE_DATA as a relative
path is fine.
Change-Id: I49902dc9f5b8029d092a4419c0cff5483e419c30
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: I503e4e4c50a147cc1d81019228593f502132f28a
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Commit 8ee2e497 introduced a regression for CONFIG-=flat vcxproj files.
Files with custom build steps (e.g. foo.h with Q_OBJECT) were written
into top-level filters ("Header Files" instead of
"Header Files\my\sub\dir").
The assumption that the parameter filtername always equals
VCFilter::name was wrong.
Change-Id: Id5178550310d06b73e42f18597a27012ddd89bb7
Task-number: QTBUG-44413
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
We already have saved this information in the loop above.
Change-Id: Ic0e0a66b01e9ee001932d7d798d848abc746ef95
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Commit 4f21eb03 broke the generation of non-flat vcxprojs.
XTreeNode passes filter names to outputFileConfigs that have
the source subdirectory suffixed (e.g. "Generated Files\subdir").
Function filterByName must be called with the substring before the
backslash.
Change-Id: Ic259e6316ab0727828773b13e0d8ad0cc7f0808f
Task-number: QTBUG-41746
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
This reverts commit e5a8134765.
A much simpler fix for QTBUG-41746 is about to follow.
Change-Id: I1eea1785e00b4d7d470108d8dc3272a2af438ef4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The VS integration does not exist anymore and has been replaced by
the Qt VS Add-in years ago.
Change-Id: I0202b0b2909318ed8869a738ec87b507c4c746af
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Outdated header.LGPL removed (use header.LGPL21 instead)
Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)
Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination
Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
qmake seems to be adding current date/time to the .la files for no
reason, so let's stop do that.
This way, two invocations of qmake actually gives bit for bit similar
output of .la files.
Change-Id: I93c7c4075cc1e05214849eec8629f41ce01e5914
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
these reflect the on-target paths (unlike /raw, which are host paths, just
without the -sysroot). this is necessary for anything deployment-related,
starting with RPATH.
Change-Id: I13d598995d0e4d6cb0dc1fc7938b8631cf3e3a95
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it makes no sense to test for OBJECTS_DIR emptiness when we are going to
use DESTDIR instead.
Change-Id: I0f7115fc8a9fe2a996417d5f50bd0165773129fa
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
that makes no sense at all. and OBJECTS_DIR is not resolved, either.
Change-Id: Ie76b9de6bb11ae42945255f2e168943066d2f60d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
... as newer versions of nmake (and jom, for compatibility) have botched
circumflex processing (they simply don't do it when shortcutting the shell
evaluation).
as a side effect, the output is also more readable if the string contains
quotes.
Change-Id: I0506b59ceecb70da258c482f9973156b2803066d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
double quotes cause mingw32-make to switch from direct execution to going
through the shell, so avoid them.
Change-Id: I05b71a050e425a1b327f747fab01755ff528ba0b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
MakefileGenerator::init() fixifies the variable, so there is no point in
the windows generator adjusting path separators as well.
Change-Id: I9331631125ee16ce4d64e38153f3c67f2f78b16b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
this is admittedly a rather improbable use case, so unlikely to have any
real world effect.
Change-Id: If98f0de90043525f0555f8ddf98f8b4352e5a0a7
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it always returned true nowadays.
an obvious followup effect is that the return value of parsedProBlock()
doesn't need to be null-checked any more as well.
Change-Id: I782785cab9b721a78a342a010921a73e642ebe7f
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
... because it also fixes the path, and we'll need the "plain" name later.
Change-Id: I86da8f53e44a68005c413c4b78b1b1682746e22e
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
we (supposedly) fully support QMAKE_EXTRA_COMPILERS, so there is no need
for any special casing here.
Change-Id: I4e9d389320a3e5ad0acbf73823ff1e6f7b9c370f
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
it's debugging code which is used only once (if even uncommented).
Change-Id: Ie57347017dd24f4acecff2a7132f82898dea3122
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
more efficient use of string functions.
Change-Id: I3d95d6379eaab025b18449b706f93631a2132aad
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
the path is processed, and afterwards fixForOutput()ed again. the first
call makes no sense (even if it registered some variables that are gone
in the second call, that would be pointless exactly because they are gone).
Change-Id: I251f1e4858bec36f3a7a9427c2ba78031b35a2d3
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
commands come already fully expanded and quoted from the project.
Change-Id: I239d5c305f5f65d32c832bc09bfd1c322051e149
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
no other generator does it. if it actually buys anything, it should be
re-instantiated differently.
Change-Id: I8431702ac7d558d65fd28a7f9e36bb49db2eb253
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
the logic was such that if the bundle name already had the specified
extension which was not the default extension, the default extension
would be appended, too. i don't think that was the intention ...
now we simply put the default into QMAKE_BUNDLE_EXTENSION if its empty -
the variable is not used anywhere else where it would be expected to
preserve its emptiness, so this is safe.
Change-Id: Ied34d10f9fe60756bddc0037dcb2f1d3bbfd3e12
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
there is no reference to it anywhere.
Change-Id: I72403be6c8294d9b2e64075ebd428eba24d97097
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
this isn't some fuzzy logic, the call sequence is well determined.
Change-Id: I1696b49ed687da83d2969efcfe23ac6565630020
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it never left the rudimentary stage. should it ever be re-added, it
needs to be done basically from scratch anyway.
Change-Id: I76858c8a2c90235f228f7a6e5a178a10a2669d37
Reviewed-by: Rolland Dudemaine <rolland@ghs.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Use x86 for a 32 bit build of qmake and x86_64 for 64 bit.
This is needed for shells that do not set VCINSTALLDIR.
Change-Id: I0843c1a590161669530b99f45ab59d523e6596c3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
When there are source files with the same file name in different
directories of the project, then nmake's inference rules might pick up
the wrong source file. Note that this even happens when only one of those
files is in SOURCES. The existence of conflicting file names is enough
to cause hard-to-find build failures.
The usual work-around for this situation is CONFIG+=no_batch.
This is now done automatically when a conflict situation is detected and
a warning message is printed.
Task-number: QTBUG-13496
Change-Id: Icd81027407d3d489dbc50231e5ed8bcb91f8d2bc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
When using the cross-compiler toolchain for 32 bit on a 64 bit machine,
qmake generated a 64 bit VS project.
This was because qmake didn't know about the amd64_x86 cross-compiler,
and qmake did not use the first MSVC bin directory it found in PATH.
Task-number: QTBUG-43457
Change-Id: I50c6f7bb9afe44a58321c670d680dbcc7cd07223
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
In ancient times, the existence of QMAKE_RUN_CXX_IMP determined the
use of implicit rules. The code path for implicit rules was turned
off in 2006 (0287fe3c), which probably was a refactoring artifact.
Later, implicit rules were enabled again using a different approach.
These days, the non-existence of QMAKE_RUN_CXX determines the use of
implicit rules.
We remove the dead code path now and rely on the latter condition.
One part of the dead code is a feature that turns off inference rules if
the OBJECTS_DIR is set or source file names do not match expectations.
If somebody ever missed this, it has been reimplemented otherwise.
Or not.
Change-Id: If3ce9904d9c1df6e4048c58c2452854cce7fa206
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Instead of trying to load in ltcg.prf and cache the value.
Change-Id: If485ff68fc6ff9d9cf7009cd72d5e702d0199c7f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This just reindents and makes it easier to read what's going on.
Change-Id: Id0afcdfb8f468b4553bba8c5a572a1d0115b0886
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
instead of having each generator do its own magic (little surprisingly,
with different outcomes), add "stuff" to the search path in one place
used by all generators. this has several consequences:
- (unless disabled via CONFIG+=no_include_pwd) $$PWD is now consistently
prepended by all generators. most notably, this was entirely missing
from the MSVC generators (both nmake and VS) - despite them needing it
most. this also affects Xcode projects.
- $$OUT_PWD (if different from $$PWD) is now added right after $$PWD,
not at the end. this precedence clarification only makes sense, given
that qmake tries to make shadow builds as transparent as possible.
- the qmakespec's dir is now consistently appended. the UNIX and PBX
generators prepended it, while the rest already appended. few files
actually include qplatformdefs.h, so having it late in the search path
seems reasonable.
- the effect of CONFIG+=depend_includepath is now fully consistent with
the actual include path.
Change-Id: I5f7570183351ade29342ea74fef706a0738842bf
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
neither qmake_getpwd()'s return value nor a fileFixify()'d version of it
can be empty.
Change-Id: Ic3b7d20becc57209b9dbe71ad9dc8e7547d435b1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is not used or referenced anywhere
Change-Id: I02e1aa76631627f64e5d1f9b36a13cdb5677e93f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
These mkspecs are not supported and no longer compile. Related support in
qmake has also been removed.
Change-Id: I7706dcfa5471e55e2ae3d580d65e9371e2c652d5
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Tested with the Preview release of November 2014.
Differences to the 2013 detection and support:
- Option -Zc:strictStrings is present in both debug and release mode
and is passed to qmake's own build
- New warnings 4456, 4457 and 4458 (shadowing) are disabled
- Compiler supports -arch:AVX2
Change-Id: I9572ff4d4aded4004c1fa5d6f13ffee5462043d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
On Windows, the application manifest file can be linked with the
executable, to specify for example the requested privileges of the
application. On MSVC nmake, the manifest is already handled in
NmakeMakefileGenerator::writeBuildRulesPart, but it is not compatible
with MinGW. On MinGW, this manifest file has to be referenced in the
Rc File. This patch simply handles the existing variable
"QMAKE_MANIFEST" which defines the appropriate line RT_MANIFEST in
the RC file.
Task-number: QTBUG-42454
Change-Id: I921606e002ffe3801c537f30ac2365891f97d5c9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Running 'make distclean' should remove all files generated by qmake,
including .qmake.stash/super. These files are considered owned by
a particular project (and hence a candidate for distclean), if it
lives in the same directory as the output dir of the project.
Task-number: QTBUG-42678
Change-Id: I224e9bac039eeacb6561e18acc7f8e867da5dab8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
We don't need to modify ResourceOutputFileName. The default is fine,
and $(InputName) evaluates to nothing in VS >= 2010.
Change-Id: Ib203d36261e1b5449c5a139b1950bd0d66197297
Task-number: QTBUG-43026
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
This fixes a regression introduced by
04d3a89e20 as it left out the custom build
step for the source code file generated for PCH.
Task-number: QTBUG-42596
Change-Id: I53d5a36b842dcffbde2657910e6a96dca0e99c7b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
With multi-architecture builds and ONLY_ACTIVE_ARCH set to NO, Xcode will
build the final target for multiple architectures at the same time, but
CURRENT_ARCH will only match one of them, so we failed to set up the
right dependencies for our pre-link step, causing the step to happen
after linking in some cases.
We now build an exhaustive dependency list based on QMAKE_XCODE_ARCHS,
so that ONLY_ACTIVE_ARCH=NO can be used for release builds targeted at
the App Store.
Change-Id: I6702f020a6970807adc624779f6dde09be62beb9
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Refactor the current app CFBundleIdentifier support:
handle frameworks as well. Add @BUNDLEIDENTIFIER@
placeholder to the OS X info.plist.lib templates.
This means the Qt frameworks will now get a valid
CFBundleIdentifier entry the same way as app bundles:
by extracting the identifier prefix from Xcode settings
and appending framework name.
Task-number: QTBUG-32896
Change-Id: Ica8f28332a88e37a823c46fca7a2c373157af020
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Since commmit 0127962e47 the
PBXResourcesBuildPhase is used only for ICONS, because the old
behavior of using it when target path is not given differed from
the documentation and behavior of the makefile generator by using
Contents/Resources as target directory when targeting osx.
The PBXResouceBuildPhase optimizes png, compiles xib or asset catalogs
and copies the rest.
The advantage is that it makes it easy to add resources to the bundle,
the only problem is that the target directory is always the resource
directory.
The copy operation currently used does not compile resources, which
makes adding .xib (for the Launch File required to support iphone 6)
and asset catalogs difficult.
So we restore the old 5.3 behavior for ios, and use the build
resources phase when possible on osx (target Contents/Resources).
On osx this still implies a difference between the makefile
generator and the xcode generator: only the latter compiles resources.
Change-Id: Id1853693e88fc46562b044efdea2bf5f9da2c98c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
The settings of the librarian were never written.
Creation of static libraries only worked by accident.
Adapted the code from the vcproj code path.
Task-number: QTBUG-30712
Change-Id: I69917f44305eb458647392d222db477fe5a5b7c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Second attempt. MSVCPROJ_TARGET contains the resolved target name,
including version number and target extension.
We're splitting this value into PrimaryOutput and
PrimaryOutputExtension.
PrimaryOutputExtension is only written if it contains a non-default
value.
Task-number: QTBUG-26782
Change-Id: I4b828dc5dd47322f653585aee1a5767f0cf8bd48
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Commit af760349 in Qt4 broke the possibility of having a
PRECOMPILED_SOURCE in a different directory than the
PRECOMPILED_HEADER.
Do not write the PrecompiledHeaderThrough value for the
PRECOMPILED_SOURCE, but use the project default.
The msbuild code path needed adjustments to write the
UsePrecompiledHeader value, even if PrecompiledHeaderThrough is
empty.
Task-number: QTBUG-41917
Change-Id: I74e621f6618cf056e3967c99a2215f76c346b9ee
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Commit 4f21eb03 utterly broke the project file generation for
VS 2008. The introduced filterByName convenience methods looks for
filter names like "Generated Files", but the code path for
VS <= 2008 used filter names like "GeneratedFiles".
The generated projects were valid but empty.
This commit ensures that both VS generators use the same filter
names.
Task-number: QTBUG-41821
Change-Id: I828fa911bae8d835b073a4c2260316127cc72cda
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Commit 4f21eb03 broke the generation of non-flat vcxprojs.
XTreeNode passes filter names to outputFileConfigs that have
the source subdirectory suffixed (e.g. "Generated Files\subdir").
That's why the original code tested the filter names with
QString::startsWith.
I've changed the signature of outputFileConfigs to take a filterId
parameter which contains the unaltered filter name (e.g.
"Generated Files") that will determine the correct filter.
Task-number: QTBUG-41746
Change-Id: If33428526a098f433cd6ceb8ab6608bd9f94ef17
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
otherwise we'll produce lines with tens of thousands columns when
dealing with QMAKE_BUNDLE_DATA.
Change-Id: Ia2a70f25e4ee1d3fe976027a7c46d234809a3f70
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
According to Apple's documentation [1], framework bundles don't
have a 'Contents' folder. Instead, each version folder gets a
'Resources' folder which contains the Info.plist file, and which
is also symlinked at the top-level framework folder.
[1]: https://developer.apple.com/library/mac/documentation/macosx/conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html
Task-number: QTBUG-32895
Change-Id: I5e55cc097b179012add0ceb7c567dace8e282895
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>