| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| |
| inherit bsdmk freebsd flag-o-matic toolchain-funcs |
| |
| DESCRIPTION="FreeBSD's bootloader" |
| SLOT="0" |
| |
| IUSE="bzip2 ieee1394 tftp zfs" |
| |
| if [[ ${PV} != *9999* ]]; then |
| KEYWORDS="~amd64-fbsd ~sparc-fbsd ~x86-fbsd" |
| fi |
| |
| EXTRACTONLY=" |
| sys/ |
| lib/ |
| contrib/bzip2/ |
| " |
| |
| RDEPEND="" |
| DEPEND="=sys-freebsd/freebsd-mk-defs-${RV}* |
| =sys-freebsd/freebsd-lib-${RV}*" |
| |
| S="${WORKDIR}/sys/boot" |
| |
| PATCHES=( "${FILESDIR}/${PN}-10.1-gcc46.patch" |
| "${FILESDIR}/${PN}-10.1-drop-unsupport-cflags.patch" |
| "${FILESDIR}/${PN}-add-nossp-cflags.patch" ) |
| |
| boot0_use_enable() { |
| use ${1} && mymakeopts="${mymakeopts} LOADER_${2}_SUPPORT=\"yes\"" |
| use ${1} || mymakeopts="${mymakeopts} WITHOUT_${2}= " |
| } |
| |
| pkg_setup() { |
| boot0_use_enable ieee1394 FIREWIRE |
| boot0_use_enable zfs ZFS |
| boot0_use_enable tftp TFTP |
| boot0_use_enable bzip2 BZIP2 |
| } |
| |
| src_prepare() { |
| sed -e '/-mno-align-long-strings/d' \ |
| -i "${S}"/i386/boot2/Makefile \ |
| -i "${S}"/i386/gptboot/Makefile \ |
| -i "${S}"/i386/gptzfsboot/Makefile \ |
| -i "${S}"/i386/zfsboot/Makefile || die |
| } |
| |
| src_compile() { |
| strip-flags |
| append-flags "-fno-strict-aliasing" |
| |
| if use amd64-fbsd; then |
| cd "${S}/userboot/libstand" || die |
| freebsd_src_compile |
| cd "${S}/userboot/zfs" || die |
| freebsd_src_compile |
| fi |
| |
| cd "${S}/libstand32" || die |
| freebsd_src_compile |
| |
| # bug542676 |
| if [[ $(tc-getCC) == *clang* ]]; then |
| cd "${S}/i386/btx" || die |
| freebsd_src_compile |
| cd "${S}/i386/boot2" || die |
| CC=${CHOST}-gcc freebsd_src_compile |
| fi |
| |
| cd "${WORKDIR}/lib/libstand" || die |
| freebsd_src_compile |
| |
| cd "${S}" |
| CFLAGS="${CFLAGS} -I${WORKDIR}/lib/libstand" |
| LDFLAGS="${LDFLAGS} -L${WORKDIR}/lib/libstand" |
| export LIBSTAND="${WORKDIR}/lib/libstand/libstand.a" |
| NOFLAGSTRIP="yes" freebsd_src_compile |
| } |
| |
| src_install() { |
| dodir /boot/defaults |
| mkinstall FILESDIR=/boot || die "mkinstall failed" |
| |
| cd "${WORKDIR}/sys/$(tc-arch-kernel)/conf" || die |
| insinto /boot |
| newins GENERIC.hints device.hints |
| |
| echo 'CONFIG_PROTECT="/boot/device.hints"' > "${T}"/50boot0 |
| doenvd "${T}"/50boot0 |
| } |