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 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-60-g2f50