Skip to content

Commit 417dcac

Browse files
committed
add "Fast" option to LinkTimeOptimization API which enables LTCG:incremental for vs2010, and behaves as "On" for other toolsets
add missing clang toolset tests for LinkTimeOptimization
1 parent e38ef3f commit 417dcac

File tree

15 files changed

+157
-8
lines changed

15 files changed

+157
-8
lines changed

modules/gmakelegacy/tests/cpp/test_clang.lua

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,20 @@ ifeq ($(config),debug)
7878
]]
7979
end
8080

81+
function suite.usesCorrectCompilersAndFastLinkTimeOptimizationViaAPI()
82+
linktimeoptimization "Fast"
83+
make.cppConfigs(prj)
84+
test.capture [[
85+
ifeq ($(config),debug)
86+
ifeq ($(origin CC), default)
87+
CC = clang
88+
endif
89+
ifeq ($(origin CXX), default)
90+
CXX = clang++
91+
endif
92+
ifeq ($(origin AR), default)
93+
AR = llvm-ar
94+
endif
95+
]]
96+
end
97+

modules/vstudio/tests/linux/test_linux_files.lua

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,22 @@ local vc2010 = p.vstudio.vc2010
4242
]]
4343
end
4444

45+
--
46+
-- Test fast link time optimization being equivalent to on.
47+
--
48+
49+
function suite.linkTimeOptimization_Fast()
50+
linktimeoptimization('fast')
51+
prepareConfigProperties()
52+
test.capture [[
53+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'" Label="Configuration">
54+
<ConfigurationType>Application</ConfigurationType>
55+
<PlatformToolset>v142</PlatformToolset>
56+
<LinkTimeOptimization>true</LinkTimeOptimization>
57+
</PropertyGroup>
58+
]]
59+
end
60+
4561
--
4662
-- Test multiprocessor compilation.
4763
--

modules/vstudio/tests/vc200x/test_compiler_block.lua

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,18 @@
632632

633633
end
634634

635+
function suite.flags_onLinkTimeOptimizationFast()
636+
linktimeoptimization "Fast"
637+
prepare()
638+
test.capture [[
639+
<Tool
640+
Name="VCCLCompilerTool"
641+
Optimization="0"
642+
WholeProgramOptimization="true"
643+
]]
644+
645+
end
646+
635647

636648
--
637649
-- Check the optimization flags.

modules/vstudio/tests/vc2010/test_config_props.lua

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,19 @@
364364
]]
365365
end
366366

367+
function suite.useOfLinkTimeOptimizationViaAPI_Fast()
368+
linktimeoptimization "Fast"
369+
prepare()
370+
test.capture [[
371+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
372+
<ConfigurationType>Application</ConfigurationType>
373+
<UseDebugLibraries>false</UseDebugLibraries>
374+
<CharacterSet>Unicode</CharacterSet>
375+
<PlatformToolset>v100</PlatformToolset>
376+
<WholeProgramOptimization>true</WholeProgramOptimization>
377+
]]
378+
end
379+
367380

368381
--
369382
-- Check the WindowsSDKDesktopARMSupport element

modules/vstudio/vs200x_vcproj.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1614,7 +1614,7 @@
16141614

16151615

16161616
function m.wholeProgramOptimization(cfg)
1617-
if cfg.linktimeoptimization == "On" then
1617+
if cfg.linktimeoptimization == "On" or cfg.linktimeoptimization == "Fast" then
16181618
p.x('WholeProgramOptimization="true"')
16191619
elseif cfg.linktimeoptimization == "Off" then
16201620
p.x('WholeProgramOptimization="false"')

modules/vstudio/vs2010_vcxproj.lua

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2298,7 +2298,7 @@
22982298

22992299

23002300
function m.wholeProgramOptimization(cfg)
2301-
if cfg.linktimeoptimization == "On" then
2301+
if cfg.linktimeoptimization == "On" or cfg.linktimeoptimization == "Fast" then
23022302
m.element("WholeProgramOptimization", nil, "true")
23032303
elseif cfg.linktimeoptimization == "Off" then
23042304
m.element("WholeProgramOptimization", nil, "false")
@@ -3080,6 +3080,8 @@
30803080
function m.linkTimeCodeGeneration(cfg)
30813081
if cfg.linktimeoptimization == "On" then
30823082
m.element("LinkTimeCodeGeneration", nil, "UseLinkTimeCodeGeneration")
3083+
elseif cfg.linktimeoptimization == "Fast" then
3084+
m.element("LinkTimeCodeGeneration", nil, "UseFastLinkTimeCodeGeneration")
30833085
end
30843086
end
30853087

@@ -4016,7 +4018,7 @@
40164018
end
40174019

40184020
function m.linuxWholeProgramOptimization(cfg)
4019-
if cfg.linktimeoptimization == "On" then
4021+
if cfg.linktimeoptimization == "On" or cfg.linktimeoptimization == "Fast" then
40204022
m.element("LinkTimeOptimization", nil, "true")
40214023
elseif cfg.linktimeoptimization == "Off" then
40224024
m.element("LinkTimeOptimization", nil, "false")
@@ -4032,7 +4034,7 @@
40324034
end
40334035

40344036
function m.linuxLinkTimeCodeGeneration(cfg)
4035-
if cfg.linktimeoptimization == "On" then
4037+
if cfg.linktimeoptimization == "On" or cfg.linktimeoptimization == "Fast" then
40364038
m.element("LinkTimeOptimization", nil, "true")
40374039
end
40384040
end

src/_premake_init.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,6 +1129,7 @@
11291129
allowed = {
11301130
"Default",
11311131
"On",
1132+
"Fast",
11321133
"Off"
11331134
}
11341135
}

src/base/config.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@
155155
if cfg.kind == "StaticLib"
156156
or config.isOptimizedBuild(cfg)
157157
or cfg.flags.NoIncrementalLink
158-
or cfg.linktimeoptimization == "On" then
158+
or cfg.linktimeoptimization == "On"
159+
or cfg.linktimeoptimization == "Fast" then
159160
return false
160161
end
161162
return true

src/tools/clang.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@
349349
clang.tools = {
350350
cc = "clang",
351351
cxx = "clang++",
352-
ar = function(cfg) return iif(cfg.linktimeoptimization == "On", "llvm-ar", "ar") end,
352+
ar = function(cfg) return iif(cfg.linktimeoptimization == "On" or cfg.linktimeoptimization == "Fast", "llvm-ar", "ar") end,
353353
rc = "windres"
354354
}
355355

src/tools/gcc.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
},
7272
linktimeoptimization = {
7373
On = "-flto",
74+
Fast = "-flto",
7475
},
7576
strictaliasing = {
7677
Off = "-fno-strict-aliasing",

0 commit comments

Comments
 (0)