compilers: Reduce sizes of MSVC linked binaries
- For optimization=s add /O1: Use Maximum Optimization (Favor Size), and remove /Os as it's implied by /O1. - Because we add /O1, this implies /Gy, i.e. Function-Level Linking, so unused code can be omitted. - Add /Gw: Optimize Global Data, so unused data can be omitted. With buildtype=minsize on x86 this reduces the size of a statically linked Vala compiler binary from 5 MB down to just 1.87 MB.
This commit is contained in:
parent
5e93393cd9
commit
6cd71a8033
|
@ -1247,7 +1247,10 @@ class VisualStudioCCompiler(CCompiler):
|
|||
return ['/MDd']
|
||||
|
||||
def get_buildtype_args(self, buildtype):
|
||||
return compilers.msvc_buildtype_args[buildtype]
|
||||
args = compilers.msvc_buildtype_args[buildtype]
|
||||
if version_compare(self.version, '<18.0'):
|
||||
args = [arg for arg in args if arg != '/Gw']
|
||||
return args
|
||||
|
||||
def get_buildtype_linker_args(self, buildtype):
|
||||
return compilers.msvc_buildtype_linker_args[buildtype]
|
||||
|
|
|
@ -145,8 +145,8 @@ arm_buildtype_args = {'plain': [],
|
|||
msvc_buildtype_args = {'plain': [],
|
||||
'debug': ["/ZI", "/Ob0", "/Od", "/RTC1"],
|
||||
'debugoptimized': ["/Zi", "/Ob1"],
|
||||
'release': ["/Ob2"],
|
||||
'minsize': ["/Zi", "/Ob1"],
|
||||
'release': ["/Ob2", "/Gw"],
|
||||
'minsize': ["/Zi", "/Gw"],
|
||||
}
|
||||
|
||||
apple_buildtype_linker_args = {'plain': [],
|
||||
|
@ -267,7 +267,7 @@ msvc_optimization_args = {'0': [],
|
|||
'1': ['/O1'],
|
||||
'2': ['/O2'],
|
||||
'3': ['/O3'],
|
||||
's': ['/Os'],
|
||||
's': ['/O1'], # Implies /Os.
|
||||
}
|
||||
|
||||
clike_debug_args = {False: [],
|
||||
|
|
Loading…
Reference in New Issue