summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-ada/asis-gcc/asis-gcc-4.3.1-r1.ebuild')
-rw-r--r--dev-ada/asis-gcc/asis-gcc-4.3.1-r1.ebuild143
1 files changed, 143 insertions, 0 deletions
diff --git a/dev-ada/asis-gcc/asis-gcc-4.3.1-r1.ebuild b/dev-ada/asis-gcc/asis-gcc-4.3.1-r1.ebuild
new file mode 100644
index 000000000000..03d7596a2782
--- /dev/null
+++ b/dev-ada/asis-gcc/asis-gcc-4.3.1-r1.ebuild
@@ -0,0 +1,143 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit eutils flag-o-matic gnatbuild
+
+ACT_Ver=2009
+Gnat_Name="gnat-gcc"
+
+DESCRIPTION="The Ada Semantic Interface Specification (semantic analysis and tools tied to compiler)"
+SRC_URI="http://dev.gentoo.org/~george/src/asis-gpl-${ACT_Ver}-src.tgz"
+HOMEPAGE="https://libre.adacore.com/"
+LICENSE="GPL-2"
+
+KEYWORDS="~amd64 ~x86"
+
+IUSE="doc"
+RDEPEND="=dev-lang/gnat-gcc-${SLOT}*"
+DEPEND="${RDEPEND}
+ doc? ( virtual/latex-base
+ app-text/texi2html )"
+
+S="${WORKDIR}/asis-${ACT_Ver}-src"
+
+# it may be even better to force plain -O2 -pipe -ftracer here
+replace-flags -O3 -O2
+
+# we need to adjust some vars defined in gnatbuild.eclass so that they use
+# gnat-gcc instead of asis
+LIBPATH=${LIBPATH/${PN}/${Gnat_Name}}
+BINPATH=${BINPATH/${PN}/${Gnat_Name}}
+DATAPATH=${DATAPATH/${PN}/${Gnat_Name}}
+
+#QA_EXECSTACK="${BINPATH:1}/*
+# ${LIBPATH:1}/adalib/libasis-${ACT_Ver}.so"
+
+pkg_setup() {
+ currGnat=$(eselect gnat show | grep "gnat-" | awk '{ print $1 }')
+ if [[ "${currGnat}" != "${CTARGET}-${Gnat_Name}-${SLOT}" ]]; then
+ echo
+ eerror "The active gnat profile does not correspond to the selected"
+ eerror "version of asis! Please install the appropriate gnat (if you"
+ eerror "did not so yet) and run:"
+ eerror "eselect gnat set ${CTARGET}-${Gnat_Name}-${SLOT}"
+ eerror "env-update && source /etc/profile"
+ eerror "and then emerge asis-gcc:${SLOT} again.."
+ echo
+ die
+ fi
+ if [[ -e ${LIBPATH}/adalib/libasis.a ]] ; then
+ echo
+ ewarn "Already installed asis appears to interfer with the build."
+ eerror "Please unmerge matching asis-gcc first and then resume the merge:"
+ eerror "emerge --unmerge asis-gcc:${SLOT} && emerge asis-gcc"
+ ewarn
+ echo
+ die
+ fi
+}
+
+# we need to override the eclass defined src_unpack
+# and change gcc to gnatgcc where appropriate
+src_unpack() {
+ unpack ${A}
+ cd "${S}"/gnat/
+ # newer versions autogen snames.ad?
+ # Looks logical to keep it here, as this is a part of source prep
+ gnatmake xsnamest.adb
+ ./xsnamest
+ mv snames.ns snames.ads
+ mv snames.nb snames.adb
+ # need to change gcc -> gnatgcc
+ cd "${S}"
+ for fn in asis/a4g-gnat_int.adb \
+ asis/a4g-contt.adb \
+ gnat/snames.adb \
+ tools/tool_utils/asis_ul-common.adb \
+ tools/gnatmetric/metrics-compute.adb; do
+ sed -i -e "s:\"gcc:\"gnatgcc:" ${fn}
+ done
+}
+
+src_compile() {
+ # Build the shared library first, we need -fPIC here
+ gnatmake -Pasis_bld -XBLD=prod -XOPSYS=default_Unix -cargs ${CFLAGS} -fPIC \
+ || die "building libasis.a failed"
+ gnatgcc -shared -Wl,-soname,libasis-${ACT_Ver}.so \
+ -o obj/libasis-${ACT_Ver}.so obj/*.o -lc \
+ || die "building libasis.so failed"
+
+ # build tools
+ for fn in tools/*; do
+ pushd ${fn}
+ gnatmake -P${fn:6}.gpr || die "building ${fn:6} failed"
+ popd
+ done
+
+ # common stuff is just docs in this case
+ if use doc; then
+ emake -C documentation all || die "Failed while compiling documentation"
+ fi
+}
+
+src_install () {
+ # README asks to run make install, claiming that some sources are built at
+ # that point
+ make all install prefix="${D}"
+ # now manually move all the stuff to proper places
+ mkdir -p "${D}${LIBPATH}"
+ mv "${D}"lib/asis/ "${D}${LIBPATH}"/adalib
+ # install the shared lib
+ chmod 0755 obj/libasis-${ACT_Ver}.so
+ cp obj/libasis-${ACT_Ver}.so "${D}${LIBPATH}"/adalib
+ # make appropriate symlinks
+ pushd "${D}${LIBPATH}"/adalib
+ ln -s libasis-${ACT_Ver}.so libasis.so
+ popd
+ # sources
+ mv "${D}"include/asis/ "${D}${LIBPATH}"/adainclude
+
+ # tools
+ mkdir -p "${D}${BINPATH}"
+ find "${S}"/tools/ -type f -executable -exec cp {} "${D}${BINPATH}" \;
+ rm -f "${D}${BINPATH}"/Makefile*
+
+ # docs and examples
+ cd "${S}"/documentation/
+ dodoc *.txt
+ dohtml *.html
+ cd "${S}"
+ insinto /usr/share/doc/${PF}
+ doins -r documentation/*.pdf documentation/*.info tutorial/ templates/
+
+ # cleanup empty dirs
+ rm -rf "${D}"/{bin,include,lib,share}
+}
+
+pkg_postinst() {
+ echo
+ elog "The ASIS is installed for the active gnat compiler at gnat's location."
+ elog "No further configuration is necessary. Enjoy."
+ echo
+}