1 (* ============================================================ *)
2 (** Interface to the ILASM Byte-code assembler. *)
3 (* Copyright (c) John Gough 1999 -- 2002. *)
4 (* K John Gough, 10th June 1999 *)
6 (* Version for GPCP V0.3 April 2000 (kjg) *)
7 (* ============================================================ *)
15 Diag
:= "[System]System.Diagnostics";
17 VAR asm
: Diag
.Process
;
23 asm
.get_StartInfo().set_FileName("ilasm");
24 asm
.get_StartInfo().set_CreateNoWindow(TRUE
);
25 asm
.get_StartInfo().set_UseShellExecute(FALSE
);
29 PROCEDURE Assemble
*(IN file
: ARRAY OF CHAR;
30 IN optn
: ARRAY OF CHAR; (* "/debug" or "" *)
31 main
: BOOLEAN); (* /exe or /dll *)
32 VAR retCode
: INTEGER;
33 optNm
: RTS
.NativeString
;
34 suffx
: RTS
.NativeString
;
35 fName
: RTS
.NativeString
;
40 optNm
:= "/exe "; suffx
:= ".exe";
42 optNm
:= "/dll "; suffx
:= ".dll";
44 optNm
:= optNm
+ MKSTR(optn
) + " ";
45 asm
.get_StartInfo().set_Arguments(optNm
+"/nologo /quiet "+fName
+".il");
46 ignore
:= asm
.Start();
48 retCode
:= asm
.get_ExitCode();
50 Console
.WriteString("#gpcp: ilasm FAILED");
51 Console
.WriteInt(retCode
, 0);
52 ELSIF ~CompState
.quiet
THEN
53 Console
.WriteString("#gpcp: Created " + fName
+ suffx
);
58 PROCEDURE DoAsm
*(IN file
: ARRAY OF CHAR;
59 IN optn
: ARRAY OF CHAR; (* "/debug" or "" *)
60 main
: BOOLEAN; (* /exe or /dll *)
61 vbse
: BOOLEAN; (* verbose or not *)
62 OUT rslt
: INTEGER); (* ilasm ret-code *)
63 VAR optNm
: RTS
.NativeString
;
64 suffx
: RTS
.NativeString
;
65 fName
: RTS
.NativeString
;
70 optNm
:= "/exe "; suffx
:= ".exe";
72 optNm
:= "/dll "; suffx
:= ".dll";
74 optNm
:= optNm
+ MKSTR(optn
) + " ";
76 asm
.get_StartInfo().set_CreateNoWindow(FALSE
);
77 asm
.get_StartInfo().set_Arguments(optNm
+ "/nologo " + fName
+ ".il");
79 asm
.get_StartInfo().set_CreateNoWindow(TRUE
);
80 asm
.get_StartInfo().set_Arguments(optNm
+"/nologo /quiet "+fName
+".il");
82 ignore
:= asm
.Start();
84 rslt
:= asm
.get_ExitCode();
86 Console
.WriteString("#gpcp: Created " + fName
+ suffx
); Console
.WriteLn
;