diff options
| author | KO Myung-Hun <komh@chollian.net> | 2023-10-30 19:15:31 +0900 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-11-14 08:16:23 -0800 |
| commit | c3275c5a0a19ea70b8227a2c9fb3e604b1d8bb51 (patch) | |
| tree | 3e564ec4ef47497ec1e59e504238150c636e59e8 /mesonbuild | |
| parent | 6fc9f10a5ce7fa951df1ee0347fd54c86941b151 (diff) | |
| download | meson-c3275c5a0a19ea70b8227a2c9fb3e604b1d8bb51.tar.gz | |
Add `shortname' kwarg for a short DLL name on OS/2
Give an user opportunities to mangle a custom short name for a DLL on
OS/2.
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/build.py | 14 | ||||
| -rw-r--r-- | mesonbuild/interpreter/type_checking.py | 6 | ||||
| -rw-r--r-- | mesonbuild/modules/rust.py | 2 |
3 files changed, 16 insertions, 6 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 2b5ec30f0..2a095b022 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -124,6 +124,7 @@ if T.TYPE_CHECKING: version: str soversion: str darwin_versions: T.Tuple[str, str] + shortname: str class StaticLibraryKeywordArguments(BuildTargetKeywordArguments, total=False): @@ -198,7 +199,7 @@ known_build_target_kwargs = ( swift_kwargs) known_exe_kwargs = known_build_target_kwargs | {'implib', 'export_dynamic', 'pie', 'vs_module_defs', 'android_exe_type'} -known_shlib_kwargs = known_build_target_kwargs | {'version', 'soversion', 'vs_module_defs', 'darwin_versions', 'rust_abi'} +known_shlib_kwargs = known_build_target_kwargs | {'version', 'soversion', 'vs_module_defs', 'darwin_versions', 'rust_abi', 'shortname'} known_shmod_kwargs = known_build_target_kwargs | {'vs_module_defs', 'rust_abi'} known_stlib_kwargs = known_build_target_kwargs | {'pic', 'prelink', 'rust_abi'} known_jar_kwargs = known_exe_kwargs | {'main_class', 'java_resources'} @@ -2430,6 +2431,7 @@ class SharedLibrary(BuildTarget): # Max length 2, first element is compatibility_version, second is current_version self.darwin_versions: T.Optional[T.Tuple[str, str]] = None self.vs_module_defs = None + self.shortname: T.Optional[str] = None # The import library this target will generate self.import_filename = None # The debugging information file this target will generate @@ -2560,12 +2562,11 @@ class SharedLibrary(BuildTarget): # Import library is called foo_dll.a import_suffix = import_suffix if import_suffix is not None else '_dll.a' import_filename_tpl = '{0.prefix}{0.name}' + import_suffix + filename_tpl = '{0.shortname}' if self.shortname else '{0.prefix}{0.name}' if self.soversion: # fooX.dll - filename_tpl = '{0.prefix}{0.name}{0.soversion}.{0.suffix}' - else: - # No versioning, foo.dll - filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + filename_tpl += '{0.soversion}' + filename_tpl += '.{0.suffix}' else: prefix = prefix if prefix is not None else 'lib' suffix = suffix if suffix is not None else 'so' @@ -2639,6 +2640,9 @@ class SharedLibrary(BuildTarget): # Visual Studio module-definitions file self.process_vs_module_defs_kw(kwargs) + # OS/2 uses a 8.3 name for a DLL + self.shortname = kwargs.get('shortname') + def get_import_filename(self) -> T.Optional[str]: """ The name of the import library that will be outputted by the compiler diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index b4799f3a7..d0a57f2c9 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -862,12 +862,18 @@ STATIC_LIB_KWS = [ _JAVA_LANG_KW, ] +def _shortname_validator(shortname: T.Optional[str]) -> T.Optional[str]: + if shortname is not None and len(shortname) > 8: + return 'must have a maximum of 8 characters' + return None + # Arguments exclusive to SharedLibrary. These are separated to make integrating # them into build_target easier _EXCLUSIVE_SHARED_LIB_KWS: T.List[KwargInfo] = [ _DARWIN_VERSIONS_KW, KwargInfo('soversion', (str, int, NoneType), convertor=lambda x: str(x) if x is not None else None), KwargInfo('version', (str, NoneType), validator=_validate_shlib_version), + KwargInfo('shortname', (str, NoneType), since='1.10.0', validator=_shortname_validator), ] # The total list of arguments used by SharedLibrary diff --git a/mesonbuild/modules/rust.py b/mesonbuild/modules/rust.py index 1836ba9c2..094c363e5 100644 --- a/mesonbuild/modules/rust.py +++ b/mesonbuild/modules/rust.py @@ -181,7 +181,7 @@ class RustModule(ExtensionModule): new_target_kwargs = T.cast('ExecutableKeywordArguments', base_target.original_kwargs.copy()) del new_target_kwargs['rust_crate_type'] - for kw in ('pic', 'prelink', 'rust_abi', 'version', 'soversion', 'darwin_versions'): + for kw in ('pic', 'prelink', 'rust_abi', 'version', 'soversion', 'darwin_versions', 'shortname'): if kw in new_target_kwargs: del new_target_kwargs[kw] # type: ignore[misc] |
