Make per-repos WARNINGS_ARE_ERRORS work
Add the WARNINGS_ARE_ERRORS flags unconditionally, so developers may control skipping per-target or per-repo. This allows setting the WARNINGS_ARE_ERRORS cmake option for each repo independently when configuring them. So qtbase might be built without the flag enabled and setting the WARNINGS_ARE_ERRORS to TRUE for the depending repo enables it for the internal Qt targets. Add the new internal function that controls the related internal flag. Keep qt_skip_warnings_are_errors for compatibility since it's used in qtwebengine. Combine qt_internal_set_skip_warnings_are_errors and qt_skip_warnings_are_errors_when_repo_unclean functionality in the new qt_internal_default_warnings_are_errors function. Change-Id: I1330c75cd67a24e6386f5e94a089e43fa2012bc4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
8d8805214d
commit
ed57f8ab6d
@ -95,7 +95,7 @@ function(qt_internal_add_cmake_library target)
|
||||
|
||||
qt_internal_add_common_qt_library_helper(${target} ${library_helper_args})
|
||||
|
||||
qt_skip_warnings_are_errors_when_repo_unclean("${target}")
|
||||
qt_internal_default_warnings_are_errors("${target}")
|
||||
|
||||
if (arg_OUTPUT_DIRECTORY)
|
||||
set_target_properties(${target} PROPERTIES
|
||||
@ -198,7 +198,7 @@ function(qt_internal_add_3rdparty_library target)
|
||||
qt_internal_add_qt_repo_known_module(${target})
|
||||
qt_internal_add_target_aliases(${target})
|
||||
|
||||
qt_skip_warnings_are_errors_when_repo_unclean("${target}")
|
||||
qt_internal_default_warnings_are_errors("${target}")
|
||||
|
||||
set_target_properties(${target} PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${QT_BUILD_DIR}/${INSTALL_LIBDIR}"
|
||||
|
@ -93,7 +93,8 @@ function(qt_internal_add_executable name)
|
||||
endif()
|
||||
|
||||
qt_autogen_tools_initial_setup(${name})
|
||||
qt_skip_warnings_are_errors_when_repo_unclean("${name}")
|
||||
|
||||
qt_internal_default_warnings_are_errors("${name}")
|
||||
|
||||
set(extra_libraries "")
|
||||
if(arg_CORE_LIBRARY STREQUAL "Bootstrap")
|
||||
|
@ -301,17 +301,27 @@ function(qt_internal_set_exceptions_flags target value)
|
||||
set_target_properties(${target} PROPERTIES _qt_internal_use_exceptions ${value})
|
||||
endfunction()
|
||||
|
||||
# Deprecated. Replaced by qt_internal_set_skip_warnings_are_errors.
|
||||
function(qt_skip_warnings_are_errors target)
|
||||
qt_internal_set_skip_warnings_are_errors(${target} TRUE)
|
||||
endfunction()
|
||||
|
||||
# Controls the QT_SKIP_WARNINGS_ARE_ERRORS property for the given target.
|
||||
function(qt_internal_set_skip_warnings_are_errors target value)
|
||||
get_target_property(target_type "${target}" TYPE)
|
||||
if(target_type STREQUAL "INTERFACE_LIBRARY")
|
||||
return()
|
||||
endif()
|
||||
set_target_properties("${target}" PROPERTIES QT_SKIP_WARNINGS_ARE_ERRORS ON)
|
||||
set_target_properties("${target}" PROPERTIES QT_SKIP_WARNINGS_ARE_ERRORS ${value})
|
||||
endfunction()
|
||||
|
||||
function(qt_skip_warnings_are_errors_when_repo_unclean target)
|
||||
if(QT_REPO_NOT_WARNINGS_CLEAN)
|
||||
qt_skip_warnings_are_errors("${target}")
|
||||
# Sets the default warnings behavior according to the WARNINGS_ARE_ERRORS and
|
||||
# QT_REPO_NOT_WARNINGS_CLEAN flags.
|
||||
function(qt_internal_default_warnings_are_errors target)
|
||||
if(WARNINGS_ARE_ERRORS AND NOT QT_REPO_NOT_WARNINGS_CLEAN)
|
||||
qt_internal_set_skip_warnings_are_errors("${target}" FALSE)
|
||||
else()
|
||||
qt_internal_set_skip_warnings_are_errors("${target}" TRUE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
@ -158,11 +158,10 @@ qt_internal_add_global_definition(QT_USE_QSTRINGBUILDER SCOPE PLUGIN TOOL MODULE
|
||||
qt_internal_add_global_definition(QT_NO_FOREACH)
|
||||
qt_internal_add_global_definition(QT_NO_STD_FORMAT_SUPPORT SCOPE PLUGIN TOOL MODULE)
|
||||
|
||||
if(WARNINGS_ARE_ERRORS)
|
||||
qt_internal_set_warnings_are_errors_flags(PlatformModuleInternal INTERFACE)
|
||||
qt_internal_set_warnings_are_errors_flags(PlatformPluginInternal INTERFACE)
|
||||
qt_internal_set_warnings_are_errors_flags(PlatformAppInternal INTERFACE)
|
||||
endif()
|
||||
qt_internal_set_warnings_are_errors_flags(PlatformModuleInternal INTERFACE)
|
||||
qt_internal_set_warnings_are_errors_flags(PlatformPluginInternal INTERFACE)
|
||||
qt_internal_set_warnings_are_errors_flags(PlatformAppInternal INTERFACE)
|
||||
|
||||
if(WIN32)
|
||||
# Needed for M_PI define. Same as mkspecs/features/qt_module.prf.
|
||||
# It's set for every module being built, but it's not propagated to user apps.
|
||||
|
@ -311,7 +311,8 @@ function(qt_internal_add_module target)
|
||||
endif()
|
||||
|
||||
qt_internal_add_target_aliases("${target}")
|
||||
qt_skip_warnings_are_errors_when_repo_unclean("${target}")
|
||||
|
||||
qt_internal_default_warnings_are_errors("${target}")
|
||||
|
||||
# No need to compile Q_IMPORT_PLUGIN-containing files for non-executables.
|
||||
if(is_static_lib)
|
||||
|
@ -160,7 +160,8 @@ function(qt_internal_add_plugin target)
|
||||
|
||||
qt_set_common_target_properties("${target}")
|
||||
qt_internal_add_target_aliases("${target}")
|
||||
qt_skip_warnings_are_errors_when_repo_unclean("${target}")
|
||||
|
||||
qt_internal_default_warnings_are_errors("${target}")
|
||||
|
||||
set_target_properties("${target}" PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${output_directory}"
|
||||
|
@ -152,5 +152,5 @@ set_target_properties(${target_name} PROPERTIES
|
||||
)
|
||||
|
||||
qt_internal_apply_gc_binaries(${target_name} PRIVATE)
|
||||
qt_skip_warnings_are_errors(${target_name})
|
||||
qt_internal_set_skip_warnings_are_errors(${target_name} TRUE)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user