X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/d4f6e417383a2e69fbef2ac7f1ffab533caeb900..8fcb7c58fded4de131aa4eab2d63a86ba2f7642b:/tools/config.lisp diff --git a/tools/config.lisp b/tools/config.lisp index 1623a57..acf9943 100644 --- a/tools/config.lisp +++ b/tools/config.lisp @@ -1,4 +1,11 @@ -(defparameter *pkg-config* "pkg-config") +(defpackage #:pkg-config + (:use #:common-lisp #+cmu #:ext #+sbcl #:sb-ext) + (:export #:pkg-cflags #:pkg-libs #:pkg-exists-p #:pkg-version + #:pkg-variable)) + +(in-package #:pkg-config) + +(defparameter *pkg-config* "/usr/bin/pkg-config") (defun split-string (string &key (start 0) (end (length string))) (let ((position (position #\sp string :start start :end end))) @@ -35,6 +42,7 @@ ((error 'end-of-file :stream stream))))) +#+(or sbcl cmu) (defun run-pkg-config (package error &rest options) (let ((process (run-program @@ -52,10 +60,19 @@ (process-close process) (values output exit-code))))) +#+clisp +;; I haven't figured out how to do error checking with CLISP's run-program +(defun run-pkg-config (package error &rest options) + (declare (ignore error)) + (let ((stream (ext:run-program *pkg-config* :arguments (cons package options) :output :stream))) + (read-lines stream))) (defun pkg-cflags (package) (split-string (first (run-pkg-config package t "--cflags")))) +(defun pkg-libs (package) + (split-string (first (run-pkg-config package t "--libs")))) + (defun pkg-exists-p (package &key version atleast-version max-version ( error t))