summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/hpx/package.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py
index 028019864c..b859227e3b 100644
--- a/var/spack/repos/builtin/packages/hpx/package.py
+++ b/var/spack/repos/builtin/packages/hpx/package.py
@@ -5,6 +5,7 @@
from spack import *
+import sys
class Hpx(CMakePackage, CudaPackage):
@@ -48,6 +49,14 @@ class Hpx(CMakePackage, CudaPackage):
description="Support for networking through parcelports",
)
+ default_generic_coroutines = True
+ if sys.platform.startswith('linux') or sys.platform == 'win32':
+ default_generic_coroutines = False
+ variant(
+ "generic_coroutines", default=default_generic_coroutines,
+ description='Use Boost.Context as the underlying coroutines'
+ ' context switch implementation.')
+
variant('tools', default=False, description='Build HPX tools')
variant('examples', default=False, description='Build examples')
@@ -69,6 +78,15 @@ class Hpx(CMakePackage, CudaPackage):
# https://github.com/STEllAR-GROUP/hpx/issues/4728#issuecomment-640685308
depends_on('boost@:1.72.0', when='@:1.4')
+ # COROUTINES
+ # ~generic_coroutines conflict is not fully implemented
+ # for additional information see:
+ # https://github.com/spack/spack/pull/17654
+ # https://github.com/STEllAR-GROUP/hpx/issues/4829
+ depends_on('boost+context', when='+generic_coroutines')
+ _msg_generic_coroutines = 'This platform requires +generic_coroutines'
+ conflicts('~generic_coroutines', when='platform=darwin', msg=_msg_generic_coroutines)
+
# CXX Standard
depends_on('boost cxxstd=11', when='cxxstd=11')
depends_on('boost cxxstd=14', when='cxxstd=14')
@@ -120,7 +138,7 @@ class Hpx(CMakePackage, CudaPackage):
args.extend(self.instrumentation_args())
if 'instrumentation=apex' in spec:
- args += ['-DAPEX_WITH_OTF2=ON'
+ args += ['-DAPEX_WITH_OTF2=ON',
'-DOTF2_ROOT={0}'.format(spec['otf2'].prefix)]
# Networking
@@ -154,6 +172,12 @@ class Hpx(CMakePackage, CudaPackage):
spec.variants['max_cpu_count'].value
))
+ # HPX_WITH_GENERIC_CONTEXT_COROUTINES
+ args.append(
+ self.define_with_variant(
+ 'HPX_WITH_GENERIC_CONTEXT_COROUTINES', 'generic_coroutines')
+ )
+
# Examples
args.append('-DHPX_WITH_EXAMPLES={0}'.format(
'ON' if '+examples' in spec else 'OFF'