diff options
author | Ionen Wolkens <ionen@gentoo.org> | 2022-05-10 01:32:32 -0400 |
---|---|---|
committer | Ionen Wolkens <ionen@gentoo.org> | 2022-05-12 22:29:29 -0400 |
commit | 7e1fc3f22395c5a7733a1a4462551f69c892ce3e (patch) | |
tree | ba2a3fe0eb96d8f57e517aed9ee60d30c512b761 /dev-util/mingw64-runtime | |
parent | app-emulation/dxvk: new package, add 1.10.1 + live (diff) | |
download | gentoo-7e1fc3f22395c5a7733a1a4462551f69c892ce3e.tar.gz gentoo-7e1fc3f22395c5a7733a1a4462551f69c892ce3e.tar.bz2 gentoo-7e1fc3f22395c5a7733a1a4462551f69c892ce3e.zip |
dev-util/mingw64-runtime: re-arrange ebuilds some more
Mostly just style, but also now checking tuples again to ensure
more deterministic results (e.g. a cpp check gone wrong could
give 32bit despite x86_64 tuple), then fallback on the cpp check
rather than die like tuple check formerly did.
Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'dev-util/mingw64-runtime')
3 files changed, 329 insertions, 0 deletions
diff --git a/dev-util/mingw64-runtime/mingw64-runtime-10.0.0-r1.ebuild b/dev-util/mingw64-runtime/mingw64-runtime-10.0.0-r1.ebuild new file mode 100644 index 000000000000..8c12697778ba --- /dev/null +++ b/dev-util/mingw64-runtime/mingw64-runtime-10.0.0-r1.ebuild @@ -0,0 +1,109 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs + +DESCRIPTION="Free Win64 runtime and import library definitions" +HOMEPAGE="https://www.mingw-w64.org/" +SRC_URI="mirror://sourceforge/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v${PV}.tar.bz2" +S="${WORKDIR}/mingw-w64-v${PV}" + +LICENSE="ZPL BSD BSD-2 ISC LGPL-2+ LGPL-2.1+ MIT public-domain tools? ( GPL-3+ )" +SLOT="0" +KEYWORDS="~amd64 ~x86" +# USE=libraries needs working stage2 compiler: bug #665512 +IUSE="headers-only idl libraries tools" +RESTRICT="strip" + +PATCHES=( + "${FILESDIR}"/${PN}-7.0.0-fortify-only-ssp.patch +) + +pkg_setup() { + : ${CBUILD:=${CHOST}} + : ${CTARGET:=${CHOST}} + [[ ${CTARGET} == ${CHOST} && ${CATEGORY} == cross-* ]] && + CTARGET=${CATEGORY#cross-} + + [[ ${CHOST} != ${CTARGET} ]] && MW_CROSS=true || MW_CROSS=false + + [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] && + die "Invalid configuration, please see: https://wiki.gentoo.org/wiki/Mingw" +} + +src_configure() { + CHOST=${CTARGET} + strip-unsupported-flags + + # Normally mingw64 does not use dynamic linker. + # But at configure time it uses $LDFLAGS. + # When default -Wl,--hash-style=gnu is passed + # __CTORS_LIST__ / __DTORS_LIST__ is mis-detected + # for target ld and binaries crash at shutdown. + filter-ldflags '-Wl,--hash-style=*' + + local prefix=${EPREFIX}/usr + ${MW_CROSS} && prefix+=/${CTARGET}/usr + + local conf=( + --prefix="${prefix}" + --libdir="${prefix}"/lib + $(use_with !headers-only crt) + + # By default configure tries to set --sysroot=${prefix}. We disable + # this behaviour with --with-sysroot=no to use gcc's sysroot default. + # That way we can cross-build mingw64-runtime with cross-emerge. + --with-sysroot=no + ) + + if use !headers-only; then + conf+=( + $(use_enable idl) + $(use_with libraries) + $(use_with tools) + ) + + # prefer tuple to determine if should do 32 or 64bits, but fall + # back to cpp test if missing (bug #584858, see also #840662) + local b32=true + case ${CHOST} in + x86_64-*) b32=false;; + i*86-*) ;; + *) [[ $($(tc-getCPP) -dM - <<<'') =~ __MINGW64__ ]] && b32=false;; + esac + ${b32} && + conf+=( --enable-lib32 --disable-lib64 ) || + conf+=( --disable-lib32 --enable-lib64 ) + + # prepare temporary headers install to build against same-version + mkdir ../headers || die + pushd ../headers >/dev/null || die + ECONF_SOURCE=${S} econf --prefix="${T}"/root --without-crt + popd >/dev/null || die + + append-cppflags "-I${T}/root/include" + fi + + econf "${conf[@]}" +} + +src_compile() { + use headers-only || emake -C ../headers install + + default +} + +src_install() { + default + + if ${MW_CROSS}; then + # gcc is configured to look at specific hard-coded paths for mingw #419601 + dosym usr /usr/${CTARGET}/mingw + dosym usr /usr/${CTARGET}/${CTARGET} + dosym usr/include /usr/${CTARGET}/sys-include + fi + + rm -r "${ED}"/usr/share || die +} diff --git a/dev-util/mingw64-runtime/mingw64-runtime-8.0.0-r3.ebuild b/dev-util/mingw64-runtime/mingw64-runtime-8.0.0-r3.ebuild new file mode 100644 index 000000000000..f287baeaa601 --- /dev/null +++ b/dev-util/mingw64-runtime/mingw64-runtime-8.0.0-r3.ebuild @@ -0,0 +1,111 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs + +DESCRIPTION="Free Win64 runtime and import library definitions" +HOMEPAGE="https://www.mingw-w64.org/" +SRC_URI="mirror://sourceforge/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v${PV}.tar.bz2" +S="${WORKDIR}/mingw-w64-v${PV}" + +LICENSE="ZPL BSD BSD-2 ISC LGPL-2+ LGPL-2.1+ MIT public-domain tools? ( GPL-3+ )" +SLOT="0" +KEYWORDS="~amd64 ~x86" +# USE=libraries needs working stage2 compiler: bug #665512 +IUSE="headers-only idl libraries tools" +RESTRICT="strip" + +PATCHES=( + "${FILESDIR}"/${PN}-7.0.0-fortify-only-ssp.patch + "${FILESDIR}"/${P}-__rdtsc.patch + "${FILESDIR}"/${P}-udivmod.patch +) + +pkg_setup() { + : ${CBUILD:=${CHOST}} + : ${CTARGET:=${CHOST}} + [[ ${CTARGET} == ${CHOST} && ${CATEGORY} == cross-* ]] && + CTARGET=${CATEGORY#cross-} + + [[ ${CHOST} != ${CTARGET} ]] && MW_CROSS=true || MW_CROSS=false + + [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] && + die "Invalid configuration, please see: https://wiki.gentoo.org/wiki/Mingw" +} + +src_configure() { + CHOST=${CTARGET} + strip-unsupported-flags + + # Normally mingw64 does not use dynamic linker. + # But at configure time it uses $LDFLAGS. + # When default -Wl,--hash-style=gnu is passed + # __CTORS_LIST__ / __DTORS_LIST__ is mis-detected + # for target ld and binaries crash at shutdown. + filter-ldflags '-Wl,--hash-style=*' + + local prefix=${EPREFIX}/usr + ${MW_CROSS} && prefix+=/${CTARGET}/usr + + local conf=( + --prefix="${prefix}" + --libdir="${prefix}"/lib + $(use_with !headers-only crt) + + # By default configure tries to set --sysroot=${prefix}. We disable + # this behaviour with --with-sysroot=no to use gcc's sysroot default. + # That way we can cross-build mingw64-runtime with cross-emerge. + --with-sysroot=no + ) + + if use !headers-only; then + conf+=( + $(use_enable idl) + $(use_with libraries) + $(use_with tools) + ) + + # prefer tuple to determine if should do 32 or 64bits, but fall + # back to cpp test if missing (bug #584858, see also #840662) + local b32=true + case ${CHOST} in + x86_64-*) b32=false;; + i*86-*) ;; + *) [[ $($(tc-getCPP) -dM - <<<'') =~ __MINGW64__ ]] && b32=false;; + esac + ${b32} && + conf+=( --enable-lib32 --disable-lib64 ) || + conf+=( --disable-lib32 --enable-lib64 ) + + # prepare temporary headers install to build against same-version + mkdir ../headers || die + pushd ../headers >/dev/null || die + ECONF_SOURCE=${S} econf --prefix="${T}"/root --without-crt + popd >/dev/null || die + + append-cppflags "-I${T}/root/include" + fi + + econf "${conf[@]}" +} + +src_compile() { + use headers-only || emake -C ../headers install + + default +} + +src_install() { + default + + if ${MW_CROSS}; then + # gcc is configured to look at specific hard-coded paths for mingw #419601 + dosym usr /usr/${CTARGET}/mingw + dosym usr /usr/${CTARGET}/${CTARGET} + dosym usr/include /usr/${CTARGET}/sys-include + fi + + rm -r "${ED}"/usr/share || die +} diff --git a/dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r2.ebuild b/dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r2.ebuild new file mode 100644 index 000000000000..8c12697778ba --- /dev/null +++ b/dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r2.ebuild @@ -0,0 +1,109 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs + +DESCRIPTION="Free Win64 runtime and import library definitions" +HOMEPAGE="https://www.mingw-w64.org/" +SRC_URI="mirror://sourceforge/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v${PV}.tar.bz2" +S="${WORKDIR}/mingw-w64-v${PV}" + +LICENSE="ZPL BSD BSD-2 ISC LGPL-2+ LGPL-2.1+ MIT public-domain tools? ( GPL-3+ )" +SLOT="0" +KEYWORDS="~amd64 ~x86" +# USE=libraries needs working stage2 compiler: bug #665512 +IUSE="headers-only idl libraries tools" +RESTRICT="strip" + +PATCHES=( + "${FILESDIR}"/${PN}-7.0.0-fortify-only-ssp.patch +) + +pkg_setup() { + : ${CBUILD:=${CHOST}} + : ${CTARGET:=${CHOST}} + [[ ${CTARGET} == ${CHOST} && ${CATEGORY} == cross-* ]] && + CTARGET=${CATEGORY#cross-} + + [[ ${CHOST} != ${CTARGET} ]] && MW_CROSS=true || MW_CROSS=false + + [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] && + die "Invalid configuration, please see: https://wiki.gentoo.org/wiki/Mingw" +} + +src_configure() { + CHOST=${CTARGET} + strip-unsupported-flags + + # Normally mingw64 does not use dynamic linker. + # But at configure time it uses $LDFLAGS. + # When default -Wl,--hash-style=gnu is passed + # __CTORS_LIST__ / __DTORS_LIST__ is mis-detected + # for target ld and binaries crash at shutdown. + filter-ldflags '-Wl,--hash-style=*' + + local prefix=${EPREFIX}/usr + ${MW_CROSS} && prefix+=/${CTARGET}/usr + + local conf=( + --prefix="${prefix}" + --libdir="${prefix}"/lib + $(use_with !headers-only crt) + + # By default configure tries to set --sysroot=${prefix}. We disable + # this behaviour with --with-sysroot=no to use gcc's sysroot default. + # That way we can cross-build mingw64-runtime with cross-emerge. + --with-sysroot=no + ) + + if use !headers-only; then + conf+=( + $(use_enable idl) + $(use_with libraries) + $(use_with tools) + ) + + # prefer tuple to determine if should do 32 or 64bits, but fall + # back to cpp test if missing (bug #584858, see also #840662) + local b32=true + case ${CHOST} in + x86_64-*) b32=false;; + i*86-*) ;; + *) [[ $($(tc-getCPP) -dM - <<<'') =~ __MINGW64__ ]] && b32=false;; + esac + ${b32} && + conf+=( --enable-lib32 --disable-lib64 ) || + conf+=( --disable-lib32 --enable-lib64 ) + + # prepare temporary headers install to build against same-version + mkdir ../headers || die + pushd ../headers >/dev/null || die + ECONF_SOURCE=${S} econf --prefix="${T}"/root --without-crt + popd >/dev/null || die + + append-cppflags "-I${T}/root/include" + fi + + econf "${conf[@]}" +} + +src_compile() { + use headers-only || emake -C ../headers install + + default +} + +src_install() { + default + + if ${MW_CROSS}; then + # gcc is configured to look at specific hard-coded paths for mingw #419601 + dosym usr /usr/${CTARGET}/mingw + dosym usr /usr/${CTARGET}/${CTARGET} + dosym usr/include /usr/${CTARGET}/sys-include + fi + + rm -r "${ED}"/usr/share || die +} |