diff options
Diffstat (limited to 'clang/tools/ccc/ccclib/Phases.py')
-rw-r--r-- | clang/tools/ccc/ccclib/Phases.py | 86 |
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) + |