Ignore:
Timestamp:
Dec 5, 2017, 1:29:12 PM (6 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
86ad276
Parents:
099a40d
Message:

Tests now properly work with multiple architectures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tests/pybin/settings.py

    r099a40d rf3b9efc  
     1import sys
    12
    23class Architecture:
    3         def __init__(self, cmd):
    4                 if cmd:
     4        KnownArchitectures = {
     5                'x64'                   : 'x64',
     6                'x86-64'                : 'x64',
     7                'x86'                   : 'x86',
     8                'i386'          : 'x86',
     9                'i486'          : 'x86',
     10                'i686'          : 'x86',
     11                'Intel 80386'   : 'x86',
     12                'arm'                   : 'arm',
     13                'ARM'                   : 'arm',
     14        }
     15
     16        def __init__(self, arch):
     17                if arch:
    518                        self.cross_compile = True
    6                         self.target = cmd
     19                        try:
     20                                self.target = Architecture.makeCanonical( arch )
     21                        except KeyError:
     22                                print("Unkown architecture %s" % arch)
     23                                sys.exit(1)
    724                else:
    825                        self.cross_compile = False
    9                         self.target = 'x64'
     26                        try:
     27                                arch = machine_default()
     28                                self.target = Architecture.makeCanonical( arch )
     29                        except KeyError:
     30                                print("Running on unkown architecture %s" % arch)
     31                                sys.exit(1)
    1032
    11         def toString(self):
    12                 return self.target
     33                self.string = self.target
     34
     35        def update(self):
     36                if not self.cross_compile:
     37                        self.target = machine_default()
     38                        self.string = self.target
     39                        print("updated to %s" % self.target)
     40
     41        def match(self, arch):
     42                return True if not arch else self.target == arch
     43
     44        @classmethod
     45        def makeCanonical(_, arch):
     46                return Architecture.KnownArchitectures[arch]
     47
     48
     49class Debug:
     50        def __init__(self, value):
     51                self.string = "debug" if value else "no debug"
     52                self.flags  = """DEBUG_FLAGS="%s" """ % ("-debug" if value else "-nodebug")
    1353
    1454def init( options ):
     
    2060        global debugFlag
    2161
    22         arch       = Architecture(options.arch)
    2362        dry_run    = options.dry_run
    2463        generating = options.regenerate_expected
    25         make       = './make_command_not_initialized'
    26         debug        = "debug" if options.debug else "no debug"
    27         debugFlag  = """DEBUG_FLAGS="%s" """ % ("-debug" if debug else "-nodebug")
     64        make       = 'make'
     65        debug        = Debug(options.debug)
     66        arch       = Architecture(options.arch)
    2867
    2968def updateMakeCmd(force, jobs):
    3069        global make
    3170
    32         make = "make" if force else ("make -j%i" % jobs)
     71        make = "make" if not force else ("make -j%i" % jobs)
     72
     73
     74def set_machine_default( func ):
     75        global machine_default
     76
     77        machine_default = func
Note: See TracChangeset for help on using the changeset viewer.