X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/1cd312d19949caa45e6c5c52940c57548ac9302e..95f727fa1e4fba3b0ffe3d16918d44f396d65603:/clg.system diff --git a/clg.system b/clg.system index fa67af6..b72edc1 100644 --- a/clg.system +++ b/clg.system @@ -1,18 +1,49 @@ ;;; -*- Mode: lisp -*- -(setf - (logical-pathname-translations "clg") - '(("**;*.*.*" "/home/espen/src/clg/**/*.*.*"))) -(setq mk::*cmu-errors-to-file* nil) -(push '(:PKG_CONFIG_PATH . "/opt/gnome/lib/pkgconfig") ext:*environment-list*) +(defpackage "CLG-SYSTEM" + (:use "COMMON-LISP" "EXTENSIONS" "ALIEN") + (:export "*GTK-LIBRARY-PATH*")) + +(in-package "CLG-SYSTEM") + +;; We used to do this, but I think it's better if everybody puts such +;; definitions in his/her own Lisp startup files so that clg.system +;; can be used without local modifications. +;(setf +; (logical-pathname-translations "clg") +; '(("**;*.*.*" "/home/espen/src/clg/**/*.*.*"))) + +;; Uncomment and edit the next line if pkg-config needs to search for +;; .pc files in directories other than the default (/usr/lib/pkgconfig) +;(push '(:PKG_CONFIG_PATH . "/opt/gnome/lib/pkgconfig") ext:*environment-list*) (load "clg:tools;config") (load "clg:tools;sharedlib") -(import 'alien:load-shared-library) +(defvar *gtk-library-path* (pkg-variable "gtk+-2.0" "libdir")) +(defvar *cmucl-include-path* (ext:unix-namestring "target:lisp")) + +;; A hack to get around a bug in gdk's init code +(defvar argc (make-alien c-call:int)) +(defvar progname (make-alien c-call:char)) +(defvar argv0 (make-alien (* c-call:char))) +(defvar argv (make-alien (* (* c-call:char)))) +(setf (deref argc) 1) +(setf (deref progname) 0) +(setf (deref argv0) progname) +(setf (deref argv) argv0) + +;; Without this, MAKE uses "CLG:glib;.err" as a namestring, which fails. +;; TODO: Find and fix the bug, then remove this. +(setq mk::*cmu-errors-to-file* nil) (eval `(mk:defsystem clg + :initially-do + (progn + (pkg-exists-p "glib-2.0" :atleast-version "1.3.9") + (pkg-exists-p "pango" :atleast-version "0.20") + (pkg-exists-p "gtk+-2.0" :atleast-version "1.3.9")) :source-pathname "clg:" :binary-pathname "clg:" :components @@ -22,16 +53,18 @@ (:module glib :initially-do (progn - (load-shared-library "libglib-1.3.so.5") - (load-shared-library "libgobject-1.3.so.5" :init "g_type_init")) + (load-shared-library "libglib-1.3.so") + (load-shared-library "libgobject-1.3.so" :init "g_type_init")) :components ((:file "callback" :language :c + :source-extension "c" + :binary-extension "o" :compiler-options (:cflags ,(pkg-cflags "glib-2.0") :optimize 2 :definitions (#+cmu CMUCL) - :include-paths ("/usr/src/cmucl-2.4.20/src/lisp"))) + :include-paths (,*cmucl-include-path*))) (:file "glib-package") (:file "gutils" :depends-on ("glib-package")) (:file "gforeign" :depends-on ("gutils")) @@ -39,10 +72,10 @@ (:file "proxy" :depends-on ("glib")) (:file "gtype" :depends-on ("proxy")) (:file "gboxed" :depends-on ("gtype")) - (:file "gcallback" :depends-on ("gtype" "gparam" "callback")) (:file "genums" :depends-on ("gtype")) (:file "gparam" :depends-on ("genums")) (:file "gobject" :depends-on ("gparam")) + (:file "gcallback" :depends-on ("gtype" "gparam" "gobject" "callback")) (:file "glib-export" :depends-on ("gutils" "glib" "proxy" "gboxed" "gtype" "gparam" "gcallback" @@ -53,15 +86,15 @@ :binary-pathname "gdk;" :initially-do (progn - (load-shared-library "libgdk_pixbuf-1.3.so.5") - (load-shared-library "libgdk-x11-1.3.so.5" + (load-shared-library "libgdk_pixbuf-1.3.so") + (load-shared-library "libgdk-x11-1.3.so" :init "gdk_init" :prototype '(function - c-call:void - alien:system-area-pointer - alien:system-area-pointer) - :initargs (list (system:int-sap 0) (system:int-sap 0)))) + c-call:void (* c-call:int) (* (* (* char)))) + :initargs (list argc argv))) :language :c + :source-extension "c" + :binary-extension "o" :compiler-options (:cflags ,(pkg-cflags "gtk+-2.0") :optimize 2)) (:module gdk @@ -73,7 +106,7 @@ (:file "gdk" :depends-on ("gdkevents"))) :depends-on (glib "gdkglue")) (:module pango - :initially-do (load-shared-library "libpango-0.16.so") + :initially-do (load-shared-library "libpango.so") :components ((:file "pango-package") (:file "pango" :depends-on ("pango-package")) @@ -85,29 +118,30 @@ :initially-do (progn (load-shared-library - "libgtk-x11-1.3.so.5" + "libgtk-x11-1.3.so" :init "gtk_init" :prototype '(function c-call:void - alien:system-area-pointer - alien:system-area-pointer) + system-area-pointer + system-area-pointer) :initargs (list (system:int-sap 0) (system:int-sap 0)))) :language :c + :source-extension "c" + :binary-extension "o" :compiler-options (:cflags ,(pkg-cflags "gtk+-2.0") :optimize 2 :definitions (#+cmu CMUCL) - :include-paths ("/usr/lib/cmucl"))) + :include-paths (,*cmucl-include-path*))) (:module gtk :components ((:file "gtk-package") -; (:file "gtk-export" :depends-on ("gtktypes" "gtk")) + (:file "gtk-export" :depends-on ("gtktypes" "gtk")) (:file "gtkobject" :depends-on ("gtk-package")) (:file "gtktypes" :depends-on ("gtkobject")) (:file "gtkwidget" :depends-on ("gtktypes")) (:file "gtkcontainer" :depends-on ("gtktypes")) -; (:file "gtk" :depends-on ("gtktypes")) -; (:file "gtkutils" :depends-on ("gtk")) - ) + (:file "gtk" :depends-on ("gtktypes")) + (:file "gtkutils" :depends-on ("gtk"))) :depends-on (glib gdk pango "gtkglue")))))