summaryrefslogtreecommitdiffstats
path: root/mkspecs
Commit message (Collapse)AuthorAgeFilesLines
* Restore behavior of using libEGL and libGLESv2 as default for angleOliver Wolff2017-05-117-11/+27
| | | | | | | | | | | | | | | | | As Qt applications using OpenGL are linked against these libs, merging them into QtANGLE by default (780105f9062dec350bbe2a6800c40db3e6382578) was a binary incompatible change. This change restores the default behavior to the one before given change. If the user wants the libraries to be merged, he can pass combined-angle-lib to configure. Task-number: QTBUG-60373 Change-Id: Iedbd3f2ce9284fdde924cfae8d915d6d5fef00db Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* winrt: Fix manifest dependencies for VS 2017Oliver Wolff2017-05-031-1/+3
| | | | | | | | | | | VS 2017 still uses vclibs version 14/140 and it also strictly requires the vclibs' publisher to be set in the manifest. As we only support VS 2015 and 2017 the condition for adding additional vclib dependency information can be dropped. Change-Id: I813a9ad976339e347fd8d9283d92282e86b2791b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Fix installation of shader files in qtquickcontrols in non-prefix buildsSimon Hausmann2017-05-021-4/+2
| | | | | | | | | Use the new qmake install command to copy files around, in order to avoid the '+' trap of the Windows copy command. Task-number: QTBUG-60214 Change-Id: I7f588dbbfcdd89b7e98dbef7757944ca856815aa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Add configure flag to optimize Qt for sizeAllan Sandfeld Jensen2017-04-295-5/+22
| | | | | | | | Adds default off configure flag to use compiler optimizations for size instead of the default speed/size trade-off. Change-Id: I36702064ef2cc743d2d03a386adf5cefd5371b6e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* don't call pkg-config with --libs-only-L and --libs-only-l at onceOswald Buddenhagen2017-04-281-1/+4
| | | | | | | | the options are mutually exclusive, with the last one winning. Task-number: QTBUG-60382 Change-Id: Ie6d888ac8be6b22b204fcad93c184477baa38965 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* always clear config.log after allOswald Buddenhagen2017-04-281-12/+9
| | | | | | | | | | | | | | delaying the logging setup until the cache use is determined (which depends on xspec determination) causes too much trouble. as already explained in 7ac15ab0f, there is a bit of a gray area when exactly the log should be cleared anyway. a more complete solution would cache the tests' output along with the results and re-log it (with an appropriate marker) upon re-use. Task-number: QTBUG-59565 Change-Id: I17d457598d885bceafd6505cad5ff074c4ace502 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Clean up mkspecs from old, unsupported and untested mkspecsThiago Macieira2017-04-2744-3725/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They have not been tested with Qt 5, not even once to make sure that the mkspec passes the sanity check. This removes for OSes: HP-UX (running on PA-RISC -- Itanium still supported) SGI IRIX SCO Unix Tru64 Unix Unixware And compilers: IBM xlC (Visual Age C++) HP aCC compiler (PA-RISC and Itanium) PGCC, cxx and kcc on Linux There were a couple more OSes detected in the configure script that were lacking even the mkspec. Those have also been removed. Of those, only hpuxi-acc and aix-xlc have been tested in the last 9 years, though only with Qt 4 and never tried with C++11 support. IRIX was last tested over 10 years ago and PA-RISC is definitely not supported due to its lack of atomic operations. Support for HP-UXi and AIX is now only possible with GCC (assuming GCC supports those). Support files for Oracle's Sun Studio compiler are left behind, but its state is unknown. Change-Id: I7814054a102a407d876ffffd14b69c796b97c972 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Undefine QT_RESTRICTED_CAST_FROM_ASCII for headersclean build stepTor Arne Vestbø2017-04-241-0/+1
| | | | | | | | | | | The module might add QT_RESTRICTED_CAST_FROM_ASCII to DEFINES to be able to use string literals under the assumption they are UTF8 without warnings from QT_ASCII_CAST_WARN, but this conflicts with QT_NO_CAST_FROM_ASCII which is added for the headersclean build step. Change-Id: Ic1d7b5415350477d751a6c15219d4f8feb816a3c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Don't add Qt5::<ModuleName>Private in CMake < 3.0Kai Pastor2017-04-231-1/+2
| | | | | | | | | | This change restores usability of Qt with older versions of CMake which do not provide a language feature used in the implementation of the new Qt5::<ModuleName>Private targets. Task-number: QTBUG-60229 Change-Id: I6a6a1b09be3edca200692250bb8f0d7f6a1b8f7a Reviewed-by: Stephen Kelly <steveire@gmail.com>
* winrt: Add arm mkspec for msvc 2017Oliver Wolff2017-04-212-0/+60
| | | | | | | | While a previous commit added the logic for handling arm from a qmake perspective, the responsible mkspec was forgotten. Change-Id: I5f36d411f2d2c22d8b048e0931da50d911e7e1b4 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Disable precompiled headers for small modulesThiago Macieira2017-04-201-5/+11
| | | | | | | | | | | | | Creating a precompiled header exclusively for a one- or two-file module is wasteful. The time that it takes to build the precompiled source is on the same order as a regular compilation, so enabling precompiled headers for those modules just makes the build slower. Also make it possible to override the precompiled header by just setting PRECOMPILED_HEADER to empty. Change-Id: I0e1a09998253489388abfffd14b5f221288c4826 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* MSVC: Enable standards-conforming modeThiago Macieira2017-04-201-1/+2
| | | | | | | | | | | Let's not allow any new code that uses non-conforming syntaxes. With GCC and like, we already use -std=c++11 instead of -std=gnu++11 for that very reason. Change-Id: I4a7dc1fe14154695b968fffd14aba9f8cea69c47 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix precompiled headers on Apple platforms, with multiple architecturesJake Petroules2017-04-142-4/+16
| | | | | | | | | | The original commit only added support for GCC and Clang, but not ICC. Amends 73331eeb Change-Id: Id7638cf1b538edb1008fb3aa10754c1f517a994f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Move Apple-specific -fapplication-extensions option to the mkspecThiago Macieira2017-04-122-4/+6
| | | | | | | The Intel compiler does not know about it. Change-Id: I523b0abacd5148b2bf08fffd14b4748c3b33c8fb Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Load android-specific target override in resolve_targetUlf Hermann2017-04-101-0/+2
| | | | | | | | | Otherwise, in separate_debug_info.prf, we try to process the original target, which is not what we actually build. Task-number: QTBUG-59779 Change-Id: I2b2d2e7b5f87041cc51075da7c3a5b690f94f1f3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Support different job counts also for ICC LTOThiago Macieira2017-04-071-1/+3
| | | | | | Change-Id: I27b55fdf514247549455fffd14b1cdbd2980d5d6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-04-065-0/+71
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp src/widgets/widgets/qtabbar.cpp Change-Id: Iaa9daee5f7a6490d56257a3824730a35751ceb05
| * Detect the (stated) C++ standard edition at build timeThiago Macieira2017-03-313-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The configure-time detection (cxx11default) isn't enough if the compiler can be changed. This is especially necessary if Qt is compiled with a compiler that defaults to >= C++11 (e.g., GCC 6) and then the user selects a compiler another compiler (e.g., Clang) via -spec option. In that case, we'd miss adding the -std=c++11 or -std=gnu++11 option to the command-line, causing the compilation to fail. As a nice side-effect, even moc without moc_predefs.h will now get the __cplusplus setting. Task-number: QTBUG-58321 Change-Id: I74966ed02f674a7295f8fffd14a8be35da9640e1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * Add new mkspec for cross-compiling Qt5 for AArch64Neils Nesse2017-03-312-0/+64
| | | | | | | | | | | | | | | | This mkspec provides default compiler settings for cross-compiling Qt5 for AArch64 Change-Id: I6318e150d7b48ad9c7364fce2a04ee49220a6b7e Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | Fix detection of F16C for the Intel compiler (again) and Visual StudioThiago Macieira2017-04-064-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Neither the Intel compiler nor Visual C++ have a dedicated switch to enable F16C support, like GCC and Clang do. So we used the AVX switch for that in commit 8241d51f7049d48912ce25fbd49ef4d22c58e340, as it was the closest, lowest denominator. That was incorrect and insufficient. The Intel compiler silently miscompiles the intrinsics with -xAVX, making calls to out-of-line functions like _mm_cvtps_ph, which don't exist. So we actually have to use AVX2 support to generate correct code. That might be a problem later, since Ivy Bridge supports F16C but not AVX2. Visual C++ is able to generate F16C code with just -arch:AVX. Either way, since there's no dedicated command-line switch, there's also no dedicated preprocessor macro. We're using __AVX2__ for both compilers, as that's a sufficient condition to indicate a processor that supports F16C. Change-Id: I27b55fdf514247549455fffd14b205b8d8b86da7 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Add -bigswitch on INTEGRITYKimmo Ollila2017-04-031-0/+2
| | | | | | | | | | | | | | Needed to increase switch case limit on armv7 Change-Id: I30104407f49f07cfe367de820827d120498c5fff Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | x86: Detect F16C with the Intel compiler tooThiago Macieira2017-04-023-0/+3
| | | | | | | | | | | | | | | | | | The .pro file requires the QMAKE_CFLAGS_F16C to be set to something. So set it to AVX, as the instructions require the VEX prefix anyway (ICC has no dedicated option for just F16C). Change-Id: I27b55fdf514247549455fffd14b171940afd35a2 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-274-8/+14
|\| | | | | | | Change-Id: Icdd71e9713725bda9c305e338f5c8b41a92ed8e8
| * Disable -Werror for QNX's compilerThiago Macieira2017-03-252-2/+2
| | | | | | | | | | | | | | | | | | | | The compiler is mostly GCC in disguise, but the libraries are not. Since the toolchain is not open, it's difficult to fix issues in it. Task-number: QTBUG-59671 Task-number: QTBUG-59672 Change-Id: Id92f4a61915b49ddaee6fffd14aea2639153f073 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * fix bootstrapped modules in framework builds, take 2Oswald Buddenhagen2017-03-223-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | the borrowing of headers always happens from "proper" modules which are actually built as frameworks if so requested. that means that even though the borrowing module itself never is a framework, it needs a framework path and include paths that point into frameworks. amends 20c7ab44. Change-Id: Ic582060dd179cc592e9be7792ff02cebdfabd772 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | move freebsd device spec validation to configureOswald Buddenhagen2017-03-221-2/+4
| | | | | | | | | | | | | | | | amends 72efb2e6 in line with e58eb3d6f. Change-Id: I67e68e43662df6d2571579a1fed3c0f23e9416cd Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Oleksandr Tymoshenko <gonzo@bluezbox.com>
* | System library fix for wayland-scannerPaul Olav Tvete2017-03-201-9/+18
| | | | | | | | | | | | | | | | | | | | | | Add the option to omit code generated by wayland-scanner, to avoid the case where the Qt versions replace driver-specific functionality. Task-number: QTBUG-58299 Change-Id: I508b18b9392dbd9e2b8233399301c06410f9f5ba Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-134-18/+28
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/network/network.pro mkspecs/features/mac/default_post.prf src/corelib/io/qfilesystemengine_win.cpp src/corelib/io/qprocess.cpp src/corelib/io/qprocess.h src/corelib/io/qprocess_p.h src/corelib/io/qprocess_unix.cpp src/corelib/io/qprocess_win.cpp src/corelib/thread/qmutex.cpp src/platformsupport/fontdatabases/windows/windows.pri src/plugins/platforms/eglfs/eglfsdeviceintegration.pro tests/auto/corelib/io/io.pro Change-Id: I8a27e0e141454818bba9c433200a4e84a88d147e
| * Add -Wfloat-equal to Qt's header clean checkThiago Macieira2017-03-071-1/+1
| | | | | | | | | | | | | | Task-number: QTBUG-57649 Change-Id: I15b62e0f9cec482fbb40fffd1490d802c54bf0fe Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Don't pass -headerpad_max_install_names when using BitcodeJake Petroules2017-03-074-4/+8
| | | | | | | | | | | | | | | | It is ignored (and is unnecessary to begin with) in that case, and emits an annoying warning which this patch silences. Change-Id: I6059969724b203d6e0e2eea81ad3e3e8f8d536d6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Fix Bitcode handling for both makefile and Xcode generatorsJake Petroules2017-03-031-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | This fixes an issue which caused certain iOS projects to fail to link when building with Xcode, and also fixes an issue where projects were only ever built with -fembed-bitcode instead of -fembed-bitcode-marker for debug builds with the makefile generator. Task-number: QTBUG-58754 Change-Id: Icf0c9f0d64dbc0b38d6c48bf635c5383a78bd6d5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| * don't assume that configure --foo options' value is 'yes'Oswald Buddenhagen2017-02-241-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | otherwise, the invalid "--qpa xcb" would complain about "xcb" being unknown, rather than "--qpa" missing an argument. actual booleans are handled by the type-specific callback, just like -foo would be. Task-number: QTBUG-59062 Change-Id: I96632dacfb721cfcbf223b76f6c5c38c810e8d0e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * de-duplicate and simplify condition checking in qtConfProcessOneOutput()Oswald Buddenhagen2017-02-241-9/+2
| | | | | | | | | | | | | | amends 90eee08b3. Change-Id: If1fa2b14d758cc252d9a2ec3f9deedd1dd200c5e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | mkspecs: Replace LGPL21 with LGPL license headerKai Koehne2017-03-0314-190/+274
| | | | | | | | | | | | | | Also use canonical contact url. Change-Id: I04c403f81bb8a8d6d6222573030d1e6d09ec4c3d Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-02-248-68/+252
|\| | | | | | | | | | | | | Conflicts: mkspecs/features/moc.prf Change-Id: Ia71c8e3b3185f7c999bf226d0675051b10b8740b
| * Add CONFIG += no_moc_predefs to allow one to escape problemsThiago Macieira2017-02-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes, users need to add compiler flags to QMAKE_CXXFLAGS that aren't supposed to be passed to the predefs dump. That's especially true for -include options, as that would change completely what's defined. Not to mention that -include is a preprocessor option and shouldn't be in CXXFLAGS in the first place (Automake has CPPFLAGS, but qmake only has INCLUDEPATH and DEFINES). [ChangeLog][qmake] Added the ability to suppress the collection of the compiler predefined macros for moc's use. To disable the collection, use CONFIG += no_moc_predefs. Task-number: QTBUG-58857 Change-Id: I4139d5f93dcb4b429ae9fffd14a34d49825d9b85 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * configure: fix 'use' for detecting static librariesOswald Buddenhagen2017-02-221-1/+1
| | | | | | | | | | | | | | | | | | these statements are assumed to provide dependencies for the currently detected library. this implies that their resolved content must be passed to the linker after the to be detected static library. Change-Id: Ifaaee2ac71bf176e8a0033765fb979fe119deaba Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: make it possible to make 'use' conditionalOswald Buddenhagen2017-02-221-1/+14
| | | | | | | | | | Change-Id: I8390634c5b23bf34692b4f532ab00a7aba690037 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: support using libraries by their exported nameOswald Buddenhagen2017-02-221-5/+45
| | | | | | | | | | Change-Id: Ibe43c587e83e679baa5f0fc91f452ee06c1e293f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: fix cross-module library usesOswald Buddenhagen2017-02-221-7/+21
| | | | | | | | | | | | | | | | | | | | | | this went unnoticed, because the only cross-module 'use' so far is that of egl, for which the code path provided for modular builds happens to (mostly) work due to the specs already providing the library definition. amends cc842ca4. Change-Id: I58c638d896eabd26f27d5cd90e3a7f8eeece9bc0 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * clash-check configure sub-config namesOswald Buddenhagen2017-02-221-0/+3
| | | | | | | | | | | | | | | | we derive the keys from the last fragment of the parent directory, which is potentially not globally unique. Change-Id: I57cf13394984e6e3d902c0f1bb495bd3920bfc75 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: propagate errors from libraries' transitive dependenciesOswald Buddenhagen2017-02-221-1/+5
| | | | | | | | | | | | | | | | | | | | if a library uses another library which happens to be absent, then the former must also fail. amends cc842ca4. Change-Id: I91f157a6d1ed40b66e196340a282ebe493fcf40e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: error out on activating conflicting librariesOswald Buddenhagen2017-02-221-0/+14
| | | | | | | | | | Change-Id: I5d7dbeb3b3a653f7151279c7eba9387c107f9c42 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: generalize command line overrides of library parametersOswald Buddenhagen2017-02-221-2/+36
| | | | | | | | | | | | | | | | | | the outdated ones remain for backwards compatibility; some remain unchanged. Task-number: QTBUG-30083 Change-Id: Ia596b854d26b00fcb4f48df0da7ad893650ac1c8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * add configure -list-librariesOswald Buddenhagen2017-02-222-1/+38
| | | | | | | | | | | | | | currently mostly for debugging purposes (especially with -verbose). Change-Id: I8af32c61df0b19861aa79bc4bbdd3f6095dbe9b7 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * add configure -list-featuresOswald Buddenhagen2017-02-222-7/+27
| | | | | | | | | | | | | | | | | | also actually deletes qfeatures.txt, which was already claimed by a668c6a6, but not actually done. Task-number: QTBUG-58411 Change-Id: I686760632fee7c10b01bd2e83f2481b01bc2b774 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * fix usage of "empty" librariesOswald Buddenhagen2017-02-224-21/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | a header-only library in a default location would produce no variables at all, making it appear undefined. fix this by forcing the writeout of the QMAKE_LIBS_* variable, and use its definedness (rather than non-emptiness) as a signifier. this works for both QMAKE_USE and configure tests'/libraries' 'use' entries. Change-Id: Id7a1e23725caba1a91ea4db448b4aeb7fe632393 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * prefer library's export name when looking up input variablesOswald Buddenhagen2017-02-221-5/+14
| | | | | | | | | | | | | | | | | | | | if multiple library entries provide the same export (as openssl is going to), it makes sense to make them recognize the same input variables, as it would be rather counterproductive to require different configure arguments for each. Change-Id: Ia32842e95294296d50220297f85689bc92de2d05 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * configure: refactor qtConfExportLibrary()'s interfaceOswald Buddenhagen2017-02-221-14/+18
| | | | | | | | | | | | | | | | pass the library name instead of a library source object. improves overall legibility at a marginal runtime cost. Change-Id: I248ee9622af2b2c37daa2dbc0cc0bca5701d7925 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Disable optimizations for macx-icc debugThiago Macieira2017-02-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | icc defaults to -O2, so this was causing debug code to be built like that, making debugging very hard. This change also hardcodes -O2 for release builds, just in case. Change-Id: Ibc5c715fda334a75bd2efffd14a478ce539a3a3f Reviewed-by: Robert Pancoast <RobertPancoast77@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>