From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] [PATCH 00/11] llvm-r2.eclass, to unmess pkg_setup and fix cross
Date: Mon, 30 Dec 2024 12:35:17 +0100 [thread overview]
Message-ID: <4b8574eceed10b524dfadeea485819a7fcbd5ab5.camel@gentoo.org> (raw)
In-Reply-To: <20241221160053.780079-1-mgorny@gentoo.org>
[-- Attachment #1: Type: text/plain, Size: 3553 bytes --]
On Sat, 2024-12-21 at 16:48 +0100, Michał Górny wrote:
> Hello,
>
> Here's the newest eclass I've been working on. While llvm-r1 addressed
> the problems of generating dependencies and matching LLVM package
> versions, it retained a hacky awful pkg_setup(). This one aims to fix
> that.
>
> Note that the patchset contains a quick hack enabling testing the new
> eclass on packages using llvm-r1 -- it's obviously not intended to be
> merged.
>
> PR for those who prefer quality Microsoft software:
> https://github.com/gentoo/gentoo/pull/39696
>
> Now, on to some details.
>
>
> The eclass aims to support two main uses of LLVM: as libraries to link
> to, and as a tools to call at build time. The default setup tries to
> handle both, and it will probably succeed for the general case, though
> to get cross right, it may require some manual manipulation.
>
> In the greatest simplification:
>
> 1. If you only link to LLVM and don't need to call anything, you need
> to add a DEPEND and call llvm_chost_setup.
>
> 2. If you only call LLVM tools and don't link to it, you need to add
> a BDEPEND and call llvm_cbuild_setup.
>
> 3. If you need both, then you add both DEPEND and BDEPEND, and call both
> (i.e. llvm-r2_pkg_setup).
>
> llvm_cbuild_setup is pretty similar to what the previous eclasses did.
> It sets PATH, but unlike the old eclasses, it uses the correct BROOT
> path.
>
> llvm_chost_setup combines a few methods to make it most likely for
> the build systems to find the correct LLVM installation. We set a bunch
> of variables that are used by CMake's `find_package()` function, and we
> generate a custom llvm-config that uses the ESYSROOT install of LLVM
> (except for --bindir, that refers to BROOT tools, if available).
>
> Of course, individual packages may need different scenarios.
> For example, sequoia-sq uses llvm-config to find libclang.so that's
> loaded at build-time -- it won't work correctly with llvm_chost_setup
> (though this will only affect cross-compilation), and needs plain
> llvm_cbuild_setup instead. Other packages may prefer no special setup
> at all and instead will want some custom configure option pointing
> at the LLVM installation.
>
> Overall, I think it's the best "one size fits all" tool I could come up
> with, and one that can be customized to fit other use cases. Please
> test and lemme know what you make of it.
>
>
> Michał Górny (11):
> llvm-r1.eclass: Fix list in eclassdoc
> llvm-r2.eclass: Copy from llvm-r1.eclass
> HACK! llvm-r1 -> llvm-r2 (to ease testing)
> llvm-utils.eclass: Support -b/-d to llvm_prepend_path
> llvm-r2.eclass: Readjust for BROOT, split to llvm_cbuild_setup
> llvm-r2.eclass: Add llvm_chost_setup, set CMake path variables
> llvm-r2.eclass: Generate a llvm-config script for CHOST
> llvm-r2.eclass: Update top-level docs for CBUILD/CHOST support
> llvm-r2.eclass: Remove obsolete Meson LLVM_CONFIG hack
> eclass/tests: Copy llvm-r1 tests to llvm-r2.sh
> eclass/tests/llvm-r2.sh: Add tests for llvm-config
>
> eclass/llvm-r1.eclass | 203 +----------------
> eclass/llvm-r2.eclass | 474 +++++++++++++++++++++++++++++++++++++++
> eclass/llvm-utils.eclass | 27 ++-
> eclass/tests/llvm-r2.sh | 188 ++++++++++++++++
> 4 files changed, 690 insertions(+), 202 deletions(-)
> create mode 100644 eclass/llvm-r2.eclass
> create mode 100755 eclass/tests/llvm-r2.sh
>
Merged now.
--
Best regards,
Michał Górny
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 512 bytes --]
prev parent reply other threads:[~2024-12-30 11:35 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-21 15:48 [gentoo-dev] [PATCH 00/11] llvm-r2.eclass, to unmess pkg_setup and fix cross Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 01/11] llvm-r1.eclass: Fix list in eclassdoc Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 02/11] llvm-r2.eclass: Copy from llvm-r1.eclass Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 03/11] HACK! llvm-r1 -> llvm-r2 (to ease testing) Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 04/11] llvm-utils.eclass: Support -b/-d to llvm_prepend_path Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 05/11] llvm-r2.eclass: Readjust for BROOT, split to llvm_cbuild_setup Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 06/11] llvm-r2.eclass: Add llvm_chost_setup, set CMake path variables Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 07/11] llvm-r2.eclass: Generate a llvm-config script for CHOST Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 08/11] llvm-r2.eclass: Update top-level docs for CBUILD/CHOST support Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 09/11] llvm-r2.eclass: Remove obsolete Meson LLVM_CONFIG hack Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 10/11] eclass/tests: Copy llvm-r1 tests to llvm-r2.sh Michał Górny
2024-12-21 15:48 ` [gentoo-dev] [PATCH 11/11] eclass/tests/llvm-r2.sh: Add tests for llvm-config Michał Górny
2024-12-30 11:35 ` Michał Górny [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4b8574eceed10b524dfadeea485819a7fcbd5ab5.camel@gentoo.org \
--to=mgorny@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox