-
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Makefile
103 lines (80 loc) · 3.51 KB
/
Makefile
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
LISP ?= sbcl
all: build
# can use bespoke dir like 'QLDIR=~/nostandard/local-projects make'
QLDIR ?= $(HOME)/quicklisp/local-projects
# make will exit early if git clone errors b/c dir already exists
define git-clone-pull =
if test -d $(QLDIR)/$(notdir $1); then cd $(QLDIR)/$(notdir $1) && git pull; else git clone $1 $(QLDIR)/$(notdir $1); fi
endef
$(QLDIR)/asdf:
# 2024-08: building with older asdf fails
# unrecognized define-package keyword :LOCAL-NICKNAMES
# https://github.com/ciel-lang/CIEL/issues/58
mkdir -p $(QLDIR)
cd $(QLDIR) && \
curl -sL https://asdf.common-lisp.dev/archives/asdf-3.3.5.tar.gz | \
tar -xvzf - && \
mv asdf-3.3.5 asdf
asdf: $(QLDIR)/asdf
@echo "New ASDF version installed to " $(QLDIR)
check-asdf-version:
sbcl --script check-asdf-version.lisp || echo "Your ASDF version is too old. You can update it with 'make asdf'. It will be downloaded to " $(QLDIR) ". You can set QLDIR."
# Install some Quicklisp dependencies.
ql-deps: check-asdf-version
# 2023-11: The symbol SB-INT:TRULY-DYNAMIC-EXTENT is absent since at least
# SBCL v2.3.10, which was required in older versions of cl-environments
# and cl-form-types.
# See issue https://github.com/ciel-lang/CIEL/issues/38
# This has been fixed upstream, not yet in Quicklisp
$(call git-clone-pull,https://github.com/alex-gutev/cl-environments)
$(call git-clone-pull,https://github.com/alex-gutev/cl-form-types)
# 2024-08: Moira needs moira/light, added <2023-11-23 Thu>, not on Quicklisp…
# moira/light doesn't depend on Osicat.
$(call git-clone-pull,https://github.com/ruricolist/moira)
# 2024-08: simple progress bar, not in Quicklisp.
$(call git-clone-pull,https://github.com/vindarel/progressons)
# termp, little utility
$(call git-clone-pull,https://github.com/vindarel/termp)
# 2024-08: not in Quicklisp
$(call git-clone-pull,https://github.com/lisp-maintainers/file-finder)
# <2024-08-30> error with SBCL: Lock on package SB-DI violated…
# fixed https://github.com/Shinmera/dissect/issues/18 on March, 2024 (not in Quicklisp…)
$(call git-clone-pull,https://github.com/Shinmera/dissect)
# fix fset on latest SBCL
# "Lock on package SB-EXT violated when interning ONCE-ONLY while in package FSET"
# see https://github.com/slburson/fset/pull/46
$(call git-clone-pull,https://gitlab.common-lisp.net/misc-extensions/misc-extensions)
$(call git-clone-pull,https://github.com/slburson/fset)
# updated Clesh for a shell pass-through that handles all shell commands interactively.
# So we now see the output in real time (instead of at the end of the execution),
# and commands like "emacs -nw" now work, in addition of sudo, vim or htop that were handled separately.
$(call git-clone-pull,https://github.com/lisp-maintainers/clesh)
# Install some system dependencies.
debian-deps:
apt-get install -y libinotifytools0
macos-deps:
echo "please install fsevent (for file-notify)"
run:
$(LISP) --load ciel.asd \
--eval '(asdf:load-system :ciel)' \
--eval '(in-package :ciel-user)'
run-repl:
$(LISP) --load ciel.asd \
--eval '(asdf:load-system :ciel)' \
--eval '(asdf:load-system :ciel/repl)' \
--eval '(sbcli:repl)'
image:
$(LISP) --load build-image.lisp
build:
$(LISP) --non-interactive \
--eval '(ql:quickload "cl+ssl")' \
--load ciel.asd \
--eval '(ql:quickload :swank)' \
--eval '(ql:quickload :ciel)' \
--eval '(ql:quickload :ciel/repl)' \
--eval '(asdf:make :ciel/repl)' \
--eval '(quit)'
gen-dependencies-list:
./find-dependencies.lisp > docs/dependencies.md
serve-docs:
docsify serve docs/