aboutsummaryrefslogtreecommitdiff
blob: e50a2e1afae6d17fb8708b548dee245642a92ab9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI="5"

inherit cmake-utils toolchain-funcs

DESCRIPTION="Scientific library collection for large scale problems"
HOMEPAGE="http://trilinos.sandia.gov/"
SRC_URI="${P}-Source.tar.gz"
SRC_PAGE="11.0"

SLOT="0"
LICENSE="BSD LGPL-2.1"
KEYWORDS="~amd64 ~x86"
IUSE="arprec boost cuda hdf5 hwloc netcdf qd qt4 scotch taucs tbb test umfpack zlib"

RESTRICT="fetch"

RDEPEND="
	virtual/blas
	virtual/lapack
	virtual/mpi
	>=sci-libs/scalapack-2
	arprec? ( sci-libs/arprec )
	boost? ( dev-libs/boost )
	cuda? ( >=dev-util/nvidia-cuda-toolkit-3.2 )
	hdf5? ( sci-libs/hdf5[mpi] )
	hwloc? ( sys-apps/hwloc )
	netcdf? ( sci-libs/netcdf )
	qd? ( sci-libs/qd )
	qt4? ( dev-qt/qtgui:4 )
	scotch? ( sci-libs/scotch[mpi] )
	taucs? ( sci-libs/taucs )
	tbb? ( dev-cpp/tbb )
	umfpack? ( sci-libs/umfpack )"
DEPEND="${RDEPEND}
	virtual/pkgconfig"

S="${WORKDIR}/${P}-Source"

pkg_nofetch() {
	einfo "Sandia requires that you register to the site in order to download Trilinos."
	einfo "Please download ${SRC_URI} from:"
	einfo "http://trilinos.sandia.gov/download/trilinos-${SRC_PAGE}.html"
	einfo "and move it to ${DISTDIR}"
}

function trilinos_alternatives {
	alt_dirs=""
	for d in $($(tc-getPKG_CONFIG) --libs-only-L $1); do
		alt_dirs="${alt_dirs};${d:2}"
	done
	arg="-D${2}_LIBRARY_DIRS=${alt_dirs:1}"
	mycmakeargs+=(
		$arg
	)

	alt_libs=""
	for d in $($(tc-getPKG_CONFIG) --libs-only-l $1); do
		alt_libs="${alt_libs};${d:2}"
	done
	arg="-D${2}_LIBRARY_NAMES=${alt_libs:1}"
	mycmakeargs+=(
		$arg
	)
}

src_prepare() {
	epatch "${FILESDIR}"/${P}-fix-install-paths.patch
}

src_configure() {
	CMAKE_BUILD_TYPE="release"

	mycmakeargs=(
		-DBUILD_SHARED_LIBS=ON
		-DTrilinos_ENABLE_ALL_PACKAGES=ON

		-DTrilinos_INSTALL_BIN_DIR="bin"
		-DTrilinos_INSTALL_CONFIG_DIR="$(get_libdir)/cmake"
		-DTrilinos_INSTALL_INCLUDE_DIR="include/trilinos"
		-DTrilinos_INSTALL_LIB_DIR="$(get_libdir)"
		-DTrilinos_INSTALL_EXAMPLE_DIR="share/trilinos/example"

		# Tests
		$(cmake-utils_use test Trilinos_ENABLE_TESTS)

		# Mandatory dependencies
		-DTPL_ENABLE_BinUtils=ON
		-DTPL_ENABLE_MPI=ON
		-DTPL_ENABLE_BLAS=ON
		-DTPL_ENABLE_LAPACK=ON
		-DTPL_ENABLE_BLACS=ON
		-DTPL_ENABLE_SCALAPACK=ON
		-DTrilinos_EXTRA_LINK_FLAGS="-lmpi -lmpi_cxx"

		# Optional dependencies
		$(cmake-utils_use arprec TPL_ENABLE_ARPREC)
		$(cmake-utils_use boost TPL_ENABLE_Boost)
		$(cmake-utils_use boost TPL_ENABLE_BoostLib)
		$(cmake-utils_use cuda TPL_ENABLE_CUDA)
		$(cmake-utils_use hdf5 TPL_ENABLE_HDF5)
		$(cmake-utils_use hwloc TPL_ENABLE_HWLOC)
		$(cmake-utils_use netcdf TPL_ENABLE_Netcdf)
		$(cmake-utils_use qd TPL_ENABLE_QD)
		$(cmake-utils_use qt4 TPL_ENABLE_QT)
		$(cmake-utils_use scotch TPL_ENABLE_Scotch)
		$(cmake-utils_use taucs TPL_ENABLE_TAUCS)
		$(cmake-utils_use tbb TPL_ENABLE_TBB)
		$(cmake-utils_use umfpack TPL_ENABLE_UMFPACK)
		$(cmake-utils_use zlib TPL_ENABLE_Zlib)
	)

	# Scotch libraries
	if use scotch; then
		mycmakeargs+=( -DScotch_INCLUDE_DIRS="${EPREFIX}/usr/include/scotch" )
	fi

	# Add BLAS libraries
	trilinos_alternatives blas BLAS
	trilinos_alternatives lapack LAPACK
	trilinos_alternatives scalapack SCALAPACK
	trilinos_alternatives scalapack BLACS

	mycmakeargs+=( -DBLACS_INCLUDE_DIRS="${EPREFIX}/usr/include/blacs" )

	cmake-utils_src_configure
}