# 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 }