# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit cmake-utils flag-o-matic fortran-2 toolchain-funcs DESCRIPTION="A three-dimensional finite element mesh generator" HOMEPAGE="http://gmsh.info" SRC_URI="http://gmsh.info/src/${P}-source.tgz" # GMSH,HXT: GPL-2+, ANN,MathEx: LGPL-2.1+, mpeg_encode: free-noncomm # QuadTri: GPL-2, MMG3D: GPL-3 LICENSE="GPL-2 GPL-2+ GPL-3 LGPL-2.1+ free-noncomm" SLOT="0" KEYWORDS="~amd64 ~x86" # USE=blas doesn't make much sense. Most meshing algorithms won't work without # a working blas/lapack implementation, so we remove the USE flag. # USE=python needs ENABLE_PRIVATE_API which is currently discouraged by upstream # as it enables experimental developer stuff, therefore numpy can also not # be used. # USE=zipper currently fails to compile IUSE="+alglib +ann +bamg +blossom +cairo +cgns +dintegration doc +domhex examples +gmm +hxt +kbipack +mathex +med +metis +mmg3d +mpeg mpi mumps +netgen +opencascade openmp +opthom p4est petsc poppler +quadtri revoropt slepc visudev +voropp" REQUIRED_USE=" hxt? ( metis ) p4est? ( poppler ) revoropt? ( ann alglib ) slepc? ( petsc ) " # DEFAULT can be set to OFF, to disable all of the following options # at once. # # default-enabled options: # ACIS, ALGLIB, ANN, BAMG, BLOSSOM, CGNS, CAIRO, DINTEGRATION, DOMHEX, # FLTK, GETDP, GMM, HXT, KBIPACK, MATHEX, MED, MESH, METIS, MMG3D, # MPEG_ENCODE, NATIVE_FILE_CHOOSER, NETGEN, OCC, OCC_CAF, ONELAB, # ONELAB_METAMODEL, OPTHOM, PARSER, PLUGINS, POST, QUADTRI, SOLVER, # VOROPP # # options default to ON: # BLAS_LAPACK, CXX11, C99, GMP # # options default to OFF: # 3M, BUILD_LIB, BUILD_SHARED, BUILD_DYNAMIC, BUILD_ANDROID, BUILD_IOS, # PROFILE, GRAPHICS, MPI, MSVC_STATIC_RUNTIME, MUMPS, NUMPY, PETSC4PY, # OCC_STATIC, OCC_TBB, OPENMP, OS_SPECIFIC_INSTALL, OSMESA, P4EST, PETSC, # POPPLER, PRIVATE_API, REVOROPT, SLEPC, SYSTEM_CONTRIB, TCMALLOC, # TOUCHBAR, VISUDEV, WRAP_JAVA, WRAP_PYTHON, ZIPPER # # options specific to different platforms: # BUILD_ANDROID, BUILD_IOS, MSVC_STATIC_RUNTIME, OS_SPECIFIC_INSTALL, # TOUCHBAR (Apple) # Why did this dep need fftw? # blas? ( virtual/blas virtual/lapack sci-libs/fftw:3.0 ) # Lua support seems no longer available # lua? ( dev-lang/lua:0 ) RDEPEND=" media-libs/libpng:0= sys-libs/zlib || ( ( virtual/blas virtual/lapack ) sci-libs/atlas[lapack] ) virtual/fortran[openmp?] virtual/glu virtual/jpeg virtual/opengl x11-libs/fltk:1[cairo?,opengl] alglib? ( sci-libs/alglib:= ) cairo? ( x11-libs/cairo[opengl] ) cgns? ( sci-libs/cgnslib:=[fortran,hdf5,mpi?,szip] ) kbipack? ( dev-libs/gmp:0= ) med? ( sci-libs/med ) metis? ( || ( sci-libs/parmetis[mpi?,openmp?] sci-libs/metis[openmp?] ) ) mpi? ( virtual/mpi[cxx] ) mumps? ( sci-libs/mumps[metis?,mpi?] ) opencascade? ( media-libs/freetype:2 sci-libs/opencascade:7.3.0[tbb] ) p4est? ( sci-libs/p4est[mpi?,openmp?] ) petsc? ( sci-mathematics/petsc[fortran,hdf5,metis?,mpi?,mumps?] ) poppler? ( app-text/poppler:=[cairo?,cxx] ) revoropt? ( dev-cpp/eigen:3[openmp?] ) slepc? ( sci-mathematics/slepc[mpi?] ) voropp? ( sci-libs/voro++ ) " DEPEND="${RDEPEND}" BDEPEND=" doc? ( app-doc/doxygen[latex] sys-apps/texinfo ) virtual/pkgconfig " S=${WORKDIR}/${P}-source PATCHES=( "${FILESDIR}/${P}-0001-CMakeLists.txt-add-sc-library.patch" ) DOCS=( CHANGELOG.txt CREDITS.txt README.txt ) pkg_setup() { [[ MERGE_TYPE != binary ]] && use openmp && tc-check-openmp fortran-2_pkg_setup } src_configure() { local mycmakeargs=(-DCMAKE_Fortran_COMPILER=$(tc-getF77)) mycmakeargs+=( -DENABLE_ANN=$(usex ann) -DENABLE_ALGLIB=$(usex alglib) -DENABLE_BAMG=$(usex bamg) -DENABLE_BLOSSOM=$(usex blossom) -DENABLE_BUILD_DYNAMIC=ON -DENABLE_BUILD_SHARED=ON -DENABLE_CAIRO=$(usex cairo) -DENABLE_CGNS=$(usex cgns) -DENABLE_DINTEGRATION=$(usex dintegration) -DENABLE_DOMHEX=$(usex domhex) -DENABLE_GMM=$(usex gmm) -DENABLE_GRAPHICS=ON -DENABLE_HXT=$(usex hxt) -DENABLE_KBIPACK=$(usex kbipack) -DENABLE_MATHEX=$(usex mathex) -DENABLE_MED=$(usex med) -DENABLE_METIS=$(usex metis) -DENABLE_MMG3D=$(usex mmg3d) -DENABLE_MPEG_ENCODE=$(usex mpeg) -DENABLE_MPI=$(usex mpi) -DENABLE_MUMPS=$(usex mumps) -DENABLE_NETGEN=$(usex netgen) -DENABLE_OCC=$(usex opencascade) -DENABLE_OCC_CAF=$(usex opencascade) -DENABLE_OCC_TBB=$(usex opencascade) # occ with tbb implemenation has better performance -DENABLE_OPENMP=$(usex openmp) -DENABLE_OPTHOM=$(usex opthom) -DENABLE_P4EST=$(usex p4est) -DENABLE_PETSC=$(usex petsc) -DENABLE_POPPLER=$(usex poppler) -DENABLE_QUADTRI=$(usex quadtri) -DENABLE_SLEPC=$(usex slepc) -DENABLE_SYSTEM_CONTRIB=ON # use system provided libraries where possible -DENABLE_VISUDEV=$(usex visudev) -DENABLE_VOROPP=$(usex voropp) # -DENABLE_ZIPPER=$(usex zipper) -DPACKAGER="portage" ) cmake-utils_src_configure } src_compile() { cmake-utils_src_compile if use doc; then pushd "${BUILD_DIR}" > /dev/null 2>&1 || die eninja info html pdf popd > /dev/null 2>&1 || die # Build API documentation pushd "${S}"/doc/doxygen > /dev/null 2>&1 || die doxygen -u Doxyfile || die "failed to update doxyfile" doxygen || die "failed to build API docs" popd > /dev/null 2>&1 || die fi } src_install() { cmake-utils_src_install if use examples ; then insinto /usr/share/doc/${PF} doins -r demos tutorial fi if use doc; then insinto /usr/share/info doins "${S}"/doc/texinfo/${PN}.info insinto /usr/share/doc/${PF} doins "${S}"/doc/texinfo/${PN}.{html,pdf} # install API docs doins -r "${S}"/doc/doxygen/html fi # FIXME hack: remove build directory inside ${ED} rm -r "${ED}"/var/tmp || die "failed to remove dir" }