From ffaa4a8922e8bb41a45eecb3ab7ba72bf677317e Mon Sep 17 00:00:00 2001 From: alalazo Date: Wed, 13 Jan 2016 10:05:19 +0100 Subject: gmsh : added package with basic compile options --- var/spack/packages/gmsh/package.py | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 var/spack/packages/gmsh/package.py (limited to 'var') diff --git a/var/spack/packages/gmsh/package.py b/var/spack/packages/gmsh/package.py new file mode 100644 index 0000000000..45f2d4eadf --- /dev/null +++ b/var/spack/packages/gmsh/package.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2013, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License (as published by +# the Free Software Foundation) version 2.1 dated February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gmsh(Package): + """ + Gmsh is a free 3D finite element grid generator with a build-in CAD engine and post-processor. Its design goal is + to provide a fast, light and user-friendly meshing tool with parametric input and advanced visualization + capabilities. Gmsh is built around four modules: geometry, mesh, solver and 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' + url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz' + + version('2.11.0', 'f15b6e7ac9ca649c9a74440e1259d0db') + + # FIXME : Misses dependencies on gmm, FLTK, PetsC, TetGen, HDF5 + + variant('shared', default=True, description='Enables the build of shared libraries') + variant('debug', default=False, description='Builds the library in debug mode') + variant('mpi', default=False, description='Builds MPI support for parser and solver') + variant('compression', default=True, description='Enables IO compression through zlib') + + depends_on('blas') + depends_on('lapack') + depends_on('gmp') + depends_on('mpi', when='+mpi') + depends_on('zlib', when='+compression') + + def install(self, spec, prefix): + + options = [] + options.extend(std_cmake_args) + + build_directory = join_path(self.stage.path, 'spack-build') + source_directory = self.stage.source_path + + if '+shared' in spec: + options.extend(['-DENABLE_BUILD_SHARED:BOOL=ON', + '-DENABLE_BUILD_DYNAMIC:BOOL=ON']) # Builds dynamic executable and installs shared library + else: + options.append('-DENABLE_BUILD_LIB:BOOL=ON') # Builds and installs static library + + if '+debug' in spec: + options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') + + if '+mpi' in spec: + options.append('-DENABLE_MPI:BOOL=ON') + + if '+compression' in spec: + options.append('-DENABLE_COMPRESSED_IO:BOOL=ON') + + with working_dir(build_directory, create=True): + cmake(source_directory, *options) + make() + make('install') -- cgit v1.2.3-70-g09d2 From 767f286a9fbdd1a44e2231ef7e21ecd64c1bfb30 Mon Sep 17 00:00:00 2001 From: alalazo Date: Wed, 13 Jan 2016 11:26:10 +0100 Subject: gmsh : added fltk support --- var/spack/packages/fltk/font.patch | 44 +++++++++++++++++++++++++++++ var/spack/packages/fltk/package.py | 58 ++++++++++++++++++++++++++++++++++++++ var/spack/packages/gmsh/package.py | 6 ++-- 3 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 var/spack/packages/fltk/font.patch create mode 100644 var/spack/packages/fltk/package.py (limited to 'var') diff --git a/var/spack/packages/fltk/font.patch b/var/spack/packages/fltk/font.patch new file mode 100644 index 0000000000..7706a1b4ee --- /dev/null +++ b/var/spack/packages/fltk/font.patch @@ -0,0 +1,44 @@ +Index: FL/x.H +=================================================================== +--- a/FL/x.H (revision 10476) ++++ b/FL/x.H (working copy) +@@ -132,6 +132,7 @@ + XFontStruct *ptr; + }; + extern FL_EXPORT Fl_XFont_On_Demand fl_xfont; ++extern FL_EXPORT XFontStruct* fl_core_font(); + + // this object contains all X-specific stuff about a window: + // Warning: this object is highly subject to change! +Index: src/fl_font.cxx +=================================================================== +--- a/src/fl_font.cxx (revision 10476) ++++ b/src/fl_font.cxx (working copy) +@@ -55,6 +55,14 @@ + # include "fl_font_x.cxx" + #endif // WIN32 + ++#ifdef WIN32 ++#elif defined(__APPLE__) ++#else ++XFontStruct *fl_core_font() ++{ ++ return fl_xfont.value(); ++} ++#endif + + double fl_width(const char* c) { + if (c) return fl_width(c, (int) strlen(c)); +Index: src/gl_draw.cxx +=================================================================== +--- a/src/gl_draw.cxx (revision 10476) ++++ b/src/gl_draw.cxx (working copy) +@@ -84,7 +84,7 @@ + * then sorting through them at draw time (for normal X rendering) to find which one can + * render the current glyph... But for now, just use the first font in the list for GL... + */ +- XFontStruct *font = fl_xfont; ++ XFontStruct *font = fl_core_font(); + int base = font->min_char_or_byte2; + int count = font->max_char_or_byte2-base+1; + fl_fontsize->listbase = glGenLists(256); diff --git a/var/spack/packages/fltk/package.py b/var/spack/packages/fltk/package.py new file mode 100644 index 0000000000..0b462f83f8 --- /dev/null +++ b/var/spack/packages/fltk/package.py @@ -0,0 +1,58 @@ +############################################################################## +# Copyright (c) 2013-2015, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License (as published by +# the Free Software Foundation) version 2.1 dated February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fltk(Package): + """ + FLTK (pronounced "fulltick") is a cross-platform C++ GUI toolkit for UNIX/Linux (X11), Microsoft Windows, and + MacOS X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL and its + built-in GLUT emulation. + + FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK + also includes an excellent UI builder called FLUID that can be used to create applications in minutes. + """ + homepage = 'http://www.fltk.org/' + url = 'http://fltk.org/pub/fltk/1.3.3/fltk-1.3.3-source.tar.gz' + + version('1.3.3', '9ccdb0d19dc104b87179bd9fd10822e3') + + patch('font.patch', when='@1.3.3') + + variant('shared', default=True, description='Enables the build of shared libraries') + + def install(self, spec, prefix): + options = ['--prefix=%s' % prefix, + '--enable-localjpeg', + '--enable-localpng', + '--enable-localzlib'] + + if '+shared' in spec: + options.append('--enable-shared') + + # FLTK needs to be built in-source + configure(*options) + make() + make('install') diff --git a/var/spack/packages/gmsh/package.py b/var/spack/packages/gmsh/package.py index 45f2d4eadf..4e298d2a09 100644 --- a/var/spack/packages/gmsh/package.py +++ b/var/spack/packages/gmsh/package.py @@ -27,7 +27,7 @@ from spack import * class Gmsh(Package): """ - Gmsh is a free 3D finite element grid generator with a build-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 and post-processor. Its design goal is to provide a fast, light and user-friendly meshing tool with parametric input and advanced visualization capabilities. Gmsh is built around four modules: geometry, mesh, solver and post-processing. The specification of any input to these modules is done either interactively using the graphical user interface or in ASCII text files @@ -38,17 +38,19 @@ class Gmsh(Package): version('2.11.0', 'f15b6e7ac9ca649c9a74440e1259d0db') - # FIXME : Misses dependencies on gmm, FLTK, PetsC, TetGen, HDF5 + # FIXME : Misses dependencies on gmm, PetsC, TetGen, HDF5 variant('shared', default=True, description='Enables the build of shared libraries') variant('debug', default=False, description='Builds the library in debug mode') variant('mpi', default=False, description='Builds MPI support for parser and solver') + variant('fltk', default=False, description='Enables the build of the FLTK GUI') variant('compression', default=True, description='Enables IO compression through zlib') depends_on('blas') depends_on('lapack') depends_on('gmp') depends_on('mpi', when='+mpi') + depends_on('fltk', when='+fltk') # Assumes OpenGL with GLU is already provided by the system depends_on('zlib', when='+compression') def install(self, spec, prefix): -- cgit v1.2.3-70-g09d2 From 78b57787faebf906a9617d1425e489ca598153f4 Mon Sep 17 00:00:00 2001 From: alalazo Date: Wed, 13 Jan 2016 12:22:59 +0100 Subject: gmsh : added hdf5 support --- var/spack/packages/gmsh/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'var') diff --git a/var/spack/packages/gmsh/package.py b/var/spack/packages/gmsh/package.py index 4e298d2a09..9d759303cb 100644 --- a/var/spack/packages/gmsh/package.py +++ b/var/spack/packages/gmsh/package.py @@ -38,12 +38,13 @@ class Gmsh(Package): version('2.11.0', 'f15b6e7ac9ca649c9a74440e1259d0db') - # FIXME : Misses dependencies on gmm, PetsC, TetGen, HDF5 + # 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('mpi', default=False, description='Builds MPI support for parser and solver') variant('fltk', default=False, description='Enables the build of the FLTK GUI') + variant('hdf5', default=False, description='Enables HDF5 support') variant('compression', default=True, description='Enables IO compression through zlib') depends_on('blas') @@ -51,6 +52,7 @@ class Gmsh(Package): depends_on('gmp') depends_on('mpi', when='+mpi') depends_on('fltk', when='+fltk') # Assumes OpenGL with GLU is already provided by the system + depends_on('hdf5', when='+hdf5') depends_on('zlib', when='+compression') def install(self, spec, prefix): -- cgit v1.2.3-70-g09d2