numam-dpdk/mk/rte.sdkbuild.mk
Thomas Monjalon 984af543c2 mk: fix kernel modules build dependency
Some kernel modules may need some header files to be "installed"
in the build directory.

When running multiple threads of make, kernel modules can try to
be compiled before the lib headers are ready:
	make -j3
	kernel/linux/kni/kni_misc.c:19:37: fatal error:
		exec-env/rte_kni_common.h: No such file or directory

This error appeared recently after moving kernel modules in their
own directory.

Fixes: acaa9ee991 ("move kernel modules directories")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-03-30 13:01:17 +02:00

76 lines
1.8 KiB
Makefile

# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2010-2015 Intel Corporation
#
# include rte.vars.mk if config file exists
#
ifeq (,$(wildcard $(RTE_OUTPUT)/.config))
$(error "need a make config first")
else
include $(RTE_SDK)/mk/rte.vars.mk
endif
# allow exec-env specific targets
-include $(RTE_SDK)/mk/exec-env/$(RTE_EXEC_ENV)/rte.custom.mk
buildtools: | lib
kernel: | lib
drivers: | lib buildtools
app: | lib buildtools drivers
test: | lib buildtools drivers
#
# build and clean targets
#
CLEANDIRS = $(addsuffix _clean,$(ROOTDIRS-y) $(ROOTDIRS-n) $(ROOTDIRS-))
.PHONY: build
build: $(ROOTDIRS-y)
@echo "Build complete [$(RTE_TARGET)]"
.PHONY: clean
clean: $(CLEANDIRS)
@rm -rf $(RTE_OUTPUT)/include $(RTE_OUTPUT)/app \
$(RTE_OUTPUT)/lib \
$(RTE_OUTPUT)/hostlib $(RTE_OUTPUT)/kmod
@[ -d $(RTE_OUTPUT)/include ] || mkdir -p $(RTE_OUTPUT)/include
@$(RTE_SDK)/buildtools/gen-config-h.sh $(RTE_OUTPUT)/.config \
> $(RTE_OUTPUT)/include/rte_config.h
$(Q)$(MAKE) -f $(RTE_SDK)/GNUmakefile gcovclean
@echo Clean complete
.PHONY: test-build
test-build: test
.SECONDEXPANSION:
.PHONY: $(ROOTDIRS-y) $(ROOTDIRS-)
$(ROOTDIRS-y) $(ROOTDIRS-):
@[ -d $(BUILDDIR)/$@ ] || mkdir -p $(BUILDDIR)/$@
@echo "== Build $@"
$(Q)$(MAKE) S=$@ -f $(RTE_SRCDIR)/$@/Makefile -C $(BUILDDIR)/$@ all
@if [ $@ = drivers ]; then \
$(MAKE) -f $(RTE_SDK)/mk/rte.combinedlib.mk; \
fi
%_clean:
@echo "== Clean $*"
$(Q)if [ -f $(RTE_SRCDIR)/$*/Makefile -a -d $(BUILDDIR)/$* ]; then \
$(MAKE) S=$* -f $(RTE_SRCDIR)/$*/Makefile -C $(BUILDDIR)/$* clean ; \
fi
RTE_MAKE_SUBTARGET ?= all
%_sub: $(addsuffix _sub,$(*))
@echo $(addsuffix _sub,$(*))
@[ -d $(BUILDDIR)/$* ] || mkdir -p $(BUILDDIR)/$*
@echo "== Build $*"
$(Q)$(MAKE) S=$* -f $(RTE_SRCDIR)/$*/Makefile -C $(BUILDDIR)/$* \
$(RTE_MAKE_SUBTARGET)
.PHONY: all
all: build
.PHONY: FORCE
FORCE: