diff options
| author | Jussi Pakkanen <jussi.pakkanen@mailbox.org> | 2025-09-08 19:30:17 +0300 |
|---|---|---|
| committer | Jussi Pakkanen <jussi.pakkanen@mailbox.org> | 2025-10-01 21:54:38 +0300 |
| commit | 1b101febbbd8a68a5cf85595c9b0f75cdfdc67af (patch) | |
| tree | 74a8a1e382617eed4dff264175b61cb605c75ee5 /mesonbuild | |
| parent | ea4a05639b4ac912ecf8e782aaa32d74ff49c755 (diff) | |
| download | meson-1b101febbbd8a68a5cf85595c9b0f75cdfdc67af.tar.gz | |
Split long function in shared library.
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/build.py | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 32a1eec32..d2adf7cb8 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -2465,21 +2465,12 @@ class SharedLibrary(BuildTarget): def get_default_install_dir(self) -> T.Union[T.Tuple[str, str], T.Tuple[None, None]]: return self.environment.get_shared_lib_dir(), '{libdir_shared}' - def determine_filenames(self): - """ - See https://github.com/mesonbuild/meson/pull/417 for details. - - First we determine the filename template (self.filename_tpl), then we - set the output filename (self.filename). - - The template is needed while creating aliases (self.get_aliases), - which are needed while generating .so shared libraries for Linux. - - Besides this, there's also the import library name (self.import_filename), - which is only used on Windows since on that platform the linker uses a - separate library called the "import library" during linking instead of - the shared library (DLL). - """ + def determine_naming_info(self) -> T.Tuple[str, str, str, str, bool]: + prefix = '' + suffix = '' + filename_tpl = self.basic_filename_tpl + import_filename_tpl = '' + create_debug_file = False prefix = '' suffix = '' create_debug_file = False @@ -2490,7 +2481,7 @@ class SharedLibrary(BuildTarget): if 'cs' in self.compilers: prefix = '' suffix = 'dll' - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}' create_debug_file = True # C, C++, Swift, Vala # Only Windows uses a separate import library for linking @@ -2519,9 +2510,9 @@ class SharedLibrary(BuildTarget): import_filename_tpl = '{0.prefix}{0.name}.dll.a' # Shared library has the soversion if it is defined if self.soversion: - self.filename_tpl = '{0.prefix}{0.name}-{0.soversion}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}-{0.soversion}.{0.suffix}' else: - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}' elif self.environment.machines[self.for_machine].is_cygwin(): suffix = 'dll' # Shared library is of the form cygfoo.dll @@ -2531,40 +2522,59 @@ class SharedLibrary(BuildTarget): import_prefix = self.prefix if self.prefix is not None else 'lib' import_filename_tpl = import_prefix + '{0.name}.dll.a' if self.soversion: - self.filename_tpl = '{0.prefix}{0.name}-{0.soversion}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}-{0.soversion}.{0.suffix}' else: - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}' elif self.environment.machines[self.for_machine].is_darwin(): prefix = 'lib' suffix = 'dylib' # On macOS, the filename can only contain the major version if self.soversion: # libfoo.X.dylib - self.filename_tpl = '{0.prefix}{0.name}.{0.soversion}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.soversion}.{0.suffix}' else: # libfoo.dylib - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}' elif self.environment.machines[self.for_machine].is_android(): prefix = 'lib' suffix = 'so' # Android doesn't support shared_library versioning - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}' else: prefix = 'lib' suffix = 'so' if self.ltversion: # libfoo.so.X[.Y[.Z]] (.Y and .Z are optional) - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}.{0.ltversion}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}.{0.ltversion}' elif self.soversion: # libfoo.so.X - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}.{0.soversion}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}.{0.soversion}' else: # No versioning, libfoo.so - self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + return (prefix, suffix, filename_tpl, import_filename_tpl, create_debug_file) + + def determine_filenames(self): + """ + See https://github.com/mesonbuild/meson/pull/417 for details. + + First we determine the filename template (self.filename_tpl), then we + set the output filename (self.filename). + + The template is needed while creating aliases (self.get_aliases), + which are needed while generating .so shared libraries for Linux. + + Besides this, there's also the import library name (self.import_filename), + which is only used on Windows since on that platform the linker uses a + separate library called the "import library" during linking instead of + the shared library (DLL). + """ + prefix, suffix, filename_tpl, import_filename_tpl, create_debug_file = self.determine_naming_info() if self.prefix is None: self.prefix = prefix if self.suffix is None: self.suffix = suffix + self.filename_tpl = filename_tpl self.filename = self.filename_tpl.format(self) if import_filename_tpl: self.import_filename = import_filename_tpl.format(self) |
