diff mbox

configure: Check for libfdt version 1.4.0

Message ID 1431935001-15678-1-git-send-email-thuth@redhat.com
State New
Headers show

Commit Message

Thomas Huth May 18, 2015, 7:43 a.m. UTC
Some recent patches require functions from libfdt version 1.4.0,
so we should check for this version during the configure step
already. Unfortunately, there does not seem to be a proper #define
for the version number in the libfdt headers. So alternatively, we
check for the availability of the fdtXX_t types instead which have
just been introduced with version 1.4.0.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 configure | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

David Gibson May 25, 2015, 1:35 a.m. UTC | #1
On Mon, May 18, 2015 at 09:43:21AM +0200, Thomas Huth wrote:
> Some recent patches require functions from libfdt version 1.4.0,
> so we should check for this version during the configure step
> already. Unfortunately, there does not seem to be a proper #define
> for the version number in the libfdt headers. So alternatively, we
> check for the availability of the fdtXX_t types instead which have
> just been introduced with version 1.4.0.

Um.. I'm confused by this.  As far as I can recall the fdtXX_t types
have been in libfdt since.. well, forever, basically.

> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  configure | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/configure b/configure
> index b18aa9e..87a5bbc 100755
> --- a/configure
> +++ b/configure
> @@ -3091,9 +3091,10 @@ fi
>  if test "$fdt" != "no" ; then
>    fdt_libs="-lfdt"
>    # explicitly check for libfdt_env.h as it is missing in some stable installs
> +  # and also test for fdtXX_t to make sure we are on a version >= 1.4.0
>    cat > $TMPC << EOF
>  #include <libfdt_env.h>
> -int main(void) { return 0; }
> +int main(void) { fdt32_t x = 0; return x; }
>  EOF
>    if compile_prog "" "$fdt_libs" ; then
>      # system DTC is good - use it
> @@ -3111,7 +3112,7 @@ EOF
>      fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
>    elif test "$fdt" = "yes" ; then
>      # have neither and want - prompt for system/submodule install
> -    error_exit "DTC (libfdt) not present. Your options:" \
> +    error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
>          "  (1) Preferred: Install the DTC (libfdt) devel package" \
>          "  (2) Fetch the DTC submodule, using:" \
>          "      git submodule update --init dtc"
Peter Maydell May 25, 2015, 12:30 p.m. UTC | #2
On 25 May 2015 at 02:35, David Gibson <david@gibson.dropbear.id.au> wrote:
> On Mon, May 18, 2015 at 09:43:21AM +0200, Thomas Huth wrote:
>> Some recent patches require functions from libfdt version 1.4.0,
>> so we should check for this version during the configure step
>> already. Unfortunately, there does not seem to be a proper #define
>> for the version number in the libfdt headers. So alternatively, we
>> check for the availability of the fdtXX_t types instead which have
>> just been introduced with version 1.4.0.
>
> Um.. I'm confused by this.  As far as I can recall the fdtXX_t types
> have been in libfdt since.. well, forever, basically.

There's no such typedef in the libfdt that QEMU is currently
using (which I think is 1.3.0). It looks like they were added
in this commit:
https://git.kernel.org/cgit/utils/dtc/dtc.git/commit/libfdt/libfdt_env.h?id=feafcd972cb744750a65728440c99526e6199a6d
in early 2013.

QEMU took a copy of the dtc module in April 2013, at which
point we used 1.3.0 as the most recently tagged stable version.

thanks
-- PMM
David Gibson May 26, 2015, 2:57 a.m. UTC | #3
On Mon, May 25, 2015 at 01:30:11PM +0100, Peter Maydell wrote:
> On 25 May 2015 at 02:35, David Gibson <david@gibson.dropbear.id.au> wrote:
> > On Mon, May 18, 2015 at 09:43:21AM +0200, Thomas Huth wrote:
> >> Some recent patches require functions from libfdt version 1.4.0,
> >> so we should check for this version during the configure step
> >> already. Unfortunately, there does not seem to be a proper #define
> >> for the version number in the libfdt headers. So alternatively, we
> >> check for the availability of the fdtXX_t types instead which have
> >> just been introduced with version 1.4.0.
> >
> > Um.. I'm confused by this.  As far as I can recall the fdtXX_t types
> > have been in libfdt since.. well, forever, basically.
> 
> There's no such typedef in the libfdt that QEMU is currently
> using (which I think is 1.3.0). It looks like they were added
> in this commit:
> https://git.kernel.org/cgit/utils/dtc/dtc.git/commit/libfdt/libfdt_env.h?id=feafcd972cb744750a65728440c99526e6199a6d
> in early 2013.

Ah, duh, I was mixing up the fdtXX_t _types_ which were introduced
with sparse annotations with the fdtXX_to_cpu functions/macros which
have been around since forever.

Still, I think looking at the actual exported functions is a better
idea than looking at the types - which I see Thomas has already done
in his latest spin.
diff mbox

Patch

diff --git a/configure b/configure
index b18aa9e..87a5bbc 100755
--- a/configure
+++ b/configure
@@ -3091,9 +3091,10 @@  fi
 if test "$fdt" != "no" ; then
   fdt_libs="-lfdt"
   # explicitly check for libfdt_env.h as it is missing in some stable installs
+  # and also test for fdtXX_t to make sure we are on a version >= 1.4.0
   cat > $TMPC << EOF
 #include <libfdt_env.h>
-int main(void) { return 0; }
+int main(void) { fdt32_t x = 0; return x; }
 EOF
   if compile_prog "" "$fdt_libs" ; then
     # system DTC is good - use it
@@ -3111,7 +3112,7 @@  EOF
     fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
   elif test "$fdt" = "yes" ; then
     # have neither and want - prompt for system/submodule install
-    error_exit "DTC (libfdt) not present. Your options:" \
+    error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
         "  (1) Preferred: Install the DTC (libfdt) devel package" \
         "  (2) Fetch the DTC submodule, using:" \
         "      git submodule update --init dtc"