Re: [RFC/PATCH] libfdt: Use quotes to include header files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux