Skip to content

Commit

Permalink
Add support for Windows on Arm64 (WoA).
Browse files Browse the repository at this point in the history
A new launcher fragment for WoA is added:
'org.eclipse.equinox.launcher.win32.win32.aarch64'

To support the new security fragment for WoA, the previous
'org.eclipse.equinox.security.win32.x86_64' fragment is split
into 3 fragments, all having the common host plugin
'org.eclipse.equinox.security':

'org.eclipse.equinox.security.win32': new fragment containing the
(existing) Java code and extension points common to all Windows
platforms; it also stores the C++ code and the Visual Studio project
file jnicrypt.vcxproj to generate the jnicrypt64.dll native libraries
for all Windows platforms, and

'org.eclipse.equinox.security.win32.x86_64': the existing fragment,
now reduced to just contributing the (existing) jnicrypt64.dll native
library for x64 platform, and

'org.eclipse.equinox.security.win32.aarch64': the new fragment
to contribute the newly-generated jnicrypt64.dll native library for
Arm64 platform.

Various features are also updated to include the new fragments.

To build the Equinox launcher binaries for WoA:

cd features\org.eclipse.equinox.executable.feature\library\win32
ant clean build_eclipse -Dnative=win32.win32.aarch64 -Dos=win32 -Dws=win32 -Darch=aarch64

and the following launcher binaries for WoA are generated in the current
directory:

eclipse.exe
eclipse_11900.dll
eclipsec.exe

These WoA binaries need be manually moved over to the 'equinox.binaries'
repo, to their correct directories as followed:

org.eclipse.equinox.executable\bin\win32\win32\aarch64\eclipse.exe
org.eclipse.equinox.executable\bin\win32\win32\aarch64\eclipsec.exe
org.eclipse.equinox.launcher.win32.win32.aarch64\eclipse_11900.dll

To build the 'jnicrypt64.dll' native for WoA, load the following MSVC
project file into MS Visual Studio:

bundles\org.eclipse.equinox.security.win32\cpp\jnicrypt.vcxproj

and build it for the 'Release|arm64' configuration. The resulting
'jnicrypt64.dll' file should be moved to its correct place:

bundles\org.eclipse.equinox.security.win32.aarch64\jnicrypt64.dll
  • Loading branch information
chirontt committed Mar 21, 2024
1 parent 2b8d1dc commit bf27f2a
Show file tree
Hide file tree
Showing 48 changed files with 1,830 additions and 492 deletions.
22 changes: 22 additions & 0 deletions bundles/org.eclipse.equinox.launcher.win32.win32.aarch64/.project
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.equinox.launcher.win32.win32.aarch64</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -0,0 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.aarch64;singleton:=true
Bundle-Version: 1.2.900.qualifier
Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.5.0,1.7.0)"
Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=aarch64))
Bundle-Localization: launcher.win32.win32.aarch64
Eclipse-BundleShape: dir
@@ -0,0 +1,36 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>About</title>
</head>
<body lang="EN-US">
<h2>About This Content</h2>

<p>November 30, 2017</p>
<h3>License</h3>

<p>
The Eclipse Foundation makes available all content in this plug-in
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>

<p>
If you did not receive this Content directly from the Eclipse
Foundation, the Content is being redistributed by another party
(&quot;Redistributor&quot;) and different terms and conditions may
apply to your use of any object code in the Content. Check the
Redistributor's license that was provided with the Content. If no such
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
href="http://www.eclipse.org/">http://www.eclipse.org</a>.
</p>

</body>
</html>
@@ -0,0 +1,25 @@
###############################################################################
# Copyright (c) 2023, 2024 Eclipse Foundation.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Tue Ton - initial API and implementation
###############################################################################
bin.includes = META-INF/,\
launcher.win32.win32.aarch64.properties,\
about.html

generateSourceBundle=false
binaryTag=v20240129-1338

# Maven properties, see https://github.com/eclipse/tycho/wiki/Tycho-Pomless
tycho.pomless.parent = ../../launcher-binary-parent
pom.model.property.os = win32
pom.model.property.ws = win32
pom.model.property.arch = aarch64
@@ -0,0 +1,15 @@
###############################################################################
# Copyright (c) 2023, 2024 Eclipse Foundation.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Tue Ton - initial API and implementation
###############################################################################
pluginName = Equinox Launcher Win32 Arm64 Fragment
providerName = Eclipse.org - Equinox
7 changes: 7 additions & 0 deletions bundles/org.eclipse.equinox.security.win32.aarch64/.classpath
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
34 changes: 34 additions & 0 deletions bundles/org.eclipse.equinox.security.win32.aarch64/.project
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.equinox.security.win32.aarch64</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
line.separator=\n

0 comments on commit bf27f2a

Please sign in to comment.