Gentoo Archives: gentoo-commits

From: Justin Lecher <jlec@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: sci-libs/mkl/
Date: Fri, 19 Feb 2016 10:12:31
Message-Id: 1455875770.66ff6de2e71ced15a357e56c428c342b0a8af6bd.jlec@gentoo
1 commit: 66ff6de2e71ced15a357e56c428c342b0a8af6bd
2 Author: David Seifert <soap <AT> gentoo <DOT> org>
3 AuthorDate: Wed Feb 17 20:58:15 2016 +0000
4 Commit: Justin Lecher <jlec <AT> gentoo <DOT> org>
5 CommitDate: Fri Feb 19 09:56:10 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=66ff6de2
7
8 sci-libs/mkl: version bump
9
10 * EAPI=6
11 * update to intel-sdp-r1.eclass
12
13 Package-Manager: portage-2.2.27
14
15 sci-libs/mkl/metadata.xml | 3 +
16 sci-libs/mkl/mkl-11.3.2.181.ebuild | 197 +++++++++++++++++++++++++++++++++++++
17 2 files changed, 200 insertions(+)
18
19 diff --git a/sci-libs/mkl/metadata.xml b/sci-libs/mkl/metadata.xml
20 index 0fff21e..8e7ff6c 100644
21 --- a/sci-libs/mkl/metadata.xml
22 +++ b/sci-libs/mkl/metadata.xml
23 @@ -16,4 +16,7 @@
24 <use>
25 <flag name="int64">Build the 64 bits integer library</flag>
26 </use>
27 + <use>
28 + <flag name="mic">Install the libraries needed for supporting Intel Many Integrated Core (Xeon Phi)</flag>
29 + </use>
30 </pkgmetadata>
31
32 diff --git a/sci-libs/mkl/mkl-11.3.2.181.ebuild b/sci-libs/mkl/mkl-11.3.2.181.ebuild
33 new file mode 100644
34 index 0000000..3584ed6
35 --- /dev/null
36 +++ b/sci-libs/mkl/mkl-11.3.2.181.ebuild
37 @@ -0,0 +1,197 @@
38 +# Copyright 1999-2016 Gentoo Foundation
39 +# Distributed under the terms of the GNU General Public License v2
40 +# $Id$
41 +
42 +EAPI=6
43 +
44 +INTEL_DIST_SKU=8676
45 +INTEL_DIST_PV=2016_update2
46 +INTEL_SKIP_LICENSE=true
47 +
48 +NUMERIC_MODULE_NAME=${PN}
49 +
50 +inherit alternatives-2 intel-sdp-r1 numeric-int64-multibuild
51 +
52 +DESCRIPTION="Intel Math Kernel Library: linear algebra, fft, math functions"
53 +HOMEPAGE="http://software.intel.com/en-us/articles/intel-mkl/"
54 +
55 +IUSE="doc examples linguas_ja mic"
56 +KEYWORDS="-* ~amd64 ~x86 ~amd64-linux ~x86-linux"
57 +
58 +DEPEND=""
59 +RDEPEND=">=dev-libs/intel-common-16[${MULTILIB_USEDEP},mic?]"
60 +
61 +CHECKREQS_DISK_BUILD=3500M
62 +
63 +INTEL_DIST_BIN_RPMS=(
64 + "mkl"
65 + "mkl-devel"
66 + "mkl-gnu"
67 + "mkl-gnu-devel"
68 + "mkl-ps"
69 + "mkl-ps-f95-devel"
70 + "mkl-ps-gnu"
71 + "mkl-ps-gnu-devel"
72 + "mkl-ps-pgi"
73 + "mkl-ps-pgi-devel"
74 + "mkl-ps-ss-tbb"
75 + "mkl-ps-ss-tbb-devel")
76 +INTEL_DIST_X86_RPMS=()
77 +INTEL_DIST_AMD64_RPMS=(
78 + "mkl-ps-cluster"
79 + "mkl-ps-cluster-devel"
80 + "mkl-sp2dp"
81 + "mkl-sp2dp-devel")
82 +INTEL_DIST_DAT_RPMS=(
83 + "mkl-common"
84 + "mkl-ps-cluster-common"
85 + "mkl-ps-common"
86 + "mkl-ps-f95-common")
87 +
88 +pkg_setup() {
89 + if use doc; then
90 + INTEL_DIST_DAT_RPMS+=(
91 + "mkl-doc-11.3.2-181.noarch.rpm"
92 + "mkl-ps-doc-11.3.2-181.noarch.rpm")
93 +
94 + if use linguas_ja; then
95 + INTEL_DIST_DAT_RPMS+=(
96 + "mkl-ps-doc-jp-11.3.2-181.noarch.rpm")
97 + fi
98 + fi
99 +
100 + if use mic; then
101 + INTEL_DIST_AMD64_RPMS+=(
102 + "mkl-ps-mic"
103 + "mkl-ps-mic-devel"
104 + "mkl-ps-tbb-mic"
105 + "mkl-ps-tbb-mic-devel")
106 + fi
107 +
108 + if use linguas_ja; then
109 + INTEL_DIST_BIN_RPMS+=(
110 + "mkl-ps-jp")
111 +
112 + INTEL_DIST_DAT_RPMS+=(
113 + "mkl-ps-common-jp")
114 +
115 + if use mic; then
116 + INTEL_DIST_AMD64_RPMS+=(
117 + "mkl-ps-mic-jp")
118 + fi
119 + fi
120 +}
121 +
122 +src_prepare() {
123 + default
124 + chmod u+w -R opt || die
125 +}
126 +
127 +_mkl_add_pc_file() {
128 + local pcname=${1} cflags="" suffix=""
129 + shift
130 + numeric-int64_is_int64_build && cflags=-DMKL_ILP64 && suffix="-int64"
131 +
132 + local IARCH=$(isdp_convert2intel-arch ${MULTIBUILD_ID})
133 +
134 + create_pkgconfig \
135 + --prefix "$(isdp_get-sdp-edir)/linux/mkl" \
136 + --libdir "\${prefix}/lib/${IARCH}" \
137 + --includedir "\${prefix}/include" \
138 + --name ${pcname} \
139 + --libs "-L\${libdir} -L$(isdp_get-sdp-edir)/linux/compiler/lib/${IARCH} $* -lpthread -lm" \
140 + --cflags "-I\${includedir} ${cflags}" \
141 + ${pcname}${suffix}
142 +}
143 +
144 +_mkl_add_alternative_provider() {
145 + local prov=$1; shift
146 + local alt
147 + for alt in $*; do
148 + NUMERIC_MODULE_NAME=${prov} \
149 + numeric-int64-multibuild_install_alternative ${alt} ${prov}
150 + done
151 +}
152 +
153 +# help: http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/
154 +mkl_add_pc_file() {
155 + local bits=""
156 + [[ ${MULTIBUILD_ID} =~ amd64 ]] && bits=_lp64
157 + numeric-int64_is_int64_build && bits=_ilp64
158 +
159 + local gf="-Wl,--no-as-needed -Wl,--start-group -lmkl_gf${bits}"
160 + local gc="-Wl,--no-as-needed -Wl,--start-group -lmkl_intel${bits}"
161 + local intel="-Wl,--start-group -lmkl_intel${bits}"
162 + local core="-lmkl_core -Wl,--end-group"
163 +
164 + # blas lapack cblas lapacke
165 + _mkl_add_pc_file mkl-gfortran ${gf} -lmkl_sequential ${core}
166 + _mkl_add_pc_file mkl-intel ${intel} -lmkl_sequential ${core}
167 + _mkl_add_pc_file mkl-gfortran-openmp ${gf} -lmkl_gnu_thread ${core} -fopenmp
168 + _mkl_add_pc_file mkl-gcc-openmp ${gc} -lmkl_gnu_thread ${core} -fopenmp
169 + _mkl_add_pc_file mkl-intel-openmp ${intel} -lmkl_intel_thread ${core} -openmp
170 + _mkl_add_pc_file mkl-dynamic -lmkl_rt
171 + _mkl_add_pc_file mkl-dynamic-openmp -lmkl_rt -liomp5
172 +
173 + # blacs and scalapack
174 + local scal="-lmkl_scalapack${bits:-_core}"
175 + local blacs="-lmkl_blacs_intelmpi${bits}"
176 + core="-lmkl_core ${blacs} -Wl,--end-group"
177 +
178 + _mkl_add_pc_file mkl-gfortran-blacs ${gf} -lmkl_sequential ${core}
179 + _mkl_add_pc_file mkl-gfortran-scalapack ${scal} ${gf} -lmkl_sequential ${core}
180 + _mkl_add_pc_file mkl-intel-blacs ${intel} -lmkl_sequential ${core}
181 + _mkl_add_pc_file mkl-intel-scalapack ${scal} ${intel} -lmkl_sequential ${core}
182 + _mkl_add_pc_file mkl-gfortran-openmp-blacs ${gf} -lmkl_gnu_thread ${core} -fopenmp
183 + _mkl_add_pc_file mkl-gfortran-openmp-scalapack ${scal} ${gf} -lmkl_gnu_thread ${core} -fopenmp
184 + _mkl_add_pc_file mkl-gcc-openmp-blacs ${gc} -lmkl_gnu_thread ${core} -fopenmp
185 + _mkl_add_pc_file mkl-gcc-openmp-scalapack ${scal} ${gc} -lmkl_gnu_thread ${core} -fopenmp
186 + _mkl_add_pc_file mkl-intel-openmp-blacs ${intel} -lmkl_intel_thread ${core} -liomp5
187 + _mkl_add_pc_file mkl-intel-openmp-scalapack ${scal} ${intel} -lmkl_intel_thread ${core} -liomp5
188 + _mkl_add_pc_file mkl-dynamic-blacs -lmkl_rt ${blacs}
189 + _mkl_add_pc_file mkl-dynamic-scalapack ${scal} -lmkl_rt ${blacs}
190 + _mkl_add_pc_file mkl-dynamic-openmp-blacs -lmkl_rt ${blacs} -liomp5
191 + _mkl_add_pc_file mkl-dynamic-openmp-scalapack ${scal} -lmkl_rt ${blacs} -liomp5
192 +}
193 +
194 +mkl_add_alternative_provider() {
195 + # blas lapack cblas lapacke
196 + _mkl_add_alternative_provider mkl-gfortran blas lapack
197 + _mkl_add_alternative_provider mkl-intel blas lapack cblas lapacke
198 + _mkl_add_alternative_provider mkl-gfortran-openmp blas lapack
199 + _mkl_add_alternative_provider mkl-gcc-openmp cblas lapacke
200 + _mkl_add_alternative_provider mkl-intel-openmp blas lapack cblas lapacke
201 + _mkl_add_alternative_provider mkl-dynamic blas lapack cblas lapacke
202 + _mkl_add_alternative_provider mkl-dynamic-openmp blas lapack cblas lapacke
203 +
204 + # blacs and scalapack
205 + _mkl_add_alternative_provider mkl-gfortran-blacs blacs
206 + _mkl_add_alternative_provider mkl-gfortran-scalapack scalapack
207 + _mkl_add_alternative_provider mkl-intel-blacs blacs
208 + _mkl_add_alternative_provider mkl-intel-scalapack scalapack
209 + _mkl_add_alternative_provider mkl-gfortran-openmp-blacs blacs
210 + _mkl_add_alternative_provider mkl-gfortran-openmp-scalapack scalapack
211 + _mkl_add_alternative_provider mkl-gcc-openmp-blacs blacs
212 + _mkl_add_alternative_provider mkl-gcc-openmp-scalapack scalapack
213 + _mkl_add_alternative_provider mkl-intel-openmp-blacs blacs
214 + _mkl_add_alternative_provider mkl-intel-openmp-scalapack scalapack
215 + _mkl_add_alternative_provider mkl-dynamic-blacs blacs
216 + _mkl_add_alternative_provider mkl-dynamic-scalapack scalapack
217 + _mkl_add_alternative_provider mkl-dynamic-openmp-blacs blacs
218 + _mkl_add_alternative_provider mkl-dynamic-openmp-scalapack scalapack
219 +}
220 +
221 +src_install() {
222 + local IARCH
223 + local ldpath="LDPATH="
224 + intel-sdp-r1_src_install
225 +
226 + numeric-int64-multibuild_foreach_all_abi_variants mkl_add_pc_file
227 + mkl_add_alternative_provider
228 +
229 + use abi_x86_64 && ldpath+="$(isdp_get-sdp-edir)/linux/mkl/lib/$(isdp_convert2intel-arch abi_x86_64)"
230 + use abi_x86_32 && ldpath+=":$(isdp_get-sdp-edir)/linux/mkl/lib/$(isdp_convert2intel-arch abi_x86_32)"
231 +
232 + echo "${ldpath}" > "${T}"/35mkl || die
233 + doenvd "${T}"/35mkl
234 +}