From 7ddf46230431cd3375f911d4b406af663595861d Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 6 Nov 2019 14:57:12 +0100 Subject: Unity build: Include GENERATED files into unity build There is no reason to skip the generated files, in case of problems one can use the SKIP_UNITY_BUILD_INCLUSION property. Fixes: #19925 --- Help/prop_tgt/UNITY_BUILD.rst | 5 ++--- Source/cmLocalGenerator.cxx | 1 - Tests/RunCMake/UnityBuild/unitybuild_skip-check.cmake | 6 +++--- Tests/RunCMake/UnityBuild/unitybuild_skip.cmake | 5 +---- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Help/prop_tgt/UNITY_BUILD.rst b/Help/prop_tgt/UNITY_BUILD.rst index 2faad92..fab4f15 100644 --- a/Help/prop_tgt/UNITY_BUILD.rst +++ b/Help/prop_tgt/UNITY_BUILD.rst @@ -40,9 +40,8 @@ Since multiple source files are included into one source file, it can lead to ODR errors. This section contains properties which help fixing these errors. -The source files marked by :prop_sf:`GENERATED` will be skipped -from unity build. This applies also for the source files marked -with :prop_sf:`SKIP_UNITY_BUILD_INCLUSION`. +The source files marked by :prop_sf:`SKIP_UNITY_BUILD_INCLUSION` +will be skipped from unity build. The source files that have :prop_sf:`COMPILE_OPTIONS`, :prop_sf:`COMPILE_DEFINITIONS`, :prop_sf:`COMPILE_FLAGS`, or diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 00bd8af..cae47e0 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2441,7 +2441,6 @@ void cmLocalGenerator::AddUnityBuild(cmGeneratorTarget* target) std::back_inserter(filtered_sources), [&](cmSourceFile* sf) { return sf->GetLanguage() == lang && !sf->GetPropertyAsBool("SKIP_UNITY_BUILD_INCLUSION") && - !sf->GetPropertyAsBool("GENERATED") && !sf->GetProperty("COMPILE_OPTIONS") && !sf->GetProperty("COMPILE_DEFINITIONS") && !sf->GetProperty("COMPILE_FLAGS") && diff --git a/Tests/RunCMake/UnityBuild/unitybuild_skip-check.cmake b/Tests/RunCMake/UnityBuild/unitybuild_skip-check.cmake index fdd45bc..61419d8 100644 --- a/Tests/RunCMake/UnityBuild/unitybuild_skip-check.cmake +++ b/Tests/RunCMake/UnityBuild/unitybuild_skip-check.cmake @@ -1,9 +1,9 @@ set(unitybuild_c "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/tgt.dir/Unity/unity_0.c") file(STRINGS ${unitybuild_c} unitybuild_c_strings) -string(REGEX MATCH "\\/s[1-6].c" matched_files_1_6 ${unitybuild_c_strings}) -if(matched_files_1_6) - set(RunCMake_TEST_FAILED "Generated unity contains s1.c -> s6.c which should have been skipped") +string(REGEX MATCH "\\/s[2-6].c" matched_files_2_6 ${unitybuild_c_strings}) +if(matched_files_2_6) + set(RunCMake_TEST_FAILED "Generated unity contains s2.c -> s6.c which should have been skipped") return() endif() diff --git a/Tests/RunCMake/UnityBuild/unitybuild_skip.cmake b/Tests/RunCMake/UnityBuild/unitybuild_skip.cmake index 74524ad..eef8ccc 100644 --- a/Tests/RunCMake/UnityBuild/unitybuild_skip.cmake +++ b/Tests/RunCMake/UnityBuild/unitybuild_skip.cmake @@ -1,7 +1,7 @@ project(unitybuild_skip C) set(srcs "") -foreach(s RANGE 1 8) +foreach(s RANGE 2 8) set(src "${CMAKE_CURRENT_BINARY_DIR}/s${s}.c") file(WRITE "${src}" "int s${s}(void) { return 0; }\n") list(APPEND srcs "${src}") @@ -11,9 +11,6 @@ add_library(tgt SHARED ${srcs}) set_target_properties(tgt PROPERTIES UNITY_BUILD ON) -set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/s1.c - PROPERTIES GENERATED ON) - set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/s2.c PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) -- cgit v0.12