;;; -*- 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)
-
-;; 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.12")
+ (pkg-exists-p "pango" :atleast-version "0.23")
+ (pkg-exists-p "gtk+-2.0" :atleast-version "1.3.12"))
:source-pathname "clg:"
:binary-pathname "clg:"
:components
(:module glib
:initially-do
(progn
- (load-shared-library "libglib-1.3.so.9")
- (load-shared-library "libgobject-1.3.so.9" :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"))
:binary-pathname "gdk;"
:initially-do
(progn
- (load-shared-library "libgdk_pixbuf-1.3.so.9")
- (load-shared-library "libgdk-x11-1.3.so.9"
+ (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)))
+ 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
(:file "gdk" :depends-on ("gdkevents")))
:depends-on (glib "gdkglue"))
(:module pango
- :initially-do (load-shared-library "libpango-0.20.so")
+ :initially-do (load-shared-library "libpango.so")
:components
((:file "pango-package")
(:file "pango" :depends-on ("pango-package"))
:initially-do
(progn
(load-shared-library
- "libgtk-x11-1.3.so.9"
+ "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")