# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ MY_PV=3.4.3 DESCRIPTION="ghdl Compiler" SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/gcc-${MY_PV}/gcc-core-${MY_PV}.tar.bz2 http://ghdl.free.fr/ghdl-${PV}.tar.bz2" HOMEPAGE="http://ghdl.free.fr/" DEPEND="" SLOT="0" KEYWORDS="~x86" LICENSE="GPL-2" IUSE="" GCCBUILD="${WORKDIR}/gcc-${MY_PV}" DEPEND="dev-lang/gnat" CFLAGS="-O" src_unpack() { unpack ${A} cp -r ${WORKDIR}/ghdl-${PV}/vhdl ${GCCBUILD}/gcc cd "${GCCBUILD}" patch ${GCCBUILD}/gcc/Makefile.in ${FILESDIR}/gccpatch || die "patch failed" patch ${GCCBUILD}/gcc/vhdl/Makefile.in ${FILESDIR}/ghdlpatch || die "patch failed" } src_compile() { # Configure gcc cd ${GCCBUILD} "${GCCBUILD}"/configure --prefix=/usr \ --program-prefix="ghdl" \ --enable-languages="vhdl" \ --libdir=/usr/lib/ghdl \ --libexecdir=/usr/lib/ghdl \ --datadir=/usr/data/ghdl \ || die "configure failed" make || die "ghdl build" } src_install() { # Install ghdl, tools cd "${GCCBUILD}" #make prefix=${D}/usr \ #libdir=${D}/usr/lib/ghdl \ #libexecdir=${D}/usr/libexec/ghdl \ #datadir=${D}/usr/data/ghdl \ #install || die "died while installing" make install DESTDIR=${D} || die "died while installing" } pkg_postinst() { # reanalyze the libraries on the system local BPATH=${ROOT}usr/lib/ghdl/gcc/i686-pc-linux-gnu/3.4.3/vhdl local STD93SRCS="${BPATH}/src/std/textio.v93 \ ${BPATH}/src/std/textio_body.v93" local STD87SRCS="${BPATH}/src/std/textio.v87 \ ${BPATH}/src/std/textio_body.v87" local IEEE93SRCS="${BPATH}/src/ieee/std_logic_1164.v93 \ ${BPATH}/src/ieee/std_logic_1164_body.v93 \ ${BPATH}/src/ieee/numeric_bit.v93 \ ${BPATH}/src/ieee/numeric_bit-body.v93 \ ${BPATH}/src/ieee/numeric_std.v93 \ ${BPATH}/src/ieee/numeric_std-body.v93 \ ${BPATH}/src/vital2000/timing_p.vhdl \ ${BPATH}/src/vital2000/timing_b.vhdl \ ${BPATH}/src/vital2000/prmtvs_p.vhdl \ ${BPATH}/src/vital2000/prmtvs_b.vhdl \ ${BPATH}/src/vital2000/memory_p.vhdl \ ${BPATH}/src/vital2000/memory_b.vhdl" local IEEE87SRCS="${BPATH}/src/ieee/std_logic_1164.v87 \ ${BPATH}/src/ieee/std_logic_1164_body.v87 \ ${BPATH}/src/ieee/numeric_bit.v87 \ ${BPATH}/src/ieee/numeric_bit-body.v87 \ ${BPATH}/src/ieee/numeric_std.v87 \ ${BPATH}/src/ieee/numeric_std-body.v87 \ ${BPATH}/src/vital95/vital_timing.vhdl \ ${BPATH}/src/vital95/vital_timing_body.vhdl \ ${BPATH}/src/vital95/vital_primitives.vhdl \ ${BPATH}/src/vital95/vital_primitives_body.vhdl" local SYNSRCS="${BPATH}/src/synopsys/std_logic_arith.vhdl \ ${BPATH}/src/synopsys/std_logic_textio.vhdl \ ${BPATH}/src/synopsys/std_logic_unsigned.vhdl \ ${BPATH}/src/synopsys/std_logic_signed.vhdl \ ${BPATH}/src/synopsys/std_logic_misc.vhdl \ ${BPATH}/src/synopsys/std_logic_misc-body.vhdl" local MENTORSRCS="${BPATH}/src/mentor/std_logic_arith.vhdl \ ${BPATH}/src/mentor/std_logic_arith_body.vhdl" einfo "" einfo "Beginning re-analyze..." einfo "" for file in ${STD93SRCS}; do ghdl -a --bootstrap --work=std --std=93 --ieee=none \ --workdir=${BPATH}/lib/v93/std $file || die "reanalyze failed"; done for file in ${STD87SRCS}; do ghdl -a --bootstrap --work=std --std=87 --ieee=none \ --workdir=${BPATH}/lib/v87/std $file || die "reanalyze failed"; done for file in ${IEEE93SRCS}; do ghdl -a --bootstrap --work=ieee --ieee=none --std=93 \ -P${BPATH}/lib/v93/std \ --workdir=${BPATH}/lib/v93/ieee $file || die "reanalyze failed"; done for file in ${IEEE87SRCS}; do ghdl -a --bootstrap --work=ieee --std=87 --ieee=none --std=87 \ -P${BPATH}/lib/v87/std \ --workdir=${BPATH}/lib/v87/ieee $file || die "reanalyze failed"; done cp ${BPATH}/lib/v93/ieee/ieee-obj93.cf ${BPATH}/lib/v93/synopsys for file in ${SYNSRCS}; do ghdl -a -v --bootstrap --work=ieee --ieee=none --std=93 \ -P${BPATH}/lib/v93/std \ --workdir=${BPATH}/lib/v93/synopsys $file || die "reanalyze failed"; done cp ${BPATH}/lib/v87/ieee/ieee-obj87.cf ${BPATH}/lib/v87/synopsys for file in ${SYNSRCS}; do ghdl -a -v --bootstrap --work=ieee --ieee=none --std=87 \ -P${BPATH}/lib/v87/std \ --workdir=${BPATH}/lib/v87/synopsys $file || die "reanalyze failed"; done cp ${BPATH}/lib/v93/ieee/ieee-obj93.cf ${BPATH}/lib/v93/mentor for file in ${MENTORSRCS}; do ghdl -a -v --bootstrap --work=ieee --ieee=none --std=93 \ -P${BPATH}/lib/v93/std \ --workdir=${BPATH}/lib/v93/mentor $file || die "reanalyze failed"; done # Notify the user what changed einfo "" einfo "The compiler has been installed as ghdl." einfo "" }