-ALL=$(patsubst ccan/%/test, %, $(wildcard ccan/*/test))
-ALL_DIRS=$(patsubst %, ccan/%, $(ALL))
-ALL_DEPENDS=$(patsubst %, ccan/%/.depends, $(ALL))
+# Trying to build the whole repo is usually a lose; there will be some
+# dependencies you don't have.
+EXCLUDE=wwviaudio ogg_to_pcm jmap jbitset nfs
+
+# Where make scores puts the results
+SCOREDIR=scores/$(shell whoami)/$(shell uname -s)-$(shell uname -m)-$(CC)-$(shell git describe --always --dirty)
+
+ALL=$(filter-out $(EXCLUDE), $(REALLY_ALL))
+
+ALL_DEPENDS=$(patsubst %, ccan/%/.depends, $(REALLY_ALL))
+
+# Not all modules have tests.
+ALL_TESTS=$(patsubst ccan/%/test/, %, $(foreach dir, $(ALL), $(wildcard ccan/$(dir)/test/)))
+
+# Here's my rough logarithmic timeout graph for my laptop:
+#
+# 302 -
+# | / --*
+# | /
+# | /
+# | /
+# |Execution Time, seconds /
+# | /
+# | ---//
+# | /
+# | //
+# | ---\ ---
+# | --- \\ ------
+# |----------------- \---
+# 19 +------------------------------------------------------+--
+# 0 Timeout (ms, logarithmic) 262144
+#
+# 140
+# |
+# |------------
+# | ---
+# | ---------
+# | -------
+# | --\
+# | \\-
+# | Tests skipped --\
+# | \
+# | \\
+# | \\\
+# | \
+# | \----
+# --+0---------------------------------------------------==+--
+# 0 Timeout (ms, logarithmic) 262144
+#
+# On my laptop, this runs 574 tests in 40 seconds, vs. a full check which
+# runs 676 tests in 260 seconds.
+FASTTIMEOUT=750
+
+default: libccan.a