From 87ade0498f13efcecd7add1e7625c0568277df82 Mon Sep 17 00:00:00 2001 From: X512 Date: Thu, 30 Jan 2025 22:01:08 +0900 Subject: [PATCH] haiku: fix devel lib install path Haiku have separate install paths for libraries used by runtime loader and compiler. Runtime loader library search path is `$prefix/lib`. Compiler search path (for `ld -lXXX` argumets) is `$prefix/develop/lib`. --- mesonbuild/backend/backends.py | 7 ++++++- mesonbuild/environment.py | 6 ++++++ mesonbuild/modules/pkgconfig.py | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 0c181e56fb53..f56ea73bb147 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -1770,7 +1770,12 @@ def generate_target_install(self, d: InstallData) -> None: d.targets.append(i) for alias, to, tag in t.get_aliases(): - alias = os.path.join(first_outdir, alias) + symlinkDir = first_outdir + if tag == 'devel': + symlinkDir = self.environment.get_import_lib_dir() + alias = os.path.join(symlinkDir, alias) + if first_outdir != symlinkDir: + to = os.path.join(os.path.relpath(first_outdir, symlinkDir), to) s = InstallSymlinkData(to, alias, first_outdir, t.subproject, tag, allow_missing=True) d.symlinks.append(s) diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index c09d7e312ab7..ae1075219cac 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -913,6 +913,9 @@ def get_build_dir(self) -> str: def get_import_lib_dir(self) -> str: "Install dir for the import library (library used for linking)" + m = self.machines.host + if m.is_haiku(): + return 'develop/lib' return self.get_libdir() def get_shared_module_dir(self) -> str: @@ -933,6 +936,9 @@ def get_jar_dir(self) -> str: def get_static_lib_dir(self) -> str: "Install dir for the static library" + m = self.machines.host + if m.is_haiku(): + return 'develop/lib' return self.get_libdir() def get_prefix(self) -> str: diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 1bdf82931a94..29f8b4bd32eb 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -507,7 +507,10 @@ def _generate_pkgconfig_file(self, state: ModuleState, deps: DependenciesHelper, if optname == 'prefix': ofile.write('prefix={}\n'.format(self._escape(prefix))) else: - dirpath = PurePath(_as_str(coredata.get_option(OptionKey(optname)))) + if optname == 'libdir': + dirpath = PurePath(state.environment.get_import_lib_dir()) + else: + dirpath = PurePath(_as_str(coredata.get_option(OptionKey(optname)))) ofile.write('{}={}\n'.format(optname, self._escape('${prefix}' / dirpath))) if uninstalled and not dataonly: ofile.write('srcdir={}\n'.format(self._escape(srcdir)))