diff --git a/Makefile b/Makefile
index 6dabae2d5de28120c19d751fe5cdf44222644423..74982d3594e798dcbe540245420e00815fdb95da 100644
--- a/Makefile
+++ b/Makefile
@@ -1,65 +1,277 @@
-# -*- Makefile -*- This minimal Makefile delegates most work to the asdf-tools script
-#
-# End-Users, all you need to do is:
-#   make
-#
-# Vendors, you may want to test your implementation with:
-#   make test l=sbcl
-# BUT you first need have installed the development-time external dependencies of ASDF;
-# this will be done automatically if you are using quicklisp;
-# you can do it manually with your favorite tools (e.g. clbuild or git);
-# or you can do it using `git submodule update` which is also available as:
-#   make ext
-# To undo the `git submodule update` you can use: `make noext`
-#
-# Other targets are for maintainer use only. If you want a list of all of the targets, use
-#   make help
-#
-### Default fall back rule: delegate to asdf-tools.
-# Note that the l= L= etc. are the only way I (Faré) have found to
-# pass arguments from the Makefile to the underlying script:
-# l= overrides $ASDF_TEST_LISPS to specify which lisp implementations to use
-# L= overrides $ASDF_UPGRADE_TEST_LISPS (defaults to the former) to lisps during upgrade
-# s= overrides $ASDF_TEST_SYSTEMS to specify systems with which to test ASDF
-# t= overrides $ASDF_TESTS to specify test script patterns to use (default to *.script)
-# u= overrides $ASDF_UPGRADE_TEST_TAGS to specify versions to upgrade from (e.g. 3.0.3 or REQUIRE)
-# U= overrides $ASDF_UPGRADE_TEST_METHODS to specify upgrade methods
-# v= overrides the default next version for bump-version or bump.
-# see in tools/test-environment.lisp for details.
-# Note that because of how make and the shell quote arguments,
-# thou shalt not use the single-quote character in any of the short x= parameters
-# (but you may use them in the long variant in the exported environment variable).
-# To have a list of commands, see make help or ./tools/asdf-tools help
-# Note that when you call ./tools/asdf-tools directly,
-# you may have to use positional parameters instead (unless you use env as below), as in
-#   ./tools/asdf-tools bump 3.2.1
-# instead of
-#   make bump v=3.2.1
-# or
-#   ./make.sh v=3.2.1 bump
-# or
-#   ./tools/asdf-tools env v=3.2.1 bump
-# or
-#   v=3.2.1 ./tools/asdf-tools bump
-
-ifeq ($(OS),Windows_NT)
-  MAKE_SCRIPT := cmd /c make.bat
+# Configuring this Makefile for your personal use:
+# Set environment variable ASDF_TEST_LISPS to a space-separated list of values
+# (see "defaultlisps" below, for an example).
+# If you have a special way to find libraries that are used in the build and
+# test process, you may bind ASDF_DEVEL_SOURCE_REGISTRY to a source registry to
+# use (using the environment variable syntax), or bind it to "override" to use
+# your normal CL source registry. Otherwise, it will use local copies of
+# everything.
+
+system	 	:= "asdf"
+webhome_private := common-lisp.net:/project/asdf/public_html/
+webhome_public	:= "http://common-lisp.net/project/asdf/"
+clnet_home      := "/project/asdf/public_html/"
+sourceDirectory := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+#### Common Lisp implementations available for testing.
+## export ASDF_TEST_LISPS to override the default list of such implementations,
+## or specify a lisps= argument at the make command-line
+defaultLisps = ccl clisp sbcl ecl ecl_bytecodes cmucl abcl scl allegro lispworks allegromodern gcl xcl mkcl
+ifdef ASDF_TEST_LISPS
+lisps ?= ${ASDF_TEST_LISPS}
+else
+lisps ?= ${defaultLisps}
+endif
+ifdef ASDF_UPGRADE_TEST_LISPS
+  ulisps ?= ${ASDF_UPGRADE_TEST_LISPS}
 else
-  MAKE_SCRIPT := ./make.sh
+  ifdef ASDF_TEST_LISPS
+    ulisps ?= ${ASDF_TEST_LISPS}
+  else
+    ulisps ?= ${defaultLisps}
+  endif
+endif
+
+
+## grep for #+/#- features in the test/ directory to see plenty of disabled tests on some platforms
+## NOT SUPPORTED BY OUR AUTOMATED TESTS:
+##	cormancl genera lispworks-personal-edition rmcl
+## Some are manually tested once in a while.
+ifdef ASDF_TEST_SYSTEMS
+s ?= ${ASDF_TEST_SYSTEMS}
+endif
+
+ifdef ASDF_DEVEL_SOURCE_REGISTRY
+ifeq ($(ASDF_DEVEL_SOURCE_REGISTRY), override)
+# do nothing... Use the user's CL_SOURCE_REGISTRY
+else
+export CL_SOURCE_REGISTRY = ${ASDF_DEVEL_SOURCE_REGISTRY}
+endif
+else # no ASDF_DEVEL_SOURCE_REGISTRY
+export CL_SOURCE_REGISTRY = ${sourceDirectory}/:${sourceDirectory}/uiop/:${sourceDirectory}/ext//:
 endif
 
+l ?= sbcl
+
+ABCL ?= abcl
+ALLEGRO ?= alisp
+ALLEGROMODERN ?= mlisp
+CCL ?= ccl
+CLISP ?= clisp
+CMUCL ?= cmucl
+ECL ?= ecl
+GCL ?= gcl
+LISPWORKS ?= lispworks
+MKCL ?= mkcl
+SBCL ?= sbcl
+SCL ?= scl
+XCL ?= xcl
+
+header_lisp := header.lisp
+driver_lisp := uiop/package.lisp uiop/common-lisp.lisp uiop/utility.lisp uiop/os.lisp uiop/pathname.lisp uiop/filesystem.lisp uiop/stream.lisp uiop/image.lisp uiop/run-program.lisp uiop/lisp-build.lisp uiop/configuration.lisp uiop/backward-driver.lisp uiop/driver.lisp
+defsystem_lisp := upgrade.lisp component.lisp system.lisp cache.lisp find-system.lisp find-component.lisp operation.lisp action.lisp lisp-action.lisp plan.lisp operate.lisp output-translations.lisp source-registry.lisp parse-defsystem.lisp bundle.lisp concatenate-source.lisp package-inferred-system.lisp backward-internals.lisp backward-interface.lisp interface.lisp user.lisp footer.lisp
+all_lisp := $(header_lisp) $(driver_lisp) $(defsystem_lisp)
+
+# Making ASDF itself should be our first, default, target:
+build/asdf.lisp: $(all_lisp)
+	mkdir -p build
+	rm -f $@
+	cat $(all_lisp) > $@
+
+ext:
+	git submodule update --init
+
+noext:
+	git submodule deinit .
+
+# This quickly locates such mistakes as unbalanced parentheses:
+load: build/asdf.lisp
+	./test/run-tests.sh -t $l $(all_lisp)
+
+install: archive
+
+bump: bump-version
+	git commit -a -m "Bump version to $$(eval a=$$(cat version.lisp-expr) ; echo $$a)"
+	temp=$$(cat version.lisp-expr); temp="$${temp%\"}"; temp="$${temp#\"}"; git tag $$temp
+
+bump-version: build/asdf.lisp
+	./bin/bump-version ${v}
+
+driver-files:
+	@echo $(driver_lisp)
+
+defsystem-files:
+	@echo $(defsystem_lisp)
+
+# FIXME: needs rewrite
+#archive: build/asdf.lisp
+#	./bin/asdf-builder make-and-publish-archive
+
+### Count lines separately for asdf-driver and asdf itself:
+wc:
+	@wc $(driver_lisp) | sort -n ; echo ; \
+	wc $(header_lisp) $(defsystem_lisp) | sort -n ; \
+	echo ; \
+	wc $(header_lisp) $(driver_lisp) $(defsystem_lisp) | tail -n 1
+
+push:
+	git status
+	git push --tags cl.net release master
+	git push --tags github release master
+	git fetch
+	git status
 
-all ext noext driver_files defsystem_files build_asdf build_asdf_tools: force
-	${MAKE_SCRIPT} $@
+# doc:
+# 	${MAKE} -C doc
+# don't have the toolchain to build docs installed...
+doc: ;
+website:
+	${MAKE} -C doc website
 
-build/asdf.lisp: build_asdf
-build/asdf-tools build/asdf-tools.exe: build_asdf_tools
+clean_dirs = $(sourceDirectory)
+clean_extensions = fasl dfsl cfsl fasl fas lib dx32fsl lx64fsl lx32fsl ufasl o bak x86f vbin amd64f sparcf sparc64f hpf hp64f
 
-.PHONY: force all ext noext driver_files defsystem_files build_asdf build_asdf_tools
+clean:
+	@for dir in $(clean_dirs); do \
+	     if test -d $$dir; then \
+		 echo Cleaning $$dir; \
+		 for ext in $(clean_extensions); do \
+		     find $$dir \( -name "*.$$ext" \) \
+		    -and -not -path \""*/.git/*"\" \
+			  -and -not -path \""*/_darcs/*"\" \
+			  -and -not -path \""*/tags/*"\" -print -delete; \
+		done; \
+	     fi; \
+	done
+	rm -rf build/ LICENSE test/try-reloading-dependency.asd test/hello-world-example asdf.lisp
+	rm -rf test/hello-world-example.exe test/mkcl_*.dll # needed only on MS-Windows
+	rm -rf .pc/ build-stamp debian/patches/ debian/debhelper.log debian/cl-asdf/ # debian crap
+	${MAKE} -C doc clean
 
-# The text below was automaticaly generated by `make --silent makefile-targets`
-# then manually inserted here to provide for completion:
-.PHONY: archive build-asdf build-asdf-tools bump bump-version check-all-results check-all-scripts-results check-all-upgrade-results clean debian-package doc ext-clear ext-init ext-reset ext-update extract extract-all-tagged-asdf extract-tagged-asdf fix-local-git-tags fix-remote-git-tags git-all-committed-p help install install-asdf link-archive load make-and-publish-archive make-archive makefile-targets merge-master-into-release publish-archive publish-debian-package push re show-commands t test test-all test-all-clean-load test-all-no-stop test-all-no-upgrade test-all-no-upgrade-no-stop test-all-scripts test-all-scripts-no-stop test-all-upgrade test-all-upgrade-no-stop test-ascii test-basic test-clean-load test-load-systems test-scripts test-upgrade u wc website
+mrproper:
+	git clean -xfd
 
-archive build-asdf build-asdf-tools bump bump-version check-all-results check-all-scripts-results check-all-upgrade-results clean debian-package doc ext-clear ext-init ext-reset ext-update extract extract-all-tagged-asdf extract-tagged-asdf fix-local-git-tags fix-remote-git-tags git-all-committed-p help install install-asdf link-archive load make-and-publish-archive make-archive makefile-targets merge-master-into-release publish-archive publish-debian-package push re show-commands t test test-all test-all-clean-load test-all-no-stop test-all-no-upgrade test-all-no-upgrade-no-stop test-all-scripts test-all-scripts-no-stop test-all-upgrade test-all-upgrade-no-stop test-ascii test-basic test-clean-load test-load-systems test-scripts test-upgrade u wc website: force
-	${MAKE_SCRIPT} l='$l' L='$L' u='$u' U='$U' v='$v' s='$s' t='$t' $@
+test-upgrade: build/asdf.lisp
+	./test/run-tests.sh -u ${l}
+u: test-upgrade
+
+test-clean-load: build/asdf.lisp
+	./test/run-tests.sh -c ${l}
+
+# test-glob has been replaced by t, and lisp by l, easier to type
+test-lisp: build/asdf.lisp
+	@cd test; ./run-tests.sh ${l} ${t}
+t: test-lisp
+
+test: doc test-lisp test-clean-load test-load-systems
+
+test-load-systems: build/asdf.lisp
+	./test/run-tests.sh -l ${l} ${s}
+
+test-all-lisps: test-load-systems test-all-clean-load test-all-lisp test-all-upgrade
+
+test-all-clean-load:
+	@for lisp in ${lisps} ; do ${MAKE} test-clean-load l=$$lisp || exit 1 ; done
+
+test-all-lisp:
+	@for lisp in ${lisps} ; do ${MAKE} test-lisp l=$$lisp || exit 1 ; done
+
+test-all-upgrade:
+	@for lisp in ${ulisps} ; do ${MAKE} test-upgrade l=$$lisp || exit 1 ; done
+
+test-all-no-upgrade: doc test-load-systems test-all-clean-load test-all-lisp
+
+test-all: test-all-no-upgrade test-all-upgrade
+
+test-all-lisp-no-stop:
+	@for lisp in ${lisps} ; do ${MAKE} test-lisp l=$$lisp ; done ; :
+
+test-all-upgrade-no-stop:
+	@for lisp in ${ulisps} ; do ${MAKE} test-upgrade l=$$lisp ; done ; :
+
+test-all-no-upgrade-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop
+	make --quiet check-all-test-results
+
+test-all-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop test-all-upgrade-no-stop
+	make --quiet check-all-results
+
+check-all-test-results:
+	@A="`grep -L '[5-9][0-9] passing and 0 failing' build/results/*-test.text`" ; \
+	if [ -n "$$A" ] ; then \
+		echo "Unexpected test failures on these implementations:" ; \
+		echo "$$A" ; \
+		exit 1 ; \
+	fi
+
+check-all-upgrade-results:
+	@A="`grep -L 'Upgrade test succeeded for ' build/results/*-upgrade.text`" ; \
+	if [ -n "$$A" ] ; then \
+		echo "Unexpected upgrade failures on these implementations:" ; \
+		echo "$$A" ; \
+		exit 1 ; \
+	fi
+
+check-all-results:
+	@r=0 ; \
+	make --quiet check-all-test-results || r=1 ; \
+	make --quiet check-all-upgrade-results || r=1 ; \
+	exit $r
+
+extract: extract-all-tagged-asdf
+extract-all-tagged-asdf: build/asdf.lisp
+	./test/run-tests.sh -H
+
+
+# Delete wrongful tags from local repository
+fix-local-git-tags:
+	for i in ${WRONGFUL_TAGS} ; do git tag -d $$i ; done
+
+# Delete wrongful tags from remote repository
+fix-remote-git-tags:
+	for i in ${WRONGFUL_TAGS} ; do git push $${REMOTE:-cl.net} :refs/tags/$$i ; done
+
+release-push:
+	git checkout master
+	git merge release
+	git checkout release
+	git merge master
+	git checkout master
+
+TODO:
+	exit 2
+
+release: TODO test-all test-on-other-machines-too debian-changelog debian-package send-mail-to-mailing-lists
+
+.PHONY: install archive push doc website clean mrproper \
+	test-forward-references test test-lisp test-upgrade test-forward-references \
+	test-all test-all-lisps test-all-no-upgrade \
+	debian-package release \
+	replace-sbcl-asdf replace-ccl-asdf \
+	fix-local-git-tags fix-remote-git-tags wc wc-driver wc-asdf \
+	list-source-registry \
+	ext noext
+
+# debug the source registry that will be used to execute commands from this Makefile.
+#list-source-registry:
+#	${sourceDirectory}/bin/asdf-builder re '(uiop:writeln (sort (alexandria:hash-table-alist asdf::*source-registry*) `string< :key `car))'
+
+# RELEASE or PUSH checklist:
+# make test-all
+# make test-load-systems s=fare-all
+# make bump v=3.0
+# edit debian/changelog # RELEASE only...
+# git commit
+# git tag 3.0 # for example ...
+# make debian-package
+# git push
+# git push origin 3.0 # for example...
+# everything from here for RELEASE only
+# make release-push archive website debian-package
+# dput mentors ../*.changes
+# send debian mentors request
+# send announcement to asdf-announce, asdf-devel, etc.
+# Move all fixed bugs from Fix Committed -> Fix Released on launchpad
+#
+## Users don't release as above, only maintainers do.
+## Users, all you need to do is: make
+## Vendors, you may want to test your implementation with: make test l=sbcl
diff --git a/Makefile-classic b/Makefile-classic
deleted file mode 100644
index 74982d3594e798dcbe540245420e00815fdb95da..0000000000000000000000000000000000000000
--- a/Makefile-classic
+++ /dev/null
@@ -1,277 +0,0 @@
-# Configuring this Makefile for your personal use:
-# Set environment variable ASDF_TEST_LISPS to a space-separated list of values
-# (see "defaultlisps" below, for an example).
-# If you have a special way to find libraries that are used in the build and
-# test process, you may bind ASDF_DEVEL_SOURCE_REGISTRY to a source registry to
-# use (using the environment variable syntax), or bind it to "override" to use
-# your normal CL source registry. Otherwise, it will use local copies of
-# everything.
-
-system	 	:= "asdf"
-webhome_private := common-lisp.net:/project/asdf/public_html/
-webhome_public	:= "http://common-lisp.net/project/asdf/"
-clnet_home      := "/project/asdf/public_html/"
-sourceDirectory := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
-
-#### Common Lisp implementations available for testing.
-## export ASDF_TEST_LISPS to override the default list of such implementations,
-## or specify a lisps= argument at the make command-line
-defaultLisps = ccl clisp sbcl ecl ecl_bytecodes cmucl abcl scl allegro lispworks allegromodern gcl xcl mkcl
-ifdef ASDF_TEST_LISPS
-lisps ?= ${ASDF_TEST_LISPS}
-else
-lisps ?= ${defaultLisps}
-endif
-ifdef ASDF_UPGRADE_TEST_LISPS
-  ulisps ?= ${ASDF_UPGRADE_TEST_LISPS}
-else
-  ifdef ASDF_TEST_LISPS
-    ulisps ?= ${ASDF_TEST_LISPS}
-  else
-    ulisps ?= ${defaultLisps}
-  endif
-endif
-
-
-## grep for #+/#- features in the test/ directory to see plenty of disabled tests on some platforms
-## NOT SUPPORTED BY OUR AUTOMATED TESTS:
-##	cormancl genera lispworks-personal-edition rmcl
-## Some are manually tested once in a while.
-ifdef ASDF_TEST_SYSTEMS
-s ?= ${ASDF_TEST_SYSTEMS}
-endif
-
-ifdef ASDF_DEVEL_SOURCE_REGISTRY
-ifeq ($(ASDF_DEVEL_SOURCE_REGISTRY), override)
-# do nothing... Use the user's CL_SOURCE_REGISTRY
-else
-export CL_SOURCE_REGISTRY = ${ASDF_DEVEL_SOURCE_REGISTRY}
-endif
-else # no ASDF_DEVEL_SOURCE_REGISTRY
-export CL_SOURCE_REGISTRY = ${sourceDirectory}/:${sourceDirectory}/uiop/:${sourceDirectory}/ext//:
-endif
-
-l ?= sbcl
-
-ABCL ?= abcl
-ALLEGRO ?= alisp
-ALLEGROMODERN ?= mlisp
-CCL ?= ccl
-CLISP ?= clisp
-CMUCL ?= cmucl
-ECL ?= ecl
-GCL ?= gcl
-LISPWORKS ?= lispworks
-MKCL ?= mkcl
-SBCL ?= sbcl
-SCL ?= scl
-XCL ?= xcl
-
-header_lisp := header.lisp
-driver_lisp := uiop/package.lisp uiop/common-lisp.lisp uiop/utility.lisp uiop/os.lisp uiop/pathname.lisp uiop/filesystem.lisp uiop/stream.lisp uiop/image.lisp uiop/run-program.lisp uiop/lisp-build.lisp uiop/configuration.lisp uiop/backward-driver.lisp uiop/driver.lisp
-defsystem_lisp := upgrade.lisp component.lisp system.lisp cache.lisp find-system.lisp find-component.lisp operation.lisp action.lisp lisp-action.lisp plan.lisp operate.lisp output-translations.lisp source-registry.lisp parse-defsystem.lisp bundle.lisp concatenate-source.lisp package-inferred-system.lisp backward-internals.lisp backward-interface.lisp interface.lisp user.lisp footer.lisp
-all_lisp := $(header_lisp) $(driver_lisp) $(defsystem_lisp)
-
-# Making ASDF itself should be our first, default, target:
-build/asdf.lisp: $(all_lisp)
-	mkdir -p build
-	rm -f $@
-	cat $(all_lisp) > $@
-
-ext:
-	git submodule update --init
-
-noext:
-	git submodule deinit .
-
-# This quickly locates such mistakes as unbalanced parentheses:
-load: build/asdf.lisp
-	./test/run-tests.sh -t $l $(all_lisp)
-
-install: archive
-
-bump: bump-version
-	git commit -a -m "Bump version to $$(eval a=$$(cat version.lisp-expr) ; echo $$a)"
-	temp=$$(cat version.lisp-expr); temp="$${temp%\"}"; temp="$${temp#\"}"; git tag $$temp
-
-bump-version: build/asdf.lisp
-	./bin/bump-version ${v}
-
-driver-files:
-	@echo $(driver_lisp)
-
-defsystem-files:
-	@echo $(defsystem_lisp)
-
-# FIXME: needs rewrite
-#archive: build/asdf.lisp
-#	./bin/asdf-builder make-and-publish-archive
-
-### Count lines separately for asdf-driver and asdf itself:
-wc:
-	@wc $(driver_lisp) | sort -n ; echo ; \
-	wc $(header_lisp) $(defsystem_lisp) | sort -n ; \
-	echo ; \
-	wc $(header_lisp) $(driver_lisp) $(defsystem_lisp) | tail -n 1
-
-push:
-	git status
-	git push --tags cl.net release master
-	git push --tags github release master
-	git fetch
-	git status
-
-# doc:
-# 	${MAKE} -C doc
-# don't have the toolchain to build docs installed...
-doc: ;
-website:
-	${MAKE} -C doc website
-
-clean_dirs = $(sourceDirectory)
-clean_extensions = fasl dfsl cfsl fasl fas lib dx32fsl lx64fsl lx32fsl ufasl o bak x86f vbin amd64f sparcf sparc64f hpf hp64f
-
-clean:
-	@for dir in $(clean_dirs); do \
-	     if test -d $$dir; then \
-		 echo Cleaning $$dir; \
-		 for ext in $(clean_extensions); do \
-		     find $$dir \( -name "*.$$ext" \) \
-		    -and -not -path \""*/.git/*"\" \
-			  -and -not -path \""*/_darcs/*"\" \
-			  -and -not -path \""*/tags/*"\" -print -delete; \
-		done; \
-	     fi; \
-	done
-	rm -rf build/ LICENSE test/try-reloading-dependency.asd test/hello-world-example asdf.lisp
-	rm -rf test/hello-world-example.exe test/mkcl_*.dll # needed only on MS-Windows
-	rm -rf .pc/ build-stamp debian/patches/ debian/debhelper.log debian/cl-asdf/ # debian crap
-	${MAKE} -C doc clean
-
-mrproper:
-	git clean -xfd
-
-test-upgrade: build/asdf.lisp
-	./test/run-tests.sh -u ${l}
-u: test-upgrade
-
-test-clean-load: build/asdf.lisp
-	./test/run-tests.sh -c ${l}
-
-# test-glob has been replaced by t, and lisp by l, easier to type
-test-lisp: build/asdf.lisp
-	@cd test; ./run-tests.sh ${l} ${t}
-t: test-lisp
-
-test: doc test-lisp test-clean-load test-load-systems
-
-test-load-systems: build/asdf.lisp
-	./test/run-tests.sh -l ${l} ${s}
-
-test-all-lisps: test-load-systems test-all-clean-load test-all-lisp test-all-upgrade
-
-test-all-clean-load:
-	@for lisp in ${lisps} ; do ${MAKE} test-clean-load l=$$lisp || exit 1 ; done
-
-test-all-lisp:
-	@for lisp in ${lisps} ; do ${MAKE} test-lisp l=$$lisp || exit 1 ; done
-
-test-all-upgrade:
-	@for lisp in ${ulisps} ; do ${MAKE} test-upgrade l=$$lisp || exit 1 ; done
-
-test-all-no-upgrade: doc test-load-systems test-all-clean-load test-all-lisp
-
-test-all: test-all-no-upgrade test-all-upgrade
-
-test-all-lisp-no-stop:
-	@for lisp in ${lisps} ; do ${MAKE} test-lisp l=$$lisp ; done ; :
-
-test-all-upgrade-no-stop:
-	@for lisp in ${ulisps} ; do ${MAKE} test-upgrade l=$$lisp ; done ; :
-
-test-all-no-upgrade-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop
-	make --quiet check-all-test-results
-
-test-all-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop test-all-upgrade-no-stop
-	make --quiet check-all-results
-
-check-all-test-results:
-	@A="`grep -L '[5-9][0-9] passing and 0 failing' build/results/*-test.text`" ; \
-	if [ -n "$$A" ] ; then \
-		echo "Unexpected test failures on these implementations:" ; \
-		echo "$$A" ; \
-		exit 1 ; \
-	fi
-
-check-all-upgrade-results:
-	@A="`grep -L 'Upgrade test succeeded for ' build/results/*-upgrade.text`" ; \
-	if [ -n "$$A" ] ; then \
-		echo "Unexpected upgrade failures on these implementations:" ; \
-		echo "$$A" ; \
-		exit 1 ; \
-	fi
-
-check-all-results:
-	@r=0 ; \
-	make --quiet check-all-test-results || r=1 ; \
-	make --quiet check-all-upgrade-results || r=1 ; \
-	exit $r
-
-extract: extract-all-tagged-asdf
-extract-all-tagged-asdf: build/asdf.lisp
-	./test/run-tests.sh -H
-
-
-# Delete wrongful tags from local repository
-fix-local-git-tags:
-	for i in ${WRONGFUL_TAGS} ; do git tag -d $$i ; done
-
-# Delete wrongful tags from remote repository
-fix-remote-git-tags:
-	for i in ${WRONGFUL_TAGS} ; do git push $${REMOTE:-cl.net} :refs/tags/$$i ; done
-
-release-push:
-	git checkout master
-	git merge release
-	git checkout release
-	git merge master
-	git checkout master
-
-TODO:
-	exit 2
-
-release: TODO test-all test-on-other-machines-too debian-changelog debian-package send-mail-to-mailing-lists
-
-.PHONY: install archive push doc website clean mrproper \
-	test-forward-references test test-lisp test-upgrade test-forward-references \
-	test-all test-all-lisps test-all-no-upgrade \
-	debian-package release \
-	replace-sbcl-asdf replace-ccl-asdf \
-	fix-local-git-tags fix-remote-git-tags wc wc-driver wc-asdf \
-	list-source-registry \
-	ext noext
-
-# debug the source registry that will be used to execute commands from this Makefile.
-#list-source-registry:
-#	${sourceDirectory}/bin/asdf-builder re '(uiop:writeln (sort (alexandria:hash-table-alist asdf::*source-registry*) `string< :key `car))'
-
-# RELEASE or PUSH checklist:
-# make test-all
-# make test-load-systems s=fare-all
-# make bump v=3.0
-# edit debian/changelog # RELEASE only...
-# git commit
-# git tag 3.0 # for example ...
-# make debian-package
-# git push
-# git push origin 3.0 # for example...
-# everything from here for RELEASE only
-# make release-push archive website debian-package
-# dput mentors ../*.changes
-# send debian mentors request
-# send announcement to asdf-announce, asdf-devel, etc.
-# Move all fixed bugs from Fix Committed -> Fix Released on launchpad
-#
-## Users don't release as above, only maintainers do.
-## Users, all you need to do is: make
-## Vendors, you may want to test your implementation with: make test l=sbcl
diff --git a/Makefile-lisp-scripting b/Makefile-lisp-scripting
new file mode 100644
index 0000000000000000000000000000000000000000..6dabae2d5de28120c19d751fe5cdf44222644423
--- /dev/null
+++ b/Makefile-lisp-scripting
@@ -0,0 +1,65 @@
+# -*- Makefile -*- This minimal Makefile delegates most work to the asdf-tools script
+#
+# End-Users, all you need to do is:
+#   make
+#
+# Vendors, you may want to test your implementation with:
+#   make test l=sbcl
+# BUT you first need have installed the development-time external dependencies of ASDF;
+# this will be done automatically if you are using quicklisp;
+# you can do it manually with your favorite tools (e.g. clbuild or git);
+# or you can do it using `git submodule update` which is also available as:
+#   make ext
+# To undo the `git submodule update` you can use: `make noext`
+#
+# Other targets are for maintainer use only. If you want a list of all of the targets, use
+#   make help
+#
+### Default fall back rule: delegate to asdf-tools.
+# Note that the l= L= etc. are the only way I (Faré) have found to
+# pass arguments from the Makefile to the underlying script:
+# l= overrides $ASDF_TEST_LISPS to specify which lisp implementations to use
+# L= overrides $ASDF_UPGRADE_TEST_LISPS (defaults to the former) to lisps during upgrade
+# s= overrides $ASDF_TEST_SYSTEMS to specify systems with which to test ASDF
+# t= overrides $ASDF_TESTS to specify test script patterns to use (default to *.script)
+# u= overrides $ASDF_UPGRADE_TEST_TAGS to specify versions to upgrade from (e.g. 3.0.3 or REQUIRE)
+# U= overrides $ASDF_UPGRADE_TEST_METHODS to specify upgrade methods
+# v= overrides the default next version for bump-version or bump.
+# see in tools/test-environment.lisp for details.
+# Note that because of how make and the shell quote arguments,
+# thou shalt not use the single-quote character in any of the short x= parameters
+# (but you may use them in the long variant in the exported environment variable).
+# To have a list of commands, see make help or ./tools/asdf-tools help
+# Note that when you call ./tools/asdf-tools directly,
+# you may have to use positional parameters instead (unless you use env as below), as in
+#   ./tools/asdf-tools bump 3.2.1
+# instead of
+#   make bump v=3.2.1
+# or
+#   ./make.sh v=3.2.1 bump
+# or
+#   ./tools/asdf-tools env v=3.2.1 bump
+# or
+#   v=3.2.1 ./tools/asdf-tools bump
+
+ifeq ($(OS),Windows_NT)
+  MAKE_SCRIPT := cmd /c make.bat
+else
+  MAKE_SCRIPT := ./make.sh
+endif
+
+
+all ext noext driver_files defsystem_files build_asdf build_asdf_tools: force
+	${MAKE_SCRIPT} $@
+
+build/asdf.lisp: build_asdf
+build/asdf-tools build/asdf-tools.exe: build_asdf_tools
+
+.PHONY: force all ext noext driver_files defsystem_files build_asdf build_asdf_tools
+
+# The text below was automaticaly generated by `make --silent makefile-targets`
+# then manually inserted here to provide for completion:
+.PHONY: archive build-asdf build-asdf-tools bump bump-version check-all-results check-all-scripts-results check-all-upgrade-results clean debian-package doc ext-clear ext-init ext-reset ext-update extract extract-all-tagged-asdf extract-tagged-asdf fix-local-git-tags fix-remote-git-tags git-all-committed-p help install install-asdf link-archive load make-and-publish-archive make-archive makefile-targets merge-master-into-release publish-archive publish-debian-package push re show-commands t test test-all test-all-clean-load test-all-no-stop test-all-no-upgrade test-all-no-upgrade-no-stop test-all-scripts test-all-scripts-no-stop test-all-upgrade test-all-upgrade-no-stop test-ascii test-basic test-clean-load test-load-systems test-scripts test-upgrade u wc website
+
+archive build-asdf build-asdf-tools bump bump-version check-all-results check-all-scripts-results check-all-upgrade-results clean debian-package doc ext-clear ext-init ext-reset ext-update extract extract-all-tagged-asdf extract-tagged-asdf fix-local-git-tags fix-remote-git-tags git-all-committed-p help install install-asdf link-archive load make-and-publish-archive make-archive makefile-targets merge-master-into-release publish-archive publish-debian-package push re show-commands t test test-all test-all-clean-load test-all-no-stop test-all-no-upgrade test-all-no-upgrade-no-stop test-all-scripts test-all-scripts-no-stop test-all-upgrade test-all-upgrade-no-stop test-ascii test-basic test-clean-load test-load-systems test-scripts test-upgrade u wc website: force
+	${MAKE_SCRIPT} l='$l' L='$L' u='$u' U='$U' v='$v' s='$s' t='$t' $@