commit:     ab40dd1735ded9340253a9e693dd75eac860fe3c
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue May  7 11:12:48 2024 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue May  7 14:23:04 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ab40dd17

dev-util/mingw64-toolchain: add IUSE=bin-symlinks

Kept off-by-default given crossdev is still preferred for
full featured mingw toolchain usage, just for anyone that
wants it (also works out better with ccache).

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 dev-util/mingw64-toolchain/metadata.xml            |  7 ++++++
 .../mingw64-toolchain-11.0.1.ebuild                | 28 +++++++++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/dev-util/mingw64-toolchain/metadata.xml 
b/dev-util/mingw64-toolchain/metadata.xml
index 7a95ab69a652..ec66707e7ad0 100644
--- a/dev-util/mingw64-toolchain/metadata.xml
+++ b/dev-util/mingw64-toolchain/metadata.xml
@@ -5,6 +5,13 @@
                <email>io...@gentoo.org</email>
                <name>Ionen Wolkens</name>
        </maintainer>
+       <use>
+               <flag name="bin-symlinks">
+                       Symlink executables to usr/bin to be in default
+                       PATH (conflicts with crossdev mingw, and crossdev
+                       is preferable for a fully featured toolchain)
+               </flag>
+       </use>
        <upstream>
                <remote-id type="cpe">cpe:/a:gnu:gcc</remote-id>
                <remote-id type="cpe">cpe:/a:gnu:binutils</remote-id>

diff --git a/dev-util/mingw64-toolchain/mingw64-toolchain-11.0.1.ebuild 
b/dev-util/mingw64-toolchain/mingw64-toolchain-11.0.1.ebuild
index d8d4a4846a8a..94e4af656ed4 100644
--- a/dev-util/mingw64-toolchain/mingw64-toolchain-11.0.1.ebuild
+++ b/dev-util/mingw64-toolchain/mingw64-toolchain-11.0.1.ebuild
@@ -42,7 +42,7 @@ LICENSE="
 SLOT="0"
 # unkeyworded for testing
 #KEYWORDS="-* ~amd64 ~x86"
-IUSE="+abi_x86_32 custom-cflags debug"
+IUSE="+abi_x86_32 bin-symlinks custom-cflags debug"
 
 RDEPEND="
        dev-libs/gmp:=
@@ -50,6 +50,16 @@ RDEPEND="
        dev-libs/mpfr:=
        sys-libs/zlib:=
        virtual/libiconv
+       bin-symlinks? (
+               abi_x86_64? (
+                       !cross-x86_64-w64-mingw32/binutils
+                       !cross-x86_64-w64-mingw32/gcc
+               )
+               abi_x86_32? (
+                       !cross-i686-w64-mingw32/binutils
+                       !cross-i686-w64-mingw32/gcc
+               )
+       )
 "
 DEPEND="${RDEPEND}"
 
@@ -300,6 +310,14 @@ src_compile() {
                popd >/dev/null || die
        fi
 
+       if use bin-symlinks; then
+               mkdir -p -- "${MWT_D}${EPREFIX}"/usr/bin/ || die
+               local bin
+               for bin in "${sysroot}"/bin/*; do
+                       ln -rs -- "${bin}" "${MWT_D}${EPREFIX}"/usr/bin/ || die
+               done
+       fi
+
        # portage doesn't know the right strip executable to use for CTARGET
        # and it can lead to .a mangling, notably with 32bit (breaks toolchain)
        dostrip -x ${mwtdir}/{${CTARGET}/lib{,32},lib/gcc/${CTARGET}}
@@ -319,6 +337,9 @@ src_install() {
 }
 
 pkg_postinst() {
+       use bin-symlinks && has_version dev-util/shadowman && [[ ! ${ROOT} ]] &&
+               eselect compiler-shadow update all
+
        if [[ ! ${REPLACING_VERSIONS} ]]; then
                elog "Note that this package is primarily intended for Wine and 
related"
                elog "packages to depend on without needing a manual crossdev 
setup."
@@ -337,3 +358,8 @@ pkg_postinst() {
                ewarn "packages and optionally only one needs to be kept."
        fi
 }
+
+pkg_postrm() {
+       use bin-symlinks && has_version dev-util/shadowman && [[ ! ${ROOT} ]] &&
+               eselect compiler-shadow clean all
+}

Reply via email to