Conceptually a Qt for iOS SDK or source build should support building
for both simulator and device, based on the same qmake binary and Qt
libraries. Qt Creator or Xcode should then be able to use the same Qt
version while still building for a single target at a time. This
applies to user libraries as well, which shouldn't require switching
to a different Qt when changing target platform from simulator to
device.
We achieve this by using Qt's exclusive_build feature, where we build
for the two targets in parallel, and then teach Xcode how to choose
the right library dynamically at build time.
Change-Id: I06d60e120d986085fb8686ced98f22f7047c4f23
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
We used to compute the default exclusive build directory, eg 'debug', at
configure time, and then set OBJECTS_DIR, MOC_DIR, etc to include this
hard-coded default exclusive build directory. We then had to run a post-
process step where we replaced the 'debug' part with the current actual
exclusive build pass, eg 'release', resulting in long-standing bugs such
as QTBUG-491 where we end up replacing parts of the build output dirs
that were not part of the original exclusive build directory.
We now set the OBJECTS_DIR, MOC_DIR, etc defaults in configure like
before, but they do not include any exclusive-build information. The
exclusive build directory is handled as a separate step in default_post
where we adjust all entries in QMAKE_DIR_REPLACE to be exclusive
directories.
For backwards compatibility the new exclusive build behavior is only
enabled for variables named by QMAKE_DIR_REPLACE_SANE, which for Qt
itself applies globally to everything but DESTDIR, and for libs and
tools also applies to DESTDIR. The reason for leaving out DESTDIR in
the general case is because many tests and examples assume the old
behavior for DESTDIR. A side effect of including all the other
variables for Qt libs and tools is that the PCH output dir will be
uniformly set, which has been an issue on Windows in the past.
The addExclusiveBuilds function now takes two or more arguments,
each argument being the key for an exclusive build, which can be
customized eg. using $$key.{name,target,dir_affix}. Passing more
than two arguments results in three/four/etc-way exclusive builds,
eg debug/release/profile. Exclusive builds can also be combined, eg
static/shared + debug/release by making two calls to the function.
We also handle individual targets of combined exclusive builds,
eg static/shared + debug/release, meaning it is possible to run
'make debug' to build both static-debug and shared-debug.
Task-number: QTBUG-491
Change-Id: I02841dbbd065ac07d413dfb45cfcfe4c013674ac
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Avoid need to modify qnx.pro in src/plugins/platforms/qnx to
build with imf support. By default detects if necessary headers
and libraries are available. Can also be explicitly requested or
disabled with -imf and -no-imf options.
Change-Id: I3f9780fc189a33e4c93fb4f950111121f8e947c3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Status for LIBUDEV printed again in the configure output under 'udev ....'
Change-Id: I3e0beca4c6de315dc2dfbdc24d83f4d9cd2b8856
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Nothing in qtbase uses gstreamer, so this is just a red herring.
Change-Id: I93fb20a70928d84fed8f33ca4c5df38779928f1a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
apparently some awks need the regexp delimiters to be escaped even
within a character list.
Change-Id: I74a77022e134cafa269960c5c88a9a88589f1b95
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
but this time without reshuffling it. it's actually easy with awk.
this makes the resulting qconfig.pri cleaner (and thus easier to debug).
and configure needs a few millisecs less to finish. ^^
QMAKE_DEFAULT_INCDIRS doesn't appear to contain dupes to start with.
Change-Id: I9eed2cf853cd15d0d24a885b1c3d69f22ffafb36
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
the consumers of these variables use the strings for naive text-based
"subtraction", which of course doesn't work particularly well when the
paths contain "../", "./", and trailing slashes.
Task-number: QTBUG-33714
Change-Id: I893c90e6f5c7cf18c9e6cb1e5be825a16509a2a4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Don't discard stdout, it might contain important information. For
example, if qmake crashes, the segfault or similar notification comes
to stdout.
Change-Id: I53def75f37f134544922cf01b4f2ba7c903351cb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The regular expression does not parse correctly when a device option value
contains the character '=' (e.g. QMAKE_CFLAGS="-D_FILE_OFFSET_BITS=64").
In order to break string at the first equal sign and to simplify code,
use "cut" command as in other places in configure script.
Task-number: QTBUG-33584
Change-Id: I05b474d2ba6bff84c1e40d00475963bab36d94b6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This module doesn't make much sense for iOS.
Change-Id: Iadcf3006e1e2bdd97c460e836e91717856cb118c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
These modules don't build for iOS or don't have a backend yet
Also organizing the list a bit while we are it.
Change-Id: Ic72e897325c9478f66af8e8f879fe6342eb327dc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Added QXcbSessionManager to the Xcb plugin.
QXcbSessionManager inherits from QPlatformSessionManager, it's a port of
QSessionManager as it is in Qt 4.8.
Minor changes also in QPlatformSessionManager and QGuiApplication to
hook it up.
Task-number: QTBUG-28228
Task-number: QTBUG-30011
Task-number: QTBUG-33033
Change-Id: I50b33d05a1e32c5278dea339f693713acc870a70
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
The 4.7 version of the toolchain in the NDK has been
obsoleted by the introduction of version 4.8. The default
can still be overridden if necessary.
Change-Id: I042ded92e50dc5ebc4d54ffccc2e6856fc3edba0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The XCB port is still incomplete and needs Xlib in several places.
The configure script should reflect that and make sure Xlib is present.
Change-Id: I6d81ea6cacef56084cf7ccfbcf908d597aae918f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The XCB platform plugin is the only one that requires Xrender.
Change-Id: Iac2efa31b4b51e38305ee5f635fe38b75c7752de
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
this adds the possibility to put the actual qt installation outside the
sysroot it is configured for. this makes it possible to install an
x-built qt without "polluting" the sysroot, which makes it possible to
have read-only sysroots, and multiple qt builds for one sysroot.
-prefix is the location within the sysroot as seen by the target itself,
and gets "burned" into QLibraryInfo in QtCore.
-extprefix is the location in the host file system and gets "burned"
into QLibraryInfo in qmake. if it is not specified, it defaults to the
sysrootified prefix, which is the previous behavior.
Task-number: QTBUG-26680
Change-Id: Ia43833c4e27733159afeb8c8b9b2d981378d0cd1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
well, not really - qt_parts.prf will still create one, but it will be
empty.
apart from being cleaner, this now finally makes it possible to load an
unconfigured qt source tree into qtcreator without random parts of the
tree being missing from the project explorer.
Change-Id: Ida7ee77ecb450af05bfa66106caf2067b02f1a7f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
To instrument a Qt application or library with the gcov coverage
tool, do `CONFIG+=gcov' in the application .pro file.
To instrument Qt itself with gcov, use the `-gcov' configure
option.
Change-Id: If24e91d95318609b0df1a76ed6d679bd92bcaab2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
the -l* fallback is for adding libraries. it obviously makes no sense in
its negated form.
Task-number: QTBUG-32550
Change-Id: I9f3af9a2fc059ba39987d4b197ed4778cc7f35b6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
On systems where xkbcommon >= 0.2.0 the output should be
xkbcommon .............. yes (system library)
instead of
xkbcommon .............. yes
Change-Id: I5807946e61814d414a68a15ad96c91f25c9482ee
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Instead the module decides now itself whether it supports iOS or not, because
soon it will enable itself :)
Change-Id: I4802441f0a01ed62966a7a0e66f5a8ccfe843cb8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
the built host tool may need to know what the target architecture is,
e.g. mkv8snapshot does.
Change-Id: Ie5b1f6a07fa082d212e7c5b54289de49fd74dbcf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
because of popular confusion.
the packaging scripts now need to use -no-compile-examples explicitly.
Task-number: QTBUG-32449
Change-Id: Iecab1f345afe21e540204fe69a2292ef932cbb61
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
QtPlatformSupport fails to build if EGL support is enabled but OpenGL
isn't. It tries to compile eglconvenience, but qplatformopenglcontext.h
is empty (#ifndef QT_NO_OPENGL).
It makes no sense to have EGL with no OpenGL ES, so make sure we don't
try it.
The current test to disable EGL if OpenGL desktop is active is upside
down. With -opengl desktop -no-egl, it would complain that EGL support
was requested.
Task-number: QTBUG-28763
Change-Id: I80c780ec78181f3fa85f43e41be21d1217d76610
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The $AWK variable already contains the best awk version
available. Possible values for this variable are: gawk, nawk or
awk.
Using just awk fails on Solaris with:
user@localhost:~/qtbase$ ./configure -platform solaris-g++
awk: syntax error near line 4
awk: bailing out near line 4
This is the Qt Open Source Edition.
Change-Id: I02a17915e8b27a5ce7e831a1225872cf460b3a6b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The 'local' keyword doesn't exist in Solaris' bourne shell as a
reserved word.
Change-Id: I3270c74f79842ee10481a40a9f82d9fb74aff2e5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
shifts the makefile generation one directory level up.
this allows the top-level configure to leave the makefile creation
entirely to the qtbase configure.
this is not very clean modularization-wise, but consistent with -skip.
Change-Id: I7ee2d2f29f2e6619d61fe9b55faa0bacdf3c44c1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
the option the user most likely meant is called -nomake.
Task-number: QTBUG-21778
Change-Id: I6d8c4d5a984c929804f49ffc2ac75f6945f76e81
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
not quoting the variable references allows the shell to word-split the
contents and thus convert the embedded linebreaks into spaces.
Change-Id: Id834f02d7a501fb6fe48b45f409f599a8b70b7ed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ray Donnelly <mingw.android@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
the installation has been moved to the qtbase top-level project a long
time ago.
Change-Id: I25f1658d1a6544da4bdaa5be6b19f9076c19b7f9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
instead, use the files directly from the source dir.
Change-Id: I03b728c66de6e03cade6dc153dcc78cea8e3f606
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
instead, teach qmake to use the mkspecs dir from the source dir as well.
Change-Id: I9edac11f8997fcb0594d0a67419d4733dd4ed86b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Make it be one big AWK script instead of a ton of smaller
processes. Also handle the defaults inside the AWK script for
simplicity.
Since the output is a qmake variable, we do not need to surround with
quotes strings that don't contain spaces.
Also, use a tee trick to print the verbose output: we get the actual
output from awk.
Change-Id: I4a48a917c988a6b03d2c3b6990765301287713ef
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
the logic in the configures was even trying to express that, only that
nowadays we always ship syncqt, so the tests were kinda pointless.
this frees us from the perl dependency for non-developer builds of
packaged modules (except for webkit, which needs almost every scripting
language on earth anyway).
obviously, this requires that the packaging scripts run syncqt in the
source dir before tarring up the sources. note that for repositories
other than qtbase, the -version argument needs to be passed to syncqt.
Task-number: QTBUG-29465
Change-Id: Ic929ab17a5de4b30fbf48b3aa9bfa3b4d2ef37d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
this avoids that syncqt needs to forward to a yet unexisting file (which
will have a yet unknown location, when syncqt is run at packaging time
already).
the %inject_headers syncqt config variable remains, so it can be told
not to purge "foreign" files.
Change-Id: I127ff6e0b7d5702fb0acaee9a5b7940b482d3608
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
the code makes no sense, and was added with the QNX port without comment.
there is already a detection a few lines up.
Change-Id: I18ec18604c37c7c42f2649a658dd22324d481dd3
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
this overrides the magic that makes examples only install their sources
in production builds.
packagers may want to force the build of the examples, so they can
package them up for demo purposes.
this is actually why we formerly had the split between demos and
examples ...
Task-number: QTBUG-30788
Change-Id: I5633f69404c5aa6846f5496e8f161a273a7a7da3
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This is the easy fix: looking at what is supported by the NDK. If people
have weird setups, then they have to specify -android-ndk-host. We do
actually detect the host architecture later, but using that would be
a much bigger (and riskier) change.
Task-number: QTBUG-31275
Change-Id: I18db878031baa2e1ee2fa4beff364d58d8bd3c7a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
It's not needed, and when $outpath/lib doesn't already exist
(when shadow-building for example), $outpath/lib ends up being
a copy of libgnustl_shared.so, when it really must be a folder.
Change-Id: Iaf3af6f4183090137043549cb8d9899c2bc92f24
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
xcrun occasionally prompts for a license or outputs errors which
results in:
configure: line 2488: [: : integer expression expected
Check the output and bail out on error.
Change-Id: Ic1ae62b5f19cf87365c38901e98d6b385cdb39a4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
instead, rename it to syncqt.pl and rely on qtPrepareTool()'s new
ability to correctly invoke it as a perl script even under windows.
the wrappers themselves have been trivial at this point, so there is no
added value in keeping them, either.
Change-Id: I77cf65edbcfaa48ed1900defe940d4eb4b82d5b9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
... and introduce -hostlibdir configure option for symmetry.
the libraries built for the host have no business in the target prefix.
in principle this code would even support dynamically linked host
libraries, but that's currently unused.
Task-number: QTBUG-30591
Change-Id: I8e600fa4911a020fb0e87fbf7ef2f35647c7c4d5
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Ivan Romanov <drizt@land.ru>
MSYS bash (and other msys-compiled executables) perform path
transformation much like Cygwin. This causes syncqt path
substitution to not work correctly, so use 'pwd -W' to get
the Windows version (though with forward slashes) of both
relpath and outpath.
Change-Id: I808e3ef9206ed5f5bd8b6879d12afe664e589e0c
Reviewed-by: Alvaro Burnett <alvaroburnett@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
... instead of scoping the defines in qconfig.h, which relied on the
Q_PROCESSOR_xxx defines and meant that we had to include qconfig.h
after qprocessordetection.h, which added a whole bunch of other
dependency issues.
We now let configure write QT_COMPILER_SUPPORTS_xxx to qconfig.h as
before, without any scoping, and then undefine the ones that don't
apply for the given processor. This means we need to include
qprocessordetection.h before qcompilerdetection.h in qglobal.h,
but the former does not depend on the latter, so this should be
fine.
Change-Id: If00c00d405463e9626fa0f7f5e6b17f68778904f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
It makes more sense to keep this workaround header together with the other
libxkbcommon files for a better access point since it's used by several *.pro
files.
Change-Id: I63d4eb58f6e7f3852834e41c4b6e058a2c962233
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
1) -qt-xcb
a) Use xkb from the 3rd party libs. As it is done for the other xcb
dependencies when qt configure with -qt-xcb.
2) -system-xcb (default)
a) If xkb found then use xkb from the system. (Currenly xkb is not
enabled by default when configuring libxcb library).
b) If xkb can't be found on the system then keyboard state will be
updated from X11 core events.
Change-Id: I7c3dbce6daa2cec52067cd5af80f19040233a0db
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
This library is required by the XCB platform plugin. As we depend on
very recent version of this library and it might not be available
in base repositories of distributions, users can use -qt-xkbcommom
switch to build Qt with the bundled version.
Change-Id: I0ed2a5cc2f1df98b0e7cc926cabfa69818674e08
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
The configure script does not actually produce a "confclean" make target.
Task-number: QTBUG-27735
Change-Id: Ia0f9e33e50c35cc6bb2941853e518a40fc9edaee
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The warning is more likely to be seen if it's closer to the end of the
output.
Also report whether we found xkbcommon in the main output. Note that
xkbcommon is used by Wayland too, so it's not dependent on QPA or on
the XCB backend.
Change-Id: I143327eea4e17fa06bc7c24c677ae0bd00e65711
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Keep options sorted and use indentation to group together related
options (QPA backends, image formats and SQL drivers).
Change-Id: I97d330a13a4daa4567ff741dc26e11f458ae7f53
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Neither /dev/null nor NUL work with Qt on Windows. For now, use
an empty file for the cases where qmake is used with /dev/null.
I filed a bug for this:
https://bugreports.qt-project.org/browse/QTBUG-30562
Change-Id: If5351214ae5a0ebe50ae46b155c327ca0dc59f98
Reviewed-by: Alvaro Burnett <alvaroburnett@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
A gap after option name is needed to select it with double-click.
Also I added padding periods for -testcocoon because it has no them before.
Task-number: QTBUG-30589
Change-Id: Ib5b970f9b17cad43609fbc53dd05a995aaf29b45
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
For now there's only one architecture per host/target, but
this will change once we start detecting the CPU features
for both device and simulator on iOS.
For convenience we set QT_CPU_FEATURES to the resolved
value of the current architecture, so that simd.prf still
can use QT_CPU_FEATURES directly.
Change-Id: I28e8b339a5c30a630e276165254dba09a3da6940
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
So that the user doesn't have to pass -no-pkg-config and -nomake, when
we already know that those flags are needed and that the build will break
without them.
Change-Id: Ic07e02bc1800f177cf09f704104c1a76bfc50aa2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
QT_CPU_FEATURES is internal and only used by simd.prf, which is
also internal. This matches the available CPU features which are
detected using config tests and written to CONFIG in qmodule.pri.
Change-Id: I8eb35448e2954a54c228d3617f29afc0283a7db5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
We don't need it. Let linux-g++ be the default on all Linux builds,
period.
Task-number: QTBUG-30590
Change-Id: I26c73bf4f054684763b64ef5651b3488363ea7a1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The default lib and include dirs are resolved using the target
compiler and with a sysroot, so they are not relevant for host
builds.
Change-Id: Iceb2eb865d0732b9a6f5896ad126200ae8e8a04e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
We now have host_build to distinguish the two, and we load
qconfig.pri from both the host and the target mkspec, with
host_build set correctly.
Change-Id: I8b8b80d5487d10bb1d4585d27d10300f609a7775
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
We depend on Xcode for building Qt itself and user application on Mac OS.
The user may have an Xcode install that is not set up properly, in which
case we would fail compilation in mysterious ways. Instead we try to
detect misconfigured or missing Xcode installs as early as possible.
We try to detect if an Xcode install has not been chosen yet, and
if the user has not accepted the Xcode license agreement. We need to
do these checks both in configure, as early as possible, and in mkspecs
on Mac OS, as we need to error out if the user tries to build an app
with the Qt SDK, but with a broken Xcode install.
Change-Id: I4e3a11077a61dc5d4ee2c686d01044a9bb2c1c79
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
We always use the xcodebuild/xcrun/xcode-select binaries in /usr/bin,
as these will dispatch to the right binary based on what Xcode version
has been chosen using xcode-select -switch. This fixes an issue where
a tool was in the path from another Xcode installation. We can rely on
the tools as they are present on a clean Mac OS install.
Change-Id: I1d3cc1e92604f9be6d6f14639cb6322234edd696
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This means we have to bump the deployment target to Lion (10.7), as the
LLVM 'libc++' C++ standard library does not support Snow Leopard (10.6).
For iOS the deployment target has to be bumped from 4.3 to 5.0, but we
don't enable C++11 by default yet as it's not tested enough on iOS.
Users who wish to deploy to 10.6 need to build their own Qt,
passing -no-c++11 to configure.
Change-Id: I7b5d20ab002db889d1091a4b7ff600f62caa7f06
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
We used to disable NEON completely, as the iOS toolchain does not
handle the GAS syntax of the pixman draw-helpers. But we can limit
the disabling to just the draw-helpers, which means we get NEON
optimization of eg. QImage and QString.
Change-Id: If350b06ce521cca8b24468be5a168ff21e9e7124
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
We're trying to parse GCC output, so let's make sure that they are in
English. I've seen some reports that "search starts here" was
translated to some locales.
Change-Id: If09b1f45607f65d054496db65418e413b8aa8d48
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
the de-duplication has the side effect of sorting, which is a very bad
idea: x-compilers tend to append the host library paths at the end, and
we really want them to stay at the end.
and the lists should have no duplicates to start with. should we find a
compiler which breaks this assumption, we can use qmake's $$unique()
strategically.
Change-Id: I01560e3c33736c2dfffdb05d5c960c492439c946
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
evdev support in eglfs is now guarded by QT_NO_EVDEV, so this
check is no longer required. This allows eglfs + tslib to be
a supported combination.
This reverts commit a95e396a83.
Change-Id: Icf7c15121b7eca1131d412b05b956cd5d7f189ae
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
the dlls being in lib/ is kind of an accident (a side effect of how
qmake builds them). in fact, the libdir should be entirely irrelevant
for windows deployments (and indeed, the SDK is delivered with dlls only
in bin/).
Change-Id: If47e72b24774721a61ba63847f6132f88ff110be
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Otherwise, we end up with an empty QT_LFLAGS_SQLITE and the plugin
won't link.
Change-Id: I026f60bf9cd075218dbe2888fbb7fc82782b27ca
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
I don't need that warning on my Mac.
Change-Id: I18c06135ba88a037103fdda0982976f4a87c553e
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Since c45595d648, we use the toolchain
based on the XCode SDK, not the one in $PATH. Turns out that the Clang
that comes bundled with XCode 4.6 reports its version as
Apple LLVM version 4.2 (clang-425.0.27) (based on LLVM 3.2svn)
Instead of "Apple clang". So we need to match for (clang|LLVM).
Extended regular expressions (with -E) were necessary because the sed
that comes with Mac OS X is apparently broken and will not work with
\(clang\|LLVM\). GNU sed accepts -E as an alias for -r, meaning
extended regexps.
Change-Id: I5a15de30721216b086c3d39a080cc6496c503985
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
There is no logic in configure to detect compiler capabilities
in the host- and cross-compilers separately, so if the
cross-compiler has more capabilities than the host compiler, the
compilation will break. This was the case for c++11 on Mac, which
is supported by the Android cross-compiler but not by default on
the host. There is a fix planned to enable c++11 on Mac, so
this is a temporary patch to work around the problem by disabling
c++11 explicitly until it has been fixed.
Change-Id: I2048dc7f63991c97b11b3980ac91292d2c9b7ce4
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
this is cleaner than having it parse qmake project files.
the only remaining built-in version extraction is the fallback to
qglobal.h needed for bootstrapping.
as a "side effect", this fixes the build of modules with mismatched
versions centralized in .qmake.conf, as this was simply not handled so
far.
the -mkspecsdir syncqt option goes away, as there is no use case for it
any more.
Task-number: QTBUG-29838
Change-Id: I6912a38f0e93a26bc267a9e3d738506fd3ad431b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
It is needed for implementing the shortcut functionality in the xcb platform
plugin and for the compose key input context plugin.
As announced on the wayland-devel mailing list - the libxkbcommon 0.2.0 is
the first grown-up release of the library (Tue Oct 23, 2012). [1]
[1] http://lists.freedesktop.org/archives/wayland-devel/2012-October/005976.html
Change-Id: Id5d45e1a5afe49cf9ec5312318bd173f5a067f62
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
it's weird that the output from the two variants is differing, and that
after building qmake it appears to hang.
Change-Id: I2ac3ace11e958effe787b13e1300eb1d2839ae98
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
7de9d3709 broke them, because suddenly every -l* switch was parsed as a
library. fix this by re-arranging how the options are parsed.
this obsoletes d7ab351cdd as well, by being more generic.
fwiw, this syntax is stupid to start with, because all unknown -l*
options are implicitly libraries and create confusing configure
failures. emulating the compiler/linker command lines isn't such a great
idea ...
Task-number: QTBUG-29174
Change-Id: I11bac7a6f458664dff8cbe57ed9cd33a08d5e9ec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
note that the value is written verbatim to the qmake file, so additional
quoting may be required on the command line.
Task-number: QTBUG-30102
Change-Id: I02ca9a44fae82b6932982e6385508b8a304cc1e7
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Since we use the Clang from Xcode's toolchain now, the OS version is
not relevant.
In practice this means we will use clang for Xcode 4.2 and up, which
means it's possible to use clang also on Mac OS 10.6 (Snow Leopard),
where Xcode 4.3 is not available.
Change-Id: I9817e237cdd82d10b93aaaa3c90e35767cdca751
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
For Mac OS X we currently specify build tools without an absolute path,
which means we end up using the ones in /usr/bin. This is wrong, we
should be using the tools from the toolchain of the chosen SDK.
For iOS we do specify an absolute path, by resolving the toolchain
path in the iOS makespecs.
To solve the situation on Mac OS X, we move the logic of resolving the
toolchain path to sdk.prf, and share it between OSX and iOS.
For configure we need to duplicate some of the logic from sdk.prf, as
configure pulls out QMAKE_CC and QMAKE_CXX for running some initial
tests and building qmake. The new macSDKify function also solves
the issue of missing sysroot and deployment version in the flags.
Change-Id: Ib1d239c9904cf3ccee5214b313cf6205869a1462
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Is needed now that we write QMAKE_MAC_SDK with a !host_build scope
in qdevice.pri.
Change-Id: I298cc660b496460190337c175aef684a5522d5cb
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
qdevice.pri is not target/host specific yet, so we were loading
it and overriding QMAKE_MAC_SDK to iphonesimulator eg., even
for host tools such as moc.
Change-Id: I10277e60e1da84dda239e32a6f19b40dc48f084a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Version 3.1, shipped with Xcode 4.3, has the same issues compiling Qt's
AVX code.
Change-Id: Icb778fbd9d61f01aa84365661af050c9442d4d7f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Based on the Necessitas project by Bogdan Vatra.
Contributors to the Qt5 project:
BogDan Vatra <bogdan@kde.org>
Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
hjk <hjk121@nokiamail.com>
Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Paul Olav Tvete <paul.tvete@digia.com>
Robin Burchell <robin+qt@viroteck.net>
Samuel Rødal <samuel.rodal@digia.com>
Yoann Lopes <yoann.lopes@digia.com>
The full history of the Qt5 port can be found in refs/old-heads/android,
SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d
Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
If the command is quoted, it can contain anything but quotes (we do not
support escaped quotes, so single quotes have to be used). If the
command is unquoted we look for the first closing parenthesis. We used
to do this using .*?, but the greedy modifier '?' didn't seem to work,
so we now use an inverse character set.
Change-Id: I40660ce7aef6a6b6d480292d28da1b079bb161da
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Instead of setting it explicitly to 10.6. Before 736e4258a this was
not a problem, as we were hard-coding the version flags as part of
the C/CXX_FLAGS for each makespec, so getQMakeConf would pick
them up automatically. When 736e4258a introduced sdk.prf as the
place to resolve these flags in a single place, it broke the
qmake build for macx-clang-libc++, as we were then falling
back to the 10.6 target hard-coded in configure.
We fix this by duplicating some of the logic from sdk.prf, by
pulling out the QMAKE_MACOSX_DEPLOYMENT_TARGET variable
and adding to the C/CXX_FLAGS.
Change-Id: I04afc7525031727c2504588c70dd3f7892cc8e42
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is enabled only for -developer-builds and only for certain
compiler-version combinations that are in a whitelist.
It also requires each library, plugin or tool to declare whether it is
supposedly clean of warnings. When most targets are clean, we can
consider inverting.
Change-Id: I17b5c4e45aee5078f9788e846a45d619c144095a
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Should be applied to Qt modules. Not interesting for third party
users.
Change-Id: I8fce821af397e3ace011a426c762319f6d30004f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
The dbus_watch_get_fd function was deprecated in D-Bus 1.2 (technically,
in 1.1.1, but that was a development release) because it had a bad name.
Sockets on Windows have file descriptors, but they are not shared from
the same pool as the CRT library's file descriptors.
This commit raises the minimum required version of D-Bus to 1.2. This is
the first requirement raise since this code was introduced in 2006. For
some reason, the D-Bus 1.2.0 release seems to be missing, but 1.2.1 was
released on 04-Apr-2008. That's ancient enough for all distributions
Qt 5 is supposed to run on.
Change-Id: Ia6bbc137fffbb27c77290ed3e32d3380f0ae3c54
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
The LLVM version in Xcode 4.5 and below does not handle the GNU
assembler syntax in the pixman assembly file.
A possible alternative workaround is to include a preprocessed assembly
file using https://github.com/hollylee/gas-preprocessor.
Change-Id: Id95add669c60d3a7da823e5975afdd1f88f71977
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Clarify in the configure --help documentation that the text between
parentheses in the -make option indicates the default parts, not all
the parts that can be chosen from.
Task-number: QTBUG-28826
Change-Id: Iac9cf294b8054823ecfaf262aeafab7779ce4c8b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Must use ; as the path delimiter instead of :
Change-Id: I549e1652ef5bbae09c8fddec3e83ac9f52cec3a4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
this makes it possible to exclude modules from the build without moving
their sources out of the way. substitutes the much-requested -no-webkit.
not adding a symmetrical option, as it is relatively pointless:
to build only specific "leaf" modules, you only need to run
"make module-qt<module> ..." once you configured. and removing
particular "intermediate" modules is achieved with this very option.
Task-number: QTBUG-26697
Change-Id: I25cebdbd029885a2c653c4cde696f9bb78691768
Reviewed-by: Tuukka Turunen <tuukka.turunen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Replace the old sed / template @FOO@ method with echo.
Enable MSYS bash to build qmake.exe
Use qmake/Makefile.unix for all win32-g++ builds.
Change-Id: I6e27d69b28d27131838bbbb3a4ee5a08b470f31b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Instead of setting -isysroot in both arch.test, compile.test, the various
mkspecs, and sdk.prf, we now propgate the chosen SDK as the qmake
variable QMAKE_MAC_SDK, which is then handled exclusivly in sdk.prf.
The QMAKE_MAC_SDK variable, and -sdk argument to configure, is expected
to be of the short-form name, eg macosx or iphoneos, not a full path, as
that's what Xcode also expects. We take care of translating that into
a full path for -isysroot/-syslibroot in sdk.prf, using xcodebuild as
a helper.
Change-Id: I281655b2fa5180c6e78ffdce36824e4a91447570
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>