qrupdate: use the requested compiler from Spack (#21841)
qrupdate did hard set FC=gfortran Parallel compilation is now allowed calling $(MAKE) instead of make for subprocess see: https://stackoverflow.com/questions/24818095/warning-forced-in-submake-in-parallel-execution-of-make The build phase is split since the process always requires a target.
This commit is contained in:
parent
7c65f03db7
commit
830ee07874
1 changed files with 19 additions and 3 deletions
|
@ -23,12 +23,22 @@ class Qrupdate(MakefilePackage, SourceforgePackage):
|
|||
def edit(self, spec, prefix):
|
||||
# BSD "install" does not understand GNU -D flag.
|
||||
# We will create the parent directory ourselves.
|
||||
makefile = FileFilter('src/Makefile')
|
||||
if (sys.platform == 'darwin'):
|
||||
makefile = FileFilter('src/Makefile')
|
||||
makefile.filter('-D', '')
|
||||
|
||||
# Concurrent (parallel) Compilation requires calling $(MAKE) not make
|
||||
makefile = FileFilter('Makefile')
|
||||
makefile.filter('make', '$(MAKE)')
|
||||
|
||||
# We may like to compile with any Forran compiler, not always gfortran
|
||||
makefile = FileFilter('Makeconf')
|
||||
makefile.filter('FC=gfortran', 'FC ?= gfortran')
|
||||
|
||||
return
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# The Makefile does not take the simple "make" rule
|
||||
def build(self, spec, prefix):
|
||||
|
||||
lapack_blas = spec['lapack'].libs + spec['blas'].libs
|
||||
|
||||
|
@ -41,11 +51,17 @@ def install(self, spec, prefix):
|
|||
if (spec.satisfies('^openblas+ilp64') or
|
||||
spec.satisfies('^intel-mkl+ilp64') or
|
||||
spec.satisfies('^intel-parallel-studio+mkl+ilp64')):
|
||||
make_args.append('FFLAGS=-fdefault-integer-8')
|
||||
if (spec.satisfies('%intel') or spec.satisfies('%oneapi')
|
||||
or spec.satisfies('%nvhpc')):
|
||||
# 64bits integer for ifort and nvfortran are promoted by:
|
||||
make_args.append('FFLAGS=-i8')
|
||||
else:
|
||||
make_args.append('FFLAGS=-fdefault-integer-8')
|
||||
|
||||
# Build static and dynamic libraries:
|
||||
make('lib', 'solib', *make_args)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# "INSTALL" confuses "make install" on case-insensitive filesystems:
|
||||
if os.path.isfile("INSTALL"):
|
||||
os.remove("INSTALL")
|
||||
|
|
Loading…
Reference in a new issue