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