commit:     9d956a08c867d1771a7a619dfb71d5d8274b8c93
Author:     Pavel Denisov <pavel.a.denisov <AT> gmail <DOT> com>
AuthorDate: Thu Nov 19 01:15:59 2015 +0000
Commit:     Justin Lecher <jlec <AT> gentoo <DOT> org>
CommitDate: Thu Nov 19 01:45:39 2015 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=9d956a08

sci-misc/kaldi: Switch to user-selected BLAS/LAPACK

Package-Manager: portage-2.2.24

 sci-misc/kaldi/kaldi-0_p20151106.ebuild | 88 ++++++++++++++++++++++-----------
 sci-misc/kaldi/metadata.xml             |  3 --
 2 files changed, 58 insertions(+), 33 deletions(-)

diff --git a/sci-misc/kaldi/kaldi-0_p20151106.ebuild 
b/sci-misc/kaldi/kaldi-0_p20151106.ebuild
index 64fea67..e2e0bb6 100644
--- a/sci-misc/kaldi/kaldi-0_p20151106.ebuild
+++ b/sci-misc/kaldi/kaldi-0_p20151106.ebuild
@@ -4,7 +4,7 @@
 
 EAPI="5"
 
-inherit eutils flag-o-matic
+inherit eutils toolchain-funcs flag-o-matic
 
 DESCRIPTION="A toolkit for speech recognition"
 HOMEPAGE="http://kaldi-asr.org/";
@@ -12,62 +12,90 @@ SRC_URI="http://gentoo.akreal.net/distfiles/${P}.tar.xz";
 
 LICENSE="Apache-2.0"
 SLOT="0"
-IUSE="doc test threads -atlas cuda"
+IUSE="doc test cuda"
 KEYWORDS="~amd64"
 
 RDEPEND="
        media-libs/speex
+       virtual/cblas
        virtual/lapack
        virtual/lapacke
        >=sci-misc/openfst-1.4.1
-       atlas? ( sci-libs/atlas[threads=] )
-       !atlas? ( sci-libs/openblas[-openmp,-threads] sci-libs/lapack-reference 
)
        cuda? ( dev-util/nvidia-cuda-toolkit )"
 DEPEND="${RDEPEND}
        doc? ( app-doc/doxygen )"
 
-REQUIRED_USE="!atlas? ( !threads )"
-
 # We need write acccess /dev/nvidiactl, /dev/nvidia0 and /dev/nvidia-uvm and 
the portage
 # user is (usually) not in the video group
 RESTRICT="test? ( cuda? ( userpriv ) )"
 
 src_prepare() {
        epatch \
-               "${FILESDIR}"/configure.patch \
                "${FILESDIR}"/Makefile.patch \
                "${FILESDIR}"/default_rules.mk.a7d9824.patch
 }
 
 src_configure() {
-       if use atlas; then
-               myconf+=( --atlas-root="${EPREFIX}/usr/include/atlas" )
-               if use threads; then
-                       myconf+=( --threaded-atlas=yes )
-               fi
+       append-cxxflags \
+               -DKALDI_DOUBLEPRECISION=0 \
+               -DHAVE_POSIX_MEMALIGN \
+               -DHAVE_EXECINFO_H=1 \
+               -DHAVE_CXXABI_H \
+               -DHAVE_SPEEX \
+               -DHAVE_OPENFST_GE_10400 \
+               -std=c++0x \
+               -Wall \
+               -I.. \
+               -pthread \
+               -Wno-sign-compare \
+               -Wno-unused-local-typedefs \
+               -Winit-self \
+               -rdynamic \
+               -fPIC \
+               $($(tc-getPKG_CONFIG) --cflags cblas) \
+               $($(tc-getPKG_CONFIG) --cflags lapack)
+
+       append-libs \
+               -lspeex \
+               -lfst \
+               -lm \
+               -lpthread \
+               -ldl \
+               $($(tc-getPKG_CONFIG) --libs cblas) \
+               $($(tc-getPKG_CONFIG) --libs lapack)
+
+       local cblas_provider=$(eselect cblas show)
+
+       if [[ ${cblas_provider} =~ "atlas" ]]; then
+               append-cxxflags -DHAVE_ATLAS
+       elif [[ ${cblas_provider} =~ "mkl" ]]; then
+               append-cxxflags -DHAVE_MKL
+       elif [[ ${cblas_provider} =~ "openblas" ]]; then
+               append-cxxflags -DHAVE_OPENBLAS $($(tc-getPKG_CONFIG) --cflags 
lapacke)
        else
-               myconf+=( --openblas-root="${EPREFIX}/usr" )
-               append-cxxflags "-I${EPREFIX}/usr/include/openblas"
-               append-libs -lreflapack
+               die "Build with ${cblas_provider} CBLAS is not supported"
        fi
 
-       # Upstream's configure script is "hand-generated" and not autotools 
compatible,
-       # for this reason econf can not be used
-       ./configure \
-               --shared \
-               --fst-root="${EPREFIX}/usr" \
-               $(use cuda && echo "--use-cuda=yes 
--cudatk-dir=${EPREFIX}/opt/cuda" \
-                       || echo --use-cuda=no) \
-               "${myconf[@]}" || die "failed to run configure"
-
        use test || append-cxxflags -DNDEBUG
-       append-libs -lspeex
 
-       sed -i \
-               -e "s:-g # -O0 -DKALDI_PARANOID:-DHAVE_SPEEX ${CXXFLAGS} :" \
-               -e "s:-lm -lpthread -ldl:-lm -lpthread -ldl ${LIBS} 
${LDFLAGS}:" \
-               -e "s:CUDA_FLAGS = -g:CUDA_FLAGS = -O2:" \
-               kaldi.mk || die "sed unix/kaldi.mk failed"
+       cat <<-EOF > kaldi.mk
+               KALDI_FLAVOR := dynamic
+               KALDILIBDIR := "${S}"/lib
+               CC = $(tc-getCXX)
+               RANLIB = $(tc-getRANLIB)
+               LDLIBS = ${LIBS}
+       EOF
+
+       if use cuda; then
+               cat <<-EOF >> kaldi.mk
+                       CUDA = true
+                       CUDATKDIR = "${EPREFIX}"/opt/cuda
+               EOF
+               cat makefiles/linux_x86_64_cuda.mk >> kaldi.mk
+               sed -i \
+                       -e "s:CUDA_FLAGS = -g:CUDA_FLAGS = -O2:" \
+                       kaldi.mk || die "sed unix/kaldi.mk failed"
+       fi
 }
 
 src_compile() {

diff --git a/sci-misc/kaldi/metadata.xml b/sci-misc/kaldi/metadata.xml
index ddeac84..3aa9b1d 100644
--- a/sci-misc/kaldi/metadata.xml
+++ b/sci-misc/kaldi/metadata.xml
@@ -14,9 +14,6 @@
     <remote-id type="github">kaldi-asr/kaldi</remote-id>
   </upstream>
   <use>
-    <flag name="atlas">
-      Use <pkg>sci-libs/atlas</pkg> for math library.
-    </flag>
     <flag name="cuda">
       Build with CUDA support.
     </flag>

Reply via email to