-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathgen-asd-file.lisp
More file actions
56 lines (53 loc) · 2.15 KB
/
gen-asd-file.lisp
File metadata and controls
56 lines (53 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(in-package :cl-user)
(defun build-deps (file-name &key (req-first :grovel) (depends-on ()) (has-grovel t))
(let ((grovel-name (concatenate 'string file-name "-grovel"))
(full-deps (cons "package" depends-on)))
(when (not (string-equal file-name "common"))
(push "common" full-deps))
(if has-grovel
(ecase req-first
(:grovel (list (list :cffi-grovel-file grovel-name :depends-on full-deps)
(list :file file-name :depends-on `(,grovel-name))))
(:file (list (list :file file-name :depends-on full-deps)
(list :cffi-grovel-file grovel-name :depends-on `(,file-name)))))
(list (list :file file-name :depends-on full-deps)))))
(defun build-files (&rest files)
(let ((entry-list ()))
(dolist (entry (reverse files))
(if (typep entry 'list)
(setf entry-list (nconc (apply #'build-deps entry) entry-list))
(setf entry-list (cons `(:file ,entry) entry-list))))
entry-list))
;; build-files will generate a list sutaible for passing to asdf
;; a list argument will generate a :grovel-file call, while entries not
;; in a list will be passed as-is. If for some rare reason that
;; the grovel file needs to be loaded after the normal file,
;; specify :req-first :file
(build-files
"package"
"error"
"base"
'("common")
'("config" :req-first :file)
;; this depends on a lot of stuff, not all implemented:
'("backend" :depends-on ("render/renderer" "backend/session"))
'("backend/session")
'("render/renderer" :depends-on ("types/box"))
'("backend/wayland" :has-grovel nil :depends-on ("types/output" "types/input-device"))
'("types/box")
'("types/cursor" :depends-on ("types/input-device" "types/box"
"types/output-layout" "types/output"))
'("types/data-device")
'("types/input-device")
'("types/output" :depends-on ("backend"))
'("types/matrix" :depends-on ("types/box") :has-grovel nil)
'("types/output-damage" :depends-on ("types/output"))
'("types/output-layout" :depends-on ("types/output"))
'("types/seat" :depends-on ("types/data-device"))
'("types/xcursor-manager" :depends-on ("types/cursor" "xcursor"))
'("util/edges")
'("util/log")
'("version")
'("xcursor" :depends-on ("util/edges"))
"final"
"macros")