]> git.openfabrics.org - ~tnikolova/compat/.git/commit
compat: avoid unnecessary recursion to include a file
authorLuis R. Rodriguez <mcgrof@frijolero.org>
Mon, 27 Feb 2012 22:27:42 +0000 (14:27 -0800)
committerLuis R. Rodriguez <mcgrof@frijolero.org>
Mon, 27 Feb 2012 22:30:50 +0000 (14:30 -0800)
commit9e138a0f7e3361fa462aaac4def5c0872496a690
tree228b1e31a69a3b046b95c5debce843231915c093
parente2a22de7e6e9c314afb25da49a5fb956120f1f0c
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 <mcgrof@frijolero.org>
Makefile