diff options
author | Tatsuyuki Ishi <ishitatsuyuki@gmail.com> | 2022-06-11 01:00:31 +0900 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2022-10-13 04:18:13 -0400 |
commit | 673dca5c0716d4e9527c055a8a20fa11e1893c5b (patch) | |
tree | 4782cbc7ae47202568da95e3b68ec6cdd7a1b8c6 /mesonbuild/compilers/compilers.py | |
parent | a0032480d6707cdfda75987178a7c8ec0c33cbe9 (diff) | |
download | meson-673dca5c0716d4e9527c055a8a20fa11e1893c5b.zip meson-673dca5c0716d4e9527c055a8a20fa11e1893c5b.tar.gz meson-673dca5c0716d4e9527c055a8a20fa11e1893c5b.tar.bz2 |
Add b_thinlto_cache for automatically configuring incremental ThinLTO
Diffstat (limited to 'mesonbuild/compilers/compilers.py')
-rw-r--r-- | mesonbuild/compilers/compilers.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index ea03869..53b4307 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -281,11 +281,12 @@ clike_debug_args = {False: [], base_options: 'KeyedOptionDictType' = { OptionKey('b_pch'): coredata.UserBooleanOption('Use precompiled headers', True), OptionKey('b_lto'): coredata.UserBooleanOption('Use link time optimization', False), - OptionKey('b_lto'): coredata.UserBooleanOption('Use link time optimization', False), OptionKey('b_lto_threads'): coredata.UserIntegerOption('Use multiple threads for Link Time Optimization', (None, None, 0)), OptionKey('b_lto_mode'): coredata.UserComboOption('Select between different LTO modes.', ['default', 'thin'], 'default'), + OptionKey('b_thinlto_cache'): coredata.UserBooleanOption('Use LLVM ThinLTO caching for faster incremental builds', False), + OptionKey('b_thinlto_cache_dir'): coredata.UserStringOption('Directory to store ThinLTO cache objects', ''), OptionKey('b_sanitize'): coredata.UserComboOption('Code sanitizer to use', ['none', 'address', 'thread', 'undefined', 'memory', 'leak', 'address,undefined'], 'none'), @@ -383,13 +384,19 @@ def get_base_compile_args(options: 'KeyedOptionDictType', compiler: 'Compiler') return args def get_base_link_args(options: 'KeyedOptionDictType', linker: 'Compiler', - is_shared_module: bool) -> T.List[str]: + is_shared_module: bool, build_dir: str) -> T.List[str]: args = [] # type: T.List[str] try: if options[OptionKey('b_lto')].value: + thinlto_cache_dir = None + if get_option_value(options, OptionKey('b_thinlto_cache'), False): + thinlto_cache_dir = get_option_value(options, OptionKey('b_thinlto_cache_dir'), '') + if thinlto_cache_dir == '': + thinlto_cache_dir = os.path.join(build_dir, 'meson-private', 'thinlto-cache') args.extend(linker.get_lto_link_args( threads=get_option_value(options, OptionKey('b_lto_threads'), 0), - mode=get_option_value(options, OptionKey('b_lto_mode'), 'default'))) + mode=get_option_value(options, OptionKey('b_lto_mode'), 'default'), + thinlto_cache_dir=thinlto_cache_dir)) except KeyError: pass try: @@ -975,7 +982,8 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta): def get_lto_compile_args(self, *, threads: int = 0, mode: str = 'default') -> T.List[str]: return [] - def get_lto_link_args(self, *, threads: int = 0, mode: str = 'default') -> T.List[str]: + def get_lto_link_args(self, *, threads: int = 0, mode: str = 'default', + thinlto_cache_dir: T.Optional[str] = None) -> T.List[str]: return self.linker.get_lto_args() def sanitizer_compile_args(self, value: str) -> T.List[str]: |