CC := $(CROSS)gcc AR := $(CROSS)ar RANLIB := $(CROSS)ranlib # Stolen from Linux build system 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) CPPFLAGS += -D_FILE_OFFSET_BITS=64 DESTDIR ?= /usr/local PREFIX=/usr EXEC_PREFIX=$(PREFIX) SBINDIR=$(EXEC_PREFIX)/sbin MANDIR=$(PREFIX)/share/man INCLUDEDIR=$(PREFIX)/include ifndef BUILDDIR ifeq ($(origin CROSS),undefined) BUILDDIR := $(PWD) else # Remove the trailing slash to make the directory name BUILDDIR := $(PWD)/$(CROSS:-=) endif endif override BUILDDIR := $(patsubst %/,%,$(BUILDDIR)) override TARGETS := $(addprefix $(BUILDDIR)/,$(TARGETS)) SUBDIRS_ALL = $(patsubst %,subdirs_%_all,$(SUBDIRS)) SUBDIRS_CLEAN = $(patsubst %,subdirs_%_clean,$(SUBDIRS)) SUBDIRS_INSTALL = $(patsubst %,subdirs_%_install,$(SUBDIRS)) all:: $(TARGETS) $(SUBDIRS_ALL) clean:: $(SUBDIRS_CLEAN) rm -f $(BUILDDIR)/*.o $(TARGETS) $(BUILDDIR)/.*.c.dep install:: $(TARGETS) $(SUBDIRS_INSTALL) %: %.o $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_$(notdir $@)) -g -o $@ $^ $(LDLIBS) $(LDLIBS_$(notdir $@)) $(BUILDDIR)/%.a: $(AR) crv $@ $^ $(RANLIB) $@ $(BUILDDIR)/%.o: %.c ifneq ($(BUILDDIR),$(CURDIR)) mkdir -p $(dir $@) endif $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< -g -Wp,-MD,$(BUILDDIR)/.$(