1 vpath
%.fasl ..
/obj
/sbcl-home
/contrib
/
3 contribs
= sb-posix sb-bsd-sockets sb-introspect sb-cltl2 sb-aclrepl \
4 sb-sprof sb-capstone sb-md5 sb-capstone sb-executable sb-gmp sb-mpfr \
5 sb-queue sb-rotate-byte sb-rt sb-simple-streams sb-concurrency sb-cover \
6 sb-simd sb-grovel sb-perf asdf
8 active_contribs
= $(filter-out $(SBCL_CONTRIB_BLOCKLIST
),$(contribs
))
10 fasls
= $(active_contribs
:=.fasl
)
14 # Inter-module dependencies are declared here but not in the per-directory Makefile.
15 # This way we don't have to state them twice.
16 sb-md5.fasl
: sb-rotate-byte.fasl
17 sb-cover.fasl
: sb-md5.fasl
18 sb-perf.fasl
: sb-posix.fasl
19 sb-mpfr.fasl
: sb-gmp.fasl
20 sb-queue.fasl
: sb-concurrency.fasl
21 sb-simple-streams.fasl
: sb-posix.fasl sb-bsd-sockets.fasl
22 sb-grovel.fasl
: asdf.fasl
# for building the module, not for our build
25 # 1. Invoking $(MAKE) for nested make eliminates a warning about jobserver mode.
26 # 2. This could be made to 'tee' into output/{something} as it used to,
27 # but it would be more Lispy if not elegant to have 'make-contrib.lisp' bind
28 # *ERROR-OUTPUT* to a broadcast stream of SYS:*STDERR* and a file stream.
29 # 3. The massively overapproximates the set of inputs needed to compile any given contrib
30 # which avoids using per-target lists of files, or any power-user tricks such
31 # as .SECONDEXPANSION and $(wildcard) in this makefile.
32 # I tried all kinds of variations on "%/*.lisp" and nothing worked easily.
33 # I suspect the right solution involves eliminating the other level of Makefile.
34 # Also: a motivated person might be able to figure out how to express a dependence
35 # on src/runtime/sbcl or src/runtime/sbcl.exe depending on the OS.
36 # I'm going to assume that the depending on the core is enough.
37 %.fasl
: */*.lisp
*/*/*.lisp ..
/output
/sbcl.core
38 $(MAKE
) MODULE_REQUIRES
="$(filter %.fasl, $^)" -C
$*