summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-04-30 18:00:28 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-05-01 19:11:37 +0200
commit27aeb30b5d97e8394fd9e4021a5cf321bddb7204 (patch)
tree7959c605e40a65a40baa16edc8f40358cede6030 /cmake
parentc85b393023366f8c3bee78a291bbc4ecfd840f05 (diff)
CMake: Limit warnings_are_errors flags to C++ and Objective-C++
Otherwise when applied to bundled 3rd party library C files, the MinGW build fails when compiling src/3rdparty/md4c/md4c.c. Change-Id: Ia522b10aa69aa15f239d20c65e31c84edbccee6d Reviewed-by: Simon Hausmann <hausmann@gmail.com>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtInternalTargets.cmake11
1 files changed, 9 insertions, 2 deletions
diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake
index 16db6e4bf0..6940a367ac 100644
--- a/cmake/QtInternalTargets.cmake
+++ b/cmake/QtInternalTargets.cmake
@@ -58,8 +58,15 @@ function(qt_internal_set_warnings_are_errors_flags target)
list(APPEND flags /WX)
endif()
endif()
- set(add_flags "$<NOT:$<BOOL:$<TARGET_PROPERTY:QT_SKIP_WARNINGS_ARE_ERRORS>>>")
- set(flags_generator_expression "$<${add_flags}:${flags}>")
+ set(warnings_are_errors_enabled_genex
+ "$<NOT:$<BOOL:$<TARGET_PROPERTY:QT_SKIP_WARNINGS_ARE_ERRORS>>>")
+
+ # Apprently qmake only adds -Werror to CXX and OBJCXX files, not C files. We have to do the
+ # same otherwise MinGW builds break when building 3rdparty\md4c\md4c.c (and probably on other
+ # platforms too).
+ set(cxx_only_genex "$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>")
+ set(final_condition_genex "$<AND:${warnings_are_errors_enabled_genex},${cxx_only_genex}>")
+ set(flags_generator_expression "$<${final_condition_genex}:${flags}>")
target_compile_options("${target}" INTERFACE "${flags_generator_expression}")
endfunction()