Skip to content
Snippets Groups Projects
Commit 68109654 authored by Todd Gamblin's avatar Todd Gamblin Committed by GitHub
Browse files

Merge pull request #1130 from davydden/gmsh

Gmsh -- various fixes
parents 793c9f55 51b0f53b
Branches
No related tags found
No related merge requests found
...@@ -27,39 +27,51 @@ ...@@ -27,39 +27,51 @@
class Gmsh(Package): class Gmsh(Package):
""" """
Gmsh is a free 3D finite element grid generator with a built-in CAD engine and post-processor. Its design goal is Gmsh is a free 3D finite element grid generator with a built-in CAD engine
to provide a fast, light and user-friendly meshing tool with parametric input and advanced visualization and post-processor. Its design goal is to provide a fast, light and
capabilities. Gmsh is built around four modules: geometry, mesh, solver and post-processing. The specification of user-friendly meshing tool with parametric input and advanced visualization
any input to these modules is done either interactively using the graphical user interface or in ASCII text files capabilities. Gmsh is built around four modules: geometry, mesh, solver and
using Gmsh's own scripting language. post-processing. The specification of any input to these modules is done
either interactively using the graphical user interface or in ASCII text
files using Gmsh's own scripting language.
""" """
homepage = 'http://gmsh.info' homepage = 'http://gmsh.info'
url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz' url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz'
version('2.12.0', '7fbd2ec8071e79725266e72744d21e902d4fe6fa9e7c52340ad5f4be5c159d09')
version('2.11.0', 'f15b6e7ac9ca649c9a74440e1259d0db') version('2.11.0', 'f15b6e7ac9ca649c9a74440e1259d0db')
# FIXME : Misses dependencies on gmm, PetsC, TetGen variant('shared', default=True, description='Enables the build of shared libraries')
variant('debug', default=False, description='Builds the library in debug mode')
variant('shared', default=True, description='Enables the build of shared libraries') variant('mpi', default=False, description='Builds MPI support for parser and solver')
variant('debug', default=False, description='Builds the library in debug mode') variant('fltk', default=False, description='Enables the build of the FLTK GUI')
variant('mpi', default=False, description='Builds MPI support for parser and solver') variant('hdf5', default=False, description='Enables HDF5 support')
variant('fltk', default=False, description='Enables the build of the FLTK GUI') variant('compression', default=True, description='Enables IO compression through zlib')
variant('hdf5', default=False, description='Enables HDF5 support') variant('oce', default=False, description='Build with OCE')
variant('compression', default=True, description='Enables IO compression through zlib') variant('petsc', default=False, description='Build with PETSc')
variant('slepc', default=False, description='Build with SLEPc (only when PETSc is enabled)')
depends_on('blas') depends_on('blas')
depends_on('lapack') depends_on('lapack')
depends_on('cmake@2.8:')
depends_on('gmp') depends_on('gmp')
depends_on('mpi', when='+mpi') depends_on('mpi', when='+mpi')
depends_on('fltk', when='+fltk') # Assumes OpenGL with GLU is already provided by the system # Assumes OpenGL with GLU is already provided by the system:
depends_on('fltk', when='+fltk')
depends_on('hdf5', when='+hdf5') depends_on('hdf5', when='+hdf5')
depends_on('zlib', when='+compression') depends_on('oce', when='+oce')
depends_on('petsc+mpi', when='+petsc+mpi')
depends_on('petsc', when='+petsc~mpi')
depends_on('slepc', when='+slepc+petsc')
depends_on('zlib', when='+compression')
def install(self, spec, prefix): def install(self, spec, prefix):
options = [] options = []
options.extend(std_cmake_args) options.extend(std_cmake_args)
# Make sure native file dialogs are used
options.extend(['-DENABLE_NATIVE_FILE_CHOOSER=ON'])
build_directory = join_path(self.stage.path, 'spack-build') build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path source_directory = self.stage.source_path
...@@ -68,11 +80,45 @@ def install(self, spec, prefix): ...@@ -68,11 +80,45 @@ def install(self, spec, prefix):
# Prevent GMsh from using its own strange directory structure on OSX # Prevent GMsh from using its own strange directory structure on OSX
options.append('-DENABLE_OS_SPECIFIC_INSTALL=OFF') options.append('-DENABLE_OS_SPECIFIC_INSTALL=OFF')
# Make sure GMSH picks up correct BlasLapack by providing linker flags
options.append('-DBLAS_LAPACK_LIBRARIES=%s %s' %
(to_link_flags(spec['lapack'].lapack_shared_lib),
to_link_flags(spec['blas'].blas_shared_lib)))
# Gmsh does not have an option to compile against external metis.
# Its own Metis, however, fails to build
options.append('-DENABLE_METIS=OFF')
if '+fltk' in spec:
options.append('-DENABLE_FLTK=ON')
else:
options.append('-DENABLE_FLTK=OFF')
if '+oce' in spec:
env['CASROOT'] = self.spec['oce'].prefix
options.extend(['-DENABLE_OCC=ON'])
else:
options.extend(['-DENABLE_OCC=OFF'])
if '+petsc' in spec:
env['PETSC_DIR'] = self.spec['petsc'].prefix
options.extend(['-DENABLE_PETSC=ON'])
else:
options.extend(['-DENABLE_PETSC=OFF'])
if '+slepc' in spec:
env['SLEPC_DIR'] = self.spec['slepc'].prefix
options.extend(['-DENABLE_SLEPC=ON'])
else:
options.extend(['-DENABLE_SLEPC=OFF'])
if '+shared' in spec: if '+shared' in spec:
# Builds dynamic executable and installs shared library
options.extend(['-DENABLE_BUILD_SHARED:BOOL=ON', options.extend(['-DENABLE_BUILD_SHARED:BOOL=ON',
'-DENABLE_BUILD_DYNAMIC:BOOL=ON']) # Builds dynamic executable and installs shared library '-DENABLE_BUILD_DYNAMIC:BOOL=ON'])
else: else:
options.append('-DENABLE_BUILD_LIB:BOOL=ON') # Builds and installs static library # Builds and installs static library
options.append('-DENABLE_BUILD_LIB:BOOL=ON')
if '+debug' in spec: if '+debug' in spec:
options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') options.append('-DCMAKE_BUILD_TYPE:STRING=Debug')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment