diff options
| author | Randy Eckenrode <randy@largeandhighquality.com> | 2024-04-03 17:35:56 -0400 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2024-07-10 21:44:50 +0300 |
| commit | f01ae52bc224e46661e0ee4404c949e4e27773a8 (patch) | |
| tree | 1b1f53b75b475b4a293069ed3aae3535b8469c32 /mesonbuild | |
| parent | 0fade02fe26d89d54cccc711b4d8a29143ebea8a (diff) | |
| download | meson-f01ae52bc224e46661e0ee4404c949e4e27773a8.tar.gz | |
dependencies: find extraframeworks on case-sensitive filesystems
Fixes a test failure on case-sensitive filesystems when a CMake
dependency is turned into an Apple framework.
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/dependencies/framework.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/mesonbuild/dependencies/framework.py b/mesonbuild/dependencies/framework.py index 3c880c743..1fbd62823 100644 --- a/mesonbuild/dependencies/framework.py +++ b/mesonbuild/dependencies/framework.py @@ -47,6 +47,7 @@ class ExtraFrameworkDependency(ExternalDependency): framework_path = self._get_framework_path(p, name) if framework_path is None: continue + framework_name = framework_path.stem # We want to prefer the specified paths (in order) over the system # paths since these are "extra" frameworks. # For example, Python2's framework is in /System/Library/Frameworks and @@ -54,11 +55,15 @@ class ExtraFrameworkDependency(ExternalDependency): # Python.framework. We need to know for sure that the framework was # found in the path we expect. allow_system = p in self.system_framework_paths - args = self.clib_compiler.find_framework(name, self.env, [p], allow_system) + args = self.clib_compiler.find_framework(framework_name, self.env, [p], allow_system) if args is None: continue self.link_args = args self.framework_path = framework_path.as_posix() + # The search is done case-insensitively, so the found name may differ + # from the one that was requested. Setting the name ensures the correct + # one is used when linking on case-sensitive filesystems. + self.name = framework_name self.compile_args = ['-F' + self.framework_path] # We need to also add -I includes to the framework because all # cross-platform projects such as OpenGL, Python, Qt, GStreamer, @@ -74,7 +79,7 @@ class ExtraFrameworkDependency(ExternalDependency): p = Path(path) lname = name.lower() for d in p.glob('*.framework/'): - if lname == d.name.rsplit('.', 1)[0].lower(): + if lname == d.stem.lower(): return d return None |
