Dwarf-2 is treated as deprecated (at best) by llvm, and does not support
a lot of C++ language features. Most notably, it does not support
namespaces and template parameters. By not specifying the dwarf version,
the compiler can decide which version to use.
Change-Id: Ic32f9101c4db0f06a8ace8f5e04af9236d01598e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Added a define to suppress MSVC warning “C4996:
This function or variable may be unsafe.”
If the code is really "unsafe" then it is unsafe on
other platforms as well; so fixing these warnings just
for MSVC builds, would clutter the code and wouldn't help
in fixing issues that might exist on other platforms.
Using the same functions across all supported platforms
keeps the code clean and helps in writing code that is
safe across all platforms.
Change-Id: I470072eda4f8174bb911567ef3f061a3582ba449
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
the newly added mac examples use it, so it needs to be grounded.
a more generic solution would be clearing out QMAKE_EXTRA_COMPILERS, but
many prf files will be loaded after us, possibly nullifying our effort.
Task-number: QTBUG-35680
Change-Id: I3aba7595898baac14bd41e9fae2ff24507187c6a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Right now /dev/fb0 is hardcoded. This is not ideal. Therefore
QT_QPA_EGLFS_FB is introduced. This environment variable can be set to
a different framebuffer device. Once it is set, eglfs will use the
specific device. This is similar to linuxfb's fb=... plugin parameter.
The actual behavior depends on the board-specific implementations.
For now only iMX6 has real support. It extracts the index from the
device name as bind the EGL display to the corresponding framebuffer
using the vendor-specific fbGetDisplayByIndex(). Other hooks can
follow suit later on.
With this patch eglfs is at least on par with linuxfb, meaning that,
if the board supports it, different apps can run on different screens.
Task-number: QTBUG-36113
Change-Id: Ia3c88bd06e108bc668433e3c5c3fce34a5a0e73d
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
This is a partial revert of 39e04b0222.
The original change moved the special make install target path logic
into the logic for the app template to make it possible to remove the
condition that excluded builds inside the Qt directory. This was
to make it possible to build examples in the Qt directory for Android
without moving them. However, this broke user library projects,
specifically when they were part of a subdirs project and should
have been automatically installed into the Android package. This
patch brings back the logic but only enables it for library projects,
meaning that the only examples inside Qt which cannot be built
correctly are library projects (which didn't work anyway).
[ChangeLog][Android] Fixed regression in "make install" on
library projects on Android so they can be used inside subdirs
projects again.
Task-number: QTBUG-34781
Change-Id: Iabf53ed68845b2ddd4ae66656e1372c96185660e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Changed MIPS DSP portion of the mkspecs/features/simd.prf file in order
to fix the corrupted build system for MIPS platforms.
List of the additionally optimized functions
from file src/gui/painting/qdrawhelper.cpp:
- qt_blend_rgb16_on_rgb16
- qt_fetchUntransformed_888
- qt_fetchUntransformed_444
- qt_fetchUntransformed_argb8565
from file src/gui/image/qimage.cpp:
- convert_ARGB_to_ARGB_PM_inplace
from file src/corelib/qstring.cpp:
- ucstrncmp
- toLatin1_helper
- fromLatin1_helper
Change-Id: I5c47a69784917eee29a8dbd2718828a390b27c93
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
while the meaning of the error message is actually pretty obvious from
the context, some people apparently expect an equivalence with their
package manager's terminology.
Change-Id: Ie7a31887bf5086e5d1d7de7e339a6d08571a4d01
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Processing the object file with ld strips away debug information for
the main() function, resulting in the debugger not being able to
break on specific lines of the function.
It also causes issues when externing sybols in main's object file.
We revert back to the approach of using the strings in-line in the
object file (which is why we keep the name the same length, 'qtmn').
Task-number: QTBUG-35553
Change-Id: I8b0acee36f48ecfefa2e4fd008a842365713d985
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
QtWayland uses QtWaylandScanner to generate c++ files which will be
subclassed. This works ok in QtCompositor as it implements the pimple
pattern. However, QtWayland has to expose a library called
QtWaylandClient as a way to create specialized wayland plugins. These
classes don't promise an ABI, and has limited API guarantees, so they
subclass the classes generated by the QtWaylandScanner directly. For
this library to be possible, we have to install the generated files.
Also, it should be possible to use the private API, and that's not
possible without the generated files.
Change-Id: Id55200fe23652587390dabf84ca846e4f39cf70e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
libc++ is an alternative stdlib implementation for clang.
See http://libcxx.llvm.org/ for further details.
The library is enabled by adding -stdlib=libc++ to the command line.
Change-Id: I07d09cbb69b59b579d3754c99d717d2ac6d44d67
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Otherwise Xcode might choose to use libc++, eg when the deployment target
is iOS7, and this doesn't work when Qt itself was built using libstdc++.
Change-Id: I0b0f36666ed318be9aae87ebaeb0d344109566ac
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
it's bogus in the first place that the meta files contain windows paths,
but straightening that out is a prohibitive effort. so instead generate
additional s/// commands which take care of these paths.
fwiw, the generated s///i command is a gnu extension. but as we are
doing this on windows only where we are using our built-in sed command
anyway, this should be fine.
Task-number: QTBUG-33794
Change-Id: I46fcc598db12816ee56b5371ab184f6277eb3a22
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Generating the dSYM file takes a long time due to our relatively large
static libraries, and is not really useful for a debug build where you
are likely to have the object files and Qt libraries available on your
host system for debugging anyways.
Change-Id: Ie7549975f271de8c56ca04bd28b29e6ed65f16cb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
that means further detaching the generation and installation of debug
info from the thing calling itself A Debug Build.
Task-number: QTBUG-32412
Change-Id: I4d79d1ae4806c8e4a2d6a7ccd030fb88385dd7d4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
it's very unlikely that these artifacts will need rebuilding during a
debugging session (these pdbs are meant to support crash dump analysis).
Change-Id: Ia8138f9298355b402d8dd3f042f85b669693de64
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Otherwise the application will not scale to the full resolution of
the device. We copy the image into the Xcode project, since it's
internal to our build system and not meant as a template to be
edited by the user.
For 5.3 we need to provide a proper qmake/qbs mechanism to handle
launch images.
Task-number: QTBUG-31431
Change-Id: Ied0b2843a78c5ea865750e0404418ced7ad27082
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
As of CMake 3.0, the output of `cmake --version` now has a second line
showing that it is maintained by Kitware. Change the version parsing to
look only at the first line of output.
Change-Id: I347de4c376e0bde25a43a38d59587d9b63f6b43a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This is inappropriate on Windows, and breaks non-prefix builds there.
This is only needed when we calculate a relative path from a sysroot,
so only add it in that case.
Task-number: QTBUG-34880
Change-Id: I0e3b3d977a7b56649e4ba0077ac574aabf1dc915
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
There is no real printing support though, it just prepares
the land for bringing printing support for API-19+.
Change-Id: Iabf78499f8fe1e4d2527e339cee5746acb8f3b3f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
!build_all is a sufficient condition for bundling headers in both debug
and release configurations, as it means that we will likely make only
one of the builds, and that needs to be self-contained.
Task-number: QTBUG-34575
Change-Id: I1a19e4b619eeff207cfbfd50d3b761053aeaa667
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
as this new cache category comes without side effects, we can
unconditionally create a cache whereever we are. this allows us to be
performant without explicit user action.
Task-number: QTBUG-31340
Change-Id: I6b88b20b61e8351aa8cbf94ad3eec65adac6e1d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Filter out module QML import paths that point to
nonexistent file system paths.
Change-Id: I897ef50593eeb46c6c9eaec27313ec12e6113cb6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Some modules, such as Qt Multimedia, needs special permissions
to avoid getting exceptions at run-time. We should apply these
by default to the AndroidManifest.xml so that an application
using e.g. the camera will work out of the box.
Task-number: QTBUG-33953
Change-Id: Ibc1f086d249197b63e7ed1075ae7d54bdd1212f2
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
The qtAddModules functions resolves deps internally, but doesn't affect
the original QT and QT_PRIVATE variables. We need to pick up situations
such as the user adding QT += quick, which implies QT += qml through
the QtQuick module's dependecies.
Change-Id: I14411dbea3e4f7402be404073a3fe8f18dbb165f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
We need to add the correct suffix to the libs we add when
running qmlimportscanner. Otherwise we will always add
release versions of the libs instead of debug versions
when generating debug builds. This in turn will confuse the
xcode generator that will try to convert the libs in
LIBS to native Xcode build variables.
Change-Id: I4d9fab49ad9e644e9bfd06caf79fc084bde2a3b7
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
In most cases, _S_IFLNK isn't defined, but ensure that we still have a
QT_STAT_LNK that works, for example for use around archive files
(zip/tar) that can contain symlinks
Change-Id: I9881e524b79845ce6b474b9a86e5fb25aaa31820
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
this makes it possible to properly exclude entire subprojects based on the
availability of features, rather than stuffing every single source file
with #ifdefs.
the defines are aggregated from the -qconfig <profile>,
-no-feature-<foo> and some other configure flags.
usage:
load(qfeatures)
!contains(QT_DISABLED_FEATURES, textarea): SUBDIRS += textstuff
Task-number: QTBUG-28102
Change-Id: I83400632d64312fa4b907e1318dddfe27c432387
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Reviewed-by: Tasuku Suzuki <stasuku@gmail.com>
But still fall back to 'com.yourcompany', just like Xcode does for the
initial launch.
Change-Id: I89afadefafc254a0014aca197741d42a0199943e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
When building under Xcode we can limit the object files search to the
current SDK and debug/release configuration.
Change-Id: Ic405f13f46a594e3ed20d82ca6b84e7e67edebfc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
I had the -fPIE option in my personalised "linux-icc-optimised" spec,
so I never noticed it was missing in the standard one.
I have no idea when -rpath-link is necessary. It isn't for me.
Task-number: QTBUG-34425
Change-Id: I54b2fb8cda10b9197d81b5630b1d29b8c338d96a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Make already the creation of the generated cpp file depend on the
creation of the generated h file, which transitively ensures that
the cpp won't be compiled before the h is there.
Change-Id: Idd3aec8d72dac341e835a3d1ef8f2986dbc1ab9f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
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>
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>
Removes the need to pass ARCHS to xcodebuild for simulator builds.
Change-Id: If15e9d387c416c5c9f83c50f5903ae0cd517ff34
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>
Otherwise we won't pick up CONFIG+= changes on the command line or
from the project file.
Change-Id: I6f7e9380f971e6271de5659534e9565024fe041d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
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>
Before this patch, we would copy "$QTDIR/qml"
directly into the bundle as "qml". This would cause problems
if the user also tried to deploy qml files to a "qml" folder, or
if any other file in the bundle ended up with the name "qml" (which is the
case for QtDeclarative/tools/qml, where the executable is called "qml").
This patch will instead copy the contents of each import folder
into QMAKE_QML_BUNDLE_PATH, which will default to "qt_qml" on iOS
and "Resources/qt_qml" on OSX.
We also change the implementation to use a post script rather
then QMAKE_BUNDLE_DATA for two reasons:
1. Xcode does not like "copy build phases" to copy folders, only
files (You cannot even create such a phase from Xcode, although
it is possible to force it the way we create project.pbx. But
this was error prone)
2. We need to strip away unneeded files from the bundle, like
archives (which are linked in statically, not dlopened run-time).
Using rsync lets us copy and strip in one operation.
Change-Id: I7c2117f6cfbe11efdc272dff71adb0b1e619a5ff
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Synchronize .pdb file writing, otherwise parallel builds
will fail, when different compiler instances try to access
the same .pdb file.
See also
http://msdn.microsoft.com/en-us/library/vstudio/dn502518.aspx
Change-Id: I4998f10458d320fd98d633eded02d90bf25ed884
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
the module project files declare what plugins they need, as that is
necessary for automatic android deployment.
enable wider usage of this by making the information available from the
module .pri files.
caveat: the variable is called "types", but is in fact paths, so there
can be particular plugins named.
use this new facility to replace the egregious hard-coded list of
plugin-to-module mappings from create_cmake.
possible todo: automate populating DEPLOYMENT (for wince, and whatever
else).
Change-Id: Ibb9c07cfe2b0008905204cbeb81e9c8e2ae4dc69
Reviewed-by: Joerg Bornemann <joerg.bornemann@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>
This is needed to ensure that list(REMOVE_DUPLICATES) can work.
Change-Id: I3d992aa244fcdfbda7e3b48ce416e0ba5ffcde96
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
This is necessary so that list(REMOVE_DUPLICATES) works properly.
Change-Id: Id268637d76b1a8785c9ff0c6e09e9ad8a62bbfb6
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Allows project files or mkspecs to call qmake recursively using system()
with the right arguments, which we use to fix the ios default_post.prf.
Change-Id: I90d69e2b156bb0f0af1279188b11f81c84c24fb8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@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>