S specify source directory (when not already in). O specify output directory (when different of current one).
Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com> --- pmd/Makefile | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/pmd/Makefile b/pmd/Makefile index d8eff33..2d66fb7 100644 --- a/pmd/Makefile +++ b/pmd/Makefile @@ -36,19 +36,29 @@ override CPPFLAGS += -Wall -Wextra -Werror override CFLAGS += -fPIC override LDFLAGS += -shared -KMOD_INCLUDE ?= ../kmod +KMOD_INCLUDE ?= $S/../kmod +S ?= . +O ?= . -all : +all : $O/$(SOLIB) + +$O : + mkdir -p $@ + +$O/$(SOLIB) : $S/vmxnet3.c | $O ifeq '$(RTE_INCLUDE)' '' @ echo 'ERROR: RTE_INCLUDE is not set' && false endif $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \ -I$(RTE_INCLUDE) -include $(RTE_INCLUDE)/rte_config.h \ -I$(KMOD_INCLUDE) -I$(KMOD_INCLUDE)/shared \ - -o $(SOLIB) vmxnet3.c + -o $@ $< clean : - rm -f $(SOLIB) + - rm -f $O/$(SOLIB) +ifneq '$(abspath $O)' '$(CURDIR)' + - rmdir -p $O 2>&- +endif help : @ echo 'rules:' @@ -56,6 +66,7 @@ help : @ echo ' clean' @ echo 'build variables:' @ echo ' RTE_INCLUDE (e.g. ../dpdk/build/include),' - @ echo ' CPPFLAGS, CFLAGS, LDFLAGS' + @ echo ' CPPFLAGS, CFLAGS, LDFLAGS,' + @ echo ' S (source directory), O (build directory)' .PHONY : all clean help -- 1.7.10.4