CC := $(CROSS)gcc AR := $(CROSS)ar RANLIB := $(CROSS)ranlib # Stolen from Linux build system comma = , try-run = $(shell set -e; ($(1)) >/dev/null 2>&1 && echo "$(2)" || echo "$(3)") cc-option = $(call try-run, $(CC) $(1) -c -xc /dev/null -o /dev/null,$(1),$(2)) CFLAGS ?= -O2 -g WFLAGS := -Wall \ $(call cc-option,-Wextra) \ $(call cc-option,-Wwrite-strings) \ $(call cc-option,-Wno-sign-compare) CFLAGS += $(WFLAGS) SECTION_CFLAGS := $(call cc-option,-ffunction-sections -fdata-sections -Wl$(comma)--gc-sections) CFLAGS += $(SECTION_CFLAGS) ifneq ($(WITHOUT_LARGEFILE), 1) CPPFLAGS += -D_FILE_OFFSET_BITS=64 endif DESTDIR?= PREFIX=/usr EXEC_PREFIX=$(PREFIX) SBINDIR=$(EXEC_PREFIX)/sbin MANDIR=$(PREFIX)/share/man INCLUDEDIR=$(PREFIX)/include ifndef BUILDDIR ifeq ($(origin CROSS),undefined) BUILDDIR := $(CURDIR) else # Remove the trailing slash to make the directory name BUILDDIR := $(CURDIR)/$(CROSS:-=) endif endif override BUILDDIR := $(patsubst %/,%,$(BUILDDIR)) override TARGETS := $(addprefix $(BUILDDIR)/,$(TARGETS)) ifeq ($(V),1) XECHO = @: XPRINTF = @: Q = else XECHO = @echo XPRINTF = @printf Q = @ endif define BECHO $(XPRINTF) ' %-7s %s\n' "$1" "$(subst $(BUILDDIR)/,,$@)" endef all:: $(TARGETS) clean:: rm -f $(BUILDDIR)/*.o $(TARGETS) $(BUILDDIR)/.*.c.dep install:: $(TARGETS) define _mkdep $(BUILDDIR)/$1$2: $(addprefix $(BUILDDIR)/$1,$(obj-$2) $3) $(addprefix $(BUILDDIR)/,$4) endef define mkdep $(call _mkdep,$1,$2,$3 $2.o,$4 lib/libmtd.a) endef %: %.o $(LDDEPS) $(call BECHO,LD) $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_$(notdir $@)) -g -o $@ $^ $(LDLIBS) $(LDLIBS_$(notdir $@)) $(BUILDDIR)/%.a: $(call BECHO,AR) $(Q)$(AR) cr $@ $^ $(Q)$(RANLIB) $@ $(BUILDDIR)/%.o: %.c $(OBJDEPS) ifneq ($(BUILDDIR),$(CURDIR)) $(Q)mkdir -p $(dir $@) endif $(call BECHO,CC) $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< -g -Wp,-MD,$(BUILDDIR)/.$(