Re: byteswap.h not found on 12 and 13

From: Warner Losh <imp_at_bsdimp.com>
Date: Fri, 24 Mar 2023 09:09:58 UTC
one last reply, if this is for a port, then byteswap.h can usually be
implemented as

#include <sys/endian.h>
#define __bswap_16(x) __bswap16(x)
#define __bswap_32(x) __bswap32(x)
#define __bswap_64(x) __bswap64(x)

#define bswap_16(x) __bswap16(x)
#define bswap_32(x) __bswap32(x)
#define bswap_64(x) __bswap64(x)

in older versions of FreeBSD, but some tricky software will hate the
bswap16 (no underscore) etc defines. You could likely put that into the
port.

Warner

On Fri, Mar 24, 2023 at 3:01 AM Warner Losh <imp@bsdimp.com> wrote:

> And I just looked it up... unlike endian.h, byteswap.h is not in the draft
> I have of issue 8 posix (due out this year or next, give or take).
>
> Warner
>
> On Fri, Mar 24, 2023 at 2:57 AM Warner Losh <imp@bsdimp.com> wrote:
>
>> Yea, I just committed this
>>
>> commit 1761b09bf42d2842e82c1ac614c23d31c4d4c0dc
>> Author: Warner Losh <imp@FreeBSD.org>
>> Date:   Fri Jan 20 16:33:37 2023 -0700
>>
>>     byteswap.h: Add a glibc/linux compatible byteswap.h
>>
>>     For endian.h to work instead of sys/endian.h, some software needs
>>     byteswap.h available. It must define {__,}byteswap_{16,32,64}.
>>     Included sys/_endian.h to get an appropriate __byteswap16, etc
>>     and defines the new macros in terms of them. Enhance _endian.h
>>     to allow it to be included from here too.
>>
>>     Sponsored by:           Netflix
>>     Reviewed by:            markj
>>     Differential Revision:  https://reviews.freebsd.org/D32051
>>
>> which I MFC'd to 13, but after 13.1R and this isn't a good EN candidate.
>> I've not bothered with stable/12 because I'm lame and have stopped MFCing
>> stuff to it except critical fixes.
>>
>> Long term: this will make life better. Short term, it's less good since
>> we have to still do old-school compatibility.
>>
>> I likely should write a man page for endian.h and byteswap.h
>>
>> Warner
>>
>> On Fri, Mar 24, 2023 at 2:48 AM Yuri <yuri@aetern.org> wrote:
>>
>>> Nuno Teixeira wrote:
>>> > Hello Warner,
>>> >
>>> > My poudriere jails:
>>> > ---
>>> > 124amd64   12.4-RELEASE-p2      amd64         http         2023-03-17
>>> > 08:04:15 /usr/local/poudriere/jails/124amd64
>>> > 124i386    12.4-RELEASE-p2      i386          http         2023-03-17
>>> > 08:04:38 /usr/local/poudriere/jails/124i386
>>> > 131amd64   13.1-RELEASE-p7      amd64         http         2023-03-17
>>> > 08:05:03 /usr/local/poudriere/jails/131amd64
>>> > ---
>>> >
>>> > The strange thing is that 5.08 (old version) have #include <byteswap.h>
>>> > too and compiles fine|:
>>> > |
>>> > https://github.com/sflow/sflowtool/issues/41
>>> > <https://github.com/sflow/sflowtool/issues/41>
>>>
>>> 5.08 seems to have it commented out:
>>>
>>> sflowtool-5.08/src/sflowtool.c:
>>>
>>> /*
>>> #ifdef DARWIN
>>> #include <architecture/byte_order.h>
>>> #define bswap_16(x) NXSwapShort(x)
>>> #define bswap_32(x) NXSwapInt(x)
>>> #else
>>> #include <byteswap.h>
>>> #endif
>>> */
>>>
>>>
>>> > Warner Losh <imp@bsdimp.com <mailto:imp@bsdimp.com>> escreveu no dia
>>> > sexta, 24/03/2023 à(s) 08:30:
>>> >
>>> >
>>> >
>>> >     On Fri, Mar 24, 2023, 9:23 AM Nuno Teixeira <eduardo@freebsd.org
>>> >     <mailto:eduardo@freebsd.org>> wrote:
>>> >
>>> >         Hello all,
>>> >
>>> >         I'm getting a file not found on 12 and 13 compiling
>>> >         net/sflowtool latest update:
>>> >         It compile fine on 14.
>>> >
>>> >         I've searched 14 src and found:
>>> >         ---
>>> >         ./include/byteswap.h
>>> >         ./contrib/ofed/include/byteswap.h
>>> >         ./contrib/llvm-project/libcxx/include/__bit/byteswap.h
>>> >         ---
>>> >         Any clues?
>>> >
>>> >
>>> >
>>> >     I added it a short time ago. I thought I mfc'd it to 13 but not 12.
>>> >     How recent a 13? It's a non standard glibc extension that may be in
>>> >     the next posix standard though. I've not looked at the draft for it
>>> >     yet to see if it complies or not.
>>> >
>>> >     Warner
>>> >
>>> >         Thanks,
>>> >
>>> >         ---
>>> >         ===>  Building for sflowtool-6.01
>>> >         --- all ---
>>> >         /usr/bin/make  all-recursive
>>> >         --- all-recursive ---
>>> >         Making all in src
>>> >         --- sflowtool.o ---
>>> >         cc -DHAVE_CONFIG_H -I. -I..      -O2 -pipe
>>> >          -fstack-protector-strong -fno-strict-aliasing -MT sflowtool.o
>>> >         -MD -MP -MF .deps/sflowtool.Tpo -c -o sflowtool.o sflowtool.c
>>> >         sflowtool.c:32:10: fatal error: 'byteswap.h' file not found
>>> >         #include <byteswap.h>
>>> >                  ^~~~~~~~~~~~
>>> >         1 error generated.
>>> >         *** [sflowtool.o] Error code 1
>>> >         ---
>>> >
>>> >
>>> >         --
>>> >         Nuno Teixeira
>>> >         FreeBSD Committer (ports)
>>> >
>>> >
>>> >
>>> > --
>>> > Nuno Teixeira
>>> > FreeBSD Committer (ports)
>>>
>>>