+#------------------------------------------------------------
+# Make the output nice and tight
+MAKEFLAGS += --no-print-directory
+export MAKE_IS_SILENT=n
+ifneq ($(findstring s,$(MAKEFLAGS)),)
+export MAKE_IS_SILENT=y
+SECHO := @-false
+DISP := sil
+Q := @
+else
+ifneq ($(BUILD_VERBOSE),)
+SECHO := @-false
+DISP := ver
+Q :=
+else
+SECHO := @echo
+DISP := pur
+Q := @
+endif
+endif
+
+show_objs = $(subst $(top_builddir)/,,$(subst ../,,$@))
+pur_disp_compile.c = echo " "CC $(show_objs)
+pur_disp_compile.h = echo " "HOSTCC $(show_objs)
+pur_disp_strip = echo " "STRIP $(show_objs)
+pur_disp_link = echo " "LINK $(show_objs)
+pur_disp_link.h = echo " "HOSTLINK $(show_objs)
+pur_disp_ar = echo " "AR $(ARFLAGS) $(show_objs)
+pur_disp_elf2flt = echo " "ELF2FLT $(ELF2FLTFLAGS) $(show_objs)
+sil_disp_compile.c = true
+sil_disp_compile.h = true
+sil_disp_strip = true
+sil_disp_link = true
+sil_disp_link.h = true
+sil_disp_ar = true
+sil_disp_elf2flt = true
+ver_disp_compile.c = echo $(cmd_compile.c)
+ver_disp_compile.h = echo $(cmd_compile.h)
+ver_disp_strip = echo $(cmd_strip)
+ver_disp_link = echo $(cmd_link)
+ver_disp_link.h = echo $(cmd_link.h)
+ver_disp_ar = echo $(cmd_ar)
+ver_disp_elf2flt = echo $(cmd_elf2flt)
+disp_compile.c = $($(DISP)_disp_compile.c)
+disp_compile.h = $($(DISP)_disp_compile.h)
+disp_strip = $($(DISP)_disp_strip)
+disp_link = $($(DISP)_disp_link)
+disp_link.h = $($(DISP)_disp_link.h)
+disp_ar = $($(DISP)_disp_ar)
+disp_gen = $(SECHO) " "GEN $@ ; true
+disp_doc = $(SECHO) " "DOC $(subst docs/,,$@) ; true
+disp_elf2flt = $($(DISP)_disp_elf2flt)
+cmd_compile.c = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+cmd_compile.h = $(HOSTCC) $(HOSTCFLAGS) $(INCS) -c -o $@ $<
+cmd_strip = $(STRIPCMD) $@
+cmd_link = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) \
+ $(PROG_CFLAGS) $(PROG_LDFLAGS) $(CFLAGS_COMBINE) \
+ -o $@ $(LD_START_GROUP) \
+ $(APPLETS_DEFINE) $(APPLET_SRC) \
+ $(BUSYBOX_DEFINE) $(BUSYBOX_SRC) $(libraries-y) \
+ $(LDBUSYBOX) $(LIBRARIES) \
+ $(LD_END_GROUP)
+cmd_link.so = $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) \
+ $(LIB_CFLAGS) $(CFLAGS_COMBINE) $(LIB_LDFLAGS) \
+ -o $(@) $(LD_START_GROUP) $(LD_WHOLE_ARCHIVE) \
+ $(LIBRARY_DEFINE) $(^) \
+ $(LD_NO_WHOLE_ARCHIVE) $(LD_END_GROUP)
+cmd_link.h = $(HOSTCC) $(HOSTCFLAGS) $(INCS) $< -o $@
+cmd_ar = $(AR) $(ARFLAGS) $@ $^
+cmd_elf2flt = $(ELF2FLT) $(ELF2FLTFLAGS) $< -o $@
+compile.c = @$(disp_compile.c) ; $(cmd_compile.c)
+compile.h = @$(disp_compile.h) ; $(cmd_compile.h)
+do_strip = @$(disp_strip) ; $(cmd_strip)
+do_link = @$(disp_link) ; $(cmd_link)
+do_link.so = @$(disp_link) ; $(cmd_link.so)
+do_link.h = @$(disp_link.h) ; $(cmd_link.h)
+do_ar = @$(disp_ar) ; $(cmd_ar)
+do_elf2flt = @$(disp_elf2flt) ; $(cmd_elf2flt)
+
+uppercase = $(shell echo $1 | $(SED) -e "y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/")
+%.a:
+ @if test -z "$($(call uppercase,$*)_DIR)" ; then \
+ echo "Invalid target $@" ; \
+ exit 1 ; \
+ fi
+ $(Q)$(MAKE) $($(call uppercase,$*)_DIR)$@
+