diff options
| author | ruki <[email protected]> | 2022-07-02 18:37:14 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-07-02 18:37:14 +0800 |
| commit | ae59f3feea3998faa9aa65540749176658168b5c (patch) | |
| tree | 06116eac859cb55b2aab16622c959157fe7adbd6 | |
| parent | 2d3649aa6b19c568d807a87775febb497965e0b7 (diff) | |
add lto to cmake
| -rw-r--r-- | xmake/core/package/package.lua | 18 | ||||
| -rw-r--r-- | xmake/modules/package/tools/cmake.lua | 12 |
2 files changed, 22 insertions, 8 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index e04d6be0f..a9f39e208 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -1695,14 +1695,16 @@ function _instance:_generate_lto_configs(sourcekind) -- add cflags local configs = {} - local _, cc = self:tool(sourcekind) - local cflag = sourcekind == "cxx" and "cxxflags" or "cflags" - if cc == "cl" then - configs[cflag] = "-GL" - elseif cc == "clang" or cc == "clangxx" then - configs[cflag] = "-flto=thin" - elseif cc == "gcc" or cc == "gxx" then - configs[cflag] = "-flto" + if sourcekind then + local _, cc = self:tool(sourcekind) + local cflag = sourcekind == "cxx" and "cxxflags" or "cflags" + if cc == "cl" then + configs[cflag] = "-GL" + elseif cc == "clang" or cc == "clangxx" then + configs[cflag] = "-flto=thin" + elseif cc == "gcc" or cc == "gxx" then + configs[cflag] = "-flto" + end end -- add ldflags and shflags diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua index 00f0c937e..dc227b89b 100644 --- a/xmake/modules/package/tools/cmake.lua +++ b/xmake/modules/package/tools/cmake.lua @@ -137,6 +137,9 @@ function _get_cflags(package, opt) if opt.cxflags then table.join2(result, opt.cxflags) end + if package:config("lto") then + table.join2(result, package:_generate_lto_configs("cc").cflags) + end table.join2(result, _get_cflags_from_packagedeps(package, opt)) if #result > 0 then return os.args(result) @@ -162,6 +165,9 @@ function _get_cxxflags(package, opt) if opt.cxflags then table.join2(result, opt.cxflags) end + if package:config("lto") then + table.join2(result, package:_generate_lto_configs("cxx").cxxflags) + end table.join2(result, _get_cflags_from_packagedeps(package, opt)) if #result > 0 then return os.args(result) @@ -197,6 +203,9 @@ function _get_ldflags(package, opt) table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "syslink", package:build_getenv("syslinks"))) table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "linkdir", package:build_getenv("linkdirs"))) end + if package:config("lto") then + table.join2(result, package:_generate_lto_configs().ldflags) + end table.join2(result, _get_ldflags_from_packagedeps(package, opt)) if opt.ldflags then table.join2(result, opt.ldflags) @@ -216,6 +225,9 @@ function _get_shflags(package, opt) table.join2(result, _map_linkflags(package, "shared", {"cxx"}, "syslink", package:build_getenv("syslinks"))) table.join2(result, _map_linkflags(package, "shared", {"cxx"}, "linkdir", package:build_getenv("linkdirs"))) end + if package:config("lto") then + table.join2(result, package:_generate_lto_configs().shflags) + end table.join2(result, _get_ldflags_from_packagedeps(package, opt)) if opt.shflags then table.join2(result, opt.shflags) |
