From 9e138a0f7e3361fa462aaac4def5c0872496a690 Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Mon, 27 Feb 2012 14:27:42 -0800 Subject: [PATCH] compat: avoid unnecessary recursion to include a file I added recursion call to the same Makefile after noticing that GNU Make *will* fail if a file that is being included does not exist. I also added the option that the file *may* not exist by prepending the inclusion of the file with "-". It turns out that GNU Make is smart enough to look for targets for header files that are included and *will not fail* if it can successfully build that file and include it. I will note that this target file *does not need* to be a dependency to any of the final targets, GNU Make will just assume and add it. It is important to highlight that GNU Make *will* run make against itself again after it builds the file it needs to include. If GNU Make runs into this situation, where it can build the target file it needs to include, it will not fail but you will see something like this pesky warning: Makefile:16: /home/mcgrof/compat/.config: No such file or directory Under new found knowledge of how GNU Make works we simplify the reading and running of the compat Makefile by ensuring that the file we need to include is defined as a target but for sanity and reader's sake (although technically not necessary) we also add the file as a dependency to the modules target building. Furthermore the pesky warning can confuse developers / users and as it turns out we only really need it at build time. We take advantage of the fact that the kernel will use the same Makefile later upon building the external module and that we can identify when this happens in the Makefile [0] and only *require* including the header file upon module building time. [0] the part where ifeq ($(KERNELRELEASE),) is false Signed-off-by: Luis R. Rodriguez --- Makefile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 537d759a72c2..9e676edebd5d 100644 --- a/Makefile +++ b/Makefile @@ -39,15 +39,12 @@ NOSTDINC_FLAGS := -I$(M)/include/ \ -DCOMPAT_PROJECT="\"Generic kernel\"" \ -DCOMPAT_VERSION="\"$(COMPAT_VERSION)\"" +include $(COMPAT_CONFIG) endif -# Recursion lets us ensure we get this file included. -# Trick is to run make -C $(PWD) modules later. --include $(COMPAT_CONFIG) - obj-y += compat/ -all: $(COMPAT_CONFIG) +all: modules modules: $(COMPAT_CONFIG) $(COMPAT_AUTOCONF) $(MAKE) -C $(KLIB_BUILD) M=$(PWD) modules @@ -63,7 +60,6 @@ $(COMPAT_AUTOCONF): $(COMPAT_CONFIG) $(COMPAT_CONFIG): +@$(PWD)/scripts/gen-compat-config.sh > $(COMPAT_CONFIG) - @$(MAKE) -C $(PWD) modules install: modules -- 2.30.2