Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile SWT natives for Windows on Arm64 (WoA). #1045

Merged

Commits on Mar 29, 2024

  1. Add swt.win32.aarch64 fragment and compile natives for Windows on Arm64

    This adds the org.eclipse.swt.win32.aarch64 fragment and contains
    changes to the build.bat file, to support compiling the SWT natives for
    the Windows on Arm64 (WoA) platform.
    
    On a WoA box, run the following commands to produce the
    SWT natives (swt*.dll) for WoA:
    
      cd binaries\org.eclipse.swt.win32.win32.aarch64
      mvn clean process-resources -Dnative=win32.win32.aarch64
    
    and the swt*.dll files for WoA will be created in the current directory.
    
    Cross-compiling between the x64 and Arm64 platforms, where either of
    them can be host or target, is also possible, after setting up the
    TARGET_ARCH environment variable with correct target architecture value,
    and with the SWT_JAVA_HOME property pointing to an available JDK of
    the target architecture.
    
    For example, to cross-compile on an x64 host and produce SWT natives for
    Arm64 target, run the following commands:
    
      set TARGET_ARCH=arm64
      cd binaries\org.eclipse.swt.win32.win32.aarch64
      mvn clean process-resources -Dnative=win32.win32.aarch64
    -DSWT_JAVA_HOME=\path\to\arm64_jdk
    
    and the swt*.dll files for WoA will be created in the current directory.
    Note the above SWT_JAVA_HOME property in the command line which points
    to an available Arm64 JDK of the target architecture.
    
    Similarly, to cross-compile on an Arm64 host and produce SWT natives for
    x64 target, run the following commands:
    
      set TARGET_ARCH=x64
      cd binaries\org.eclipse.swt.win32.win32.x86_64
      mvn clean process-resources -Dnative=win32.win32.x86_64
    -DSWT_JAVA_HOME=\path\to\x64_jdk
    
    and the swt*.dll files for x64 will be created in the current directory.
    
    Note that for cross-compiling between x64 and Arm64 to work, install the
    MSVC compiler version 2022, with mandatory build tools for both
    platforms included in the installation.
    
    Once the SWT natives for Arm64 are generated, the SWT binaries module's
    files can be produced with the following build commands in current
    directory:
    
      mvn clean verify -DskipTests=true
    
    and the module's jar/zip files will be produced in the target directory:
    
      org.eclipse.swt.win32.win32.aarch64-<version>.jar
      org.eclipse.swt.win32.win32.aarch64-<version>-sources.jar
      swt-<version>-win32-win32-aarch64.zip
    
    Also add the WebView2Loader.dll version 1.0.1150.38 (matching the
    swt.win32.x86_64 fragment), obtained from the NuGet package
    microsoft.web.webview2
    https://nuget.info/packages/Microsoft.Web.WebView2/1.0.1150.38
    located in the sub-folder build/native/arm64
    chirontt authored and HannesWell committed Mar 29, 2024
    Configuration menu
    Copy the full SHA
    22037ec View commit details
    Browse the repository at this point in the history