From 1ad36d1225ba17e02d57180bdacb50b4e61d4971 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Tue, 14 Apr 2026 12:09:34 +0200 Subject: [PATCH] IPO --- ConanProfiles/clang | 9 ++++----- ConanProfiles/ipo.cmake | 8 ++++++++ ConanProfiles/msvc | 4 +--- ConanProfiles/msvcd_asan | 1 + 4 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 ConanProfiles/ipo.cmake diff --git a/ConanProfiles/clang b/ConanProfiles/clang index ae00480..c9b5c00 100644 --- a/ConanProfiles/clang +++ b/ConanProfiles/clang @@ -12,14 +12,13 @@ build_type=Release [conf] tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/ipo.cmake + tools.system.package_manager:mode=install tools.system.package_manager:sudo=True -tools.build:exelinkflags=["-fuse-ld=mold", "-flto"] -tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"] - -tools.build:cflags=["-flto"] -tools.build:cxxflags=["-flto"] +tools.build:exelinkflags=["-fuse-ld=mold"] +tools.build:sharedlinkflags=["-fuse-ld=mold"] tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} diff --git a/ConanProfiles/ipo.cmake b/ConanProfiles/ipo.cmake new file mode 100644 index 0000000..3aa8df9 --- /dev/null +++ b/ConanProfiles/ipo.cmake @@ -0,0 +1,8 @@ +include(CheckIPOSupported) +check_ipo_supported(RESULT ipo_supported OUTPUT ipo_error) + +if(ipo_supported) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) +else() + message(WARNING "IPO not supported: ${ipo_error}") +endif() \ No newline at end of file diff --git a/ConanProfiles/msvc b/ConanProfiles/msvc index 6081057..1ce49ef 100644 --- a/ConanProfiles/msvc +++ b/ConanProfiles/msvc @@ -10,9 +10,7 @@ build_type=Release [conf] tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake - -tools.build:exelinkflags=["/LTCG", "/INCREMENTAL:NO"] -tools.build:sharedlinkflags=["/LTCG", "/INCREMENTAL:NO"] +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/ipo.cmake tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/GL"] tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"] diff --git a/ConanProfiles/msvcd_asan b/ConanProfiles/msvcd_asan index 6e9e1ae..eb4d255 100644 --- a/ConanProfiles/msvcd_asan +++ b/ConanProfiles/msvcd_asan @@ -10,6 +10,7 @@ build_type=Debug [conf] tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/ipo.cmake tools.build:exelinkflags=["/INCREMENTAL:NO"] tools.build:sharedlinkflags=["/INCREMENTAL:NO"]