| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="2" |
| |
| inherit eutils toolchain-funcs |
| |
| DESCRIPTION="Small yet efficient SAT solver with reference paper" |
| HOMEPAGE="http://minisat.se/Main.html" |
| SRC_URI="http://minisat.se/downloads/${P}.tar.gz |
| doc? ( http://minisat.se/downloads/MiniSat.pdf )" |
| |
| SLOT="0" |
| KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" |
| LICENSE="MIT" |
| |
| IUSE="debug doc extended-solver" |
| |
| DEPEND="sys-libs/zlib" |
| RDEPEND="${DEPEND}" |
| |
| S=${WORKDIR}/${PN} |
| |
| pkg_setup() { |
| if use debug; then |
| myconf="d" |
| myext="debug" |
| else |
| myconf="r" |
| myext="release" |
| fi |
| |
| if use extended-solver; then |
| mydir="simp" |
| else |
| mydir="core" |
| fi |
| tc-export CXX |
| |
| if has_version "=sci-mathematics/minisat-2.1*" ; then |
| elog "" |
| elog "The minisat2 2.1 and 2.2 ABIs are not compatible and there" |
| elog "is currently no slotting. Please mask it yourself (eg, in" |
| elog "packages.mask) if you still need the older version." |
| elog "" |
| epause 5 |
| fi |
| } |
| |
| src_prepare() { |
| sed -e "s/\$(CXX) \$^/\$(CXX) \$(LDFLAGS) \$^/" \ |
| -i -e "s|-O3|${CFLAGS}|" mtl/template.mk || die |
| } |
| |
| src_compile() { |
| export MROOT="${S}" |
| emake -C ${mydir} "$myconf" || die |
| LIB="${PN}" emake -C ${mydir} lib"$myconf" || die |
| } |
| |
| src_install() { |
| # somewhat brute-force, but so is the build setup... |
| fix_headers |
| |
| insinto /usr/include/${PN}2/mtl |
| doins mtl/*.h || die |
| |
| insinto /usr/include/${PN}2/core |
| doins core/Solver*.h || die |
| |
| insinto /usr/include/${PN}2/simp |
| doins simp/Simp*.h || die |
| |
| insinto /usr/include/${PN}2/utils |
| doins utils/*.h || die |
| |
| newbin ${mydir}/${PN}_${myext} ${PN} || die |
| newlib.a ${mydir}/lib${PN}_${myext}.a lib${PN}.a || die |
| |
| dodoc README doc/ReleaseNotes-2.2.0.txt || die |
| if use doc; then |
| dodoc "${DISTDIR}"/MiniSat.pdf || die |
| fi |
| } |
| |
| fix_headers() { |
| # need to fix the circular internal includes a bit for standard usage |
| elog "Fixing header files..." |
| |
| patch -p0 < "${FILESDIR}"/${P}-header_fix.patch \ |
| || die "header patch failed..." |
| } |