New Package: STRIPACK (#22544)
This commit is contained in:
parent
e21e26094e
commit
4d288a802e
69
var/spack/repos/builtin/packages/stripack/package.py
Normal file
69
var/spack/repos/builtin/packages/stripack/package.py
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Stripack(MakefilePackage):
|
||||||
|
"""STRIPACK:
|
||||||
|
Delaunay Triangulation rewritten in Fortran 90 by John Burkardt at
|
||||||
|
https://people.sc.fsu.edu/~jburkardt/f_src/stripack/stripack.html
|
||||||
|
|
||||||
|
The original Fortran 77 package STRIPACK is available from netlib as algorithm number 772 at
|
||||||
|
http://www.netlib.org/toms/772.gz
|
||||||
|
Dr. Renka's articles were published in the ACM Transactions on Mathematical Software, Vol. 23, No 3, September 1997
|
||||||
|
https://dl.acm.org/doi/10.1145/275323.275329
|
||||||
|
"""
|
||||||
|
|
||||||
|
homepage = "https://people.sc.fsu.edu/~jburkardt/f_src/stripack/stripack.html"
|
||||||
|
version('develop', sha256='26c074bc46fb8549d7a42ec713636798297d7327c8f3ce0ba2d3348a501ffa7c', expand=False, url='https://people.sc.fsu.edu/~jburkardt/f_src/stripack/stripack.f90')
|
||||||
|
|
||||||
|
@run_before('build')
|
||||||
|
def run_mkmake(self):
|
||||||
|
config = [
|
||||||
|
'BUILDIR ?= ' + join_path(self.build_directory, 'build'),
|
||||||
|
'DYLIB=' + dso_suffix,
|
||||||
|
'F90=' + self.compiler.fc,
|
||||||
|
'LD=' + self.compiler.fc,
|
||||||
|
'FFLAGS=' + self.compiler.fc_pic_flag,
|
||||||
|
'LDFLAGS=' + self.compiler.fc_pic_flag,
|
||||||
|
'.SUFFIXES: .f .f90 .F90',
|
||||||
|
'$(BUILDIR)/%.o: %.f90',
|
||||||
|
'\t$(F90) $(FFLAGS) -c $< -o $@',
|
||||||
|
'all: $(BUILDIR)/stripack.o',
|
||||||
|
'\t$(LD) -shared $(LDFLAGS) -o $(BUILDIR)/libstripack.$(DYLIB)'
|
||||||
|
+ ' $(BUILDIR)/stripack.o $(LIBS)',
|
||||||
|
]
|
||||||
|
with open('Makefile', 'w') as fh:
|
||||||
|
fh.write('\n'.join(config))
|
||||||
|
mkdirp(join_path(self.build_directory, 'build'))
|
||||||
|
|
||||||
|
def setup_run_environment(self, env):
|
||||||
|
# This is smartly used by VisIt
|
||||||
|
env.set('VISIT_FFP_STRIPACK_PATH',
|
||||||
|
join_path(self.spec.prefix.lib, 'libstripack.' + dso_suffix))
|
||||||
|
|
||||||
|
def build(self, spec, prefix):
|
||||||
|
fflags = spec.compiler_flags['fflags']
|
||||||
|
# Setting the double precision mode
|
||||||
|
# needed for the original Fortran 77 version
|
||||||
|
satisfies = spec.satisfies
|
||||||
|
if satisfies('%gcc') or satisfies('%clang') or satisfies('%flang'):
|
||||||
|
fflags += ['-fdefault-real-8', '-fdefault-double-8']
|
||||||
|
elif satisfies('%intel') or satisfies('%oneapi') or satisfies('%aocc'):
|
||||||
|
fflags += ['-r8']
|
||||||
|
elif satisfies('%xl') or satisfies('%xl_r'):
|
||||||
|
fflags += ['-qrealsize=8']
|
||||||
|
elif satisfies('%fj'):
|
||||||
|
fflags += ['-CcdRR8']
|
||||||
|
elif satisfies('%pgi') or satisfies('%nvhpc'):
|
||||||
|
fflags += ['-r8']
|
||||||
|
fflags += [self.compiler.fc_pic_flag]
|
||||||
|
make('all', 'FFLAGS={0}'.format(' '.join(fflags)))
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
mkdirp(prefix.lib)
|
||||||
|
install(join_path(self.build_directory, 'build', 'libstripack.' + dso_suffix),
|
||||||
|
prefix.lib)
|
Loading…
Reference in New Issue
Block a user