summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJussi Pakkanen <jussi.pakkanen@mailbox.org>2025-09-08 19:30:17 +0300
committerJussi Pakkanen <jussi.pakkanen@mailbox.org>2025-10-01 21:54:38 +0300
commit1b101febbbd8a68a5cf85595c9b0f75cdfdc67af (patch)
tree74a8a1e382617eed4dff264175b61cb605c75ee5 /mesonbuild
parentea4a05639b4ac912ecf8e782aaa32d74ff49c755 (diff)
downloadmeson-1b101febbbd8a68a5cf85595c9b0f75cdfdc67af.tar.gz
Split long function in shared library.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/build.py62
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)