DEADSOFTWARE

Remove batch
[gpcp-linux.git] / gpcp / Target.cp
1 (* ============================================================ *)
2 (* Target is the module which selects the target ClassMaker. *)
3 (* Copyright (c) John Gough 1999, 2000. *)
4 (* ============================================================ *)
6 MODULE Target;
8 IMPORT
9 GPCPcopyright,
10 Symbols,
11 CompState,
12 ClassMaker,
13 JavaMaker,
14 (*
15 * LlvmMaker,
16 *)
17 MsilMaker,
18 IdDesc;
20 (* ============================================================ *)
22 VAR
23 maker : ClassMaker.ClassEmitter;
24 assmb : ClassMaker.Assembler;
26 (* ============================================================ *)
28 PROCEDURE Select*(mod : IdDesc.BlkId;
29 IN str : ARRAY OF CHAR);
30 BEGIN
31 IF str = "jvm" THEN
32 maker := JavaMaker.newJavaEmitter(mod);
33 assmb := JavaMaker.newJavaAsm();
34 Symbols.SetTargetIsNET(FALSE);
35 ELSIF str = "net" THEN
36 maker := MsilMaker.newMsilEmitter(mod);
37 assmb := MsilMaker.newMsilAsm();
38 Symbols.SetTargetIsNET(TRUE);
39 (*
40 * (* LLVM backend coming in 2013? *)
41 * ELSIF str = "llvm" THEN
42 * maker := LlvmMaker.newBitCodeEmitter(mod);
43 * assmb := LlvmMaker.newBitCodeAssembler();
44 * Symbols.SetTargetIsNET(FALSE);
45 * ELSIF ...
46 *)
47 ELSE
48 CompState.Message("Unknown emitter name <" + str + ">");
49 END;
50 CompState.SetEmitter(maker);
51 END Select;
53 (* ============================================================ *)
55 PROCEDURE Init*();
56 BEGIN
57 maker.Init();
58 END Init;
60 PROCEDURE Emit*();
61 BEGIN
62 maker.Emit();
63 END Emit;
65 PROCEDURE Assemble*();
66 BEGIN
67 assmb.Assemble();
68 END Assemble;
70 (* ============================================================ *)
71 END Target.
72 (* ============================================================ *)