diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 56168258d79..4ffeb6b316f 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -223,6 +223,20 @@ function(blender_target_include_dirs_sys blender_target_include_dirs_impl(${target} TRUE "${_ALL_INCS}") endfunction() +# Enable unity build for the given target. +function(blender_set_target_unity_build target batch_size) + if(WITH_UNITY_BUILD) + set_target_properties(${target} PROPERTIES + UNITY_BUILD ON + UNITY_BUILD_BATCH_SIZE ${batch_size} + ) + if(WITH_NINJA_POOL_JOBS AND NINJA_MAX_NUM_PARALLEL_COMPILE_HEAVY_JOBS) + # Unity builds are typically heavy. + set_target_properties(${target} PROPERTIES JOB_POOL_COMPILE compile_heavy_job_pool) + endif() + endif() +endfunction() + # Set include paths for header files included with "*.h" syntax. # This enables auto-complete suggestions for user header files on Xcode. # Build process is not affected since the include paths are the same diff --git a/source/blender/compositor/CMakeLists.txt b/source/blender/compositor/CMakeLists.txt index 175fd134feb..57ecc78491d 100644 --- a/source/blender/compositor/CMakeLists.txt +++ b/source/blender/compositor/CMakeLists.txt @@ -648,10 +648,7 @@ if(WITH_COMPOSITOR_CPU) blender_add_lib(bf_compositor "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") - if(WITH_UNITY_BUILD) - set_target_properties(bf_compositor PROPERTIES UNITY_BUILD ON) - set_target_properties(bf_compositor PROPERTIES UNITY_BUILD_BATCH_SIZE 10) - endif() + blender_set_target_unity_build(bf_compositor 10) if(COMMAND target_precompile_headers) target_precompile_headers(bf_compositor PRIVATE COM_precomp.h) diff --git a/source/blender/nodes/composite/CMakeLists.txt b/source/blender/nodes/composite/CMakeLists.txt index 78303b4cc40..90acb4b0d40 100644 --- a/source/blender/nodes/composite/CMakeLists.txt +++ b/source/blender/nodes/composite/CMakeLists.txt @@ -159,10 +159,7 @@ endif() blender_add_lib(bf_nodes_composite "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") -if(WITH_UNITY_BUILD) - set_target_properties(bf_nodes_composite PROPERTIES UNITY_BUILD ON) - set_target_properties(bf_nodes_composite PROPERTIES UNITY_BUILD_BATCH_SIZE 10) -endif() +blender_set_target_unity_build(bf_nodes_composite 10) # RNA_prototypes.h add_dependencies(bf_nodes_composite bf_rna) diff --git a/source/blender/nodes/function/CMakeLists.txt b/source/blender/nodes/function/CMakeLists.txt index 4de72835da4..54c082b0134 100644 --- a/source/blender/nodes/function/CMakeLists.txt +++ b/source/blender/nodes/function/CMakeLists.txt @@ -72,7 +72,4 @@ list(APPEND LIB blender_add_lib(bf_nodes_function "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") target_link_libraries(bf_nodes_functions_generated bf_nodes_function) -if(WITH_UNITY_BUILD) - set_target_properties(bf_nodes_function PROPERTIES UNITY_BUILD ON) - set_target_properties(bf_nodes_function PROPERTIES UNITY_BUILD_BATCH_SIZE 10) -endif() +blender_set_target_unity_build(bf_nodes_function 10) diff --git a/source/blender/nodes/geometry/CMakeLists.txt b/source/blender/nodes/geometry/CMakeLists.txt index e380add5ad2..7f4f3d850f9 100644 --- a/source/blender/nodes/geometry/CMakeLists.txt +++ b/source/blender/nodes/geometry/CMakeLists.txt @@ -285,10 +285,7 @@ list(APPEND LIB blender_add_lib(bf_nodes_geometry "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") target_link_libraries(bf_nodes_geometry_generated bf_nodes_geometry) -if(WITH_UNITY_BUILD) - set_target_properties(bf_nodes_geometry PROPERTIES UNITY_BUILD ON) - set_target_properties(bf_nodes_geometry PROPERTIES UNITY_BUILD_BATCH_SIZE 10) -endif() +blender_set_target_unity_build(bf_nodes_geometry 10) # RNA_prototypes.h add_dependencies(bf_nodes_geometry bf_rna) diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index 845fe16a420..5578c5f4a7b 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -185,10 +185,7 @@ endif() blender_add_lib(bf_nodes_shader "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") -if(WITH_UNITY_BUILD) - set_target_properties(bf_nodes_shader PROPERTIES UNITY_BUILD ON) - set_target_properties(bf_nodes_shader PROPERTIES UNITY_BUILD_BATCH_SIZE 10) -endif() +blender_set_target_unity_build(bf_nodes_shader 10) # RNA_prototypes.h add_dependencies(bf_nodes_shader bf_rna)