On Sat, Jan 03, 2015 at 10:10:23AM +1300, Chris Packham wrote: > The linux kernel which carries the source of the device-tree-compiler > and libfdt verbatim makes use of the include guards in libfdt_env.h and > fdt.h to substitute kernel specific versions of the files. Unfortunately > because these hare included in libfdt.h using angle brackets they are > looked for in the "system" header location instead of the same directory > as libfdt.h. This means that any file that includes libfdt.h needs to > have special CFLAGS to add the path containing libfdt_env.h and fdt.h > just so that their contents can be discarded by the include guards. > > By using quotes in libfdt/libfdt.h it picks up fdt.h and libfdt_env.h > from the source directory without needing to add CFLAGS for the sources > that happen to include linux/libfdt.h. > > Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx> > --- > Hi, > > This patch has bounced around a couple of other mailing lists[1] and I've > been directed here. This is a fairly linux-kernel centric problem so I'm > open to other suggestions. The desire has been expressed to avoid having > to have custom CFLAGS[2] just because a file needs to operate on the > flattened device tree. > > Jon had previously mentioned a recollection that the angle brackets were > intentional[3] can anyone confirm or deny this? Sorry it's been so long before I replied. There are a couple of cases I'm concerned about in considering this change: Case 1: libfdt installed as a userspace library Here, libfdt.h, fdt.h and (the userspace version of) libfdt_env.h will be in /usr/include. I can never remember the exact details of how "" include works compared to <> include. If a program the user is writing includes <libfdt.h>, will the "" includes within it correctly find the system installed versions of the other headers? Case 2: Building against a custom libfdt_env.h As you know, libfdt is designed so it can be built with a custom libfdt_env.h to embed it in bootloaders or other unusual environments. The idea is that libfdt_env.h should be the *only* file that needs adjustment in order to embed libfdt, the remaining files should be exactly as included in the libfdt tree. Wouldn't using "" mean that the local environment's libfdt_env.h must be in the same directory as the libfdt.h you're building with, which might be inconvenient if the embedding project wants to include the whole libfdt directory without modification, but store the libfdt_env.h file elsewhere in its tree. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
pgpAwVh7gIt9x.pgp
Description: PGP signature