On Mon, Apr 27, 2026 at 02:43:20PM -0500, Nathan Bossart wrote:
> On Sun, Apr 26, 2026 at 09:31:37PM -0500, Nathan Bossart wrote:
>> On Sun, Apr 26, 2026 at 10:18:33PM -0400, Tom Lane wrote:
>>> I previously suggested that we should teach the build systems not
>>> to build the foo_x86 and foo_aarch64 modules when not on those
>>> architectures. That was shot down for reasons that made no great
>>> amount of sense to me, but I think it'd be fairly easy and clean.
>>
>> Yeah, AFAICT that's our best bet. Will write it up in the morning.
>
> Here's what I have so far. Two notes:
>
> * Since pg_popcount_aarch64.c only builds symbols when USE_NEON is defined,
> I needed to teach the build code about that #define. So, this patch
> effectively moves USE_NEON and USE_SSE2 from c.h to pg_config.h, which
> happens to be the first #include within c.h. The reason that I bring this
> up is because back-patching it seems a little scary, although I don't see
> any concrete reasons it would be unsafe.
>
> * pg_cpu_x86.c has a similar problem, which I haven't fixed yet.
> Presumably a similar approach will work there. I've added John Naylor to
> this thread for his thoughts.
Sorry, I noticed I was using USE_SSE2 for choosing whether to build
pg_popcount_x86.c, but the code in that file is actually surrounded by
HAVE_X86_64_POPCNTQ. New patch attached.
--
nathan