commit:     b5a52d6edf58b3f419dca5170625dba3e097181e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 17 08:28:41 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Sep 25 17:27:05 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b5a52d6e

sys-libs/netbsd-csu: Bump to 9.0_beta

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 sys-libs/netbsd-csu/Manifest                   |   1 +
 sys-libs/netbsd-csu/netbsd-csu-9.0_beta.ebuild | 139 +++++++++++++++++++++++++
 2 files changed, 140 insertions(+)

diff --git a/sys-libs/netbsd-csu/Manifest b/sys-libs/netbsd-csu/Manifest
index 16f23ab3c5d..c7b5b25b418 100644
--- a/sys-libs/netbsd-csu/Manifest
+++ b/sys-libs/netbsd-csu/Manifest
@@ -1,2 +1,3 @@
 DIST netbsd-csu-7.1-tests.tar.bz2 579 BLAKE2B 
6d042b3b549ce6ffe0bd0ce908d042e4501a95c21958710078f587d9f52316a52f4bcc219f694ee60066a427a84c027c34906b76c7b8ca151766e5b476152708
 SHA512 
f2aa7d2340e2545a99cb88e104aaca77b64fd5bfea42bbe5e34d790ae120a749245099a550728f3b7ca2ca5a29fd1f426ddd2e8d5a7bc1a44921c308f1cb12db
 DIST netbsd-csu-7.1.tar.xz 993460 BLAKE2B 
013dd56eb5c49289f68518bee3f72afb42b264f7be869c7dda69f12c98ff782246fcee22c84a51719ab7ed45258cf5c06b43ee9d9da31879187bc0025b8e8c02
 SHA512 
834524a3ada2a4c02e7eb17d8be09cf023b91e64627f3b2abc32d4f3302e982dcf0939406dc8d6c0ec7ca5e641d2d1845885bb22a165b3d6a1979c2945e2aaad
+DIST netbsd-csu-9.0_beta.tar.xz 846120 BLAKE2B 
59257e72766279ec043cbee39e2056345348088fbb9af097815c381d6cc5d2bf74c24c0ffd91f45da7384ad6df74a1a4bb0a283b3fb44976f7a59ad2f3bbbb24
 SHA512 
497ea33ac49338cf32bc265f5d9e7f3ba19c58009717af8505f07d9e2ec9bd3a3c72f85ec37924659509111aca20a6552fd8a06c765fa442b414bd6160815e1a

diff --git a/sys-libs/netbsd-csu/netbsd-csu-9.0_beta.ebuild 
b/sys-libs/netbsd-csu/netbsd-csu-9.0_beta.ebuild
new file mode 100644
index 00000000000..b1a2e3b5f9e
--- /dev/null
+++ b/sys-libs/netbsd-csu/netbsd-csu-9.0_beta.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit bsdmk multilib-minimal toolchain-funcs
+
+DESCRIPTION="crtbegin.o/crtend.o from NetBSD CSU for GCC-free toolchain"
+HOMEPAGE="http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/csu/";
+SRC_URI="https://dev.gentoo.org/~mgorny/dist/${P}.tar.xz
+       test? ( 
https://dev.gentoo.org/~mgorny/dist/netbsd-csu-7.1-tests.tar.bz2 )"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+DEPEND="app-arch/xz-utils
+       test? ( sys-devel/clang )"
+
+S=${WORKDIR}/${P}/lib/csu
+
+src_prepare() {
+       default
+       multilib_copy_sources
+}
+
+multilib_src_compile() {
+       local inc_arch=${ABI:-${ARCH}}
+
+       # rewrite ARCH to match NetBSD includes
+       case "${inc_arch}" in
+               x86) inc_arch=i386;;
+               # x32 seems to be equivalent to amd64 as far as we're concerned
+               x32) inc_arch=amd64;;
+               arm64) inc_arch=aarch64;;
+       esac
+
+       # we need arch-specific headers for some assembler macros
+       if [[ ! -d ${WORKDIR}/${P}/sys/arch/${inc_arch} ]]; then
+               die "Unexpected ABI/ARCH: ${inc_arch}, please report"
+       fi
+       ln -s "${WORKDIR}/${P}/sys/arch/${inc_arch}/include" common/machine || 
die
+
+       local opts=(
+               CC="$(tc-getCC)"
+               OBJCOPY="$(tc-getOBJCOPY)"
+
+               MKPIC=yes
+               MKSTRIPIDENT=no
+       )
+       # rewrite MACHINE_ARCH to match names used in CSU
+       case "${inc_arch}" in
+               amd64) opts+=( MACHINE_ARCH=x86_64 );;
+               *) opts+=( MACHINE_ARCH="${inc_arch}" );;
+       esac
+
+       # we only need those files; crt1 and friends are provided by libc
+       opts+=( crtbegin.o crtbeginS.o crtend.o )
+
+       bsdmk_src_compile "${opts[@]}"
+
+       ln -s crtbegin.o crtbeginT.o || die
+       ln -s crtend.o crtendS.o || die
+}
+
+multilib_src_test() {
+       cd "${WORKDIR}"/*-tests || die
+
+       # TODO: fix gcc support
+       local -x CC=${CHOST}-clang
+       local -x CXX=${CHOST}-clang++
+       strip-unsupported-flags
+
+       local cc=(
+               # -B sets prefix for internal gcc/clang file lookup
+               "${CC}" -B"${BUILD_DIR}"
+       )
+
+       # 1. figure out the correct location for crt* files
+       if tc-is-gcc; then
+               # gcc requires crt*.o in multi-dir
+               local multidir=$("${cc[@]}" -print-multi-directory)
+               if [[ ${multidir} != . ]]; then
+                       ln -s . "${multidir}" || die
+               fi
+       elif tc-is-clang; then
+               # clang is entirely happy with crt*.o in -B
+               :
+       else
+               eerror "Unsupported compiler for tests ($(tc-getCC))"
+               return
+       fi
+
+       # 2. verify that the compiler can use our crtbegin/crtend
+       local crtbegin=$("${cc[@]}" -print-file-name=crtbegin.o) || die
+       local crtend=$("${cc[@]}" -print-file-name=crtend.o) || die
+       if [[ ! ${crtbegin} -ef ${BUILD_DIR}/crtbegin.o ]]; then
+               die "Compiler uses wrong crtbegin: ${crtbegin}"
+       fi
+       if [[ ! ${crtend} -ef ${BUILD_DIR}/crtend.o ]]; then
+               die "Compiler uses wrong crtend: ${crtend}"
+       fi
+
+       # 3. build and run the tests
+       emake CC="${cc[*]}"
+
+       local p out exp
+       for p in ./hello{,-static,-dyn}; do
+               if [[ ${p} == ./hello-dyn && ${ABI} == x32 ]]; then
+                       einfo "Skipping ${p} on x32 -- known to crash"
+                       continue
+               fi
+
+               ebegin "Testing ${p}"
+               exp='ctor:main:dtor'
+               [[ ${p} == ./hello-dyn ]] && exp=libctor:${exp}:libdtor
+               if ! out=$("${p}"); then
+                       eend 1
+                       die "Test ${p} crashed for ${ABI:-${ARCH}}"
+               fi
+
+               [[ ${out} == ${exp} ]]
+               if ! eend "${?}"; then
+                       eerror "  Expected: ${exp}"
+                       eerror "  Output  : ${out}"
+                       die "Test ${p} failed for ${ABI:-${ARCH}}"
+               fi
+       done
+
+       emake clean
+}
+
+multilib_src_install() {
+       dolib crtbegin.o crtbeginS.o crtend.o
+       dosym crtbegin.o "/usr/$(get_libdir)/crtbeginT.o"
+       dosym crtend.o "/usr/$(get_libdir)/crtendS.o"
+}

Reply via email to