[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.15] autoconf: check endian.h include path
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. >>>> 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. As a result I wonder whether we shouldn't check that the header provides what we need. Jan > If we think that's > the right precedence I can adjust AX_FIND_HEADER to be: > > AX_FIND_HEADER([INCLUDE_ENDIAN_H], [sys/endian.h endian.h]) > > Which will achieve the same as your proposed snipped. > > I can also add a comment to the macro that the first match will be the > one that gets set. > > Thanks, Roger. >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |