;; -*- Mode: Irken -*- (include "lib/core.scm") (include "lib/pair.scm") (include "lib/string.scm") (include "lib/os.scm") (define (getenv-or var default) (let ((val (getenv var))) (if (= 0 (string-length val)) default val))) (define (gcc base) (let ((plat (uname)) (_ (printn plat)) (cc (getenv-or "CC" "gcc")) (cflags (getenv-or "CFLAGS" "-m64 -I. -g ")) (cflags (if (and (string=? cc "gcc") (string=? plat.sysname "Darwin")) (format cflags " -fnested-functions") cflags)) (cmd (format cc " " cflags " " base ".c -o " base))) (print-string (format "== gcc? " (bool (string=? cc "gcc")) "\n")) (print-string (format " plat.sysname = " plat.sysname "\n")) (print-string (format "== Darwin? " (bool (string=? plat.sysname "Darwin")) "\n")) (print-string (format " len(sysname) =" (int (string-length plat.sysname)) "\n")) (print-string (format "system: " cmd "\n")) ;(system cmd) )) (gcc "thing")