summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGregory Becker <becker33@llnl.gov>2015-10-30 15:12:29 -0700
committerGregory Becker <becker33@llnl.gov>2015-10-30 15:12:29 -0700
commitd177184777591d21cc6a59771ed6f817960394f5 (patch)
treebf059391a4ac744eb4f65134d1621e5741c6f47b /lib
parent0a004e0fceb65f388eccbdfc0c7dc611555aa7d3 (diff)
downloadspack-d177184777591d21cc6a59771ed6f817960394f5.tar.gz
spack-d177184777591d21cc6a59771ed6f817960394f5.tar.bz2
spack-d177184777591d21cc6a59771ed6f817960394f5.tar.xz
spack-d177184777591d21cc6a59771ed6f817960394f5.zip
added target method to architecture.py and minor cleanup
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/architecture.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py
index ea1f98e06e..f04fda2ee9 100644
--- a/lib/spack/spack/architecture.py
+++ b/lib/spack/spack/architecture.py
@@ -58,9 +58,10 @@ class Target(object):
# architecture classes handling the aliasing for front-end, back-end and default
def __init__(self,name, module_name=None):
- self.name = name # case of cray "ivybridge but if it's x86_64
+ self.name = name # case of cray "ivybridge" but if it's x86_64
self.module_name = module_name # craype-ivybridge
+ @property
def compiler_strategy(self):
if self.module_name: # If there is a module_name given then use MODULES
return "MODULES"
@@ -73,10 +74,9 @@ class Architecture(object):
"""
priority = None # Subclass needs to set this number. This controls order in which arch is detected.
- front = None
- back = None
- default_front = None # The default front end target. On cray sandybridge
- default_back = None # The default back end target. On cray ivybridge
+ front-end = None
+ back-end = None
+ default = None # The default back end target. On cray ivybridge
def __init__(self, name):
self.targets = {}
@@ -85,7 +85,19 @@ class Architecture(object):
def add_target(self, name, target):
self.targets[name] = target
-
+ def target(self, name):
+ """This is a getter method for the target dictionary that handles defaulting based
+ on the values provided by default, front-end, and back-end. This can be overwritten
+ by a subclass for which we want to provide further aliasing options.
+ """
+ if name == 'default':
+ name = default
+ elif name == 'front_end':
+ name = front-end
+ elif name == 'back_end':
+ name = back-end
+ return self.targets[name]
+
@classmethod
def detect(self):
""" Subclass is responsible for implementing this method.