blob: fd4422f9b5afd9436009d125244388b8bbbbdc48 (
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
131
132
133
134
135
136
137
138
139
140
141
|
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils toolchain-funcs flag-o-matic multilib
DESCRIPTION="Charm++ is a message-passing parallel language and runtime system."
LICENSE="charm"
HOMEPAGE="http://charm.cs.uiuc.edu/"
SRC_URI="${PN}_src.tar.gz"
S="${WORKDIR}/${PN}"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="cmkopt tcp smp doc icc"
DEPEND="icc? ( >=dev-lang/icc-8.1 )
doc? (
app-text/poppler
dev-tex/latex2html
virtual/tetex
)"
case ${ARCH} in
x86)
CHARM_ARCH="net-linux" ;;
amd64)
CHARM_ARCH="net-linux-amd64" ;;
esac
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${FILESDIR}/${P}-charmrun.patch"
# TCP instead of default UDP for socket comunication
# protocol
if use tcp; then
CHARM_OPTS="${CHARM_OPTS} tcp"
fi
# enable direct SMP support using shared memory
# if use smp && [ "${ARCH}" != "amd64" ]; then
if use smp; then
CHARM_OPTS="${CHARM_OPTS} smp"
fi
# compile with icc if requested
if use icc; then
if [ $(tc-getCC) != "icc" ]; then
die "You cannot use $(tc-getCC) with USE='icc'"
fi
CHARM_OPTS="${CHARM_OPTS} icc"
else
CHARM_OPTS="${CHARM_OPTS} gcc gfortran"
fi
# CMK optimization
if use cmkopt; then
append-flags -DCMK_OPTIMIZE=1
fi
echo "charm opts: ${CHARM_OPTS}"
}
src_compile() {
# build charmm++ first
cd "${S}"
./build charm++ ${CHARM_ARCH} ${CHARM_OPTS} ${CFLAGS} || \
die "Failed to build charm++"
# make pdf/html docs
if use doc; then
cd "${S}"/doc
make doc || die "failed to create pdf/html docs"
fi
}
src_install() {
# make charmc play well with gentoo before
# we move it into /usr/bin
epatch "${FILESDIR}/${P}-charmc-gentoo.patch"
sed -e "s|gentoo-include|${P}|" \
-e "s|gentoo-libdir|$(get_libdir)|g" \
-e "s|VERSION|${P}/VERSION|" \
-i ./src/scripts/charmc || die "failed patching charmc script"
# install binaries
cd "${S}"/bin
dobin ./charmd ./charmd_faceless ./charmr* ./charmc ./charmxi \
./conv-cpm ./dep.pl || die "Failed to install binaries"
# install headers
cd "${S}"/include
insinto /usr/include/${P}
doins * || die "failed to install header files"
# install static libs
cd "${S}"/lib
dolib.a * || die "failed to install static libs"
# install shared libs
cd "${S}"/lib_so
dolib.so * || die "failed to install shared libs"
# basic docs
cd "${S}"
dodoc CHANGES README || die "Failed to install docs"
# install examples
find examples/ -name 'Makefile' | xargs sed \
-r "s:(../)+bin/charmc:/usr/bin/charmc:" -i || \
die "Failed to fix examples"
find examples/ -name 'Makefile' | xargs sed \
-r "s:./charmrun:./charmrun ++local:" -i || \
die "Failed to fix examples"
insinto /usr/share/doc/${PF}/examples
doins -r examples/charm++/*
# pdf/html docs
if use doc; then
cd "${S}"/doc
# install pdfs
insinto /usr/share/doc/${PF}/pdf
doins doc/pdf/* || die "failed to install pdf docs"
# install html
docinto html
dohtml -r doc/html/* || die "failed to install html docs"
fi
}
pkg_postinst() {
echo
einfo "Please test your charm installation by copying the"
einfo "content of /usr/share/doc/${PF}/examples to a"
einfo "temporary location and run 'make test'."
echo
}
|