[question] how is include path selected when compiling a .c file?
Chan Kim
ckim at etri.re.kr
Thu Dec 16 03:51:47 CET 2021
Hello,
For example In file arch/arm/cpu/arm1136/mx31/timer.c, I see
#include <common.h>
#include <init.h>
#include <asm/arch/imx-regs.h>
#include <asm/io.h>
There are 13 files named common.h files and 4405 files doing '#include
<common.h>'.
I can guess what file it is including but can't figure out exactly how the
default include path (-I cflag ) is set for each .c file.
I know the top Makefile has this line.
UBOOTINCLUDE := \
-Iinclude \
$(if $(KBUILD_SRC), -I$(srctree)/include) \
$(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \
$(if $(CONFIG_HAS_THUMB2), \
$(if $(CONFIG_CPU_V7M), \
-I$(srctree)/arch/arm/thumb1/include), \
-I$(srctree)/arch/arm/thumb1/include)) \
-I$(srctree)/arch/$(ARCH)/include \
-include $(srctree)/include/linux/kconfig.h
And some other lower Makefiles additively add -I option according to the
configuration.
But still can't figure it out.
For example in the above arch/arm/cpu/arm1136/mx31/timer.c file, I guess the
#include <asm/arch/imx-regs.h>
Is including ./arch/arm/include/asm/arch-mx31/imx-regs.h. Could anyone
explain it to me?
Thank you!
Chan Kim
More information about the U-Boot
mailing list