nx_gram_compiler_gate_t280.nx source
↩ module page · 16 lines · 1594 B
1import "nx_ccbuild_lib.nx"
2import "nx_gate_verdict.nx"
3func ug_arg_is(s:*u8,t:*u8)->i64{var i:i64=0;while t[i]!=(0 as u8){if s[i]!=t[i]{return 0};i=i+1};if s[i]!=(0 as u8){return 0};return 1}
4func main(argc:i64,argv:*i64)->i64{
5 if argc<3{return 2}
6 var first:i64=3;var output:i64=0-1
7 if argc>3{if ug_arg_is(argv[3] as *u8,"--run-log" as *u8)==1{if argc<5{return 2};output=sys_openat_exclusive(argv[4] as *u8,MODE_0600);if output<0{gv_puts("GRAM evidence path refused\n");return 6};first=5}}
8 let log:i64=sys_openat_wr("knowledge/gates/gram-compiler-t280.log" as *u8,MODE_0600);if log<0{if output>=0{sys_close(output)};return 3}
9 let rc:i64=cb_build_flag(argv[1] as *u8,argv[2] as *u8,"knowledge/gates/gram-native-t280.s" as *u8,"knowledge/gates/gram-native-t280.elf" as *u8,0 as *i64,log,"knowledge/gates/gram-native-t280.tmp" as *u8,"knowledge/gates/gram-assembler-t280.log" as *u8,"-g" as *u8)
10 sys_close(log);gv_puts("GRAM build=");gv_num(rc);gv_puts("\n");if rc!=0{if output>=0{sys_close(output)};return rc}
11 let words:i64=argc-first+2;let av:*i64=sys_mmap_try(words*8) as *i64;if (av as i64)<=0{if output>=0{sys_close(output)};return 5}
12 av[0]="knowledge/gates/gram-native-t280.elf" as *u8 as i64;var i:i64=first;while i<argc{av[i-first+1]=argv[i];i=i+1};av[words-1]=0
13 let status:i64=cb_run(av[0] as *u8,av,0 as *i64,output,output);sys_munmap_direct(av as *u8,words*8)
14 if output>=0{sys_close(output);gv_puts("GRAM complete child output retained at ");gv_puts(argv[4] as *u8);gv_puts("\n")}
15 gv_puts("GRAM rawWaitStatus=");gv_num(status);gv_puts("\n");if status!=0{return 4};return 0
16}