IPO: Consider support for each language separately

We only define `INTERPROCEDURAL_OPTIMIZATION` behavior for C, CXX, and
Fortran languages.  Do not try to enable support for other languages.
Furthermore, each language builds with a different compiler, so check
for support by CMake and the compiler for each language independently.

Fixes: #16944
This commit is contained in:
Brad King
2017-06-14 10:12:48 -04:00
parent d025faf436
commit ba247ccaba
22 changed files with 62 additions and 52 deletions
+4 -4
View File
@@ -30,7 +30,7 @@ macro(__linux_compiler_intel lang)
# executables that use dlopen but do not set ENABLE_EXPORTS.
set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-rdynamic")
set(_CMAKE_IPO_SUPPORTED_BY_CMAKE YES)
set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
if(XIAR)
# INTERPROCEDURAL_OPTIMIZATION
@@ -38,10 +38,10 @@ macro(__linux_compiler_intel lang)
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO
"${XIAR} cr <TARGET> <LINK_FLAGS> <OBJECTS> "
"${XIAR} -s <TARGET> ")
set(_CMAKE_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
set(_CMAKE_IPO_LEGACY_BEHAVIOR YES)
set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
set(_CMAKE_${lang}_IPO_LEGACY_BEHAVIOR YES)
else()
set(_CMAKE_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
endif()
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 12.0)