Re: [PATCH] Add native windows on arm64 support - Mailing list pgsql-hackers

From Dave Cramer
Subject Re: [PATCH] Add native windows on arm64 support
Date
Msg-id CADK3HHK4RVz8oQXiQ_bYiUx1ZXWNbfF+=r5kJ8hhfU8+MD1DOQ@mail.gmail.com
Whole thread Raw
In response to Re: [PATCH] Add native windows on arm64 support  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: [PATCH] Add native windows on arm64 support
List pgsql-hackers


On Thu, 25 Jan 2024 at 12:30, Andrew Dunstan <andrew@dunslane.net> wrote:


On 2024-01-24 We 19:02, Michael Paquier wrote:
On Wed, Jan 24, 2024 at 06:45:21AM -0500, Dave Cramer wrote:
I managed to get it to build the vcvarsall arch needs to be x64. I need to
add some options, but the patch above needs to be applied to build it.
Nice.  If I may ask, what kind of host and/or configuration have you
used to reach a state where the code can be compiled and run tests
with meson?  If you have found specific steps, it may be a good thing
to document that on the wiki, say around [1].

Perhaps you have not included TAP?  It may be fine in terms of runtime
checks and coverage.

[1]: https://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto#Running_on_Windows



I now have an ARM64 machine, so I set up a W11 ARM64 VM. I think we really want to build with x64_arm64, i.e. to generate native arm64 binaries. Setting just x64 will not do that, AIUI.

I tried that with the buidfarm, setting that in the config file's call to PGBuild::VSenv::getenv().

That upset msvc_gendef.pl, so I added this there to keep it happy:

$arch = 'x86_64' if $arch eq 'aarch64';

After that things went ok until I got this:

[1453/2088] "link" @src/backend/postgres.exe.rsp
FAILED: src/backend/postgres.exe src/backend/postgres.pdb
"link" @src/backend/postgres.exe.rsp
   Creating library src\backend\postgres.exe.lib
storage_lmgr_s_lock.c.obj : error LNK2019: unresolved external symbol _mm_pause referenced in function perform_spin_delay
src\backend\postgres.exe : fatal error LNK1120: 1 unresolved externals


I haven't made further progress, but I will return to it in the next day or so.

While this will be nice to have, I think it won't really matter until there is ARM64 support in released versions of Windows Server. AFAICT they still only sell versions for x86_64


I've tried it with my patch attached previously and x64_arm64 and it works fine. builds using the buildfarm as well.

Is there a definitive way to figure out if the binaries are x64_arm64

Dave

pgsql-hackers by date:

Previous
From: "David G. Johnston"
Date:
Subject: [Doc] Improvements to ddl.sgl Privileges Section and Glossary
Next
From: Andrew Dunstan
Date:
Subject: Re: More new SQL/JSON item methods