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.
245 lines
6.4 KiB
245 lines
6.4 KiB
# Copyright 1999-2014 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
inherit eutils
|
|
|
|
BASE_BINUTILS="2.16.1"
|
|
GCC_VER="4.1.2"
|
|
GCC_SNAPSHOT="20060728"
|
|
BIN_VER=${BASE_BINUTILS:0:4}
|
|
|
|
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/${P}.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"
|
|
RESTRICT="strip"
|
|
|
|
RDEPEND=">=sys-devel/binutils-2.14.90.0.6-r1"
|
|
DEPEND="${RDEPEND}
|
|
app-arch/unzip
|
|
>=sys-devel/bison-1.875"
|
|
|
|
S=${WORKDIR}
|
|
|
|
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
|
|
# TIGCC="/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}"
|
|
# CC="tigcc"
|
|
cat <<-EOF > 99tigcc
|
|
TIGCC="/usr/ti-linux-gnu"
|
|
PATH="/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}:/usr/ti-linux-gnu/bin"
|
|
ROOTPATH="/usr/ti-linux-gnu/tigcc-bin/${GCC_VER}:/usr/ti-linux-gnu/bin"
|
|
LDPATH="/usr/lib/gcc-lib/ti-linux-gnu/${GCC_VER}"
|
|
EOF
|
|
doenvd 99tigcc
|
|
|
|
# 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
|
|
}
|