This repository has been archived by the owner on Apr 2, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
q+.asd
39 lines (34 loc) · 1.57 KB
/
q+.asd
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
#|
This file is a part of Qtools
(c) 2015 Shirakumo http://tymoon.eu (shinmera@tymoon.eu)
Author: Nicolas Hafner <shinmera@tymoon.eu>
|#
(defpackage #:org.shirakumo.qtools.q+.asdf
(:use #:cl))
(in-package #:org.shirakumo.qtools.q+.asdf)
(defclass dynamic-smoke-wrapper (asdf:cl-source-file)
())
(defmethod asdf:perform ((op asdf:prepare-op) (c dynamic-smoke-wrapper))
(flet ((qtools (name &rest args)
(apply (find-symbol (string name) :qtools) args)))
(let ((module-buffer (merge-pathnames "q+modules.lisp-expr" (asdf:component-pathname c))))
(unless (and (uiop:file-exists-p (asdf:component-pathname c))
(equal (qtools 'loaded-smoke-modules)
(with-open-file (stream module-buffer :if-does-not-exist NIL)
(when stream (read stream)))))
(qtools 'ensure-methods-processed)
(qtools 'write-everything-to-file (asdf:component-pathname c))
(with-open-file (stream module-buffer :direction :output :if-exists :supersede)
(print (qtools 'loaded-smoke-modules) stream))))))
(asdf:defsystem #:q+
:version "0.2.1"
:license "zlib"
:author "Nicolas Hafner <shinmera@tymoon.eu>"
:maintainer "Nicolas Hafner <shinmera@tymoon.eu>"
:description "Precompiles all Q+ method wrappers for currently active smoke modules."
:homepage "https://Shinmera.github.io/qtools/"
:bug-tracker "https://github.com/Shinmera/qtools/issues"
:source-control (:git "https://github.com/Shinmera/qtools.git")
:serial T
:components ((:dynamic-smoke-wrapper "q+"))
:depends-on (:qtools))