--- a/Makefile
+++ b/Makefile
@@ -399,6 +399,8 @@
 	# Remove selected header files.
 	$(RM) $(patsubst %,$(SYSROOT_INC)/%,$(MUSL_OMIT_HEADERS))
 
+	touch $@
+
 startup_files: include_dirs
 	#
 	# Build the startup files.
@@ -409,6 +411,8 @@
 	mkdir -p "$(SYSROOT_LIB)" && \
 	mv *.o "$(SYSROOT_LIB)"
 
+	touch $@
+
 libc: include_dirs \
     $(SYSROOT_LIB)/libc.a \
     $(SYSROOT_LIB)/libc-printscan-long-double.a \
@@ -416,6 +420,8 @@
     $(SYSROOT_LIB)/libwasi-emulated-mman.a \
     $(SYSROOT_LIB)/libwasi-emulated-signal.a
 
+	touch $@
+
 finish: startup_files libc
 	#
 	# Create empty placeholder libraries.
@@ -500,9 +506,14 @@
 	#
 	# The build succeeded! The generated sysroot is in $(SYSROOT).
 	#
+	touch $@
 
 install: finish
 	mkdir -p "$(INSTALL_DIR)"
 	cp -r "$(SYSROOT)/lib" "$(SYSROOT)/share" "$(SYSROOT)/include" "$(INSTALL_DIR)"
 
-.PHONY: default startup_files libc finish install include_dirs
+clean:
+	rm -f include_dirs startup_files libc finish
+	rm -rf build sysroot
+
+.PHONY: default install
