blob: 9a71aa40ed579cc81ab5b3fa05958b36323a71da (
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-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils toolchain-funcs versionator flag-o-matic
MY_P="ngs$(delete_version_separator 1)"
DESCRIPTION="NETGEN is an automatic 3d tetrahedral mesh generator"
HOMEPAGE="http://www.hpfem.jku.at/netgen/"
SRC_URI="http://www.hpfem.jku.at/cgi/download.cgi?ID=${MY_P}.tar.gz"
LICENSE="LGPL-2.1"
KEYWORDS="~amd64 ~x86"
IUSE="opencascade blas lapack gmp"
SLOT=0
RDEPEND="opencascade? ( sci-libs/opencascade )
blas? ( virtual/blas )
lapack? ( virtual/lapack )
gmp? ( dev-libs/gmp ) "
DEPEND="${RDEPEND}
virtual/opengl
x11-base/xorg-x11
>=dev-lang/tk-8.0
>=dev-lang/tcl-8.0
>=dev-tcltk/tix-8.1"
src_unpack() {
ln -s "${DISTDIR}"/"download.cgi?ID=${MY_P}.tar.gz" ${MY_P}.tar.gz
unpack ./${MY_P}.tar.gz
MY_S="${WORKDIR}"/"${MY_P}"
cd "${MY_S}"
epatch "${FILESDIR}"/togl_tk.patch
epatch "${FILESDIR}"/meshtype.patch
epatch "${FILESDIR}"/densemat.patch
epatch "${FILESDIR}"/debian-netgen_4.4-7.patch
}
src_compile() {
cd "${MY_S}"
local LAPACK="-lg2c"
export MACHINE="LINUX"
# gcc>=4.0 does not have libg2c anymore
if version_is_at_least "4.0" $(gcc-version) ; then
LAPACK=""
fi
# Fix the Makefiles
local tk_version
tk_version=$(grep TK_VER /usr/include/tk.h | sed 's/^.*"\(.*\)".*/\1/')
tk_release_serial=$(grep TK_RELEASE_SERIAL /usr/include/tk.h | awk '{print $3}')
sed -i "s:tk8.4:tk${tk_version}:g" ./Makefile
sed -i "s:tk8.4:tk${tk_version}:g" ./libsrc/makefile.mach.LINUX
# The install location of libtix has changed from 8.2* to 8.4
tix_version=$(grep TIX_VER /usr/include/tix.h | sed 's/^.*"\(.*\)".*/\1/')
if version_is_at_least "8.4" ${tix_version} ; then
tix_patch_level=$(sed -n '/TIX_PATCH_LEVEL/p' /usr/include/tix.h | sed -n '1p' | sed 's/^.*"\(.*\)".*/\1/')
sed -i "s:-ltix8.1.8.4:-L/usr/$(get_libdir)/Tix${tix_patch_level} -lTix${tix_patch_level}:g" ./Makefile
else
sed -i "s:tix8.1.8.4:tix${tix_version}:g" ./Makefile
fi
local tcl_version
tcl_version=$(grep TCL_VER /usr/include/tcl.h | sed 's/^.*"\(.*\)".*/\1/')
sed -i "s:tcl8.4:tcl${tcl_version}:g" ./Makefile
sed -i "s:tcl8.4:tcl${tcl_version}:g" ./libsrc/makefile.mach.LINUX
sed -i "s:CPP_DIR=.:CPP_DIR=${MY_S}:g" ./Makefile
sed -i "s:-L/usr/openwin/lib -L/usr/X11R6/lib -L/usr/lib/GL3.5:-L/usr/X11R6/$(get_libdir) -L/usr/$(get_libdir)/GL:g" ./libsrc/makefile.mach.LINUX
if use opencascade; then
sed -i "s:/opt/OpenCASCADE5.2:$CASROOT/../:g" ./Makefile
sed -i "s:/opt/OpenCASCADE5.2:$CASROOT/../:g" ./libsrc/makefile.mach.LINUX
else
sed -i "s:OCC_DIR=/opt/OpenCASCADE5.2:# OCC_DIR=/opt/OpenCASCADE5.2:g" ./Makefile
sed -i "s:OCC_DIR=/opt/OpenCASCADE5.2:# OCC_DIR=/opt/OpenCASCADE5.2:g" ./libsrc/makefile.mach.LINUX
sed -i "s:OCCINC_DIR=\$(OCC_DIR)/ros/inc:# OCCINC_DIR=\$(OCC_DIR)/ros/inc:g" ./Makefile
sed -i "s:OCCINC_DIR=\$(OCC_DIR)/ros/inc:# OCCINC_DIR=\$(OCC_DIR)/ros/inc:g" ./libsrc/makefile.mach.LINUX
sed -i "s:OCCLIB_DIR=\$(OCC_DIR)/ros/lin/lib:# OCCLIB_DIR=\$(OCC_DIR)/ros/lin/lib:g" ./Makefile
sed -i "s:OCCLIB_DIR=\$(OCC_DIR)/ros/lin/lib:# OCCLIB_DIR=\$(OCC_DIR)/ros/lin/lib:g" ./libsrc/makefile.mach.LINUX
sed -i "s:CPLUSPLUSFLAGS2 += -DOCCGEOMETRY -DOCC52 -DUSE_STL_STREAM -DHAVE_IOSTREAM -DHAVE_LIMITS -I\$(OCCINC_DIR):# CPLUSPLUSFLAGS2 += -DOCCGEOMETRY -DOCC52 -DUSE_STL_STREAM -DHAVE_IOSTREAM -DHAVE_LIMITS -I\$(OCCINC_DIR):g" ./libsrc/makefile.mach.LINUX
sed -i "s:LINKFLAGS2 += -L\$(OCCLIB_DIR) -lTKIGES -lTKBRep -lTKSTEP -lTKSTL -lTKTopAlgo -lTKG3d -lTKG2d -lTKXSBase -lTKOffset -lTKFillet -lTKGeomBase -lTKGeomAlgo -lTKShHealing -lTKBO -lTKPrim -lTKernel -lTKMath -lTKBool:# LINKFLAGS2 += -L\$(OCCLIB_DIR) -lTKIGES -lTKBRep -lTKSTEP -lTKSTL -lTKTopAlgo -lTKG3d -lTKG2d -lTKXSBase -lTKOffset -lTKFillet -lTKGeomBase -lTKGeomAlgo -lTKShHealing -lTKBO -lTKPrim -lTKernel -lTKMath -lTKBool:g" ./libsrc/makefile.mach.LINUX
sed -i "s:-locc::g" ./Makefile
sed -i "s:occlib:# occlib:g" ./Makefile
fi
if use lapack; then
LAPACK="${LAPACK} -llapack"
fi
if use blas; then
LAPACK="${LAPACK} -lblas"
fi
if use gmp; then
LAPACK="${LAPACK} -lgmp"
fi
sed -i "s:# lapack = -llapack -lblas -lgmp -lg2c:lapack = $LAPACK:g" ./Makefile
sed -i "s:# lapack = -llapack -lblas -lgmp -lg2c:lapack = $LAPACK:g" ./libsrc/makefile.mach.LINUX
# Copy tkInt.h from the system to the source to correct the issue with togl.cpp
cp -p /usr/$(get_libdir)/tk${tk_version}/include/generic/tkInt.h ./togl/tkInt${tk_version}p${tk_release_serial}.h
cp -p /usr/$(get_libdir)/tk${tk_version}/include/generic/tkIntDecls.h ./togl/tkIntDecls${tk_version}p${tk_release_serial}.h
sed -i "s:tkIntDecls.h:./tkIntDecls${tk_version}p${tk_release_serial}.h:g" ./togl/tkInt${tk_version}p${tk_release_serial}.h
# Build 2 extra demo applications
#sed -i "s:# appdemo:appdemo:g" ./Makefile
#sed -i "s:# appaddon:appaddon:g" ./Makefile
#sed -i "s:# appngs:appngs:g" ./Makefile
#sed -i "s:# cd demoapp: cd demoapp:g" ./Makefile
#sed -i "s:# cd ngsolve: cd ngsolve:g" ./Makefile
emake || die "emake failed"
}
src_install() {
cd "${MY_S}"
dobin ng
dodoc ./doc/ng4.pdf VERSION
dodir /usr/share/"${PF}"
insinto /usr/share/"${PF}"
find . -name "*.tcl" -exec doins --parents {} \;
dodir /usr/share/"${PF}"/tutorials
insinto /usr/share/"${PF}"/tutorials
doins ./tutorials/*
}
|