;; -*- 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")