diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2017-08-24 14:57:20 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2017-08-24 14:33:32 +0000 |
commit | 84597fa46a6c0134cef514f749c3f072bfe6fe14 (patch) | |
tree | 603bc254ae8f1c2d5509a17bd57a6572e5a3bb23 /sources/pyside2/cmake/Macros/PySideModules.cmake | |
parent | 9ef1e16b3325239bf782ddb893cbe2b76ab4b4d7 (diff) |
Fix the chain of issues regarding QSslConfiguration
The failure was seen on Windows CI build, but was actually present on
all platforms if the QSsl checks were properly fixed, or if certain
CMake versions randomly decided to force C++11 usage.
The first issue was that QSsl wrappers were not generated on all
platforms because the C++11 standard was not forced for the
compilation tests done in the check_qt_class macro. This is a bug in
CMake, and the official way of fixing this is introduced in the yet
unreleased CMake 3.9 version.
The current fix is a workaround to explicitly pass the C++11 standard
switch to the try_compile invocation.
The next issue concerns handling of const char[] C++ types. There are
three such members in QSslConfiguration, which caused build failures
due to incorrectly generated code.
The solution is to treat "const char[]" types as "const char*" types,
which generates correct conversion code.
Tests were also added to check for such cases.
Change-Id: I874a3591dfc5f385338de7e3aff2a2c0dd2f5719
Reviewed-by: Christian Tismer <tismer@stackless.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside2/cmake/Macros/PySideModules.cmake')
-rw-r--r-- | sources/pyside2/cmake/Macros/PySideModules.cmake | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sources/pyside2/cmake/Macros/PySideModules.cmake b/sources/pyside2/cmake/Macros/PySideModules.cmake index 85ad6129e..b5bb725fe 100644 --- a/sources/pyside2/cmake/Macros/PySideModules.cmake +++ b/sources/pyside2/cmake/Macros/PySideModules.cmake @@ -160,10 +160,17 @@ macro(check_qt_class module class optional_source_files dropped_entries) "${NAMESPACE_USE}\n" "int main() { sizeof(${class}); }\n" ) + + # Force usage of the C++11 standard. CMAKE_CXX_STANDARD does not work with try_compile + # but the issue has a fix in CMake 3.9. Thus we use a terrible workaround, we pass the C++ + # standard flag the way CheckCXXSourceCompiles.cmake does it. + set(CUSTOM_CPP_STANDARD ${CMAKE_CXX11_EXTENSION_COMPILE_OPTION}) + try_compile(Q_WORKS ${CMAKE_BINARY_DIR} ${SRC_FILE} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${QT_INCLUDE_DIR};${Qt5${_module_no_qt_prefix}_INCLUDE_DIRS}" + "-DCOMPILE_DEFINITIONS:STRING=${CUSTOM_CPP_STANDARD}" OUTPUT_VARIABLE OUTPUT) file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCheckQtClassTest.log ${OUTPUT}) |