mirror of
https://github.com/Neo-Desktop/WindowsXPKg
synced 2025-09-04 17:20:58 +03:00
Compare commits
4 Commits
6b85771db1
...
f3be9fb950
Author | SHA1 | Date | |
---|---|---|---|
|
f3be9fb950 | ||
|
761ba76081 | ||
|
c072d096f3 | ||
|
1002e0a6d5 |
99
.github/workflows/dos-djgpp.yml
vendored
99
.github/workflows/dos-djgpp.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
||||
- name: Setup build environment
|
||||
run: |
|
||||
sudo apt -y update
|
||||
sudo apt -y install build-essential cmake wget 7zip git flex libfl-dev nasm libslang2-dev pkg-config libslang2-modules gcc-multilib
|
||||
sudo apt -y install build-essential cmake wget 7zip git flex libfl-dev nasm libslang2-dev pkg-config libslang2-modules gcc-multilib dosbox
|
||||
|
||||
- name: Download and Setup DJGPP Toolchain
|
||||
run: |
|
||||
@@ -59,7 +59,16 @@ jobs:
|
||||
make -f djgpp.mak
|
||||
ln -s ${WATT_ROOT}/lib/libwatt.a ${{ github.workspace }}/djgpp/lib
|
||||
|
||||
- name: Cache OpenSSL 3.1.2
|
||||
uses: actions/cache/restore@v4
|
||||
id: cache-openssl
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/djgpp
|
||||
key: openssl-3.1.2-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
- name: Checkout and Cross Compile OpenSSL 3.1.2
|
||||
if: steps.cache-openssl.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
git clone https://github.com/UMSKT/openssl.git openssl
|
||||
pushd openssl
|
||||
@@ -68,6 +77,14 @@ jobs:
|
||||
make && make install_sw
|
||||
popd
|
||||
|
||||
- name: Save OpenSSL 3.1.2
|
||||
if: steps.cache-openssl.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/djgpp
|
||||
key: openssl-3.1.2-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
source ${{ github.workspace }}/djgpp/setenv
|
||||
@@ -75,6 +92,84 @@ jobs:
|
||||
cmake ../ -D DJGPP_WATT32=${WATT_ROOT}/lib/libwatt.a -D CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}
|
||||
make
|
||||
|
||||
- name: Setup DOSBox test environment
|
||||
run: |
|
||||
mkdir -p dosbox_test
|
||||
cp build/umskt.exe dosbox_test/
|
||||
# Download DPMI server directly
|
||||
wget https://github.com/UMSKT/winactiontest/raw/refs/heads/main/CWSDPMI.EXE -O dosbox_test/CWSDPMI.EXE
|
||||
# Create test batch file
|
||||
cat > dosbox_test/test.bat << EOL
|
||||
@echo off
|
||||
echo Running test 1...
|
||||
umskt.exe -b 2C -c 365 -s 069420 > TEST1.TXT
|
||||
if errorlevel 1 goto error
|
||||
echo Running test 2...
|
||||
umskt.exe -i 253286028742154311079061239762245184619981623171292574 > TEST2.TXT
|
||||
if errorlevel 1 goto error
|
||||
echo Tests completed > DONE.TXT
|
||||
goto end
|
||||
:error
|
||||
echo Test failed > ERROR.TXT
|
||||
:end
|
||||
exit
|
||||
EOL
|
||||
# Create DOSBox configuration
|
||||
cat > dosbox_test/dosbox.conf << EOL
|
||||
[sdl]
|
||||
nosound=true
|
||||
[cpu]
|
||||
core=dynamic
|
||||
cycles=max
|
||||
[autoexec]
|
||||
mount c .
|
||||
c:
|
||||
test.bat
|
||||
exit
|
||||
EOL
|
||||
|
||||
- name: Run tests in DOSBox
|
||||
run: |
|
||||
cd dosbox_test
|
||||
timeout 30s dosbox -conf dosbox.conf -nogui -exit
|
||||
# Check if the test completed successfully
|
||||
if [ ! -f DONE.TXT ]; then
|
||||
echo "Tests did not complete successfully"
|
||||
if [ -f ERROR.TXT ]; then
|
||||
echo "Test execution failed"
|
||||
fi
|
||||
if [ -f TEST1.TXT ]; then
|
||||
echo "Test 1 output:"
|
||||
cat TEST1.TXT
|
||||
fi
|
||||
if [ -f TEST2.TXT ]; then
|
||||
echo "Test 2 output:"
|
||||
cat TEST2.TXT
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
# Verify test outputs
|
||||
if [ ! -f TEST1.TXT ] || [ ! -f TEST2.TXT ]; then
|
||||
echo "Test output files missing"
|
||||
exit 1
|
||||
fi
|
||||
# Check test results - looking for key format patterns
|
||||
if ! grep -qE '[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}' TEST1.TXT || \
|
||||
! grep -qE '[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}' TEST2.TXT; then
|
||||
echo "Tests failed - unexpected output format"
|
||||
echo "Test 1 output:"
|
||||
cat TEST1.TXT
|
||||
echo "Test 2 output:"
|
||||
cat TEST2.TXT
|
||||
exit 1
|
||||
else
|
||||
echo "All tests passed successfully"
|
||||
echo "Test 1 output:"
|
||||
cat TEST1.TXT
|
||||
echo "Test 2 output:"
|
||||
cat TEST2.TXT
|
||||
fi
|
||||
|
||||
- name: Move executable to upload directory
|
||||
run: |
|
||||
mkdir build/actions_upload
|
||||
@@ -83,5 +178,5 @@ jobs:
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-DOS
|
||||
name: UMSKT-DOS-x86
|
||||
path: build/actions_upload
|
||||
|
5
.github/workflows/freebsd.yml
vendored
5
.github/workflows/freebsd.yml
vendored
@@ -51,7 +51,10 @@
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
./umskt # Execute the test here
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
|
||||
- name: Move files to correct directory
|
||||
run: |
|
||||
|
106
.github/workflows/linux.yml
vendored
106
.github/workflows/linux.yml
vendored
@@ -28,18 +28,25 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- arch: x86
|
||||
runner: ubuntu-latest
|
||||
use_alpine: true
|
||||
- arch: x86_64
|
||||
runner: ubuntu-latest
|
||||
use_alpine: true
|
||||
- arch: aarch64
|
||||
runner: ubuntu-24.04-arm
|
||||
use_alpine: false
|
||||
runs-on: ${{ matrix.runner }}
|
||||
steps:
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup latest Alpine Linux for ${{ matrix.arch }}
|
||||
- name: Setup latest Alpine Linux
|
||||
if: ${{ matrix.use_alpine }}
|
||||
uses: jirutka/setup-alpine@v1
|
||||
with:
|
||||
packages: >
|
||||
@@ -54,13 +61,46 @@ jobs:
|
||||
arch: ${{ matrix.arch }}
|
||||
shell-name: alpine-target.sh
|
||||
|
||||
- name: Configure and build UMSKT
|
||||
- name: Install Dependencies (Ubuntu ARM64)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential cmake git libssl-dev zlib1g-dev
|
||||
|
||||
- name: Configure and build UMSKT (Alpine)
|
||||
if: ${{ matrix.use_alpine }}
|
||||
uses: threeal/cmake-action@7ef2eb8da6e5ec0a6de6b1ddc96987080bed06e8
|
||||
with:
|
||||
options: MUSL_STATIC=ON
|
||||
run-build: true
|
||||
shell: alpine-target.sh {0}
|
||||
|
||||
- name: Configure and build UMSKT (Ubuntu)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
uses: threeal/cmake-action@7ef2eb8da6e5ec0a6de6b1ddc96987080bed06e8
|
||||
with:
|
||||
options: MUSL_STATIC=ON
|
||||
run-build: true
|
||||
|
||||
- name: Test UMSKT (Alpine)
|
||||
if: ${{ matrix.use_alpine }}
|
||||
run: |
|
||||
cd build
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
shell: alpine-target.sh {0}
|
||||
|
||||
- name: Test UMSKT (Ubuntu)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
run: |
|
||||
cd build
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
|
||||
- name: Move files to correct directory
|
||||
run: |
|
||||
mkdir -p build/actions_upload
|
||||
@@ -69,19 +109,73 @@ jobs:
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-linux-${{ matrix.arch }}-static
|
||||
name: UMSKT-Linux-${{ matrix.arch }}-static
|
||||
path: build/actions_upload
|
||||
|
||||
- name: Configure and build static internal deps UMSKT
|
||||
- name: Configure and build static internal deps UMSKT (Alpine)
|
||||
if: ${{ matrix.use_alpine }}
|
||||
uses: threeal/cmake-action@7ef2eb8da6e5ec0a6de6b1ddc96987080bed06e8
|
||||
with:
|
||||
options: MUSL_STATIC=OFF BUILD_SHARED_LIBS=OFF
|
||||
run-build: true
|
||||
shell: alpine-target.sh {0}
|
||||
|
||||
- name: Configure and build shared deps UMSKT
|
||||
- name: Configure and build static internal deps UMSKT (Ubuntu)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
uses: threeal/cmake-action@7ef2eb8da6e5ec0a6de6b1ddc96987080bed06e8
|
||||
with:
|
||||
options: MUSL_STATIC=OFF BUILD_SHARED_LIBS=OFF
|
||||
run-build: true
|
||||
|
||||
- name: Test static internal deps UMSKT (Alpine)
|
||||
if: ${{ matrix.use_alpine }}
|
||||
run: |
|
||||
cd build
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
shell: alpine-target.sh {0}
|
||||
|
||||
- name: Test static internal deps UMSKT (Ubuntu)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
run: |
|
||||
cd build
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
|
||||
- name: Configure and build shared deps UMSKT (Alpine)
|
||||
if: ${{ matrix.use_alpine }}
|
||||
uses: threeal/cmake-action@7ef2eb8da6e5ec0a6de6b1ddc96987080bed06e8
|
||||
with:
|
||||
options: MUSL_STATIC=OFF BUILD_SHARED_LIBS=ON
|
||||
run-build: true
|
||||
shell: alpine-target.sh {0}
|
||||
|
||||
- name: Configure and build shared deps UMSKT (Ubuntu)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
uses: threeal/cmake-action@7ef2eb8da6e5ec0a6de6b1ddc96987080bed06e8
|
||||
with:
|
||||
options: MUSL_STATIC=OFF BUILD_SHARED_LIBS=ON
|
||||
run-build: true
|
||||
|
||||
- name: Test shared deps UMSKT (Alpine)
|
||||
if: ${{ matrix.use_alpine }}
|
||||
run: |
|
||||
cd build
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
shell: alpine-target.sh {0}
|
||||
|
||||
- name: Test shared deps UMSKT (Ubuntu)
|
||||
if: ${{ !matrix.use_alpine }}
|
||||
run: |
|
||||
cd build
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
|
5
.github/workflows/macos.yml
vendored
5
.github/workflows/macos.yml
vendored
@@ -85,7 +85,10 @@ jobs:
|
||||
- name: Run tests
|
||||
run: |
|
||||
cd build/actions_upload
|
||||
./umskt
|
||||
echo Test 1 - generating key
|
||||
./umskt -b 2C -c 365 -s 069420 -v
|
||||
echo Test 2 - generating confid
|
||||
./umskt -i 253286028742154311079061239762245184619981623171292574
|
||||
|
||||
- name: Upload platform-specific build
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
|
94
.github/workflows/windows.yml
vendored
94
.github/workflows/windows.yml
vendored
@@ -27,13 +27,14 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-tdm:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, x86]
|
||||
arch: [x64, x86, arm64]
|
||||
steps:
|
||||
- name: Setup TDM-GCC
|
||||
if: matrix.arch != 'arm64'
|
||||
run: |
|
||||
Write-Host Downloading TDM-GCC v10.3.0...
|
||||
Invoke-WebRequest -Uri 'https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe' -OutFile 'C:\Windows\temp\TDM-GCC-64.exe'
|
||||
@@ -49,10 +50,17 @@ jobs:
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
|
||||
|
||||
- name: Setup MSVC for ARM64
|
||||
if: matrix.arch == 'arm64'
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: arm64
|
||||
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download OpenSSL-TDM release asset
|
||||
if: matrix.arch != 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
if ('${{ matrix.arch }}' -eq 'x64') {
|
||||
@@ -74,7 +82,39 @@ jobs:
|
||||
echo "OPENSSL_LIBDIR=$libdir" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "CMAKE_FLAGS=$cmake_flags" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
|
||||
- name: Setup vcpkg for ARM64
|
||||
if: matrix.arch == 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
git clone https://github.com/Microsoft/vcpkg.git
|
||||
cd vcpkg
|
||||
.\bootstrap-vcpkg.bat
|
||||
echo "VCPKG_ROOT=$env:GITHUB_WORKSPACE/vcpkg" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "VCPKG_DEFAULT_BINARY_CACHE=$env:GITHUB_WORKSPACE/vcpkg/bincache" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "VCPKG_BINARY_SOURCES=clear;default,readwrite" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
|
||||
- name: Cache vcpkg packages
|
||||
if: matrix.arch == 'arm64'
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/vcpkg/bincache
|
||||
${{ github.workspace }}/vcpkg/installed
|
||||
${{ github.workspace }}/vcpkg/packages
|
||||
key: vcpkg-arm64-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('**/*.cmake') }}
|
||||
restore-keys: |
|
||||
vcpkg-arm64-${{ hashFiles('**/CMakeLists.txt') }}-
|
||||
vcpkg-arm64-
|
||||
|
||||
- name: Install OpenSSL for ARM64
|
||||
if: matrix.arch == 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
New-Item -ItemType Directory -Force -Path $env:VCPKG_DEFAULT_BINARY_CACHE
|
||||
& "$env:VCPKG_ROOT\vcpkg.exe" install openssl:arm64-windows-static --clean-after-build
|
||||
|
||||
- name: Configure UMSKT (TDM-GCC ${{ matrix.arch }})
|
||||
if: matrix.arch != 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
@@ -92,14 +132,60 @@ jobs:
|
||||
-DCMAKE_CXX_FLAGS="$env:CMAKE_FLAGS" `
|
||||
.
|
||||
|
||||
- name: Configure UMSKT (MSVC ARM64)
|
||||
if: matrix.arch == 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
cmake -G "Visual Studio 17 2022" `
|
||||
-A ARM64 `
|
||||
-DWINDOWS_ARM=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DVCPKG_TARGET_TRIPLET=arm64-windows-static `
|
||||
.
|
||||
|
||||
- name: Build UMSKT (TDM-GCC ${{ matrix.arch }})
|
||||
if: matrix.arch != 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
mingw32-make
|
||||
|
||||
- name: Build UMSKT (MSVC ARM64)
|
||||
if: matrix.arch == 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
cmake --build . --config Release
|
||||
|
||||
- name: Run tests (x86/x64)
|
||||
if: matrix.arch != 'arm64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
Write-Host Test 1 - generating key
|
||||
.\umskt.exe -b 2C -c 365 -s 069420 -v
|
||||
Write-Host Test 2 - generatng confid
|
||||
.\umskt.exe -i 253286028742154311079061239762245184619981623171292574
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-TDM${{ matrix.arch }}
|
||||
path: umskt.exe
|
||||
name: UMSKT-WinNT-${{ matrix.arch }}
|
||||
path: ${{ matrix.arch == 'arm64' && 'Release/umskt.exe' || 'umskt.exe' }}
|
||||
|
||||
test-arm64:
|
||||
needs: build
|
||||
if: success()
|
||||
runs-on: windows-11-arm
|
||||
steps:
|
||||
- name: Download ARM64 artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: UMSKT-WinNT-arm64
|
||||
path: .
|
||||
|
||||
- name: Run tests (ARM64)
|
||||
shell: pwsh
|
||||
run: |
|
||||
Write-Host Test 1 - generating key
|
||||
.\umskt.exe -b 2C -c 365 -s 069420 -v
|
||||
Write-Host Test 2 - generatng confid
|
||||
.\umskt.exe -i 253286028742154311079061239762245184619981623171292574
|
||||
|
@@ -26,6 +26,24 @@ if (WIN32 AND NOT MSVC)
|
||||
set(CMAKE_C_COMPILER "C:/TDM-GCC-64/bin/gcc.exe" CACHE FILEPATH "C Compiler" FORCE)
|
||||
set(CMAKE_CXX_COMPILER "C:/TDM-GCC-64/bin/g++.exe" CACHE FILEPATH "C++ Compiler" FORCE)
|
||||
message(STATUS "[UMSKT] Forcing use of TDM-GCC in C:/TDM-GCC-64")
|
||||
|
||||
# Configure windres for resource compilation
|
||||
set(CMAKE_RC_COMPILER "C:/TDM-GCC-64/bin/windres.exe")
|
||||
set(CMAKE_RC_COMPILER_INIT windres)
|
||||
enable_language(RC)
|
||||
set(CMAKE_RC_FLAGS "--use-temp-file -c65001")
|
||||
|
||||
# Match resource architecture with target architecture
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -F pe-i386")
|
||||
else()
|
||||
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -F pe-x86-64")
|
||||
endif()
|
||||
|
||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff -I${CMAKE_CURRENT_SOURCE_DIR}/src/windows <DEFINES> -i <SOURCE> -o <OBJECT>")
|
||||
|
||||
# Set the Windows resource file for GCC builds
|
||||
set(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc)
|
||||
endif()
|
||||
|
||||
SET(CMAKE_CXX_STANDARD 17)
|
||||
@@ -36,6 +54,7 @@ OPTION(UMSKT_USE_SHARED_OPENSSL "Force linking against the system-wide OpenSSL l
|
||||
OPTION(MUSL_STATIC "Enable fully static builds in a muslc environment (i.e. Alpine Linux)" OFF)
|
||||
OPTION(DJGPP_WATT32 "Enable compilation and linking with DJGPP/WATT32/OpenSSL" OFF)
|
||||
OPTION(MSVC_MSDOS_STUB "Specify a custom MS-DOS stub for a 32-bit MSVC compilation" OFF)
|
||||
OPTION(WINDOWS_ARM "Enable compilation for Windows on ARM (requires appropriate toolchain)" OFF)
|
||||
|
||||
SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS})
|
||||
SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS})
|
||||
@@ -60,7 +79,22 @@ ELSE()
|
||||
MESSAGE(STATUS "[UMSKT] Requesting static version of OpenSSL")
|
||||
ENDIF()
|
||||
|
||||
|
||||
# Configure ARM-specific settings if enabled
|
||||
if (WINDOWS_ARM)
|
||||
if (MSVC)
|
||||
# MSVC ARM64 settings
|
||||
set(CMAKE_SYSTEM_PROCESSOR ARM64)
|
||||
set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE ARM64)
|
||||
else()
|
||||
# MinGW/GCC ARM settings
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
if (CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "[UMSKT] Configuring for Windows on ARM")
|
||||
endif()
|
||||
|
||||
IF(DJGPP_WATT32)
|
||||
SET(CMAKE_SYSTEM_NAME MSDOS)
|
||||
|
@@ -29,6 +29,10 @@
|
||||
|
||||
#include "confid.h"
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#include <intrin.h>
|
||||
#endif
|
||||
|
||||
QWORD MOD = 0;
|
||||
QWORD NON_RESIDUE = 0;
|
||||
QWORD f[6] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
|
||||
@@ -75,6 +79,12 @@ inline QWORD ConfirmationID::__umul128(QWORD a, QWORD b, QWORD* hi)
|
||||
#else
|
||||
#define __umul128 _umul128
|
||||
#endif
|
||||
#elif defined(_M_ARM64) // Microsoft implementation of ARM64
|
||||
inline QWORD ConfirmationID::__umul128(QWORD a, QWORD b, QWORD* hi)
|
||||
{
|
||||
*hi = __umulh(a, b);
|
||||
return a * b;
|
||||
}
|
||||
#elif defined(__i386__) || defined(_M_IX86) || defined(__arm__) || defined(__EMSCRIPTEN__)
|
||||
inline QWORD ConfirmationID::__umul128(QWORD multiplier, QWORD multiplicand, QWORD *product_hi) {
|
||||
// multiplier = ab = a * 2^32 + b
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user