diff --git a/build/build b/build/build index 3f5b4cc6..5e639579 100755 --- a/build/build +++ b/build/build @@ -1,6 +1,6 @@ #!/usr/bin/env bash DIR="$(dirname $0)" -PREV_BQN="$DIR/obj2/for_build2" +PREV_BQN="$DIR/obj2/for_build3" if [ ! -f "$PREV_BQN" ]; then TMP_BQN="$DIR/obj2/for_build_tmp" if make -C "$DIR/.." for-build OUTPUT="$TMP_BQN"; then diff --git a/build/src/build.bqn b/build/src/build.bqn index 8bd1639d..4bf415ee 100755 --- a/build/src/build.bqn +++ b/build/src/build.bqn @@ -22,7 +22,7 @@ opts ← ⟨ ⟨1, "verbose", 0, "Log more things"⟩ ⟨1, "rebuild", 0, "Forcibly rebuild everything"⟩ ⟨1, "quiet", 0, "Don't output final status line (or any, combined with notui)"⟩ - ⟨1, "notui", 0, "disable live-updating status display"∾@+10⟩ + ⟨1, "notui", @, "disable live-updating status display"∾@+10⟩ ⟨1, "rebuild-singeli", 0, @⟩ ⟨0, "CC", @, "The used C compiler"⟩ @@ -165,7 +165,7 @@ po ← { # parsed options J ⇐ {𝕊: v←GetOpt "j" ⋄ v≢@? •ParseFloat v; •ParseFloat⎊4 "4" TrySH ⟨"nproc"⟩} rebuildAll ⇐ GetOpt "rebuild" rebuildSingeli ⇐ GetOpt "rebuild-singeli" - tui ⇐ ¬GetOpt "notui" + tui ⇐ @⊸≡◶¬‿{𝕊: f←@•FFI"i32"‿"isatty"‿">i32" ⋄ F 1} GetOpt "notui" loud ⇐ ¬GetOpt "quiet" {𝕊: _verboseLog ↩ {Log𝕨𝔽𝕩⋄𝕩}}⍟⊢ verbose⇐GetOpt "verbose" diff --git a/makefile b/makefile index 6a068220..5f485cfb 100644 --- a/makefile +++ b/makefile @@ -6,7 +6,7 @@ default: o3 # targets that only use the makefile for-build: # for running the build system & Singeli - @"${MAKE}" i_t=forbuild i_CC=cc REPLXX=0 i_f="-O2 -DFOR_BUILD" i_FFI=0 i_SHARED=0 i_PIE= i_CC_PIE= i_EXPORT=0 i_OUTPUT_DEF=build/obj2/for_build2 run_incremental_0 + @"${MAKE}" i_t=forbuild i_CC=cc REPLXX=0 i_f="-O2 -DFOR_BUILD" i_FFI=0 i_SHARED=0 i_PIE= i_CC_PIE= i_EXPORT=0 i_OUTPUT_DEF=build/obj2/for_build3 run_incremental_0 for-bootstrap: # for bootstrapping bytecode @"${MAKE}" i_t=for_bootstrap REPLXX=0 i_FFI=0 i_SHARED=0 i_PIE= i_CC_PIE= i_EXPORT=0 i_f='-DNATIVE_COMPILER -DONLY_NATIVE_COMP -DFORMATTER=0 -DNO_RT -DNO_EXPLAIN' run_incremental_0 i_USE_BC_SUBMODULE=0 BYTECODE_DIR=bytecodeNone o3-makeonly: diff --git a/src/ffi.c b/src/ffi.c index c6f5b5d6..d35b6f1f 100644 --- a/src/ffi.c +++ b/src/ffi.c @@ -982,7 +982,7 @@ void ffi_init(void) { NFnDesc* forbuildDesc; B forbuild_c1(B t, B x) { i32 id = o2i(nfn_objU(t)); - switch (id) { default: fatal("bad id"); + switch (id) { default: thrM("bad id"); case 0: { char* s = toCStr(x); decG(x); @@ -1038,20 +1038,23 @@ void ffi_init(void) { return m_vec2(m_f64(res), taga(buf)); } + case 7: { + return m_f64(isatty(o2i(x))); + } } } - B names; + static B ffi_names; B ffiload_c2(B t, B w, B x) { B name = IGetU(x, 1); i32 id = 0; - while (id