-DO_CC += $(CC_WRAPPER) $(CFLAGS) $(CF_TGT) -o $@ -c $<
-DO_CXX += $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) -o $@ -c $<
-DO_LD += $(CC_WRAPPER) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
-DO_LDX += $(CXX_WRAPPER) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
-DO_CCLD += $(CC_WRAPPER) $(CFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
-DO_CXXLD += $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
-DO_AR += $(AR) rcs $@ $^; $(RANLIB) $@
-DO_RC += $(WINDRES) $(DDEFINES) $(DF_TGT) -o $@ -i $<
+INSTALL = ./tools/install.lua
+
+# Include current directory to allow sources to #include "config.h".
+CFLAGS += -I.
+CXXFLAGS += -I.
+
+COMMAND_CC = $(COMPILE) $(CC) $(CFLAGS) $(CF_TGT) -o $@ -c $<
+COMMAND_CXX = $(COMPILE) $(CXX) $(CXXFLAGS) $(CF_TGT) -o $@ -c $<
+COMMAND_LD = $(LINK) $(CC) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+COMMAND_LDX = $(LINK) $(CXX) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+COMMAND_CCLD = $(COMPILE) $(CC) $(CFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
+COMMAND_CXXLD = $(COMPILE) $(CXX) $(CXXFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
+COMMAND_AR = $(AR) rcs $@ $^; $(RANLIB) $@
+COMMAND_RC = $(WINDRES) -I. $(DF_TGT) -o $@ -i $<
+COMMAND_INSTALL = $(INSTALL) -m $1 $2 $3/
+COMMAND_RM = rm -f $1
+COMMAND_IN = sed -f config.sed <"$1" >"$2"
+
+ifeq ($(verbose),true)
+DO_CC = $(COMMAND_CC)
+DO_CXX = $(COMMAND_CXX)
+DO_LD = $(COMMAND_LD)
+DO_LDX = $(COMMAND_LDX)
+DO_CCLD = $(COMMAND_CCLD)
+DO_CXXLD = $(COMMAND_CXXLD)
+DO_AR = $(COMMAND_AR)
+DO_RC = $(COMMAND_RC)
+DO_INSTALL = $(COMMAND_INSTALL)
+DO_RM = $(COMMAND_RM)
+DO_IN = $(COMMAND_IN)
+SHELL_LINE_PREFIX =
+else
+DO_CC = @echo " CC $@"; $(COMMAND_CC)
+DO_CXX = @echo " CXX $@"; $(COMMAND_CXX)
+DO_LD = @echo " LINK $@"; $(COMMAND_LD)
+DO_LDX = @echo " LINK $@"; $(COMMAND_LDX)
+DO_CCLD = @echo " LINK $@"; $(COMMAND_CCLD)
+DO_CXXLD = @echo " LINK $@"; $(COMMAND_CXXLD)
+DO_AR = @echo " AR $@"; $(COMMAND_AR)
+DO_RC = @echo " RC $@"; $(COMMAND_RC)
+DO_INSTALL = @echo " CP $2"; $(COMMAND_INSTALL)
+DO_RM = @echo " RM $1"; $(COMMAND_RM)
+DO_IN = @echo " GEN $2"; $(COMMAND_IN)
+SHELL_LINE_PREFIX = @
+endif
+
+
+#
+# Define the implicit rules.
+#