diff options
author | Martin Hostettler <textshell@uchuujin.de> | 2018-04-26 21:11:52 +0200 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-04-27 02:10:21 +0000 |
commit | 3ad45ef94e3372b81b284d7edd21123376f63575 (patch) | |
tree | 226877f33120e5ecbd7ec82e086a2778b6fb1bc3 /mesonbuild/compilers/c.py | |
parent | ab17476355c8faff3be7031983c58d3bf54926b3 (diff) | |
download | meson-3ad45ef94e3372b81b284d7edd21123376f63575.zip meson-3ad45ef94e3372b81b284d7edd21123376f63575.tar.gz meson-3ad45ef94e3372b81b284d7edd21123376f63575.tar.bz2 |
CCompiler: Cache result of get_library_dirs().
It is repeatedly used by e.g. guess_external_link_dependencies.
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r-- | mesonbuild/compilers/c.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 91c9a16..88571a3 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -44,6 +44,8 @@ from .compilers import ( class CCompiler(Compiler): + library_dirs_cache = {} + def __init__(self, exelist, version, is_cross, exe_wrapper=None, **kwargs): # If a child ObjC or CPP class has already set it, don't set it ourselves if not hasattr(self, 'language'): @@ -157,7 +159,7 @@ class CCompiler(Compiler): def get_std_shared_lib_link_args(self): return ['-shared'] - def get_library_dirs(self): + def get_library_dirs_real(self): env = os.environ.copy() env['LC_ALL'] = 'C' stdo = Popen_safe(self.exelist + ['--print-search-dirs'], env=env)[1] @@ -167,6 +169,12 @@ class CCompiler(Compiler): return libstr.split(':') return [] + def get_library_dirs(self): + key = tuple(self.exelist) + if key not in self.library_dirs_cache: + self.library_dirs_cache[key] = self.get_library_dirs_real() + return self.library_dirs_cache[key][:] + def get_pic_args(self): return ['-fPIC'] |