Work to add UTC tracking to wall-times
[clsql.git] / clsql.asd
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:     clsql.asd
6 ;;;; Purpose:  ASDF System definition for CLSQL
7 ;;;; Authors:  Marcus Pearce and Kevin M. Rosenberg
8 ;;;; Created:  March 2004
9 ;;;;
10 ;;;; CLSQL users are granted the rights to distribute and use this software
11 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
12 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
13 ;;;; *************************************************************************
14
15 (in-package #:cl-user)
16 (defpackage #:clsql-system (:use #:asdf #:cl))
17 (in-package #:clsql-system)
18
19 #+(and clisp (not :clsql-cffi))
20 (asdf:operate 'asdf:load-op 'clsql-cffi)
21
22 ;; need to load uffi for below perform :after method
23 (eval-when (:compile-toplevel :load-toplevel :execute)
24   #+:clsql-cffi
25   (unless (find-package 'cffi-uffi-compat)
26     #+quicklisp
27     (ql:quickload :cffi-uffi-compat)
28     #-quicklisp
29     (asdf:operate 'asdf:load-op 'cffi-uffi-compat))
30   #-:clsql-cffi
31   (unless (find-package 'uffi)
32     (asdf:operate 'asdf:load-op 'uffi)))
33
34 (defsystem clsql
35     :name "CLSQL"
36     :author "Kevin Rosenberg <kevin@rosenberg.net>"
37     :maintainer "Kevin M. Rosenberg <kmr@debian.org>"
38     :licence "Lessor Lisp General Public License"
39     :description "Common Lisp SQL Interface library"
40     :long-description "A Common Lisp interface to SQL RDBMS based on
41 the Xanalys CommonSQL interface for Lispworks. It provides low-level
42 database interfaces as well as a functional and an object
43 oriented interface."
44     :version "6.7.0"
45     :depends-on (:local-time)
46     :components
47     ((:module sql
48               :components
49               ((:module base
50                         :pathname ""
51                         :components
52                         ((:file "cmucl-compat")
53                          (:file "package")
54                          (:file "kmr-mop" :depends-on ("package"))
55                          (:file "base-classes" :depends-on ("package"))
56                          (:file "conditions" :depends-on ("base-classes"))
57                          (:file "db-interface" :depends-on ("conditions"))
58                          (:file "decimals" :depends-on ("package" "db-interface"))
59                          (:file "utils" :depends-on ("package" "db-interface"))
60                          (:file "time" :depends-on ("package" "conditions" "utils"))
61                          (:file "generics" :depends-on ("package"))))
62                (:module database
63                         :pathname ""
64                         :components
65                         ((:file "initialize")
66                          (:file "database" :depends-on ("initialize"))
67                          (:file "recording" :depends-on ("database"))
68                          (:file "pool" :depends-on ("database")))
69                         :depends-on (base))
70                (:module syntax
71                         :pathname ""
72                         :components ((:file "expressions")
73                                      (:file "operations"
74                                             :depends-on ("expressions"))
75                                      (:file "syntax" :depends-on ("operations")))
76                         :depends-on (database))
77                (:module functional
78                         :pathname ""
79                         :components ((:file "fdml")
80                                      (:file "transaction" :depends-on ("fdml"))
81                                      #+clisp (:file "ansi-loop")
82                                      (:file "loop-extension"
83                                             :depends-on ("fdml" #+clisp "ansi-loop"))
84                                      (:file "fddl" :depends-on ("fdml")))
85                         :depends-on (syntax))
86                (:module object
87                         :pathname ""
88                         :components ((:file "metaclasses")
89                                      (:file "ooddl" :depends-on ("metaclasses"))
90                                      (:file "oodml" :depends-on ("ooddl")))
91                         :depends-on (functional))
92                (:module generic
93                         :pathname ""
94                         :components ((:file "generic-postgresql")
95                                      (:file "generic-odbc")
96                                      (:file "sequences")
97                                      (:file "command-object"))
98                         :depends-on (functional))))))
99
100
101 (defmethod perform ((o test-op) (c (eql (find-system 'clsql))))
102   (operate 'load-op 'clsql-tests)
103   (operate 'test-op 'clsql-tests :force t))
104
105 (defmethod perform :after ((o load-op) (c (eql (find-system 'clsql))))
106   (let* ((init-var (uffi::getenv "CLSQLINIT"))
107          (init-file (or (when init-var (probe-file init-var))
108                         (probe-file
109                          (concatenate 'string
110                                       (namestring (user-homedir-pathname))
111                                       ".clsql-init.lisp"))
112                         (probe-file "/etc/clsql-init.lisp")
113                         #+(or mswin windows win32 win64 mswindows)
114                         (probe-file "c:\\etc\\clsql-init.lisp"))))
115     (when init-file (load init-file))))
116