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.
pull/3921/merge
Ole André Vadla Ravnås 7 years ago committed by Jussi Pakkanen
parent 5e93393cd9
commit 6cd71a8033
  1. 5
      mesonbuild/compilers/c.py
  2. 6
      mesonbuild/compilers/compilers.py

@ -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…
Cancel
Save