chiark / gitweb /
Updated/added bindings for window class
[clg] / clg.system
index d96ff67793f25daf8edfaf0f54beeca2829e7ce4..1a8466574fe4b3c333bfe2e6fd34de6c2728e80b 100644 (file)
 ;;; -*- Mode: lisp -*-
 
-(setf
- (logical-pathname-translations "clg")
- '(("**;*.*.*" "/home/espen/src/clg/**/*.*.*")))
+(defpackage "CLG-SYSTEM"
+  (:use "COMMON-LISP" "EXTENSIONS" "ALIEN")
+  (:export "*GTK-LIBRARY-PATH*"))
+
+(in-package "CLG-SYSTEM")
+
+;; Suggested by Marco Antoniotti
+(eval-when (:load-toplevel :execute :compile-toplevel)
+  (unless (find-package "MAKE")
+    (error "CLG requires the MK:DEFSYSTEM to be properly compiled ~
+            and loaded.~%~
+            You can download MK:DEFSYSTEM from the CLOCC.~@
+            <http://sourceforge.net/projects/clocc/.")))
+
+
+;; 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*)
+;(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 "/usr/src/cmucl-2.4.20/src/lisp")
-
-
-;; A hack to get around a bug in gdk's init code
-(defvar argc (alien:make-alien c-call:int))
-(defvar progname (alien:make-alien c-call:char))
-(defvar argv0 (alien:make-alien (* c-call:char)))
-(defvar argv (alien:make-alien (* (* c-call:char))))
-(setf (alien:deref argc) 1)
-(setf (alien:deref progname) 0)
-(setf (alien:deref argv0) progname)
-(setf (alien:deref argv) argv0)
+(defvar *gtk-library-path* (pkg-variable "gtk+-2.0" "libdir"))
+(defvar *cmucl-include-path* (ext:unix-namestring "target:lisp"))
 
+;; 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
-    ((:module tools
-      :components ("autoexport"))
-     (:file "pcl" :source-pathname "glib;" :binary-pathname "glib;")
-     (:module glib
-      :initially-do
-      (progn
-       (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 (,cmucl-include-path)))
-       (:file "glib-package")
-       (:file "gutils" :depends-on ("glib-package"))
-       (:file "gforeign" :depends-on ("gutils"))
-       (:file "glib" :depends-on ("gforeign"))
-       (:file "proxy" :depends-on ("glib"))
-       (:file "gtype" :depends-on ("proxy"))
-       (:file "gboxed" :depends-on ("gtype"))
-       (: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"
-        "genums" "gobject")))
-      :depends-on (tools "pcl"))
-     (:file "gdkglue"
-      :source-pathname "gdk;"
-      :binary-pathname "gdk;"
-      :initially-do
-      (progn
-       (load-shared-library "libgdk_pixbuf-1.3.so")
-       (load-shared-library "libgdk-x11-1.3.so"
-        :init "gdk_init"
-        :prototype '(function
-                     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
-       :components
-       ((:file "gdk-package")
-        (:file "gdk-export" :depends-on ("gdkevents" "gdktypes" "gdk"))
-        (:file "gdktypes" :depends-on ("gdk-package"))
-        (:file "gdkevents" :depends-on ("gdktypes"))
-       (:file "gdk" :depends-on ("gdkevents")))
-       :depends-on (glib "gdkglue"))
-     (:module pango
-      :initially-do (load-shared-library "libpango.so")
-       :components
-       ((:file "pango-package")
-        (:file "pango" :depends-on ("pango-package"))
-        (:file "pango-export" :depends-on ("pango")))
-       :depends-on (glib))
-     (:file "gtkglue"
-      :source-pathname "gtk;"
-      :binary-pathname "gtk;"
-      :initially-do
-      (progn
-       (load-shared-library
-        "libgtk-x11-1.3.so"
-        :init "gtk_init"
-        :prototype '(function
-                     c-call:void
-                     alien:system-area-pointer
-                     alien: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 (,cmucl-include-path)))
-     (:module gtk
-      :components
-      ((:file "gtk-package")
-       (: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")))
-      :depends-on (glib gdk pango "gtkglue")))))
-
-
-
+(mk:defsystem clg
+ :initially-do
+ (progn
+   (pkg-exists-p "glib-2.0" :atleast-version "2.0.0")
+   (pkg-exists-p "pango" :atleast-version "1.0.0")
+   (pkg-exists-p "atk" :atleast-version "1.0.0")
+   (pkg-exists-p "gtk+-2.0" :atleast-version "2.0.0"))
+ :source-pathname "clg:"
+ :binary-pathname "clg:"
+ :components
+ ((:module tools
+   :components ("autoexport"))
+  (:file "pcl" :source-pathname "glib;" :binary-pathname "glib;")
+  (:module glib
+   :initially-do
+   (progn
+     (load-shared-library "libglib-2.0.so")
+     (load-shared-library "libgobject-2.0.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 (#.*cmucl-include-path*)))
+    (:file "glib-package")
+    (:file "gutils" :depends-on ("glib-package"))
+    (:file "gforeign" :depends-on ("gutils"))
+    (:file "glib" :depends-on ("gforeign"))
+    (:file "proxy" :depends-on ("glib"))
+    (:file "gtype" :depends-on ("proxy"))
+    (:file "gboxed" :depends-on ("gtype"))
+    (:file "genums" :depends-on ("gtype"))
+    (:file "gparam" :depends-on ("genums"))
+    (:file "ginterface" :depends-on ("gtype"))
+    (: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" "genums" "gobject")))
+   :depends-on (tools "pcl"))
+  (:file "gdkglue"
+   :source-pathname "gdk;"
+   :binary-pathname "gdk;"
+   :initially-do
+   (progn
+     (load-shared-library "libgdk_pixbuf-2.0.so")
+     (load-shared-library "libgdk-x11-2.0.so"
+      :init "gdk_init"
+      :prototype '(function
+                  c-call:void
+                  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))
+  (:module gdk
+   :components
+   ((:file "gdk-package")
+    (:file "gdk-export" :depends-on ("gdkevents" "gdktypes" "gdk"))
+    (:file "gdktypes" :depends-on ("gdk-package"))
+    (:file "gdkevents" :depends-on ("gdktypes"))
+    (:file "gdk" :depends-on ("gdkevents")))
+   :depends-on (glib "gdkglue"))
+  (:module pango
+   :initially-do (load-shared-library "libpango-1.0.so")
+   :components
+   ((:file "pango-package")
+    (:file "pango" :depends-on ("pango-package"))
+    (:file "pango-export" :depends-on ("pango")))
+   :depends-on (glib))
+  (:module atk
+   :initially-do (load-shared-library "libatk-1.0.so")
+   :components
+   ((:file "atk-package")
+    (:file "atk" :depends-on ("atk-package"))
+    (:file "atk-export" :depends-on ("atk")))
+   :depends-on (glib))
+  (:file "gtkglue"
+   :source-pathname "gtk;"
+   :binary-pathname "gtk;"
+   :initially-do
+   (progn
+     (load-shared-library
+      "libgtk-x11-2.0.so"
+      :init "gtk_init"
+      :prototype '(function
+                  c-call:void
+                  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 (#.*cmucl-include-path*)))
+  (:module gtk
+   :components
+   ((:file "gtk-package")
+    (: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")))
+   :depends-on (glib gdk pango atk "gtkglue"))))