Skip to content

Commit 92365ba

Browse files
Windows on ARM support (#1506)
1 parent b477e5d commit 92365ba

File tree

239 files changed

+17173
-814
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+17173
-814
lines changed

.github/workflows/ccpp_windows.yml

Lines changed: 202 additions & 74 deletions
Large diffs are not rendered by default.

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,20 @@ bin/macos/*-exec
8989
/modules/qml_engine/nlsQml_engine_automoc.dir/
9090
/modules/text_editor/nlsText_editor_automoc.dir/
9191
/modules/*/builtin/c/x64
92+
/modules/*/builtin/c/ARM64
9293
/modules/*/builtin/c/Debug
9394
/modules/*/builtin/c/Release
9495
/modules/*/builtin/c/Intel_SSA
9596
/modules/*/builtin/c/r000sc
9697
/modules/*/no-src/c/x64
98+
/modules/*/no-src/c/ARM64
9799
/modules/*/no-src/c/Debug
98100
/modules/*/no-src/c/Release
99101
/modules/*/no-builtin/c/x64
102+
/modules/*/no-builtin/c/ARM64
100103
/modules/*/no-builtin/c/Debug
101104
/modules/*/no-builtin/c/Release
105+
/modules/*/src/c/ARM64
102106
/modules/*/src/c/x64
103107
/modules/*/src/c/Debug
104108
/modules/*/src/c/Release
@@ -110,6 +114,7 @@ bin/macos/*-exec
110114
/modules/*/*_automoc.cpp
111115
/modules/gui/nlsGui_automoc.dir
112116
/modules/*/src/c/*/x64
117+
/modules/*/src/c/*/ARM64
113118
/modules/*/src/c/*/Debug
114119
/modules/*/src/c/*/Release
115120
/modules/commons/src/include/Nelson_VERSION.h
@@ -143,22 +148,26 @@ modules/main/help/*/md/gpl-3.0.md
143148
# Main CLI and GUI files
144149
#==============================================================================
145150
/modules/main/nelson_sio_cli/x64
151+
/modules/main/nelson_sio_cli/ARM64
146152
/modules/main/nelson_sio_cli/Debug
147153
/modules/main/nelson_sio_cli/Release
148154
/modules/main/nelson_cli/x64
155+
/modules/main/nelson_cli/ARM64
149156
/modules/main/nelson_cli/Debug
150157
/modules/main/nelson_cli/Release
151158
/modules/main/nelson_cli/Intel_SSA
152159
/modules/main/nelson_cli/*/r000sc
153160
/modules/main/nelson_cli/My Inspector XE Results - Nelson-cli/
154161
/modules/main/nelson_adv_cli/My Inspector XE Results - Nelson-cli/
155162
/modules/main/nelson_adv_cli/x64
163+
/modules/main/nelson_adv_cli/ARM64
156164
/modules/main/nelson_adv_cli/Debug
157165
/modules/main/nelson_adv_cli/Release
158166
/modules/main/nelson_adv_cli/Intel_SSA
159167
/modules/main/nelson_adv_cli/*/r000sc
160168
/modules/main/nelson_adv_cli/My Inspector XE Results - Nelson-cli/
161169
/modules/main/nelson_gui/x64
170+
/modules/main/nelson_gui/ARM64
162171
/modules/main/nelson_gui/Debug
163172
/modules/main/nelson_gui/Release
164173
/modules/main/nelson_gui/Intel_SSA

ARM64-environment.bat

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@echo off
2+
rem =============================================================================
3+
rem Copyright (c) 2016-present Allan CORNET (Nelson)
4+
rem =============================================================================
5+
rem This file is part of Nelson.
6+
rem =============================================================================
7+
rem # LICENCE_BLOCK_BEGIN
8+
rem # SPDX-License-Identifier: LGPL-3.0-or-later
9+
rem # LICENCE_BLOCK_END
10+
rem =============================================================================
11+
rem Save the current directory
12+
set ORIGINAL_DIR=%CD%
13+
rem =============================================================================
14+
rem Set the script's directory as the root path
15+
set BAT_PATH=%~dp0
16+
rem Remove trailing backslash if present
17+
set BAT_PATH=%BAT_PATH:~0,-1%
18+
rem =============================================================================
19+
if not defined QTDIR64 (
20+
for %%i in ("%BAT_PATH%\..\qt_woa64\6.10.1\msvc2022_arm64") do set QTDIR64=%%~fi
21+
)
22+
rem =============================================================================
23+
if not exist "%QTDIR64%" (
24+
echo %QTDIR64% not found.
25+
exit /b 1
26+
)
27+
set QTDIR=%QTDIR64%
28+
rem =============================================================================
29+
if "%~1"=="" (
30+
echo Starting NelSon.sln...
31+
start NelSon.sln
32+
exit /b 0
33+
)
34+
rem =============================================================================
35+
rem Check for the "env-only" parameter
36+
if /i "%~1"=="env-only" (
37+
echo Environment initialized only (QTDIR=%QTDIR%)
38+
exit /b 0
39+
)
40+
rem =============================================================================

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
- Support for Windows on ARM64, including build and installer.
1213
- `onCleanup`: Code executed during function shutdown.
1314

1415
### Changed

NelSon.sln

Lines changed: 628 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -151,18 +151,18 @@ Nelson is delivered under dual-license:
151151

152152
Nelson is tested and supported on a wide range of platforms. **[Downloads](https://github.com/nelson-lang/nelson/releases)** options and **[continuous integration (CI)](https://github.com/nelson-lang/nelson/actions/workflows/ccpp.yml)** status are listed below:
153153

154-
| **Operating System** | **Architecture** | **CI** | **Binaries** |
155-
| :------------------: | :----------------: | :----: | :---------------: |
156-
| **Windows 10, 11** | x86-64 (\*1) |||
157-
| **macOS Tahoe** | arm64 || |
158-
| **macOS Sequoia** | arm64 || |
159-
| **macOS Sonoma** | arm64 || |
160-
| **macOS Sonoma** | x86-64 (64-bit) || |
161-
| **Ubuntu 24.04** | x86-64 || ✓ (Snap, Flatpak) |
162-
| **Ubuntu 24.04** | arm64 (cobalt 100) || ✓ (Snap, Flatpak) |
163-
| **Ubuntu 22.04** | x86-64 || ✓ (Snap, Flatpak) |
164-
| **Fedora 43** | x86-64 || ✓ (Snap, Flatpak) |
165-
| **ArchLinux** | x86-64 || ✓ (Snap, Flatpak) |
154+
| **Operating System** | **Architecture** | **CI** | **Binaries** |
155+
| :------------------: | :-----------------: | :----: | :---------------: |
156+
| **Windows 10, 11** | x86-64 (\*1), arm64 |||
157+
| **macOS Tahoe** | arm64 || |
158+
| **macOS Sequoia** | arm64 || |
159+
| **macOS Sonoma** | arm64 || |
160+
| **macOS Sonoma** | x86-64 (64-bit) || |
161+
| **Ubuntu 24.04** | x86-64 || ✓ (Snap, Flatpak) |
162+
| **Ubuntu 24.04** | arm64 (cobalt 100) || ✓ (Snap, Flatpak) |
163+
| **Ubuntu 22.04** | x86-64 || ✓ (Snap, Flatpak) |
164+
| **Fedora 43** | x86-64 || ✓ (Snap, Flatpak) |
165+
| **ArchLinux** | x86-64 || ✓ (Snap, Flatpak) |
166166

167167
_Note: The continued support of some platforms may depend on community contributions._
168168

ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Please file issues on this repository if you have questions, concerns, or sugges
2929
- NixOS (DONE v1.11.0)
3030
- Ubuntu 24.04 ARM64 (DONE v1.11.0)
3131
- etc.
32-
- Integration of Windows ARM64 support
32+
- Integration of Windows ARM64 support (DONE v1.16.0)
3333
- Performance optimization for increased speed
3434
- Code factorization for improved maintainability
3535
- Expansion of compatible functions

bin/ARM64/nelson.bat

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
@echo off
2+
rem =============================================================================
3+
rem Copyright (c) 2016-present Allan CORNET (Nelson)
4+
rem =============================================================================
5+
rem This file is part of Nelson.
6+
rem =============================================================================
7+
rem # LICENCE_BLOCK_BEGIN
8+
rem # SPDX-License-Identifier: LGPL-3.0-or-later
9+
rem # LICENCE_BLOCK_END
10+
rem =============================================================================
11+
SETLOCAL ENABLEEXTENSIONS
12+
SET PARENT=%~dp0
13+
SET DEFAULT_NELSON_MODE="-gui"
14+
SET NELSON_MODE=%DEFAULT_NELSON_MODE%
15+
SET "START_CMD=start "Nelson" "
16+
17+
:LOOP
18+
SET CURRENT_ARG=%~1
19+
20+
IF "%CURRENT_ARG%"=="-adv-cli" (
21+
SET NELSON_MODE="-adv-cli"
22+
SET START_CMD=
23+
GOTO NEXT
24+
)
25+
26+
IF "%CURRENT_ARG%"=="-sio-cli" (
27+
SET NELSON_MODE="-sio-cli"
28+
SET START_CMD=
29+
GOTO NEXT
30+
)
31+
32+
IF "%CURRENT_ARG%"=="-cli" (
33+
SET NELSON_MODE="-cli"
34+
SET START_CMD=
35+
GOTO NEXT
36+
)
37+
38+
IF "%CURRENT_ARG%"=="-gui" (
39+
SET NELSON_MODE="-gui"
40+
GOTO NEXT
41+
)
42+
43+
set FILTERED_ARGS=%FILTERED_ARGS% %1%
44+
45+
:NEXT
46+
shift
47+
48+
IF not "%CURRENT_ARG%"=="" GOTO LOOP
49+
50+
set PARENT=%PARENT:"=%
51+
set ERRORLEVEL=
52+
set NELSON_MODE=%NELSON_MODE:"=%
53+
%START_CMD%"%PARENT%nelson%NELSON_MODE%.exe"%FILTERED_ARGS%
54+
55+
EXIT /B %ERRORLEVEL%

bin/ARM64/qt.conf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[Paths]
2+
Prefix=.
3+
Libraries=.
4+
Plugins=plugins
5+
Imports=imports
6+
Qml2Imports=qml
7+
8+
[Platforms]
9+
WindowsArguments = darkmode=1

bin/bin.iss

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,28 @@ Source: {#RootPath}bin\{#BinPath}\boost_date_time-{#BOOST_TARGET}.dll; DestDir:
1414
Source: {#RootPath}bin\{#BinPath}\boost_filesystem-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
1515
Source: {#RootPath}bin\{#BinPath}\boost_iostreams-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
1616
Source: {#RootPath}bin\{#BinPath}\boost_program_options-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
17+
#ifndef NELSON_WOA64
1718
Source: {#RootPath}bin\{#BinPath}\boost_regex-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
18-
;Source: {#RootPath}bin\{#BinPath}\boost_system-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
19-
Source: {#RootPath}bin\{#BinPath}\boost_thread-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
20-
Source: {#RootPath}bin\{#BinPath}\boost_random-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
2119
Source: {#RootPath}bin\{#BinPath}\boost_zlib-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
2220
Source: {#RootPath}bin\{#BinPath}\boost_bzip2-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
21+
#endif
22+
Source: {#RootPath}bin\{#BinPath}\boost_thread-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
23+
Source: {#RootPath}bin\{#BinPath}\boost_random-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
2324
Source: {#RootPath}bin\{#BinPath}\boost_serialization-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
2425
Source: {#RootPath}bin\{#BinPath}\boost_process-{#BOOST_TARGET}.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
2526
;==============================================================================
2627
; vc runtime
28+
#ifdef NELSON_WOA64
29+
Source: {#RootPath}bin\{#BinPath}\vc_redist.arm64.exe; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
30+
Source: {#RootPath}bin\{#BinPath}\vcruntime140_1.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
31+
#else
2732
#ifdef NELSON_X64
2833
Source: {#RootPath}bin\{#BinPath}\vc_redist.x64.exe; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
2934
Source: {#RootPath}bin\{#BinPath}\vcruntime140_1.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
3035
#else
3136
Source: {#RootPath}bin\{#BinPath}\vc_redist.x86.exe; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
3237
#endif
38+
#endif
3339
Source: {#RootPath}bin\{#BinPath}\msvcp140.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
3440
Source: {#RootPath}bin\{#BinPath}\vcruntime140.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
3541
Source: {#RootPath}bin\{#BinPath}\concrt140.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
@@ -43,7 +49,9 @@ Source: {#RootPath}bin\{#BinPath}\vcomp140.dll; DestDir: {app}\bin\{#BinPath}\;
4349
Source: {#RootPath}bin\{#BinPath}\vcruntime140_threads.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_NELSON};
4450
;==============================================================================
4551
; intel runtime
52+
#ifndef NELSON_WOA64
4653
Source: {#RootPath}bin\{#BinPath}\libmmd.dll; DestDir: {app}\bin\{#BinPath}\ ; Components: {#COMPONENT_NELSON};
54+
#endif
4755
#ifdef ICC_COMPILER
4856
Source: {#RootPath}bin\{#BinPath}\svml_dispmd.dll; DestDir: {app}\bin\{#BinPath}\ ; Components: {#COMPONENT_NELSON};
4957
#endif
@@ -55,11 +63,18 @@ Source: {#RootPath}bin\{#BinPath}\LICENSE_1_0.txt; DestDir: {app}\bin\{#BinPath}
5563
;==============================================================================
5664
; used by linear_algebra and slicot modules
5765
;==============================================================================
66+
#ifdef NELSON_WOA64
67+
Source: {#RootPath}bin\{#BinPath}\libnlsblaslapack.dll; DestDir: {app}\bin\{#BinPath}\;
68+
Source: {#RootPath}bin\{#BinPath}\libnlsblaslapack.lib; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_DYNAMIC_LINK}
69+
#else
5870
Source: {#RootPath}bin\{#BinPath}\mkl\libiomp5md.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_CPU_OPTIMIZATION}
5971
Source: {#RootPath}bin\{#BinPath}\mkl\libnlsblaslapack.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_CPU_OPTIMIZATION}
6072
Source: {#RootPath}bin\{#BinPath}\mkl\libnlsblaslapack.lib; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_CPU_OPTIMIZATION} and {#COMPONENT_DYNAMIC_LINK}
6173
Source: {#RootPath}bin\{#BinPath}\mkl\mkl_license.txt; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_CPU_OPTIMIZATION}
74+
#endif
6275
;==============================================================================
6376
; vml wrapper (simd)
77+
#ifndef NELSON_WOA64
6478
Source: {#RootPath}bin\{#BinPath}\mkl\libnlsvml_mkl.dll; DestDir: {app}\bin\{#BinPath}\; Components: {#COMPONENT_CPU_OPTIMIZATION}
79+
#endif
6580
;==============================================================================

0 commit comments

Comments
 (0)