meme: Fix compilation with arm
and nvhpc
compilers (#24883)
* Fix compilation with `arm` and `nvhpc` compilers * Update package.py
This commit is contained in:
parent
7f2fd50d20
commit
4ee74c01e3
36
var/spack/repos/builtin/packages/meme/arm.patch
Normal file
36
var/spack/repos/builtin/packages/meme/arm.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
--- a/src/mtwist.h 2021-07-14 12:18:25.848290454 +0000
|
||||||
|
+++ b/src/mtwist.h 2021-07-14 12:37:35.581368981 +0000
|
||||||
|
@@ -285,6 +285,7 @@
|
||||||
|
prototypes using the ifdef.
|
||||||
|
*/
|
||||||
|
#ifndef __APPLE__
|
||||||
|
+#ifndef __ARM_LINUX_COMPILER__
|
||||||
|
extern uint32_t mts_lrand(mt_state* state);
|
||||||
|
/* Generate 32-bit value, any gen. */
|
||||||
|
#ifdef UINT64_MAX
|
||||||
|
@@ -310,6 +311,7 @@
|
||||||
|
/* Generate floating value */
|
||||||
|
/* Slower, with 64-bit precision */
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tempering parameters. These are perhaps the most magic of all the magic
|
||||||
|
@@ -381,10 +383,14 @@
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#define MT_EXTERN /* C++ doesn't need static */
|
||||||
|
#else /* __cplusplus */
|
||||||
|
-#ifndef __APPLE__
|
||||||
|
-#define MT_EXTERN extern /* C (at least gcc) needs extern */
|
||||||
|
-#else
|
||||||
|
+#ifdef __APPLE__
|
||||||
|
#define MT_EXTERN static /* The apple compiler freaks out if the definitions are not static */
|
||||||
|
+#else /* __APPLE__ */
|
||||||
|
+#ifdef __ARM_LINUX_COMPILER__
|
||||||
|
+#define MT_EXTERN static /* The Arm compiler complains if the definitions are not static */
|
||||||
|
+#else /* __ARM_LINUX_COMPILER__ */
|
||||||
|
+#define MT_EXTERN extern /* C (at least gcc) needs extern */
|
||||||
|
+#endif /* __ARM_LINUX_COMPILER__ */
|
||||||
|
#endif /* __APPLE__ */
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
#endif /* MT_EXTERN */
|
@ -31,6 +31,10 @@ class Meme(AutotoolsPackage):
|
|||||||
depends_on('mpi', when='+mpi')
|
depends_on('mpi', when='+mpi')
|
||||||
depends_on('imagemagick', type=('build', 'run'), when='+image-magick')
|
depends_on('imagemagick', type=('build', 'run'), when='+image-magick')
|
||||||
depends_on('perl-xml-parser', type=('build', 'run'))
|
depends_on('perl-xml-parser', type=('build', 'run'))
|
||||||
|
depends_on('libxml2', type=('build', 'run'))
|
||||||
|
depends_on('libxslt', type=('build', 'run'))
|
||||||
|
|
||||||
|
patch('arm.patch', when='%arm')
|
||||||
|
|
||||||
def url_for_version(self, version):
|
def url_for_version(self, version):
|
||||||
url = 'http://meme-suite.org/meme-software/{0}/meme{1}{2}.tar.gz'
|
url = 'http://meme-suite.org/meme-software/{0}/meme{1}{2}.tar.gz'
|
||||||
@ -39,8 +43,13 @@ def url_for_version(self, version):
|
|||||||
|
|
||||||
def configure_args(self):
|
def configure_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
# have meme build its own versions of libxml2/libxslt, see #6736
|
args = []
|
||||||
args = ['--enable-build-libxml2', '--enable-build-libxslt']
|
|
||||||
if '~mpi' in spec:
|
if '~mpi' in spec:
|
||||||
args += ['--enable-serial']
|
args += ['--enable-serial']
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
def patch(self):
|
||||||
|
# Remove flags not recognized by the NVIDIA compiler
|
||||||
|
if self.spec.satisfies('%nvhpc'):
|
||||||
|
filter_file('-fno-common', '', 'configure')
|
||||||
|
filter_file('-Wno-unused', '', 'configure')
|
||||||
|
Loading…
Reference in New Issue
Block a user