summaryrefslogtreecommitdiffstats
path: root/clang/tools/ccc/ccclib/Phases.py
diff options
context:
space:
mode:
Diffstat (limited to 'clang/tools/ccc/ccclib/Phases.py')
-rw-r--r--clang/tools/ccc/ccclib/Phases.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/clang/tools/ccc/ccclib/Phases.py b/clang/tools/ccc/ccclib/Phases.py
new file mode 100644
index 00000000000..0384b8fa4fc
--- /dev/null
+++ b/clang/tools/ccc/ccclib/Phases.py
@@ -0,0 +1,86 @@
+import Util
+
+class Action(object):
+ def __init__(self, inputs, type):
+ self.inputs = inputs
+ self.type = type
+
+class BindArchAction(Action):
+ """BindArchAction - Represent an architecture binding for child
+ actions."""
+
+ def __init__(self, input, arch):
+ super(BindArchAction, self).__init__([input], input.type)
+ self.arch = arch
+
+ def __repr__(self):
+ return Util.prefixAndPPrint(self.__class__.__name__,
+ (self.inputs[0], self.arch))
+
+class InputAction(Action):
+ """InputAction - Adapt an input file to an action & type. """
+
+ def __init__(self, filename, type):
+ super(InputAction, self).__init__([], type)
+ self.filename = filename
+
+ def __repr__(self):
+ return Util.prefixAndPPrint(self.__class__.__name__,
+ (self.filename, self.type))
+
+class JobAction(Action):
+ """JobAction - Represent a job tied to a particular compilation
+ phase."""
+
+ def __init__(self, phase, inputs, type):
+ super(JobAction, self).__init__(inputs, type)
+ self.phase = phase
+
+ def __repr__(self):
+ return Util.prefixAndPPrint(self.__class__.__name__,
+ (self.phase, self.inputs, self.type))
+
+###
+
+class Phase(object):
+ """Phase - Represent an abstract task in the compilation
+ pipeline."""
+
+ eOrderNone = 0
+ eOrderPreprocess = 1
+ eOrderCompile = 2
+ eOrderAssemble = 3
+ eOrderPostAssemble = 4
+
+ def __init__(self, name, order):
+ self.name = name
+ self.order = order
+
+ def __repr__(self):
+ return Util.prefixAndPPrint(self.__class__.__name__,
+ (self.name, self.order))
+
+class PreprocessPhase(Phase):
+ def __init__(self):
+ super(PreprocessPhase, self).__init__("preprocessor", Phase.eOrderPreprocess)
+
+class PrecompilePhase(Phase):
+ def __init__(self):
+ super(PrecompilePhase, self).__init__("precompiler", Phase.eOrderCompile)
+
+class CompilePhase(Phase):
+ def __init__(self):
+ super(CompilePhase, self).__init__("compiler", Phase.eOrderCompile)
+
+class AssemblePhase(Phase):
+ def __init__(self):
+ super(AssemblePhase, self).__init__("assembler", Phase.eOrderAssemble)
+
+class LinkPhase(Phase):
+ def __init__(self):
+ super(LinkPhase, self).__init__("linker", Phase.eOrderPostAssemble)
+
+class LipoPhase(Phase):
+ def __init__(self):
+ super(LipoPhase, self).__init__("lipo", Phase.eOrderPostAssemble)
+
OpenPOWER on IntegriCloud