# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-embedded/tigcc/tigcc-0.96_beta8.ebuild,v 1.3 2012/04/30 02:54:59 vapier Exp $ EAPI=4 inherit eutils toolchain-funcs 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_prepare() { # start by patching and cleaning out binutils and gcc directories. cd "${WORKDIR}"/binutils-${BASE_BINUTILS} || die epatch "${S}"/sources/gcc/gas-${BIN_VER}-tigcc-*.diff for i in .brik md5.sum INSTALL maintainer-scripts binutils cpu etc gas/doc gas/po gprof include/nlm include/regs ld texinfo do rm -fr "${i}" done cd "${WORKDIR}"/gcc-4.1-${GCC_SNAPSHOT} || die epatch "${S}"/sources/gcc/gcc-4.1-tigcc-patch.diff for i in .brik md5.sum INSTALL fixincludes gcc/ginclude gcc/po gcc/doc gcc/treelang libcpp/po maintainer-scripts etc gprof include/nlm include/regs texinfo do rm -fr "${i}" done # create build directories for binutils and gcc mkdir -p "${WORKDIR}"/build/binutils || die mkdir "${WORKDIR}"/build/gcc || die # Workaround for non-existing directories sed -ie '/SUBDIRS =/d' "${WORKDIR}"/binutils-${BASE_BINUTILS}/gas/Makefile.in || die tc-export CC AR RANLIB } src_compile() { # build binutils cd "${WORKDIR}"/build/binutils || die CFLAGS="${CFLAGS}" "${WORKDIR}"/binutils-${BASE_BINUTILS}/configure \ --disable-serial-configure --target=m68k-coff --disable-shared \ --enable-static --disable-multilib --disable-nls \ || die emake # build gcc cd "${WORKDIR}"/build/gcc || die 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. nonfatal emake -j1 # Check if gcc has been built, die otherwise ( [ -e "${WORKDIR}"/build/gcc/gcc/xgcc ] && [ -e "${WORKDIR}"/build/gcc/gcc/cc1 ] ) || die "gcc" for i in a68k ld-tigcc tigcc/src tprbuilder/src patcher/src do cd "${S}"/sources/${i} || die emake -e done } 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 || die newbin tigccdoc.new tigccdoc cd "${S}"/tigcclib/doc || die dohtml -r html/* cp html/qt-assistant.adp "${D}"/usr/share/doc/${PF}/html || die cd "${S}"/sources/a68k fi dodir /usr/share/doc/${PF} cd "${S}" dodoc AUTHORS BUGS CHANGELOG DIRECTORIES HOWTO \ INSTALL README README.linux README.osX for i in tigcc tprbuilder patcher do cd "${S}"/sources/${i} docinto ${i} dodoc AUTHORS ChangeLog README done exeinto /usr/ti-linux-gnu/tigcc-bin/${GCC_VER} # install gcc cd "${WORKDIR}"/build/gcc || die 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 || die newexe gas/as-new as # install a68k cd "${S}"/sources/a68k || die newexe A68k a68k # install ld-tigcc cd "${S}"/sources/ld-tigcc || die doexe ld-tigcc doexe ar-tigcc # install tigcc cd "${S}"/sources/tigcc/src || die 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 || die doexe tprbuilder # install patcher cd "${S}"/sources/patcher/src || die doexe patcher # install header files dodir /usr/include/tigcc cp -R "${S}"/tigcclib/include/* "${D}"/usr/include/tigcc || die 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 || die doins lib/* cd "${WORKDIR}" || die 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 }