Skip to content

Conversation

@jdavidson89
Copy link

@jdavidson89 jdavidson89 commented Jan 4, 2026

This PR adds ARM64 platform support for RAIntegration.

Changes included:

  • Added ARM64 configuration to the solution and project files
  • Updated the VC toolset for the ARM64 configuration to the latest(v145)
  • Added RAPIDJSON_ENDIAN=RAPIDJSON_LITTLEENDIAN to fix endianness detection
  • Verified successful build on Windows ARM64
    Note: This PR does not modify Win32 or x64 configurations. All changes are isolated to the new ARM64 platform.

@jdavidson89
Copy link
Author

The build is successful and executes correctly when applying my changes to the source tree, when building my fork the build is 1 kb smaller and doesn't have proper versioning info so builds successfully but fails to execute.

Copy link
Member

@Jamiras Jamiras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the goal state for this? Are you planning to make an ARM64 build of RALibretro or another emulator to consume it?

<ConfigurationType>StaticLibrary</ConfigurationType>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VS2026 has only been out for a couple weeks and I haven't upgraded yet. I don't know if the CI builds will support it either. Please leave these as v143.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update the logic in RA_Version.rc so the properties dialog will properly report the DLL as ARM64.

#ifdef _WIN64
#define RA_INTEGRATION_VERSION_PRODUCT_ARCH RA_INTEGRATION_VERSION_PRODUCT " (x64)"
#define RA_INTEGRATION_ORIGINAL_FILENAME "RA_Integration-x64.dll"
#else
#define RA_INTEGRATION_VERSION_PRODUCT_ARCH RA_INTEGRATION_VERSION_PRODUCT " (x86)"
#define RA_INTEGRATION_ORIGINAL_FILENAME "RA_Integration.dll"
#endif

<ConfigurationType>DynamicLibrary</ConfigurationType>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few lines up from here, please update the logic to set the TargetName to RA_Integration-ARM64.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will check these changes out when I next get a chance to, I can also revert to v143 that was simply as that was the toolset I had installed I will reupload and yes I have working builds of rasnes9x and rapplewin and am working at porting more over as well, just submitting so you can add a working architecture to your codebase if you so wish to but I will clean it up accordingly. Thank you for your feedback.

@jdavidson89
Copy link
Author

So I am going to start with apologising as I am going to close this PR, this was my first PR and I can't figure how to update my changes that you requested, I will list them here so if you wish to use them though again it won't build properly in my fork but applied to the master tree this will add a clean labelled arm64 build using v143 of msvc, I am not sure if you are one of the maintainers of other RA trees I do have a working RAsnes9x and RAppleWin build for arm64 as well and am working on RAnes and RAProject64 but I am wasiting time wrestling with github and it is just leaving me not even wanting to contribute

for the sln if you just never change the versioning at the beginning it stays at v143, for the adding the arm64 string

#if defined(_M_ARM64) || defined(ARM64)
#define RA_INTEGRATION_VERSION_PRODUCT_ARCH RA_INTEGRATION_VERSION_PRODUCT " (ARM64)"
#define RA_INTEGRATION_ORIGINAL_FILENAME "RA_Integration-arm64.dll"
#elif defined(_WIN64)
#define RA_INTEGRATION_VERSION_PRODUCT_ARCH RA_INTEGRATION_VERSION_PRODUCT " (x64)"
#define RA_INTEGRATION_ORIGINAL_FILENAME "RA_Integration-x64.dll"
#else
#define RA_INTEGRATION_VERSION_PRODUCT_ARCH RA_INTEGRATION_VERSION_PRODUCT " (x86)"
#define RA_INTEGRATION_ORIGINAL_FILENAME "RA_Integration.dll"
#endif

I also added the macro of _M_ARM64 to the preprocessor flags RA_INTEGRATION exports under Resources => General

and the build name was hardcoded in the ARM64 to RA_Integration-x64 under the Configuration Properties => General tab so I changed that for the ARM64 build(I copied the x64 build for the ARM64 version)

those changes accomplish the changes you requested and will successfully build win32 x64 and ARM64 named all appropriately, I am sorry I will have to work on learning the github workflow better if i am to try to use this tool again though I likely will not be using github again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants