Commit Graph

60 Commits

Author SHA1 Message Date
Tor Arne Vestbø
b5fe1ed172 qmake: Add support for QMAKE_{PRE,POST}_LINK in the Xcode generator
Change-Id: I038cf0aebb74d7ecfe6cb3ed868287042342eb7e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-10-17 13:25:58 +02:00
Tor Arne Vestbø
5c92a8b70a Xcode: Dynamically choose release/debug libs based on current configuration
Non-framework builds would automatically link to whatever Qt library
matched the config at the time of running qmake, eg hard-coded to
libQtCore_debug, while Xcode itself allowed the user to switch between
release and debug configurations.

We now append an Xcode settings variable to the library path, which gets
resolved at build time depending on the current config in Xcode.

Change-Id: I12873e38a28d9595ef3fd0ae0ad849e6744833a9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-10-16 19:33:15 +02:00
Tor Arne Vestbø
40ad539787 qmake: Allow QMAKE_MAC_XCODE_SETTINGS to be limited to debug or release
The Xcode generator does not support exclusive builds, but still
generates projects that contain both debug and release configurations,
each with hard-coded differences such as whether or not to strip or
to generate debug symbols.

As a stop-gap solution we allow projects and mkspecs to add extra
settings that are limited to a given build. Long term we want to
rewrite the Xcode generator to support exclusive builds, but that
is a much bigger task.

Change-Id: I85056164bb1b3c8c6e0cf66410348cca7138eca5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-10-11 18:49:03 +02:00
Tor Arne Vestbø
2ff3cbbb56 Xcode: Quote variable names with invalid characters in them
Allows us to have scoped variables such as eg FOO[arch=armv7].

We could quote all variables, but Xcode doesn't, and we try to stay
close to the native behavior.

Change-Id: Ia6634a33e42031fe7e69c4f680803fa347e5de4a
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-09-24 02:50:37 +02:00
Frederik Gladhorn
8c6755aeec Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/corelib/tools/qstring.cpp

Change-Id: Ifc6cd3a0f1cf14cc0fe6cf30afb0c7f40cfdbc3e
2013-09-16 14:52:40 +02:00
Tor Arne Vestbø
3e3297242a Xcode: Resolve extra compiler (e.g qrc) dependencies
The Xcode generator relies on the generic makefile generator for extra
compilers such as qrc and moc, by generating makefiles that are then
executed as separate build steps in the Xcode build.

These makefiles are generated by entering a special mode in the Xcode
generator, in which case we _do_ want to resolve dependencies, so that
e.g. the files referenced inside a qrc file are added as dependencies
to the makefile rule that generates the qrc-cpp file.

Change-Id: I96bdcb165e9774a6328ae1980986fa2c6b00c6d9
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-09-13 21:43:38 +02:00
Frederik Gladhorn
c8ca300e49 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	qmake/doc/src/qmake-manual.qdoc
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/src.pro

Change-Id: I0a560826c420e46988da3776bd8f9160c365459a
2013-08-21 11:03:18 +02:00
Thiago Macieira
d5ed6936be Don't compile MD4, MD5, SHA-2 and SHA-3 into qmake
We just need one digest algorithm, any algorithm, to generate a
somewhat unique identifier. SHA-1 will suffice.

Change-Id: I3cb26bf866d616df3ef32feace10934f19daa1a6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-08-15 01:30:54 +02:00
Frederik Gladhorn
084c5b3db7 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp

Change-Id: I18a9d83fc14f4a9afdb1e40523ec51e3fa1d7754
2013-07-23 11:18:11 +02:00
Oswald Buddenhagen
f216caa52c unbreak use of not-overquoted ICON entries
amends 0e548b5856.

Change-Id: I88a5b8c681f7508aecf02b913e64816b712d97a2
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-22 19:52:06 +02:00
Oswald Buddenhagen
79fcc7787a undo accidental string merge
amends 51980595e1.

Change-Id: Ie4fd4a6d762f4c87dabd7d3124f3397b0f853b77
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-07-15 19:45:49 +02:00
Sergio Ahumada
3ef6cf060e Merge branch 'stable' into dev
Conflicts:
	qmake/generators/mac/pbuilder_pbx.cpp
	src/corelib/json/qjsonwriter.cpp
	src/corelib/kernel/qeventdispatcher_blackberry.cpp
	src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm

Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
2013-07-11 16:42:01 +02:00
Oswald Buddenhagen
51980595e1 merge string literals
makes for less visual noise and a tiny bit more efficient code.

Change-Id: I587707fa4e2dc9bead9435bf5caf3a98ab680725
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-07-04 18:13:18 +02:00
Tor Arne Vestbø
ffef22cae2 Xcode: Fix defines in OTHER_C/CPLUSPLUSFLAGS for project file output
We were only fixing QMAKE_C/CXXFLAGS, not the defines we then appended.

Change-Id: Iaa4a394738658c45aae83941ebe54470d6d8e250
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-07-03 21:36:26 +02:00
Tor Arne Vestbø
0233e9ec8b Xcode: Fix string quoting to match ASCII plist format
The logic for quoting and unescaping strings was a bit random.
We now leave the strings alone, until writing them out as values,
where we quote and escape the characters that need escaping.

See:

  http://www.gnustep.org/resources/documentation/Developer/Base/Reference/NSPropertyList.html
  https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/OldStylePlists/OldStylePLists.html
  https://code.google.com/p/plist/source/browse/trunk/src/main/java/com/dd/plist/NSString.java?r=107#230

Change-Id: I2096df531947abdce4f6b57428136f544d22c466
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-07-03 21:36:04 +02:00
Frederik Gladhorn
e2776b44a0 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/plugins/platforms/cocoa/qcocoamenubar.mm

Change-Id: I4a699fc8a7f30b2af9de8e496c3d5f027b7495bb
2013-06-12 19:17:07 +02:00
Tor Arne Vestbø
0c313b3adb Xcode: Don't set TARGET_BUILD_DIR; that's handled by a copy phase
This reverts an earlier change that tried to fix the relationship between
Qt's concept of output directories with what Xcode expects, but it broke
DESTDIR. The relationship between Qt and Xcode is still a mess, but at
least DESTDIR now works.

Change-Id: I44f056d48c87359a609e0337da266120ba4eb155
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-06-11 16:35:53 +02:00
Tor Arne Vestbø
35d0e9b66f iOS: Don't mangle QT_ARCH when being more specific about what arch to build
On iOS the compiler expects archs like armv6, armv7, armv7s when passed the
-arch flag, or when the ARCHS Xcode variable is set. Instead of mangling
QT_ARCH, which is used other places and assumed to match the values
provided by the arch.test, we use our own variable.

Change-Id: I05e10be8d69dd4d7cbcef04640fef99f1efb253d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2013-04-16 09:01:32 +02:00
Samuel Rødal
2ab9b747fc Merge remote-tracking branch 'gerrit/release' into stable
Conflicts:
	configure
	mkspecs/features/qt_module_headers.prf
	mkspecs/features/qt_tool.prf
	src/angle/angle.pro
	src/tools/bootstrap/bootstrap.pro
	tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp

Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
2013-03-21 08:49:01 +01:00
Oswald Buddenhagen
ec145129c3 fix setup of output directory for subprojects in IDE generator backends
unlike before, the output dir is now important already during the project
evaluation phase, as finding .qmake.conf depends on it if .qmake.cache is
also present.

ChangeLog: fixed qmake -tp vc (and configure without -no-vcproj)
Change-Id: Ifdb95f3b38a70c0d08e71238059292e761dcfa53
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-03-15 18:06:31 +01:00
Frederik Gladhorn
5e8ae03578 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	configure
	qmake/generators/mac/pbuilder_pbx.cpp
	src/corelib/kernel/qtimerinfo_unix.cpp
	src/plugins/platforms/cocoa/qcocoabackingstore.mm
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/windows/qwindowswindow.cpp
	src/plugins/platforms/xcb/qglxintegration.cpp

Change-Id: I8d125fe498f5304874e6976b53f588d3e98a66ac
2013-03-05 13:42:11 +01:00
Tor Arne Vestbø
a6286039ba iOS: Write default code signing identify for iOS in Xcode generator
Change-Id: Ic04da6063863585665c9133caba0279ba478fbb4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Ian Dean <ian@mediator-software.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2013-02-27 13:07:23 +01:00
Andy Shaw
4a6a066df2 Fix generation of XCode projects for XCode 4.6
When a framework is referenced in the XCode project then it is known as
a framework by the lastKnownFileType and not the reference type. This
ensures it works in both XCode 3 and XCode 4.

Task-number: QTBUG-29371
Change-Id: I434246a46d6c5bfd50ba7de1a7c710c0caf0bc0a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-02-27 12:01:28 +01:00
Tor Arne Vestbø
dd5b437d6a qmake: Fix file paths in Xcode projects when shadow-building
The Xcode generator seems to have been written with the assumption that
writeMakeParts() would be called with the output directory as the current
directory, but that's not the case when shadow-building. Perhaps this
was changed in qmake at some point, and the Xcode generator was not
updated to reflect that.

Instead of replacing every occurance of fileFixify and other logic to
deal with paths, we just chdir into the output_dir for the duration
of the function (except when writing the 'make qmake' makefile, as
the regular makefile generator works as expected with the current
directory set to the input directory).

Change-Id: I6ba492036d73f29f4adbd7cd554db9504050629e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-02-26 13:13:24 +01:00
Tor Arne Vestbø
f6d13a45c8 qmake: Prevent Obj-C sources from building both as extra compiler and in Xcode
We already assume that if a source is buildable and should end up in OBJECTS we
can let Xcode build it, so we skip this input for the extra compiler.

Change-Id: I17b2408925b8e6513f0fa0d2459ec539bf7381d3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-02-26 13:13:23 +01:00
Tor Arne Vestbø
0e548b5856 qmake: Use PBXResourcesBuildPhase for QMAKE_BUNDLE_DATA without a path
The PBXResourcesBuildPhase will optimize resources, such as turning XIB
files into NIB files, running pngcrush on images, turning string files
into binary plists, etc, so we prefer that if possible.

Unfortunatly this phase does not support custom paths, so whenever we
encounter bundle data with a custom path we fall back to the regular
PBXCopyFilesBuildPhase.

Change-Id: I539db03dd7982fd37293123b6428cdb695f64d2b
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-02-26 13:13:23 +01:00
Tor Arne Vestbø
883efa10cd qmake: Prevent duplicate libaries from being added to the link phase
Change-Id: I5ec7acb8f060e9d9bbd8cdb95d40ace03cffe9c7
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-02-26 13:12:25 +01:00
Tor Arne Vestbø
c6eae1acf8 qmake: Don't generate Xcode project bundle identifiers with spaces
Replace them with dashes, like Xcode itself does.

Change-Id: I302425363a2eef13394025cd4a9e414048ce55ce
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2013-02-26 13:11:19 +01:00
Tor Arne Vestbø
66f6e5b162 qmake: Update Xcode generator to produce project files similar to Xcode
There was quite a bit of cruft left over from older Xcode version. We
now produce Xcode 3.2 compatible files, similar to what Xcode would do
when asked to upgrade one of our generated files. In particular:

 - Removed refType
 - Set more lastKnownFileTypes
 - Renamed defaultConfigurationIsName to defaultConfigurationName
 - Add runOnlyForDeploymentPostprocessing = 0 to build phases
 - Don't put buildSettings directly into PBXNativeTarget
 - Don't write productSettingsXML
 - Don't write startupPath
 - Don't write name when path is the exact same
 - Write empty buildSetting lists as empty string
 - Don't write empty PBXBuildFile settings
 - Don't write generated/neede filenames for PBXShellScriptBuildPhase
 - Use PBXFileReference instad of PBXFrameworkReference
 - Prune deprecated buildSetting variables
 - Remove deprecated PBXBuildStyle sections
 - Resolve correct CC/CPLUSPLUS/LDPLUSPLUS
 - Write IPHONEOS_DEPLOYMENT_TARGET

Change-Id: Ia2365c2623fe898878bd10636c3b85145c1cff04
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2013-02-26 13:11:11 +01:00
Tor Arne Vestbø
e70e81d554 Xcode: Change groups/build phase wording to match Apple's templates
Change-Id: I286965a05750bc77b94ca4d3b76364b0130e32ed
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-02-22 23:56:37 +01:00
Tor Arne Vestbø
a36eaae893 Xcode: Merge various sources and extra-compilers into more managable groups
Instead of letting each qmake variable have its own auto-generated name
we try to group common variables into similar groups as used by the Xcode
templates provided by Apple.

We also prevent the same files from ending up multiple times in a group.

Change-Id: I73b13d6071bb7b3cd1501c422a99c60743221485
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2013-02-22 23:56:37 +01:00
Sergio Ahumada
48e0c4df23 Update copyright year in Digia's license headers
Change-Id: Ic804938fc352291d011800d21e549c10acac66fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-18 09:07:35 +01:00
Andy Shaw
3537ecfecb Fix handling of precompiled header files in XCode projects
Task-number: QTBUG-24589
Change-Id: If81e15aa038f418abea25d96a7b7ec773a87d2db
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2012-12-19 21:24:09 +01:00
Andy Shaw
eb2d0c82eb Respect the OBJECTS_DIR setting for XCode projects
Task-number: QTBUG-28104
Change-Id: I0361cb979c40ce14ac163453d8229efc69527b6c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-19 21:23:59 +01:00
Andy Shaw
55b63a406f Make sure the path is quoted in case it has spaces in it
This fixes a problem when the preprocessing scripts were called from a
path with spaces in it.

Task-number: QTBUG-15317
Change-Id: I92ea85e12e2f9abfc262a8dcaa4f414e471e468c
Reviewed-by: João Abecasis <joao@abecasis.name>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-28 12:46:43 +02:00
Andy Shaw
f6bd02317d Fix XCode generator for qmake in Qt 5 after recent changes
Due to all the changes recently it broke in some places, this now
gets it working again.

Change-Id: I879ca5684435289a61d8db248f2c3f64f6866a60
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-27 06:07:26 +02:00
Iikka Eklund
be15856f61 Change copyrights from Nokia to Digia
Change copyrights and license headers from Nokia to Digia

Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2012-09-22 19:20:11 +02:00
Oswald Buddenhagen
df175f190d introduce qmake variable abstractions
this is preparation for adapting to a new evaluator.

Change-Id: I6fc59f5525735754a00afa6629fbfe257e84db97
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-07 15:39:31 +02:00
Oswald Buddenhagen
b32f3ba9e4 remove pretenses of supporting projects on stdin
this may have worked a decade ago, but now it only produces funny
Makefiles (and needs hacking main.cpp). the feature doesn't seem *too*
important, so just clean it out.

Change-Id: I50a60b0e30341f0b523e4a5731c770c9c1013f8b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-05 03:03:12 +02:00
Oswald Buddenhagen
791cb02463 make QMakeMetaInfo a little less inefficient with libtool .la files
don't read the spec from scratch for every library just to get
QMAKE_LFLAGS_RPATH. we can perfectly use our current project for that
purpose.

Change-Id: I4e408b3fd5de81652181df032aa53cd8f2f8f806
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-05 03:03:10 +02:00
Oswald Buddenhagen
3db9344f04 beautify string operations
Change-Id: I895a1ae26ee0c884c404bf585261d1a7e8a8242c
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 20:48:13 +02:00
Oswald Buddenhagen
996bbcd78b micro-optimize: use POD-initializable lists of variable names
Change-Id: I3732fef509b358949ef90002dbfc1960360afef8
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 20:48:07 +02:00
Oswald Buddenhagen
7033560e54 remove dead variable assignments
Change-Id: I032e9116ca1b7250497f56ea26103f2173f0fc09
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-28 20:47:55 +02:00
Oswald Buddenhagen
e38af23470 dispose of QMAKE_LIBDIR_FLAGS, "demote" QMAKE_FRAMEWORKPATH_FLAGS
merge their content as early as possible into QMAKE_LIBS. that's where
they ultimately end up anyway, and this approach is way simpler.
QMAKE_FRAMEWORKPATH_FLAGS is also used for the compiler flags, so it
remains as such in this second function.

Change-Id: Idc3ba4a9b2569fce3252d5f5ddc3f6ebf93650cf
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-07-27 16:29:18 +02:00
Oswald Buddenhagen
104ee69216 purge "dumping all variables" debug loops
the as-we-go dump is sufficient (and usually necessary to actually find
the problem). if only the summary is interesting, the -E option can be
used now.

Change-Id: I9e34c6db9dcb99b38013c4d0cb80b8cb88ca36b5
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2012-06-27 14:35:31 +02:00
Oswald Buddenhagen
aac040b188 const correctness for variables()
Change-Id: Id11453ccbae3ffa32580badadada945d342d727a
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2012-06-27 14:35:30 +02:00
Oswald Buddenhagen
f85292ab20 const correctness for values() calls
Change-Id: I1476ae8d3fb7364686398c5650729dee94a8e933
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2012-06-27 14:35:29 +02:00
Andy Shaw
4524187129 Remove unnecessary code from the XCode generator
Since we only support XCode 3 and later, then all of the legacy code can
be safely removed.

Change-Id: I9be8555aaa62c716b2277c2b97f41aa02d27ef13
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-12 17:40:21 +02:00
Thiago Macieira
28aa3324de Port away from QString::{to,from}Ascii in qmake
Properly use from/toLocal8Bit when referring to user data, even file
names.

Change-Id: I8fc7afa2ea570f8b1b1eecf354f01d6dfe0883cb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-05-14 17:33:04 +02:00
Olivier Goffart
3abc6be685 Build qmake with QStringBuilder.
QStringBuilder will be enabled by default so qmake should build with it.

qstringbuiler.cpp has to be compiled in just for the convertFromAscii
(The alternative was to build with QT_NO_CAST_FROM_ASCII, but that would
be too much work)

Change-Id: I1fbeed7ed8a9d3bc38ef591a687c50644980e2fd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-03-16 23:02:15 +01:00