; -*- scheme -*-
(include "../Build.rules")

(scheme-library "db.so" '("db.scm"))

(let* ((flags (lambda (x)
		(let ((result (call-with-input-pipe x read-line)))
		  (if (string? result) result #f))))
       (cflags (flags "mysql_config --cflags"))
       (libs (flags "mysql_config --libs")))
  (when cflags

	(scheme-library "mysql.so" '("mysql.scm")
			#:cflags (string-split cflags " ")
			#:ldadd (string-split libs " "))))

(let ((oracle-home (getenv "ORACLE_HOME"))
      (oracle-version (or (getenv "ORACLE_VERSION") "8.1.7")))
  (when oracle-home

	(define-file-goal "(.*)\\.c" (target base)
	  ((src (string-append base ".pc")))
	  (print "dep" src "/" base "/" target)
	  (spawn 0
		 (string-append oracle-home "/bin/proc")
		 "lines=yes"
		 "include=/usr/include"
		 "include=/usr/local/include"
		 (string-append "include="
				(call-with-input-pipe "dirname `gcc -print-libgcc-file-name`"
						      read-line))
		 src))

	(let ((ldadd (regex-case oracle-version
		       ("8\\.0\\.[0-9]+" (whole)
			'("-lclntsh" "-lcommon" "-lcore4" "-lnlsrtl3"))
		       ("8\\.1\\.[0-9]+" (whole)
			'("-lclntsh"))
		       (else
			'("-lclntsh")))))
	  (scheme-library "oracle.so" '("oracle.scm" "oracleglue.c")
			  #:cflags (list (string-append "-I" oracle-home "/precomp/public"))
			  #:ldadd (cons (string-append "-L" oracle-home "/lib") ldadd)))))
