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

Re: [PATCH for-4.15] autoconf: check endian.h include path


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Thu, 4 Feb 2021 11:48:03 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2DCLPw0EZVdmn6tpWD9PAmPRAJ5PBP0XB9YN0Xc3Qwc=; b=NwumBXOWBqIhQcerh3lPwQCbMxeHJXZnrTKRacc1C85h8XC/3yLFu79SHffPqy3MMBxkwd5Lq6CWO4Q+aWlbvNNZBqeW4gHh0jE+sYxKFlbhxtnH9AhEI5RDBJEA0HXQb/XKauzEocuqVxj68Hxk8nsWt2U6j04GScFxY3C8yRlCFSPBv9hPAejf3oMAYYu4EgTF/1DYhzDzPhRvczzL066tgUd5xqmqlWOrEqt5qLShA/XbvzakOUlYRu/wffviwfKgv1wTRNv0hq8kJ0SqOOdZAGZORaMc6QZiWcs0lxEIXThxwvNLihigRuT2pKsWDVyL9XjxGWFdMa54b07zZQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=STjRF+LbkoUCpnv8Fki8bBlgAE/XUW5DRgubGXaZe2V6s8Cwh88XeHJF74PCWFOU6U7Y9rpOyw6lNyJOUbNjWrwDyl4LEpS4fMXvnhpOnfbVSxGJjGQBUJIopF6uKYldqdEveHZHsuZHqjgqboIIxf6DWjN3qUwmL9z2S8pNQFfraC11aNHlqa+M+oXFPIrT2EsxOlefnWkjSDrFG1cxeVES0A6j2bcN20PAy8Pzdj9VToIpoa7CqF1aOuI4+YOs4BhmRe7npiujJtcDm6l9XH+ZHwuN/Or07iFNLA0MWOiTzawUneaP/3l9YyfGM2U/BYtIDpy0t7DHkjuLX1gRBQ==
  • Authentication-results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 04 Feb 2021 10:48:20 +0000
  • Ironport-sdr: z6PTq0dhPH8pBPi1dLnC5vRBrvTNK4wgnYjP8WFO9zjNmqMAYwZmACVYBxsakNAv+dEGxidaWF 5UTqbsnEuTCmorerPcGD9V6GXxzfIZ1QHueu1sx0cChnwJrhCgbe9WJ2eOHvZFAKHcKWNtvQWx /pEbHGOl45vFeXInREzHTArFyb44+o0JfFQyeS/HdU2mVaQSHd3JA3dnt4JwWtJaI8S5nqv4m7 cJvADIpPIP3+HDDDhOWg21zo7v6SlMLWpWKNEY3azcnC4Zta1nS24wU8t9CnKDm5ytlIxcF/H2 /i4=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Thu, Feb 04, 2021 at 11:32:41AM +0100, Jan Beulich wrote:
> On 04.02.2021 11:21, Roger Pau Monné wrote:
> > On Thu, Feb 04, 2021 at 11:13:43AM +0100, Jan Beulich wrote:
> >> On 04.02.2021 10:59, Roger Pau Monné wrote:
> >>> On Thu, Feb 04, 2021 at 10:46:58AM +0100, Jan Beulich wrote:
> >>>> On 04.02.2021 10:38, Roger Pau Monne wrote:
> >>>>> --- a/tools/configure.ac
> >>>>> +++ b/tools/configure.ac
> >>>>> @@ -74,6 +74,7 @@ m4_include([../m4/ax_compare_version.m4])
> >>>>>  m4_include([../m4/paths.m4])
> >>>>>  m4_include([../m4/systemd.m4])
> >>>>>  m4_include([../m4/golang.m4])
> >>>>> +m4_include([../m4/header.m4])
> >>>>>  
> >>>>>  AX_XEN_EXPAND_CONFIG()
> >>>>>  
> >>>>> @@ -517,4 +518,6 @@ AC_ARG_ENABLE([pvshim],
> >>>>>  ])
> >>>>>  AC_SUBST(pvshim)
> >>>>>  
> >>>>> +AX_FIND_HEADER([INCLUDE_ENDIAN_H], [endian.h sys/endian.h])
> >>>>
> >>>> Instead of a new macro, can't you use AC_CHECK_HEADERS()?
> >>>
> >>> AC_CHECK_HEADERS doesn't do what we want here: it will instead produce
> >>> a HAVE_header-file define for each header on the list that's present,
> >>> and the action-if-found doesn't get passed the path of the found
> >>> header according to the documentation.
> >>>
> >>> Here I want the variable to be set to the include path of the first
> >>> header on the list that's present on the system.
> >>
> >> I was thinking of
> >>
> >> #if defined(HAVE_SYS_ENDIAN_H)
> >> # include <sys/endian.h>
> >> #elif defined(HAVE_ENDIAN_H)
> >> # include <endian.h>
> >> #else
> >> # error ...
> >> #endif
> > 
> > I think having to replicate this logic in all places that include
> > endian.h is cumbersome.
> 
> Right - I would further encapsulate this in a local header.

IMO encapsulating in configure achieves the same purpose.

> >>>> I'm also not certain about the order of checks - what if both
> >>>> exist?
> >>>
> >>> With my macro the first one will be picked.
> >>
> >> And which one is to be the first one? IOW how likely is it that
> >> on a system having both the first one is what we're after vs
> >> the second one?
> > 
> > Not sure, but the same will happen with your proposal above: in your
> > chunk sys/endian.h will be picked over endian.h.
> 
> Oh, sure - the two points are entirely orthogonal. And I'm
> also not certain at all whether checking sys/ first is
> better, equal, or worse. I simply don't know what the
> conventions are.

I'm not sure either. For the specific case of endian.h I would
expect only one to be present, and I think we should first check for
top level (ie: endian.h) before checking for subfolders (ie: sys/), as
top level should have precedence.

I really don't have a strong opinion either way, so if there's an
argument to do it the other way around that would also be fine.

> As a result I wonder whether we shouldn't
> check that the header provides what we need.

Right, that would be a step forward I think. I'm not opposed to it,
but I also don't have plans to implement myself. Just checking the
path seem to be fine for the purpose here.

It could be expanded to also use AC_CHECK_DECLS to check for specific
declarations once the header path is found.

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.