elpa: override headers prop for common include-dir localization

... and apply this in SIRIUS, CP2K & QE.

Thanks to @scheibelp for the idea.
This commit is contained in:
Tiziano Müller 2019-05-09 15:08:51 +02:00 committed by Peter Scheibel
parent f87722b74d
commit 92c4567404
4 changed files with 24 additions and 19 deletions

View File

@ -284,13 +284,9 @@ def edit(self, spec, prefix):
if '+elpa' in self.spec:
elpa = spec['elpa']
elpa_suffix = '_openmp' if '+openmp' in elpa else ''
elpa_base_path = os.path.join(
elpa.prefix,
'include',
'elpa{suffix}-{version!s}'.format(
suffix=elpa_suffix, version=elpa.version))
elpa_incdir = elpa.headers.directories[0]
fcflags.append('-I' + os.path.join(elpa_base_path, 'modules'))
fcflags += ['-I{0}'.format(os.path.join(elpa_incdir, 'modules'))]
libs.append(os.path.join(elpa.libs.directories[0],
('libelpa{elpa_suffix}.{dso_suffix}'
.format(elpa_suffix=elpa_suffix,
@ -307,7 +303,7 @@ def edit(self, spec, prefix):
cppflags.append('-D__ELPA={0}{1:02d}'
.format(elpa.version[0],
int(elpa.version[1])))
fcflags.append('-I' + os.path.join(elpa_base_path, 'elpa'))
fcflags += ['-I{0}'.format(os.path.join(elpa_incdir, 'elpa'))]
if self.spec.satisfies('+sirius'):
sirius = spec['sirius']

View File

@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack import *
@ -43,6 +45,18 @@ def libs(self):
libname, root=self.prefix, shared=True, recursive=True
)
@property
def headers(self):
suffix = '_openmp' if self.spec.satisfies('+openmp') else ''
incdir = os.path.join(
self.spec.prefix.include,
'elpa{suffix}-{version!s}'.format(
suffix=suffix, version=self.spec.version))
hlist = find_all_headers(incdir)
hlist.directories = [incdir]
return hlist
build_directory = 'spack-build'
def setup_environment(self, spack_env, run_env):

View File

@ -217,13 +217,13 @@ def install(self, spec, prefix):
# Spec for elpa
elpa = spec['elpa']
# Find where the Fortran module resides
elpa_module = find(elpa.prefix, 'elpa.mod')
# Compute the include directory from there: versions
# of espresso prior to 6.1 requires -I in front of the directory
elpa_include = '' if '@6.1:' in spec else '-I'
elpa_include += os.path.dirname(elpa_module[0])
elpa_include += os.path.join(
elpa.headers.directories[0],
'modules'
)
options.extend([
'--with-elpa-include={0}'.format(elpa_include),

View File

@ -81,15 +81,10 @@ def _def(variant, flag=None):
]
if self.spec.satisfies('+elpa'):
elpa = self.spec['elpa']
elpa_suffix = '_openmp' if elpa.satisfies('+openmp') else ''
elpa_incdir = os.path.join(
elpa.prefix,
'include',
'elpa{suffix}-{version!s}'.format(
suffix=elpa_suffix, version=elpa.version),
'elpa')
self.spec['elpa'].headers.directories[0],
'elpa'
)
args += ["-DELPA_INCLUDE_DIR={0}".format(elpa_incdir)]
return args