You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.2 KiB
130 lines
4.2 KiB
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI=4
|
|
|
|
inherit eutils toolchain-funcs versionator
|
|
|
|
# Hack until upstream renames from 0.5 to 0.50
|
|
MY_PV="${PV/50/5}"
|
|
|
|
PATCHREV="1"
|
|
DESCRIPTION="ARCLoad - SGI Multi-bootloader. Able to bootload many different SGI Systems"
|
|
HOMEPAGE="http://www.linux-mips.org/wiki/index.php/ARCLoad"
|
|
SRC_URI="ftp://ftp.linux-mips.org/pub/linux/mips/people/skylark/${PN}-${MY_PV}.tar.bz2
|
|
mirror://gentoo/${P}-patches-v${PATCHREV}.tar.xz"
|
|
LICENSE="GPL-2+"
|
|
SLOT="0"
|
|
KEYWORDS="-* ~mips"
|
|
IUSE=""
|
|
DEPEND="sys-boot/dvhtool
|
|
abi_mips_o32? ( sys-devel/kgcc64 )"
|
|
RDEPEND=""
|
|
RESTRICT="strip"
|
|
|
|
S="${WORKDIR}/${PN}-${MY_PV}"
|
|
PATCHDIR="${WORKDIR}/${P}-patches"
|
|
|
|
src_prepare() {
|
|
# For gcc-4.x, quiet down some of the warnings
|
|
epatch "${PATCHDIR}"/${P}-shut-gcc4x-up.patch
|
|
|
|
# Redefine the targets in the primary Makefile to give us
|
|
# finer control over building the tools. This is for properly
|
|
# cross-compiling arcload
|
|
epatch "${PATCHDIR}"/${P}-makefile-targets.patch
|
|
|
|
# Patches borrowed from Debian:
|
|
# - Load ELF64 images on 32-bit systems - XXX: #543978
|
|
# - Pass an arcload label name directly on the PROM cmdline.
|
|
# - Look for arc.cf in /etc and fallback to /.
|
|
# epatch "${PATCHDIR}"/${P}_deb-elf64-on-m32.patch
|
|
epatch "${PATCHDIR}"/${P}_deb-cmdline-config.patch
|
|
epatch "${PATCHDIR}"/${P}_deb-config-in-etc.patch
|
|
|
|
# Building arcload on different MIPS ABIs can be difficult,
|
|
# so we include specific bits from standard system headers
|
|
# to make the compiler happy. These should rarely, if ever,
|
|
# change...
|
|
epatch "${PATCHDIR}"/${P}-local-elf_h.patch
|
|
|
|
# Patch wreckoff.c to handle the new .MIPS.abiflags section.
|
|
epatch "${PATCHDIR}"/${P}-wreckoff-abiflags-fix.patch
|
|
|
|
# In order to convert from ELF to ECOFF, we need to disable
|
|
# SSP, as that adds additional program headers that I don't
|
|
# know how to handle in wreckoff.c.
|
|
epatch "${PATCHDIR}"/${P}-disable-ssp.patch
|
|
|
|
# The code is old and has a lot of issues. But it's just a
|
|
# simple bootloader, so silence the various warnings until
|
|
# it can be re-written.
|
|
epatch "${PATCHDIR}"/${P}-silence-warnings.patch
|
|
}
|
|
|
|
src_compile() {
|
|
local myCC myCC64 myLD myLD64
|
|
|
|
myCC="$(tc-getCC)"
|
|
myLD="$(tc-getLD)"
|
|
if use abi_mips_o32; then
|
|
myCC64=${myCC/mips/mips64}
|
|
myLD64=${myLD/mips/mips64}
|
|
else
|
|
myCC64=${myCC}
|
|
myLD64=${myLD}
|
|
fi
|
|
|
|
# Build the wreckoff tool first. It converts a 32bit MIPS ELF
|
|
# into a relocatable ECOFF image. We call for BUILD_CC
|
|
# on the offchance that we're cross-compiling.
|
|
echo -e ""
|
|
einfo ">>> Building the 'wreckoff' utility with $(tc-getBUILD_CC) ..."
|
|
emake CC=$(tc-getBUILD_CC) tools_clean tools
|
|
|
|
# 32bit copy (sashARCS for IP22/IP32)
|
|
echo -e ""
|
|
einfo ">>> Building 32-bit version (sashARCS) for IP22/IP32 with ${myCC} ..."
|
|
cd "${S}"
|
|
emake MODE=M32 bootloader_clean
|
|
emake CC=${myCC} LD=${myLD} MODE=M32 bootloader
|
|
cp "${S}"/arcload.ecoff "${WORKDIR}"/sashARCS
|
|
|
|
# 64bit copy (sash64 for IP27/IP28/IP30)
|
|
echo -e ""
|
|
einfo ">>> Building 64-bit version (sash64) for IP27/IP28/IP30 ${myCC/mips/mips64} ..."
|
|
emake MODE=M64 bootloader_clean
|
|
emake CC=${myCC64} LD=${myLD64} MODE=M64 bootloader
|
|
cp "${S}"/arcload "${WORKDIR}"/sash64
|
|
}
|
|
|
|
src_install() {
|
|
dodir /usr/lib/arcload
|
|
cp "${WORKDIR}"/sashARCS "${D}"/usr/lib/arcload
|
|
cp "${WORKDIR}"/sash64 "${D}"/usr/lib/arcload
|
|
cp "${S}"/arc.cf-bootcd "${D}"/usr/lib/arcload/arc-bootcd.cf
|
|
cp "${S}"/arc.cf-octane "${D}"/usr/lib/arcload/arc-octane.cf
|
|
|
|
# Add a manpage for arcload(8) from the Debian Project.
|
|
doman "${FILESDIR}/arcload.8"
|
|
}
|
|
|
|
pkg_postinst() {
|
|
echo -e ""
|
|
einfo "ARCLoad binaries copied to: /usr/lib/arcload"
|
|
echo -e ""
|
|
einfo "Use of ARCLoad is relatively easy:"
|
|
einfo "\t1) Determine which version you need"
|
|
einfo "\t\tA) sashARCS for IP22/IP32"
|
|
einfo "\t\tB) sash64 for IP27/IP28/IP30"
|
|
einfo "\t2) Copy that to the volume header using 'dvhtool'"
|
|
einfo "\t3) Edit /usr/lib/arcload/arc-*.cf to fit your specific system"
|
|
einfo "\t (See ${HOMEPAGE} for"
|
|
einfo "\t an explanation of the format of the config file)"
|
|
einfo "\t4) Copy the config file to the volume header with 'dvhtool' as 'arc.cf'"
|
|
einfo "\t5) Copy any kernels to the volume header that you want to be bootable"
|
|
einfo "\t6) Reboot, and enjoy!"
|
|
echo -e ""
|
|
}
|