Документ взят из кэша поисковой машины. Адрес оригинального документа : http://mirror.msu.net/pub/gentoo-portage/dev-embedded/tigcc/tigcc-0.96_beta7.ebuild
Дата изменения: Sun Aug 9 03:38:18 2015
Дата индексирования: Mon Apr 11 11:47:15 2016
Кодировка:
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

inherit eutils

BASE_BINUTILS="2.16.1"
GCC_VER="4.1.2"
GCC_SNAPSHOT="20060728"
BIN_VER=${BASE_BINUTILS:0:4}
ENV_FILE=${D}/etc/env.d/99tigcc
S="${WORKDIR}"
DESCRIPTION="Cross compiler for Texas Instruments TI-89, TI-92(+) and V200 calculators"
HOMEPAGE="http://tigcc.ticalc.org"

#original source can be found at:
#SRC_URI="http://tigcc.ticalc.org/linux/tigcc_src.tar.bz2"
#but in fact this file changes as soon as there comes a new beta

#when it hits portage of course it should be mirrored on a gentoo mirror:
#SRC_URI="mirror://gentoo/${PF}.tar.bz2"

SRC_URI="mirror://gentoo/tigcc-0.96_beta7.tar.bz2
ftp://gcc.gnu.org/pub/gcc/snapshots/4.1-${GCC_SNAPSHOT}/gcc-4.1-${GCC_SNAPSHOT}.tar.bz2
mirror://kernel/linux/devel/binutils/binutils-${BASE_BINUTILS}.tar.bz2
http://members.chello.at/gerhard.kofler/kevin/ti89prog/libfargo.zip
http://members.chello.at/gerhard.kofler/kevin/ti89prog/flashosa.zip"

LICENSE="GPL-2"

SLOT="0"
KEYWORDS="amd64 ppc ~sparc x86"
IUSE="doc"

RDEPEND=">=sys-devel/binutils-2.14.90.0.6-r1"
DEPEND="${RDEPEND}
app-arch/unzip
>=sys-devel/bison-1.875"

RESTRICT="strip"

src_unpack() {
unpack ${A}

# start by patching and cleaning out binutils and gcc directories.
cd "${WORKDIR}"/binutils-${BASE_BINUTILS}
epatch "${S}"/sources/gcc/gas-${BIN_VER}-tigcc-*.diff

rm -f .brik
rm -f md5.sum
rm -f -r INSTALL
rm -f -r maintainer-scripts
rm -f -r binutils
rm -f -r cpu
rm -f -r etc
rm -f -r gas/doc
rm -f -r gas/po
rm -f -r gprof
rm -f -r include/nlm
rm -f -r include/regs
rm -f -r ld
rm -f -r texinfo

cd "${WORKDIR}"/gcc-4.1-${GCC_SNAPSHOT}
epatch "${S}"/sources/gcc/gcc-4.1-tigcc-patch.diff

rm -f .brik
rm -f md5.sum
rm -f -r INSTALL
rm -f -r fixincludes
rm -f -r gcc/ginclude
rm -f -r gcc/po
rm -f -r gcc/doc
rm -f -r gcc/treelang
rm -f -r libcpp/po
rm -f -r maintainer-scripts
rm -f -r etc
rm -f -r gprof
rm -f -r include/nlm
rm -f -r include/regs
rm -f -r texinfo

# create build directories for binutils and gcc
mkdir -p "${WORKDIR}"/build/binutils
mkdir "${WORKDIR}"/build/gcc

# Workaround for non-existing directories
sed -ie '/SUBDIRS =/d' "${WORKDIR}"/binutils-${BASE_BINUTILS}/gas/Makefile.in
}

src_compile() {
# build binutils
cd "${WORKDIR}"/build/binutils
CFLAGS="${CFLAGS}" "${WORKDIR}"/binutils-${BASE_BINUTILS}/configure \
--disable-serial-configure --target=m68k-coff --disable-shared \
--enable-static --disable-multilib --disable-nls \
|| die
emake || die "gas"

# build gcc
cd "${WORKDIR}"/build/gcc
CFLAGS="${CFLAGS}" "${WORKDIR}"/gcc-4.1-${GCC_SNAPSHOT}/configure --target=m68k-coff \
--with-gnu-as --with-as="${WORKDIR}"/build/binutils/gas/as-new --with-gnu-ld \
--disable-nls --disable-multilib --disable-shared --enable-static \
--disable-threads --enable-languages=c --disable-win32-registry \
--disable-checking --disable-werror --disable-pch --disable-mudflap \
|| die

# GCC compilations _is intended_ to fail on a certain point,
# don't worry about that.
emake -j1

# Check if gcc has been built, die otherwise
( [ -e "${WORKDIR}"/build/gcc/gcc/xgcc ] && [ -e "${WORKDIR}"/build/gcc/gcc/cc1 ] ) || die "gcc"

# build a68k assembler
cd "${S}"/sources/a68k
emake -e || die "a68k"

# build ld-tigcc linker
cd "${S}"/sources/ld-tigcc
emake -e || die "ld-tigcc"

# build tigcc front-end
cd "${S}"/sources/tigcc/src
emake -e || die "tigcc"

# build tprbuilder (TIGCC project builder)
cd "${S}"/sources/tprbuilder/src
emake -e || die "tprbuilder"

# build patcher (object file patcher)
cd "${S}"/sources/patcher/src
emake -e || die "patcher"

}

src_install() {
# install documentation
dodir /usr/bin

if use doc ; then
# patch the script that launches the documentation
# browser to point to the correct location
sed "s:\${TIGCC}/doc:/usr/share/doc/${P}:g" \
"${S}"/tigcclib/doc/converter/tigccdoc \
> "${S}"/tigcclib/doc/converter/tigccdoc.new

cd "${S}"/tigcclib/doc/converter
newbin tigccdoc.new tigccdoc
cd "${S}"/tigcclib/doc
dohtml -r html/*
cp html/qt-assistant.adp "${D}"/usr/share/doc/${PF}/html

cd "${S}"/sources/a68k
fi

dodir /usr/share/doc/${PF}
cd "${S}"
dodoc AUTHORS BUGS CHANGELOG DIRECTORIES HOWTO \
INSTALL README README.linux README.osX

cd "${S}"/sources/tigcc
docinto tigcc
dodoc AUTHORS ChangeLog README

cd "${S}"/sources/tprbuilder
docinto tprbuilder
dodoc AUTHORS ChangeLog README

cd "${S}"/sources/patcher
docinto patcher
dodoc AUTHORS ChangeLog README

exeinto /usr/ti-linux-gnu/tigcc-bin/${GCC_VER}
# install gcc
cd "${WORKDIR}"/build/gcc
doexe gcc/cc1
newexe gcc/xgcc gcc
dosym /usr/ti-linux-gnu/tigcc-bin/${GCC_VER}/gcc \
/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}/ti-linux-gnu-gcc

# install gas
# exeinto /usr/ti-linux-gnu/bin <-- a symlink will be
# created so that gas resides in /usr/ti-linux-gnu/bin too
cd "${WORKDIR}"/build/binutils
newexe gas/as-new as

# install a68k
cd "${S}"/sources/a68k
newexe A68k a68k

# install ld-tigcc
cd "${S}"/sources/ld-tigcc
doexe ld-tigcc
doexe ar-tigcc

# install tigcc
cd "${S}"/sources/tigcc/src
doexe tigcc
dosym /usr/ti-linux-gnu/tigcc-bin/${GCC_VER}/tigcc \
/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}/ti-linux-gnu-tigcc

# install tprbuilder
cd "${S}"/sources/tprbuilder/src
doexe tprbuilder

# install patcher
cd "${S}"/sources/patcher/src
doexe patcher

# install header files
dodir /usr/include/tigcc
cp -R "${S}"/tigcclib/include/* "${D}"/usr/include/tigcc
dosym /usr/include/tigcc/asm/os.h /usr/include/tigcc/asm/OS.h

insinto /usr/lib/gcc-lib/ti-linux-gnu/${GCC_VER}
# install library
cd "${S}"/tigcclib
doins lib/*
cd "${WORKDIR}"
doins flashos.a
doins fargo.a

dodir /usr/share/tigcc
# copy example programs
# cp -r "${S}"/examples ${D}/usr/share/tigcc

# create TIGCC env variable
dodir /etc/env.d/gcc
# echo -e "TIGCC=\"/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}\"" >> ${ENV_FILE}
# echo -e "CC=\"tigcc\"" >> ${ENV_FILE}
echo -e "TIGCC=\"/usr/ti-linux-gnu\"" >> ${ENV_FILE}
echo -e "PATH=\"/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}:/usr/ti-linux-gnu/bin\"" >> ${ENV_FILE}
echo -e "ROOTPATH=\"/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}:/usr/ti-linux-gnu/bin\"" >> ${ENV_FILE}
echo -e "LDPATH=\"/usr/lib/gcc-lib/ti-linux-gnu/${GCC_VER}\"" >> ${ENV_FILE}

# a cross-compiling gcc with hard-coded names has been built.
# therefore, we must place some symlinks.
dosym /usr/include/tigcc /usr/ti-linux-gnu/include
dosym /usr/lib/gcc-lib/ti-linux-gnu/${GCC_VER} /usr/ti-linux-gnu/lib
dosym /usr/share/doc/${PF} /usr/ti-linux-gnu/doc
dosym /usr/ti-linux-gnu/tigcc-bin/${GCC_VER} /usr/ti-linux-gnu/bin
}