Make stuff regarding debug names much less complex.
[sbcl.git] / contrib / Makefile
blob00ec389b3700fa6e71a5ba0cded5defe7848b76a
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)
12 all: $(fasls)
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
24 # Notes:
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 $*