Enable out-of-tree builds without modifying the source tree. Out-of-tree builds are required by build frameworks such as OpenEmbedded. Signed-off-by: Maxin John --- Makefile | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 2652fac4e6ee..fbbc3042cd37 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,8 @@ MAKEFLAGS += --no-print-directory +SRCDIR := $(dir $(lastword $(MAKEFILE_LIST))) +VPATH := $(SRCDIR) + PREFIX ?= /usr SBINDIR ?= $(PREFIX)/sbin MANDIR ?= $(PREFIX)/share/man @@ -21,7 +24,11 @@ CFLAGS += -D__SANE_USERSPACE_TYPES__ CFLAGS += $(CFLAGS_EVAL) CFLAGS += $(EXTRA_CFLAGS) -_OBJS := $(sort $(patsubst %.c,%.o,$(wildcard *.c))) +CPPFLAGS += -I$(SRCDIR) +CPPFLAGS += -I. + +_SRCS := $(wildcard $(SRCDIR)/*.c) +_OBJS := $(sort $(patsubst $(SRCDIR)/%.c,%.o,$(_SRCS))) VERSION_OBJS := $(filter-out version.o, $(_OBJS)) OBJS := $(VERSION_OBJS) version.o @@ -92,16 +99,18 @@ endif all: $(ALL) -version.c: version.sh $(patsubst %.o,%.c,$(VERSION_OBJS)) nl80211.h iw.h Makefile \ - $(wildcard .git/index .git/refs/tags) +version.c: $(SRCDIR)/version.sh \ + $(patsubst %.o,$(SRCDIR)/%.c,$(VERSION_OBJS)) \ + $(SRCDIR)/nl80211.h $(SRCDIR)/iw.h $(SRCDIR)/Makefile \ + $(wildcard $(SRCDIR)/.git/index $(SRCDIR)/.git/refs/tags) @$(NQ) ' GEN ' $@ - $(Q)./version.sh $@ + $(Q)$(SRCDIR)/version.sh $@ -nl80211-commands.inc: nl80211.h +nl80211-commands.inc: $(SRCDIR)/nl80211.h @$(NQ) ' GEN ' $@ - $(Q)sed 's%^\tNL80211_CMD_%%;t n;d;:n s%^\([^=]*\),.*%\t[NL80211_CMD_\1] = \"\L\1\",%;t;d' nl80211.h | grep -v "reserved" > $@ + $(Q)sed 's%^\tNL80211_CMD_%%;t n;d;:n s%^\([^=]*\),.*%\t[NL80211_CMD_\1] = \"\L\1\",%;t;d' $(SRCDIR)/nl80211.h | grep -v "reserved" > $@ -%.o: %.c iw.h nl80211.h nl80211-commands.inc +%.o: %.c $(SRCDIR)/iw.h $(SRCDIR)/nl80211.h nl80211-commands.inc @$(NQ) ' CC ' $@ $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< -- 2.47.3