mirror of
https://github.com/Neo-Desktop/WindowsXPKg
synced 2025-12-09 03:35:12 +02:00
Windows on ARM support + icon fixes (#129)
* Support for Windows on ARM (uses MSVC, but it's Windows 11 exclusive anyway so `¯\_(ツ)_/¯`) * Adds the icon back for x86/x64 TDM-GCC builds * Makes Linux compilation on ARM much faster * added tests to every workflow
This commit is contained in:
97
.github/workflows/dos-djgpp.yml
vendored
97
.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
|
||||
|
||||
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: |
|
||||
|
||||
104
.github/workflows/linux.yml
vendored
104
.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
|
||||
@@ -72,16 +112,70 @@ jobs:
|
||||
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-${{ 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-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
|
||||
|
||||
Reference in New Issue
Block a user