From 9087224e04398f31d9545e260caab54eef184afa Mon Sep 17 00:00:00 2001 From: marcosmazz Date: Tue, 12 Jul 2022 10:44:02 -0300 Subject: OpenMX: add v3.9 (#31466) Co-authored-by: Marcos Mazzini - --- var/spack/repos/builtin/packages/openmx/package.py | 44 +++++++++++++++------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/openmx/package.py b/var/spack/repos/builtin/packages/openmx/package.py index 26b6efef66..66b70d6ff0 100644 --- a/var/spack/repos/builtin/packages/openmx/package.py +++ b/var/spack/repos/builtin/packages/openmx/package.py @@ -17,6 +17,7 @@ class Openmx(MakefilePackage): homepage = "http://www.openmx-square.org/index.html" url = "https://t-ozaki.issp.u-tokyo.ac.jp/openmx3.8.tar.gz" + version('3.9', sha256='27bb56bd4d1582d33ad32108fb239b546bdd1bdffd6f5b739b4423da1ab93ae2') version('3.8', sha256='36ee10d8b1587b25a2ca1d57f110111be65c4fb4dc820e6d93e1ed2b562634a1') resource(name='patch', @@ -25,10 +26,15 @@ class Openmx(MakefilePackage): placement='patch', when='@3.8') + resource(name='patch', + url='http://www.openmx-square.org/bugfixed/21Oct17/patch3.9.9.tar.gz', + sha256='20cccc4e3412a814a53568f400260e90f79f0bfb7e2bed84447fe071b26edd38', + placement='patch', + when='@3.9') + depends_on('mpi') - depends_on('fftw') - depends_on('blas') - depends_on('lapack') + depends_on('fftw-api@3') + depends_on('scalapack') depends_on('sse2neon', when='target=aarch64:') patch('for_aarch64.patch', when='@3.8 target=aarch64:') @@ -41,6 +47,10 @@ class Openmx(MakefilePackage): # Move contents to source/ # http://www.openmx-square.org/bugfixed/18June12/README.txt copy_tree('patch', 'source') + # Move extra file for 3.9 patch + # http://www.openmx-square.org/bugfixed/21Oct17/README.txt + if spec.satisfies('@3.9'): + copy(join_path('source', 'kpoint.in'), 'work') makefile = FileFilter('./source/makefile') makefile.filter('^DESTDIR.*$', 'DESTDIR = {0}/bin'.format(prefix)) mkdirp(prefix.bin) @@ -48,20 +58,27 @@ class Openmx(MakefilePackage): @property def common_arguments(self): spec, common_option = self.spec, [] - - lapack_blas_libs = spec['lapack'].libs + spec['blas'].libs - lapack_blas_headers = spec['lapack'].headers + spec['blas'].headers + lapack_blas_libs = ( + spec['lapack'].libs + + spec['blas'].libs + + spec['scalapack'].libs + ) cc_option = [ spec['mpi'].mpicc, self.compiler.openmp_flag, - spec['fftw'].headers.include_flags + spec['fftw-api'].headers.include_flags ] fc_option = [spec['mpi'].mpifc] lib_option = [ - spec['fftw'].libs.ld_flags, + spec['fftw-api'].libs.ld_flags, lapack_blas_libs.ld_flags, '-lmpi_mpifh' ] + if spec.satisfies('@3.8'): + cc_option.append('-I$(LIBERIDIR)') + if spec.satisfies('@3.9'): + lib_option.extend(['-lmpi_usempif08']) + lib_option.extend(['-lmpi_usempi_ignore_tkr']) if '%fj' in spec: common_option.append('-Dkcomp -Kfast') @@ -69,12 +86,14 @@ class Openmx(MakefilePackage): fc_option.append(self.compiler.openmp_flag) else: common_option.append('-O3') - common_option.append(lapack_blas_headers.include_flags) if '%gcc' in spec: lib_option.append('-lgfortran') + if spec.satisfies('%gcc@10:'): + fc_option.append('-fallow-argument-mismatch') + cc_option.append('-fcommon') return [ - 'CC={0} {1} -I$(LIBERIDIR)'.format( + 'CC={0} -Dscalapack {1} '.format( ' '.join(cc_option), ' '.join(common_option) ), 'FC={0} {1}'.format(' '.join(fc_option), ' '.join(common_option)), @@ -83,10 +102,7 @@ class Openmx(MakefilePackage): @property def build_targets(self): - return [ - 'openmx', 'DosMain', 'jx', 'analysis_example', 'esp', 'polB', - 'bandgnu13', 'bin2txt', 'cube2xsf', 'intensity_map', 'md2axsf' - ] + self.common_arguments + return ['all'] + self.common_arguments @property def install_targets(self): -- cgit v1.2.3-70-g09d2