mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-05-25 00:42:22 -04:00
cmake: Enable interprocedural optimization for Release configuration
The built-in CMake variable will set the appropriate compiler flags for supported compilers and compiler versions.
This commit is contained in:
@@ -85,3 +85,41 @@ endif()
|
||||
if(NOT DEFINED CMAKE_COMPILE_WARNING_AS_ERROR)
|
||||
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
|
||||
endif()
|
||||
|
||||
# Enable interprocedural optimization
|
||||
message(STATUS "Checking for interprocedural optimization support")
|
||||
if(NOT DEFINED HAS_INTERPROCEDURAL_OPTIMIZATION)
|
||||
include(CheckIPOSupported)
|
||||
check_ipo_supported(RESULT _ipo_result OUTPUT _ipo_output)
|
||||
set(
|
||||
HAS_INTERPROCEDURAL_OPTIMIZATION
|
||||
${_ipo_result}
|
||||
CACHE BOOL
|
||||
"Result of compiler check for interprocedural optimization"
|
||||
FORCE
|
||||
)
|
||||
|
||||
if(HAS_INTERPROCEDURAL_OPTIMIZATION)
|
||||
message(STATUS "Checking for interprocedural optimization support - available")
|
||||
else()
|
||||
message(STATUS "Checking for interprocedural optimization support - unavailable")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(HAS_INTERPROCEDURAL_OPTIMIZATION)
|
||||
unset(_ipo_result)
|
||||
unset(_ipo_output)
|
||||
endif()
|
||||
|
||||
if(HAS_INTERPROCEDURAL_OPTIMIZATION)
|
||||
message(STATUS "Checking for interprocedural optimization support - enabled [Release, MinSizeRel]")
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO OFF)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL ON)
|
||||
else()
|
||||
message(STATUS "Checking for interprocedural optimization support - disabled")
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO OFF)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL OFF)
|
||||
endif()
|
||||
|
||||
@@ -73,7 +73,6 @@ add_compile_options(
|
||||
"$<$<COMPILE_LANG_AND_ID:C,Clang>:${_obs_clang_c_options}>"
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,Clang>:${_obs_clang_cxx_options}>"
|
||||
$<$<NOT:$<CONFIG:Debug>>:/Gy>
|
||||
$<$<NOT:$<CONFIG:Debug>>:/GL>
|
||||
$<$<NOT:$<CONFIG:Debug>>:/Oi>
|
||||
)
|
||||
|
||||
@@ -87,11 +86,12 @@ add_compile_definitions(
|
||||
$<$<CONFIG:DEBUG>:_DEBUG>
|
||||
)
|
||||
|
||||
# Visual Studio sets "/LTCG:INCREMENTAL" when "Whole Program Optimization" is enabled for a x86 or x64 target. To
|
||||
# ensure "proper" link-time optimization, the LTCG flag has to be explicitly added here.
|
||||
add_link_options(
|
||||
$<$<NOT:$<CONFIG:Debug>>:/OPT:REF>
|
||||
$<$<NOT:$<CONFIG:Debug>>:/OPT:ICF>
|
||||
$<$<NOT:$<CONFIG:Debug>>:/LTCG>
|
||||
$<$<NOT:$<CONFIG:Debug>>:/INCREMENTAL:NO>
|
||||
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:/LTCG>
|
||||
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:/OPT:REF>
|
||||
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:/OPT:ICF>
|
||||
/DEBUG
|
||||
/Brepro
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user