Skip to contentSkip to conversation

idirafter causes host sha256.h to be included

U-Boot Jeroen Hofstee 2 participants 4 messages May 9, 2014 – May 27, 2014

lore
Share & tools
lore
#0 lore raw

Hello,

tools/Makefile uses the following substitution

HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \
		$(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \
		...

Which adds -idirafterinclude when compiling image-fit.c. Since mentioned file includes sha256.h, which is a system include on FreeBSD, the system version is included instead of the intended U-boot include/sha256.h and building fails. Without the substitution it builds successfully.

What is the intention of using idirafter?

Regards,
Jeroen

#1 lore raw

+Masahiro

Hi Jeroen,

Quoted 8 lines · Jeroen Hofstee

Hello,

tools/Makefile uses the following substitution

HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \
                $(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \
                ...
Quoted 7 lines

Which adds -idirafterinclude when compiling image-fit.c. Since mentioned file includes sha256.h, which is a system include on FreeBSD, the system version is included instead of the intended U-boot include/sha256.h and building fails. Without the substitution it builds successfully.

What is the intention of using idirafter?

I believe this is so that U-Boot headers are available when building. You might need to add a work-around like we have for libfdt_env.h. It is also possible that there is a more general solution, sorry I'm not sure what it might be.

Regards,
Simon

#2 lore raw

Hello Simon,

Quoted 15 lines · Simon Glass
Quoted 14 lines · Jeroen Hofstee

Hello,

tools/Makefile uses the following substitution

HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \
                $(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \
                ...

Which adds -idirafterinclude when compiling image-fit.c. Since mentioned file includes sha256.h, which is a system include on FreeBSD, the system version is included instead of the intended U-boot include/sha256.h and building fails. Without the substitution it builds successfully.

Quoted 7 lines
Quoted 1 line

What is the intention of using idirafter?

I believe this is so that U-Boot headers are available when building. You might need to add a work-around like we have for libfdt_env.h. It is also possible that there is a more general solution, sorry I'm not sure what it might be.

Thanks for mentioning the libfdt_env.h. As mentioned in the thread discussing the patch errno.h is one of the reasons to require the dirafter, since the tools need the host version of it. A possible solution could perhaps be to place such standard headers in a separate directory and only include it for an u-boot build. The tools can then be compiled without the idirafter and not including this location as an include path.

Regards,
Jeroen

#3 lore raw

Hi Jeroen,

Quoted 27 lines · Jeroen Hofstee

Hello Simon,

Quoted 15 lines · Simon Glass
Quoted 14 lines · Jeroen Hofstee

Hello,

tools/Makefile uses the following substitution

HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \
                $(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \
                ...

Which adds -idirafterinclude when compiling image-fit.c. Since mentioned file includes sha256.h, which is a system include on FreeBSD, the system version is included instead of the intended U-boot include/sha256.h and building fails. Without the substitution it builds successfully.

Quoted 7 lines
Quoted 1 line

What is the intention of using idirafter?

I believe this is so that U-Boot headers are available when building. You might need to add a work-around like we have for libfdt_env.h. It is also possible that there is a more general solution, sorry I'm not sure what it might be.

Quoted 7 lines

Thanks for mentioning the libfdt_env.h. As mentioned in the thread discussing the patch errno.h is one of the reasons to require the dirafter, since the tools need the host version of it. A possible solution could perhaps be to place such standard headers in a separate directory and only include it for an u-boot build. The tools can then be compiled without the idirafter and not including this location as an include path.

I did originally write a patch which might have solved this problem - it force the build to use U-Boot headers except for a few special cases. You might be able to find it in patchwork (archived?) But I think Masahiro came up with what I thought was a better way - more general purpose than my patch. You have I think the opposite problem to what I was facing. I'm not sure of the best general approach now. I suggest you experiment and see if you can come up with a suitable patch.

Regards,
Simon