diff options
author | gienah <gienah@gentoo.org> | 2014-09-27 21:09:18 +1000 |
---|---|---|
committer | gienah <gienah@gentoo.org> | 2014-09-27 21:09:18 +1000 |
commit | 272370d6abb3eb6975e2a9fc5ba4a4a0767440b7 (patch) | |
tree | 86d864204d2a0b1c593075cf5b61f6ea705ce50f | |
parent | multibuild openblas when USE=int64 is specified. (diff) | |
download | sci-272370d6abb3eb6975e2a9fc5ba4a4a0767440b7.tar.gz sci-272370d6abb3eb6975e2a9fc5ba4a4a0767440b7.tar.bz2 sci-272370d6abb3eb6975e2a9fc5ba4a4a0767440b7.zip |
Fix rebase lapack-multibuild to master conflict 1 on sci-libs/lapack-reference
-rw-r--r-- | sci-libs/lapack-reference/ChangeLog | 4 | ||||
-rw-r--r-- | sci-libs/lapack-reference/lapack-reference-9999.ebuild | 142 | ||||
-rw-r--r-- | sci-libs/lapack-reference/metadata.xml | 1 |
3 files changed, 119 insertions, 28 deletions
diff --git a/sci-libs/lapack-reference/ChangeLog b/sci-libs/lapack-reference/ChangeLog index 3c1104ee4..4df95859d 100644 --- a/sci-libs/lapack-reference/ChangeLog +++ b/sci-libs/lapack-reference/ChangeLog @@ -11,6 +11,10 @@ lapack-reference-9999.ebuild: Add xblas to the .pc file when it is in use see bug#523388 + 18 Feb 2014; Mark Wright <gienah@gentoo.org> lapack-reference-9999.ebuild, + metadata.xml: + multibuild lapack-reference when USE=int64 and/or USE=static is specified. + *lapack-reference-3.5.0 (08 Dec 2013) 08 Dec 2013; SĂ©bastien Fabbro <bicatali@gentoo.org> diff --git a/sci-libs/lapack-reference/lapack-reference-9999.ebuild b/sci-libs/lapack-reference/lapack-reference-9999.ebuild index aca6ba00e..9b14bf0e0 100644 --- a/sci-libs/lapack-reference/lapack-reference-9999.ebuild +++ b/sci-libs/lapack-reference/lapack-reference-9999.ebuild @@ -3,15 +3,21 @@ # $Header: $ EAPI=5 -inherit fortran-2 cmake-utils alternatives-2 toolchain-funcs - -MYP=lapack-${PV} +inherit fortran-2 cmake-utils multibuild alternatives-2 toolchain-funcs if [[ ${PV} == "9999" ]] ; then - ESVN_REPO_URI="https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk" - inherit subversion + # The master ESVN_REPO_URI is difficult to access, the git mirror is easier + # ESVN_REPO_URI="https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk" + # MY_PN=lapack + # inherit subversion + EGIT_REPO_URI="https://github.com/nschloe/lapack.git" + MY_PN=lapack-reference + MYP=${MY_PN}-${PV} + inherit git-r3 KEYWORDS="" else + MY_PN=lapack + MYP=${MY_PN}-${PV} SRC_URI="http://www.netlib.org/lapack/${MYP}.tgz" KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" fi @@ -22,7 +28,7 @@ HOMEPAGE="http://www.netlib.org/lapack/" LICENSE="BSD" SLOT="0" -IUSE="static-libs test xblas" +IUSE="int64 static-libs test xblas" RDEPEND=" virtual/blas @@ -32,21 +38,66 @@ DEPEND="${RDEPEND} S="${WORKDIR}/${MYP}" +INT64_SUFFIX="int64" +STATIC_SUFFIX="static" +BASE_PROFNAME="reflapack" + +get_profname() { + local profname="${1:-${BASE_PROFNAME}}" + if [[ "${MULTIBUILD_ID}" =~ "_${INT64_SUFFIX}" ]]; then + profname+="-${INT64_SUFFIX}" + fi + echo "${profname}" +} + +get_variant_suffix() { + local profname="${1:-$(get_profname)}" + local variant_suffix="${profname//${BASE_PROFNAME}/}" + echo "${variant_suffix}" +} + +get_blas_profname() { + local profname="${1:-$(get_profname)}" + local variant_suffix=$(get_variant_suffix "${profname}") + local selected_blas_profile="${blas_profile}" + local blas_no_int64="${selected_blas_profile/-int64/}" + local blas_base="${blas_no_int64%-*}" + local blas_name="${blas_no_int64/${blas_base}/${blas_base}${variant_suffix}}" + echo "${blas_name}" +} + +pkg_setup() { + blas_profile=$(eselect blas show) + MULTIBUILD_VARIANTS=( ) + use static-libs && MULTIBUILD_VARIANTS+=( ${BASE_PROFNAME}_${STATIC_SUFFIX} ) + if use int64; then + MULTIBUILD_VARIANTS+=( ${BASE_PROFNAME}_${INT64_SUFFIX} ) + use static-libs && MULTIBUILD_VARIANTS+=( ${BASE_PROFNAME}_${INT64_SUFFIX}_${STATIC_SUFFIX} ) + fi + MULTIBUILD_VARIANTS+=( ${BASE_PROFNAME} ) +} + src_prepare() { + if use int64; then + local blas_int64_profname=$(get_blas_profname "${BASE_PROFNAME}-${INT64_SUFFIX}") + pkg-config --exists "${blas_int64_profname}" || die "Use int64 requires ${blas_int64_profname}" + fi + # rename library to avoid collision with other lapack implementations + local LIBNAME="${PROFNAME//-/_}" sed -i \ - -e 's:BINARY_DIR}/lapack.pc:BINARY_DIR}/reflapack.pc:' \ - -e '/export/s:lapack:reflapack:g' \ - -e '/ALL_TARGETS/s:lapack):reflapack):' \ - -e '/LAPACK_LIBRARIES/s:lapack:reflapack:g' \ + -e 's:BINARY_DIR}/lapack.pc:BINARY_DIR}/${PROFNAME}.pc:' \ + -e '/export/s:lapack:${LIBNAME}:g' \ + -e '/ALL_TARGETS/s:lapack):${LIBNAME}):' \ + -e '/LAPACK_LIBRARIES/s:lapack:${LIBNAME}:g' \ CMakeLists.txt || die sed -i \ - -e 's:(lapack:(reflapack:g' \ + -e 's:(lapack:(${LIBNAME}:g' \ SRC/CMakeLists.txt || die sed -i \ - -e 's:-llapack:-lreflapack:g' \ + -e 's:-llapack:-l${LIBNAME}:g' \ + -e 's/Requires: blas/Requires: ${BLAS_PROFNAME}\nFflags=${LAPACK_PKGCONFIG_FFLAGS}/' \ lapack.pc.in || die - use static-libs && mkdir "${WORKDIR}/${PN}_static" # some string does not get passed properly sed -i \ -e '/lapack_testing.py/d' \ @@ -64,33 +115,68 @@ src_prepare() { } src_configure() { - lapack_configure() { + my_src_configure() { + local profname=$(get_profname) + local libname="${profname//-/_}" + local blas_profname=$(get_blas_profname) + echo "profname: ${profname}, blas_profname: ${blas_profname}" local mycmakeargs=( + -DPROFNAME="${profname}" + -DBLAS_PROFNAME="${blas_profname}" + -DLIBNAME="${libname}" -DUSE_OPTIMIZED_BLAS=ON - -DBLAS_LIBRARIES="$($(tc-getPKG_CONFIG) --libs blas)" + -DBLAS_LIBRARIES="$($(tc-getPKG_CONFIG) --libs ${blas_profname})" $(cmake-utils_use_build test TESTING) $(cmake-utils_use_use xblas XBLAS) $@ ) + if [[ "${MULTIBUILD_ID}" =~ "_${INT64_SUFFIX}" ]]; then + mycmakeargs+=( + -DCMAKE_Fortran_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) -fdefault-integer-8" + -DLAPACK_PKGCONFIG_FFLAGS="-fdefault-integer-8" + ) + else + mycmakeargs+=( + -DCMAKE_Fortran_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname})" + -DLAPACK_PKGCONFIG_FFLAGS="" + ) + fi + mycmakeargs+=( + -DCMAKE_C_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) ${CFLAGS}" + -DCMAKE_CXX_FLAGS="$($(tc-getPKG_CONFIG) --cflags ${blas_profname}) ${CXXFLAGS}" + ) + if [[ "${MULTIBUILD_ID}" =~ "_${STATIC_SUFFIX}" ]]; then + mycmakeargs+=( + -DBUILD_SHARED_LIBS=OFF + -DBUILD_STATIC_LIBS=ON + ) + else + mycmakeargs+=( + -DBUILD_SHARED_LIBS=ON + -DBUILD_STATIC_LIBS=OFF + ) + fi cmake-utils_src_configure } - - lapack_configure -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF - use static-libs && \ - CMAKE_BUILD_DIR="${WORKDIR}/${PN}_static" lapack_configure \ - -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON + multibuild_foreach_variant my_src_configure } src_compile() { - cmake-utils_src_compile - use static-libs && \ - CMAKE_BUILD_DIR="${WORKDIR}/${PN}_static" cmake-utils_src_compile + multibuild_foreach_variant cmake-utils_src_compile +} + +src_test() { + multibuild_foreach_variant cmake-utils_src_test } src_install() { - cmake-utils_src_install - use static-libs && \ - CMAKE_BUILD_DIR="${WORKDIR}/${PN}_static" cmake-utils_src_install - alternatives_for lapack reference 0 \ - /usr/$(get_libdir)/pkgconfig/lapack.pc reflapack.pc + my_src_install() { + cmake-utils_src_install + if [[ ! "${MULTIBUILD_ID}" =~ "_${STATIC_SUFFIX}" ]]; then + local profname=$(get_profname) + alternatives_for lapack $(get_profname "reference") 0 \ + /usr/$(get_libdir)/pkgconfig/lapack.pc ${profname}.pc + fi + } + multibuild_foreach_variant my_src_install } diff --git a/sci-libs/lapack-reference/metadata.xml b/sci-libs/lapack-reference/metadata.xml index d769a1462..9b618aec3 100644 --- a/sci-libs/lapack-reference/metadata.xml +++ b/sci-libs/lapack-reference/metadata.xml @@ -13,6 +13,7 @@ Algebra Subprogram (BLAS). </longdescription> <use> + <flag name="int64">Build the 64 bits integer library</flag> <flag name="xblas">Build LAPACK with extra precision (needs <pkg>sci-libs/xblas</pkg>)</flag> </use> |