diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-05-12 16:42:50 +0300 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-05-12 16:42:50 +0300 |
commit | 752d6256e5204b958b0ef7905675a940b5e9172f (patch) | |
tree | 330d16e6362a49cbed8875a777fe641a43376cd3 /dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r1.ebuild | |
parent | 0c100b7dd2b30e75b799d806df4ef899fd98e1ea (diff) |
gentoo resync : 12.05.2022
Diffstat (limited to 'dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r1.ebuild')
-rw-r--r-- | dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r1.ebuild | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r1.ebuild b/dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r1.ebuild new file mode 100644 index 000000000000..077a2a52ccd6 --- /dev/null +++ b/dev-util/mingw64-runtime/mingw64-runtime-9.0.0-r1.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +export CBUILD=${CBUILD:-${CHOST}} +export CTARGET=${CTARGET:-${CHOST}} +if [[ ${CTARGET} == ${CHOST} && ${CATEGORY} == cross-* ]]; then + export CTARGET=${CATEGORY#cross-} +fi + +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 +) + +mingw-is_cross() { + [[ ${CHOST} != ${CTARGET} ]] +} + +pkg_setup() { + if [[ ${CBUILD} == ${CHOST} && ${CHOST} == ${CTARGET} ]]; then + die "Invalid configuration" + fi +} + +src_configure() { + CHOST=${CTARGET} strip-unsupported-flags + + # Normally mingw-64 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=*' + + if use !headers-only; then + mkdir "${WORKDIR}"/headers || die + pushd "${WORKDIR}"/headers >/dev/null || die + + local econfargs=( + --prefix="${T}"/tmproot + --with-headers + --without-crt + ) + + CHOST=${CTARGET} ECONF_SOURCE=${S} econf "${econfargs[@]}" + + popd >/dev/null || die + + append-cppflags "-I${T}/tmproot/include" + fi + + crt-use_enable() { + use headers-only && echo --without-${2:-${1}} || use_enable "${@}" + } + crt-use_with() { + use headers-only && echo --without-${2:-${1}} || use_with "${@}" + } + + local prefix="${EPREFIX}"$(mingw-is_cross && echo /usr/${CTARGET})/usr + local econfargs=( + --prefix="${prefix}" + --libdir="${prefix}"/lib + --enable-sdk + --with-headers + + # 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 + + $(use_with !headers-only crt) + $(crt-use_enable idl) + $(crt-use_with libraries) + $(crt-use_with tools) + $( + if use !headers-only; then + # not checking cpp errors due to bug #840662 + $(tc-getCPP ${CTARGET}) ${CPPFLAGS} -dM - </dev/null | grep -q __MINGW64__ \ + && echo --disable-lib32 --enable-lib64 \ + || echo --enable-lib32 --disable-lib64 + fi + ) + ) + + CHOST=${CTARGET} econf "${econfargs[@]}" +} + +src_compile() { + use headers-only || emake -C "${WORKDIR}"/headers install + + default +} + +src_install() { + default + + if mingw-is_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 +} |