mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
feat: update support arm 64 server
This commit is contained in:
113
.github/workflows/deploy.yml
vendored
113
.github/workflows/deploy.yml
vendored
@@ -234,12 +234,6 @@ jobs:
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- name: 'Setup Python 3.11'
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: 'Install Qt Desktop (host for cross-compilation)'
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
@@ -249,43 +243,12 @@ jobs:
|
||||
arch: 'win64_msvc2022_64'
|
||||
modules: 'qtremoteobjects qt5compat qtshadertools'
|
||||
dir: ${{ runner.temp }}
|
||||
setup-python: 'false'
|
||||
setup-python: 'true'
|
||||
set-env: 'false'
|
||||
aqtversion: '==3.3.0'
|
||||
py7zrversion: '==0.22.*'
|
||||
extra: '--base ${{ env.QT_MIRROR }}'
|
||||
|
||||
- name: 'Verify Qt Desktop (host) installation'
|
||||
shell: cmd
|
||||
run: |
|
||||
echo "Checking Qt Desktop (host) installation..."
|
||||
set QT_HOST_DIR=${{ runner.temp }}\Qt\${{ env.QT_VERSION }}\msvc2022_64
|
||||
echo "Qt host directory: %QT_HOST_DIR%"
|
||||
if exist "%QT_HOST_DIR%" (
|
||||
echo "Qt host directory exists"
|
||||
dir "%QT_HOST_DIR%\bin\Qt6*.dll"
|
||||
) else (
|
||||
echo "ERROR: Qt host directory does not exist"
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
- name: 'Cleanup Qt ARM64 directory before install'
|
||||
shell: pwsh
|
||||
run: |
|
||||
$baseDir = "${{ runner.temp }}"
|
||||
$qtVersion = "${{ env.QT_VERSION }}"
|
||||
# Handle both path formats (with \ and /)
|
||||
$paths = @(
|
||||
"$baseDir\Qt\$qtVersion\msvc2022_arm64",
|
||||
"$baseDir/Qt/$qtVersion/msvc2022_arm64"
|
||||
)
|
||||
foreach ($path in $paths) {
|
||||
if (Test-Path $path) {
|
||||
Write-Host "Removing $path before ARM64 Qt install..."
|
||||
Remove-Item -Path $path -Recurse -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
}
|
||||
|
||||
- name: 'Install Qt ARM64'
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
@@ -295,67 +258,18 @@ jobs:
|
||||
arch: 'win64_msvc2022_arm64_cross_compiled'
|
||||
modules: 'qtremoteobjects qt5compat qtshadertools'
|
||||
dir: ${{ runner.temp }}
|
||||
setup-python: 'false'
|
||||
setup-python: 'true'
|
||||
tools: 'tools_ifw'
|
||||
set-env: 'false'
|
||||
aqtversion: '==3.3.0'
|
||||
py7zrversion: '==0.22.*'
|
||||
extra: '--external 7z --base ${{ env.QT_MIRROR }}'
|
||||
|
||||
- name: 'Verify Qt ARM64 installation'
|
||||
shell: cmd
|
||||
run: |
|
||||
echo "Checking Qt ARM64 installation..."
|
||||
set QT_ARM64_DIR=${{ runner.temp }}\Qt\${{ env.QT_VERSION }}\msvc2022_arm64
|
||||
echo "Qt ARM64 directory: %QT_ARM64_DIR%"
|
||||
if exist "%QT_ARM64_DIR%" (
|
||||
echo "Qt ARM64 directory exists"
|
||||
echo.
|
||||
echo "Checking bin directory..."
|
||||
if exist "%QT_ARM64_DIR%\bin" (
|
||||
echo "bin directory exists"
|
||||
dir "%QT_ARM64_DIR%\bin\Qt6*.dll" | findstr /C:"Qt6Core.dll"
|
||||
) else (
|
||||
echo "ERROR: bin directory does not exist"
|
||||
exit /b 1
|
||||
)
|
||||
echo.
|
||||
echo "Checking lib directory..."
|
||||
if exist "%QT_ARM64_DIR%\lib" (
|
||||
echo "lib directory exists"
|
||||
dir "%QT_ARM64_DIR%\lib\Qt6Core*.lib"
|
||||
) else (
|
||||
echo "ERROR: lib directory does not exist"
|
||||
exit /b 1
|
||||
)
|
||||
echo "Qt ARM64 installation verified successfully"
|
||||
) else (
|
||||
echo "ERROR: Qt ARM64 directory does not exist"
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
- name: 'Setup mvsc'
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: 'x64_arm64'
|
||||
|
||||
- name: 'Check environment variables before build'
|
||||
shell: cmd
|
||||
run: |
|
||||
echo "=== Environment Variables Check ==="
|
||||
echo "Checking for Qt-related environment variables..."
|
||||
set | findstr /I "Qt"
|
||||
set | findstr /I "CMAKE"
|
||||
echo.
|
||||
echo "Checking for MSVC tools in PATH..."
|
||||
where cl 2>nul && echo "cl.exe found" || echo "WARNING: cl.exe not found"
|
||||
where dumpbin 2>nul && echo "dumpbin.exe found" || echo "NOTE: dumpbin.exe not found"
|
||||
where link 2>nul && echo "link.exe found" || echo "WARNING: link.exe not found"
|
||||
echo.
|
||||
echo "MSVC environment variables:"
|
||||
set | findstr /I "VCINSTALLDIR VSINSTALLDIR"
|
||||
echo "===================================="
|
||||
|
||||
- name: 'Build project'
|
||||
shell: cmd
|
||||
run: |
|
||||
@@ -384,29 +298,6 @@ jobs:
|
||||
name: AmneziaVPN_Windows_ARM64_unpacked
|
||||
path: deploy\\build_${{ env.BUILD_ARCH }}\\client\\Release
|
||||
retention-days: 7
|
||||
|
||||
- name: 'Create Qt ARM64 archive'
|
||||
shell: pwsh
|
||||
run: |
|
||||
$qtArm64Dir = "${{ runner.temp }}\Qt\${{ env.QT_VERSION }}\msvc2022_arm64"
|
||||
$archivePath = "Qt_${{ env.QT_VERSION }}_ARM64.zip"
|
||||
|
||||
if (Test-Path $qtArm64Dir) {
|
||||
Write-Host "Creating Qt ARM64 archive from: $qtArm64Dir"
|
||||
Compress-Archive -Path $qtArm64Dir -DestinationPath $archivePath -Force
|
||||
Write-Host "Archive created: $archivePath"
|
||||
Write-Host "Archive size: $((Get-Item $archivePath).Length / 1MB) MB"
|
||||
} else {
|
||||
Write-Host "ERROR: Qt ARM64 directory not found: $qtArm64Dir"
|
||||
exit 1
|
||||
}
|
||||
|
||||
- name: 'Upload Qt ARM64 archive'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Qt_${{ env.QT_VERSION }}_ARM64
|
||||
path: Qt_${{ env.QT_VERSION }}_ARM64.zip
|
||||
retention-days: 7
|
||||
# ------------------------------------------------------
|
||||
|
||||
Build-iOS:
|
||||
|
||||
@@ -71,8 +71,6 @@ if defined QT_HOST_BIN_DIR (
|
||||
)
|
||||
cmake --version
|
||||
|
||||
REM Calculate Qt root directory BEFORE entering if blocks (batch variable expansion issue)
|
||||
REM Remove \bin from QT_BIN_DIR to get Qt root
|
||||
set "QT_ROOT_DIR=%QT_BIN_DIR:\bin=%"
|
||||
|
||||
cd %PROJECT_DIR%
|
||||
@@ -99,25 +97,8 @@ if defined QT_HOST_PATH (
|
||||
echo "ERROR: Qt ARM64 lib directory not found at %QT_ROOT_DIR%\lib"
|
||||
exit /b 1
|
||||
)
|
||||
echo "Qt ARM64 lib directory found: %QT_ROOT_DIR%\lib"
|
||||
dir "%QT_ROOT_DIR%\lib\Qt6Core*.lib"
|
||||
|
||||
REM Check architecture of Qt6Core.lib (if dumpbin is available)
|
||||
echo "Verifying Qt6Core.lib architecture..."
|
||||
where dumpbin >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo "dumpbin found, checking architecture..."
|
||||
dumpbin /headers "%QT_ROOT_DIR%\lib\Qt6Core.lib" | findstr /C:"machine"
|
||||
if %errorlevel% equ 0 (
|
||||
echo "Architecture check completed"
|
||||
) else (
|
||||
echo "WARNING: Could not extract machine type from Qt6Core.lib"
|
||||
)
|
||||
) else (
|
||||
echo "NOTE: dumpbin not available, skipping architecture verification"
|
||||
echo "This is not critical - build will continue"
|
||||
)
|
||||
|
||||
|
||||
echo "Building for ARM64"
|
||||
call cmake . -B %WORK_DIR% -A ARM64 "-DCMAKE_BUILD_TYPE:STRING=Release" "-DCMAKE_PREFIX_PATH:PATH=%QT_ROOT_DIR%" "-DQT_HOST_PATH:PATH=%QT_HOST_PATH%"
|
||||
) else (
|
||||
REM x64 build - QT_ROOT_DIR already calculated above
|
||||
@@ -232,14 +213,9 @@ if defined QT_HOST_BIN_DIR (
|
||||
|
||||
echo "ARM64 Qt libraries copied successfully"
|
||||
|
||||
REM Verify Qt6Core.dll architecture
|
||||
echo "Verifying Qt6Core.dll was copied:"
|
||||
if exist "%OUT_APP_DIR:"=%\Qt6Core.dll" (
|
||||
echo "Qt6Core.dll found in output directory"
|
||||
) else (
|
||||
echo "ERROR: Qt6Core.dll not found after copy"
|
||||
exit /b 1
|
||||
)
|
||||
REM Remove ALL debug DLLs recursively (Qt6*d.dll, *d.dll in all subdirectories)
|
||||
echo "Removing debug DLLs and libraries from output directory (recursive)..."
|
||||
del /s /q "%OUT_APP_DIR:"=%\*d.dll" >nul 2>&1
|
||||
) else (
|
||||
echo "ERROR: ARM64 Qt DLLs not found in %QT_BIN_DIR:"=%"
|
||||
exit /b 1
|
||||
|
||||
@@ -18,27 +18,21 @@ set(QSIMPLECRYPTO_DIR ${CMAKE_CURRENT_LIST_DIR}/../../client/3rd/QSimpleCrypto/s
|
||||
set(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../../client/3rd-prebuilt/3rd-prebuilt/openssl/")
|
||||
set(OPENSSL_LIBRARIES_DIR "${OPENSSL_ROOT_DIR}/lib")
|
||||
|
||||
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/windows/include")
|
||||
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
|
||||
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libssl.lib")
|
||||
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libcrypto.lib")
|
||||
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libssl.lib")
|
||||
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libcrypto.lib")
|
||||
else()
|
||||
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libssl.lib")
|
||||
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libcrypto.lib")
|
||||
endif()
|
||||
|
||||
|
||||
if(WIN32)
|
||||
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/windows/include")
|
||||
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
|
||||
# Use CMAKE_GENERATOR_PLATFORM for cross-compilation detection (ARM64 on x64 host)
|
||||
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
|
||||
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libssl.lib")
|
||||
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libcrypto.lib")
|
||||
message(STATUS "Service: Using ARM64 OpenSSL libraries")
|
||||
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libssl.lib")
|
||||
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libcrypto.lib")
|
||||
message(STATUS "Service: Using x64 OpenSSL libraries")
|
||||
else()
|
||||
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libssl.lib")
|
||||
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libcrypto.lib")
|
||||
message(STATUS "Service: Using x86 OpenSSL libraries")
|
||||
endif()
|
||||
elseif(APPLE AND NOT IOS)
|
||||
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/macos/include")
|
||||
@@ -365,7 +359,8 @@ qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_process_t
|
||||
|
||||
# copy deploy artifacts required to run the application to the debug build folder
|
||||
if(WIN32)
|
||||
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
|
||||
# Use CMAKE_GENERATOR_PLATFORM for cross-compilation detection
|
||||
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
|
||||
set(DEPLOY_PLATFORM_PATH "windows/arm64")
|
||||
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
set(DEPLOY_PLATFORM_PATH "windows/x64")
|
||||
|
||||
Reference in New Issue
Block a user