diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/plugins')
6 files changed, 174 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/test/plugins/builder_base.py b/packages/Python/lldbsuite/test/plugins/builder_base.py new file mode 100644 index 000000000000..c4e3dff5301c --- /dev/null +++ b/packages/Python/lldbsuite/test/plugins/builder_base.py @@ -0,0 +1,137 @@ +""" +If the build* function is passed the compiler argument, for example, 'llvm-gcc', +it is passed as a make variable to the make command.  Otherwise, we check the +LLDB_CC environment variable; if it is defined, it is passed as a make variable +to the make command. + +If neither the compiler keyword argument nor the LLDB_CC environment variable is +specified, no CC make variable is passed to the make command.  The Makefile gets +to define the default CC being used. + +Same idea holds for LLDB_ARCH environment variable, which maps to the ARCH make +variable. +""" + +import os, sys +import platform +import lldbsuite.test.lldbtest as lldbtest + +def getArchitecture(): +    """Returns the architecture in effect the test suite is running with.""" +    return os.environ["ARCH"] if "ARCH" in os.environ else "" + +def getCompiler(): +    """Returns the compiler in effect the test suite is running with.""" +    return os.environ["CC"] if "CC" in os.environ else "clang" + +def getArchFlag(): +    """Returns the flag required to specify the arch""" +    compiler = getCompiler() +    if compiler is None: +      return "" +    elif "gcc" in compiler: +      archflag = "-m" +    elif "clang" in compiler: +      archflag = "-arch" +    else: +      archflag = None + +    return ("ARCHFLAG=" + archflag) if archflag else "" + +def getMake(): +    """Returns the name for GNU make""" +    if platform.system() == "FreeBSD" or platform.system() == "NetBSD": +      return "gmake" +    else: +      return "make" + +def getArchSpec(architecture): +    """ +    Helper function to return the key-value string to specify the architecture +    used for the make system. +    """ +    arch = architecture if architecture else None +    if not arch and "ARCH" in os.environ: +        arch = os.environ["ARCH"] + +    return ("ARCH=" + arch) if arch else "" + +def getCCSpec(compiler): +    """ +    Helper function to return the key-value string to specify the compiler +    used for the make system. +    """ +    cc = compiler if compiler else None +    if not cc and "CC" in os.environ: +        cc = os.environ["CC"] +    if cc: +        return "CC=\"%s\"" % cc +    else: +        return "" + +def getCmdLine(d): +    """ +    Helper function to return a properly formatted command line argument(s) +    string used for the make system. +    """ + +    # If d is None or an empty mapping, just return an empty string. +    if not d: +        return "" +    pattern = '%s="%s"' if "win32" in sys.platform else "%s='%s'" + +    def setOrAppendVariable(k, v): +        append_vars = ["CFLAGS_EXTRAS", "LD_EXTRAS"] +        if k in append_vars and k in os.environ: +            v = os.environ[k] + " " + v +        return pattern % (k, v) +    cmdline = " ".join([setOrAppendVariable(k, v) for k, v in list(d.items())]) + +    return cmdline + + +def buildDefault(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    """Build the binaries the default way.""" +    commands = [] +    if clean: +        commands.append([getMake(), "clean", getCmdLine(dictionary)]) +    commands.append([getMake(), getArchSpec(architecture), getCCSpec(compiler), getCmdLine(dictionary)]) + +    lldbtest.system(commands, sender=sender) + +    # True signifies that we can handle building default. +    return True + +def buildDwarf(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    """Build the binaries with dwarf debug info.""" +    commands = [] +    if clean: +        commands.append([getMake(), "clean", getCmdLine(dictionary)]) +    commands.append([getMake(), "MAKE_DSYM=NO", getArchSpec(architecture), getCCSpec(compiler), getCmdLine(dictionary)]) + +    lldbtest.system(commands, sender=sender) +    # True signifies that we can handle building dwarf. +    return True + +def buildDwo(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    """Build the binaries with dwarf debug info.""" +    commands = [] +    if clean: +        commands.append([getMake(), "clean", getCmdLine(dictionary)]) +    commands.append([getMake(), "MAKE_DSYM=NO", "MAKE_DWO=YES", getArchSpec(architecture), getCCSpec(compiler), getCmdLine(dictionary)]) + +    lldbtest.system(commands, sender=sender) +    # True signifies that we can handle building dwo. +    return True + +def cleanup(sender=None, dictionary=None): +    """Perform a platform-specific cleanup after the test.""" +    #import traceback +    #traceback.print_stack() +    commands = [] +    if os.path.isfile("Makefile"): +        commands.append([getMake(), "clean", getCmdLine(dictionary)]) + +    lldbtest.system(commands, sender=sender) +    # True signifies that we can handle cleanup. +    return True diff --git a/packages/Python/lldbsuite/test/plugins/builder_darwin.py b/packages/Python/lldbsuite/test/plugins/builder_darwin.py new file mode 100644 index 000000000000..dd07206e323b --- /dev/null +++ b/packages/Python/lldbsuite/test/plugins/builder_darwin.py @@ -0,0 +1,21 @@ + +from __future__ import print_function +import os +import lldbsuite.test.lldbtest as lldbtest + +from builder_base import * + +#print("Hello, darwin plugin!") + +def buildDsym(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    """Build the binaries with dsym debug info.""" +    commands = [] + +    if clean: +        commands.append(["make", "clean", getCmdLine(dictionary)]) +    commands.append(["make", "MAKE_DSYM=YES", getArchSpec(architecture), getCCSpec(compiler), getCmdLine(dictionary)]) + +    lldbtest.system(commands, sender=sender) + +    # True signifies that we can handle building dsym. +    return True diff --git a/packages/Python/lldbsuite/test/plugins/builder_freebsd.py b/packages/Python/lldbsuite/test/plugins/builder_freebsd.py new file mode 100644 index 000000000000..e56be429823e --- /dev/null +++ b/packages/Python/lldbsuite/test/plugins/builder_freebsd.py @@ -0,0 +1,4 @@ +from builder_base import * + +def buildDsym(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    return False diff --git a/packages/Python/lldbsuite/test/plugins/builder_linux2.py b/packages/Python/lldbsuite/test/plugins/builder_linux2.py new file mode 100644 index 000000000000..e56be429823e --- /dev/null +++ b/packages/Python/lldbsuite/test/plugins/builder_linux2.py @@ -0,0 +1,4 @@ +from builder_base import * + +def buildDsym(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    return False diff --git a/packages/Python/lldbsuite/test/plugins/builder_netbsd.py b/packages/Python/lldbsuite/test/plugins/builder_netbsd.py new file mode 100644 index 000000000000..e56be429823e --- /dev/null +++ b/packages/Python/lldbsuite/test/plugins/builder_netbsd.py @@ -0,0 +1,4 @@ +from builder_base import * + +def buildDsym(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    return False diff --git a/packages/Python/lldbsuite/test/plugins/builder_win32.py b/packages/Python/lldbsuite/test/plugins/builder_win32.py new file mode 100644 index 000000000000..e56be429823e --- /dev/null +++ b/packages/Python/lldbsuite/test/plugins/builder_win32.py @@ -0,0 +1,4 @@ +from builder_base import * + +def buildDsym(sender=None, architecture=None, compiler=None, dictionary=None, clean=True): +    return False | 
