File tree 5 files changed +31
-4
lines changed
5 files changed +31
-4
lines changed Original file line number Diff line number Diff line change 59
59
run : |
60
60
set -eux
61
61
cd ..
62
+ suffix='win64'
63
+ if [[ '${{ inputs.arch }}' == arm64 ]]; then
64
+ suffix='woa64'
65
+ fi
62
66
curl -fL --retry 3 --max-time 300 -o clang.exe \
63
- https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.3/LLVM-20.1.3-win64 .exe
67
+ https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.3/LLVM-20.1.3-$suffix .exe
64
68
./clang.exe //S # double-slash for bash
65
69
rm clang.exe
66
70
# C:\Program Files\LLVM\bin should already be in PATH
@@ -163,7 +167,9 @@ runs:
163
167
cd ..
164
168
165
169
url='https://curl.se/windows/latest.cgi?p=win64-mingw.zip'
166
- if [[ '${{ inputs.arch }}' == x86 ]]; then
170
+ if [[ '${{ inputs.arch }}' == arm64 ]]; then
171
+ url='https://curl.se/windows/latest.cgi?p=win64a-mingw.zip'
172
+ elif [[ '${{ inputs.arch }}' == x86 ]]; then
167
173
url='https://curl.se/windows/latest.cgi?p=win32-mingw.zip'
168
174
fi
169
175
Original file line number Diff line number Diff line change 66
66
67
67
cp libcurl/ldc2/* installed/bin/
68
68
69
+ if [[ '${{ inputs.arch }}' == arm64 ]]; then
70
+ echo "No MinGW-based libraries available for arm64 yet."
71
+ exit 0
72
+ fi
73
+
69
74
curl -fL --retry 3 --max-time 60 -o mingw-w64-libs.7z \
70
75
https://github.com/ldc-developers/mingw-w64-libs/releases/download/v8.0.0/mingw-w64-libs-v8.0.0.7z
71
76
mkdir mingw-w64-libs
Original file line number Diff line number Diff line change 67
67
set PATH=%CD%\ldc2-multilib\lib32;%PATH%
68
68
ldc2-multilib\bin\ldc2 -link-defaultlib-shared -m32 -run hello.d || exit /b
69
69
70
+ # TODO
70
71
# preliminary arm64 cross-compilation support
71
72
- name : Install ninja v1.12.1
72
73
uses : Ahajha/gha-setup-ninja@69595b0cf872acdad8ce599142fbdc88724b9a2b
Original file line number Diff line number Diff line change @@ -101,6 +101,16 @@ jobs:
101
101
-DEXTRA_CXXFLAGS=-flto=full
102
102
with_pgo : true
103
103
104
+ - job_name : Windows arm64
105
+ os : windows-11-arm
106
+ arch : arm64
107
+ base_cmake_flags : >-
108
+ -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
109
+ # extra_cmake_flags: >-
110
+ # "-DD_COMPILER_FLAGS=-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto"
111
+ # -DEXTRA_CXXFLAGS=-flto=full
112
+ # with_pgo: true
113
+
104
114
- job_name : Windows x86
105
115
os : windows-2025
106
116
arch : x86
Original file line number Diff line number Diff line change @@ -195,7 +195,10 @@ if(NOT MSVC_IDE)
195
195
endif ()
196
196
197
197
if (MSVC )
198
- if (CMAKE_SIZEOF_VOID_P EQUAL 8)
198
+ if ($ENV{VSCMD_ARG_TGT_ARCH} STREQUAL "arm64" )
199
+ message (STATUS "Let D host compiler output arm64 object files" )
200
+ append ("-mtriple=aarch64-windows-msvc" DFLAGS_BASE)
201
+ elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
199
202
message (STATUS "Let D host compiler output 64-bit object files" )
200
203
append ("-m64" DFLAGS_BASE)
201
204
else ()
@@ -300,7 +303,9 @@ endif()
300
303
if (MSVC )
301
304
separate_arguments (LLVM_LDFLAGS WINDOWS_COMMAND "${LLVM_LDFLAGS} " )
302
305
if (NOT MSVC_IDE ) # apparently not needed for VS (and spaces in path are problematic)
303
- if (CMAKE_SIZEOF_VOID_P EQUAL 8)
306
+ if ($ENV{VSCMD_ARG_TGT_ARCH} STREQUAL "arm64" )
307
+ list (APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR} DIA SDK\\ lib\\ arm64\\ diaguids.lib" )
308
+ elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
304
309
list (APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR} DIA SDK\\ lib\\ amd64\\ diaguids.lib" )
305
310
else ()
306
311
list (APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR} DIA SDK\\ lib\\ diaguids.lib" )
You can’t perform that action at this time.
0 commit comments