Skip to content

Commit ecf5e20

Browse files
committed
added:windows arm64 build support
1 parent 73f32e0 commit ecf5e20

File tree

12 files changed

+652
-52
lines changed

12 files changed

+652
-52
lines changed

.github/workflows/msbuild.yml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
fail-fast: false
1919
matrix:
2020
configuration: [Debug ,Release]
21-
platform: [x86 ,x64]
21+
platform: [x86 ,x64 ,ARM64]
2222

2323
runs-on: windows-latest
2424

@@ -62,6 +62,14 @@ jobs:
6262
./vcpkg.exe install libsrt:x64-windows libsrtp:x64-windows
6363
./vcpkg.exe integrate install
6464
shell: pwsh
65+
- name: vcpkg install (ARM64)
66+
if: matrix.platform == 'ARM64'
67+
run: |
68+
cd vcpkg
69+
./bootstrap-vcpkg.bat
70+
./vcpkg.exe install libsrt:Arm64-windows libsrtp:Arm64-windows
71+
./vcpkg.exe integrate install
72+
shell: pwsh
6573

6674
- name: Set up Dependency x86_64 Environment
6775
if: matrix.platform == 'x64'
@@ -83,6 +91,20 @@ jobs:
8391
echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append
8492
echo "XENGINE_LIB32=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append
8593
shell: pwsh
94+
- name: Set up Dependency ARM64 Environment
95+
if: matrix.platform == 'ARM64'
96+
run: |
97+
$response = Invoke-RestMethod -Uri "https://api.github.com/repos/libxengine/libxengine/releases/latest" -Headers @{"Accept"="application/vnd.github.v3+json"}
98+
$latest_tag = $response.tag_name
99+
Write-Host "Latest Tag: $latest_tag"
100+
101+
$url = "https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Windows_Arm64.zip"
102+
Invoke-WebRequest -Uri $url -OutFile "XEngine_Windows_Arm64.zip"
103+
Expand-Archive -Path ./XEngine_Windows_Arm64.zip -DestinationPath ./XEngine_Windows -Force
104+
105+
echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append
106+
echo "XENGINE_LIBARM64=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append
107+
shell: pwsh
86108

87109
- name: Setup MSBuild
88110
uses: microsoft/setup-msbuild@v2
@@ -109,6 +131,15 @@ jobs:
109131
cd XEngine_Release
110132
.\VSCopy_x64.bat
111133
shell: pwsh
134+
- name: Conditional Step for ARM64 Release
135+
if: matrix.configuration == 'Release' && matrix.platform == 'ARM64'
136+
run: |
137+
cp -r XEngine_Source/ARM64/Release/*.dll XEngine_Release/
138+
cp -r XEngine_Source/ARM64/Release/*.exe XEngine_Release/
139+
cp -r XEngine_Source/VSCopy_Arm64.bat XEngine_Release/
140+
cd XEngine_Release
141+
.\VSCopy_Arm64.bat
142+
shell: pwsh
112143

113144
- name: Upload folder as artifact with x86
114145
if: matrix.configuration == 'Release' && matrix.platform == 'x86'
@@ -124,4 +155,11 @@ jobs:
124155
with:
125156
name: XEngine_StreamMediaApp-x86_64-Windows
126157
path: XEngine_Release/
158+
retention-days: 1
159+
- name: Upload folder as artifact with ARM64
160+
if: matrix.configuration == 'Release' && matrix.platform == 'ARM64'
161+
uses: actions/upload-artifact@v4
162+
with:
163+
name: XEngine_StreamMediaApp-Arm64-Windows
164+
path: XEngine_Release/
127165
retention-days: 1

XEngine_Source/VSCopy_Arm64.bat

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./"
2+
copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./"
3+
copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./"
4+
copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Core.dll" "./"
5+
copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_ManagePool.dll" "./"
6+
copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Cryption.dll" "./"
7+
8+
copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_Stream.dll" "./"
9+
copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_APIHelp.dll" "./"
10+
11+
copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_XSocket.dll" "./"
12+
copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./"
13+
copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./"
14+
copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./"
15+
copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./"
16+
17+
copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./"
18+
copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./"
19+
20+
copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./"
21+
copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_NatProtocol.dll" "./"
22+
23+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_SDPProtocol.dll" "./"
24+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_FLVProtocol.dll" "./"
25+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTMPProtocol.dll" "./"
26+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTSPProtocol.dll" "./"
27+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTPProtocol.dll" "./"
28+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_RTCPProtocol.dll" "./"
29+
copy /y "%XEngine_LibArm64%\XEngine_StreamMedia\StreamMedia_HLSProtocol.dll" "./"
30+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\XEngine_AVHelp.dll" "./"
31+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\XEngine_AudioCodec.dll" "./"
32+
33+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avcodec-61.dll" "./"
34+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avdevice-61.dll" "./"
35+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avfilter-10.dll" "./"
36+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avformat-61.dll" "./"
37+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\avutil-59.dll" "./"
38+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\postproc-58.dll" "./"
39+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\swresample-5.dll" "./"
40+
copy /y "%XEngine_LibArm64%\XEngine_AVCodec\swscale-8.dll" "./"

XEngine_Source/XEngine.sln

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,72 +49,106 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngi
4949
EndProject
5050
Global
5151
GlobalSection(SolutionConfigurationPlatforms) = preSolution
52+
Debug|ARM64 = Debug|ARM64
5253
Debug|x64 = Debug|x64
5354
Debug|x86 = Debug|x86
55+
Release|ARM64 = Release|ARM64
5456
Release|x64 = Release|x64
5557
Release|x86 = Release|x86
5658
EndGlobalSection
5759
GlobalSection(ProjectConfigurationPlatforms) = postSolution
60+
{F54F152C-594F-4465-A44E-2DB915B39760}.Debug|ARM64.ActiveCfg = Debug|ARM64
61+
{F54F152C-594F-4465-A44E-2DB915B39760}.Debug|ARM64.Build.0 = Debug|ARM64
5862
{F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x64.ActiveCfg = Debug|x64
5963
{F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x64.Build.0 = Debug|x64
6064
{F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x86.ActiveCfg = Debug|Win32
6165
{F54F152C-594F-4465-A44E-2DB915B39760}.Debug|x86.Build.0 = Debug|Win32
66+
{F54F152C-594F-4465-A44E-2DB915B39760}.Release|ARM64.ActiveCfg = Release|ARM64
67+
{F54F152C-594F-4465-A44E-2DB915B39760}.Release|ARM64.Build.0 = Release|ARM64
6268
{F54F152C-594F-4465-A44E-2DB915B39760}.Release|x64.ActiveCfg = Release|x64
6369
{F54F152C-594F-4465-A44E-2DB915B39760}.Release|x64.Build.0 = Release|x64
6470
{F54F152C-594F-4465-A44E-2DB915B39760}.Release|x86.ActiveCfg = Release|Win32
6571
{F54F152C-594F-4465-A44E-2DB915B39760}.Release|x86.Build.0 = Release|Win32
72+
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|ARM64.ActiveCfg = Debug|ARM64
73+
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|ARM64.Build.0 = Debug|ARM64
6674
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x64.ActiveCfg = Debug|x64
6775
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x64.Build.0 = Debug|x64
6876
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x86.ActiveCfg = Debug|Win32
6977
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Debug|x86.Build.0 = Debug|Win32
78+
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|ARM64.ActiveCfg = Release|ARM64
79+
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|ARM64.Build.0 = Release|ARM64
7080
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x64.ActiveCfg = Release|x64
7181
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x64.Build.0 = Release|x64
7282
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x86.ActiveCfg = Release|Win32
7383
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010}.Release|x86.Build.0 = Release|Win32
84+
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|ARM64.ActiveCfg = Debug|ARM64
85+
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|ARM64.Build.0 = Debug|ARM64
7486
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x64.ActiveCfg = Debug|x64
7587
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x64.Build.0 = Debug|x64
7688
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x86.ActiveCfg = Debug|Win32
7789
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Debug|x86.Build.0 = Debug|Win32
90+
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|ARM64.ActiveCfg = Release|ARM64
91+
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|ARM64.Build.0 = Release|ARM64
7892
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x64.ActiveCfg = Release|x64
7993
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x64.Build.0 = Release|x64
8094
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x86.ActiveCfg = Release|Win32
8195
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x86.Build.0 = Release|Win32
96+
{98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|ARM64.ActiveCfg = Debug|ARM64
97+
{98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|ARM64.Build.0 = Debug|ARM64
8298
{98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x64.ActiveCfg = Debug|x64
8399
{98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x64.Build.0 = Debug|x64
84100
{98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x86.ActiveCfg = Debug|Win32
85101
{98DB01B5-30B7-4C00-9A84-39886680F069}.Debug|x86.Build.0 = Debug|Win32
102+
{98DB01B5-30B7-4C00-9A84-39886680F069}.Release|ARM64.ActiveCfg = Release|ARM64
103+
{98DB01B5-30B7-4C00-9A84-39886680F069}.Release|ARM64.Build.0 = Release|ARM64
86104
{98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x64.ActiveCfg = Release|x64
87105
{98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x64.Build.0 = Release|x64
88106
{98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x86.ActiveCfg = Release|Win32
89107
{98DB01B5-30B7-4C00-9A84-39886680F069}.Release|x86.Build.0 = Release|Win32
108+
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|ARM64.ActiveCfg = Debug|ARM64
109+
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|ARM64.Build.0 = Debug|ARM64
90110
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x64.ActiveCfg = Debug|x64
91111
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x64.Build.0 = Debug|x64
92112
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x86.ActiveCfg = Debug|Win32
93113
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Debug|x86.Build.0 = Debug|Win32
114+
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|ARM64.ActiveCfg = Release|ARM64
115+
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|ARM64.Build.0 = Release|ARM64
94116
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x64.ActiveCfg = Release|x64
95117
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x64.Build.0 = Release|x64
96118
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x86.ActiveCfg = Release|Win32
97119
{2E55D676-E9F5-48B8-B65E-FE0E7C3D2AEB}.Release|x86.Build.0 = Release|Win32
120+
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|ARM64.ActiveCfg = Debug|ARM64
121+
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|ARM64.Build.0 = Debug|ARM64
98122
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x64.ActiveCfg = Debug|x64
99123
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x64.Build.0 = Debug|x64
100124
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x86.ActiveCfg = Debug|Win32
101125
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Debug|x86.Build.0 = Debug|Win32
126+
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|ARM64.ActiveCfg = Release|ARM64
127+
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|ARM64.Build.0 = Release|ARM64
102128
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x64.ActiveCfg = Release|x64
103129
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x64.Build.0 = Release|x64
104130
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x86.ActiveCfg = Release|Win32
105131
{9FF6FA78-456E-4A7E-86B1-17E4DB5403C9}.Release|x86.Build.0 = Release|Win32
132+
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.ActiveCfg = Debug|ARM64
133+
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.Build.0 = Debug|ARM64
106134
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.ActiveCfg = Debug|x64
107135
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.Build.0 = Debug|x64
108136
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.ActiveCfg = Debug|Win32
109137
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.Build.0 = Debug|Win32
138+
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|ARM64.ActiveCfg = Release|ARM64
139+
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|ARM64.Build.0 = Release|ARM64
110140
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.ActiveCfg = Release|x64
111141
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.Build.0 = Release|x64
112142
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.ActiveCfg = Release|Win32
113143
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.Build.0 = Release|Win32
144+
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|ARM64.ActiveCfg = Debug|ARM64
145+
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|ARM64.Build.0 = Debug|ARM64
114146
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.ActiveCfg = Debug|x64
115147
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.Build.0 = Debug|x64
116148
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.ActiveCfg = Debug|Win32
117149
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.Build.0 = Debug|Win32
150+
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|ARM64.ActiveCfg = Release|ARM64
151+
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|ARM64.Build.0 = Release|ARM64
118152
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.ActiveCfg = Release|x64
119153
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64
120154
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32

0 commit comments

Comments
 (0)