24 Commits
master ... smol

Author SHA1 Message Date
ebc9059cb0 Update dos-djgpp.yml 2025-07-23 11:26:13 -05:00
df22eccb0b Update dos-djgpp.yml 2025-07-23 11:20:08 -05:00
f02a2abb34 Update dos-djgpp.yml 2025-07-23 11:19:52 -05:00
83d9039efe Update dos-djgpp.yml 2025-07-23 11:11:17 -05:00
2e426e32dd Update dos-djgpp.yml 2025-07-23 11:04:18 -05:00
848519b9ac oopsie 2025-07-23 10:59:32 -05:00
47812ea933 Update dos-djgpp.yml 2025-07-23 10:55:36 -05:00
7f8544cb1b Update windows-x86-x64.yml 2025-07-23 10:42:08 -05:00
3d6bf59057 Update windows-x86-x64.yml 2025-07-23 10:35:25 -05:00
424f966e32 Update windows-x86-x64.yml 2025-07-23 10:29:24 -05:00
b2f072cbe6 Update windows-x86-x64.yml 2025-07-23 10:21:35 -05:00
95a13c127d Update windows-x86-x64.yml 2025-07-23 10:16:01 -05:00
5586c29557 Update windows-x86-x64.yml 2025-07-23 10:13:22 -05:00
f1db4cf517 Update windows-x86-x64.yml 2025-07-23 10:09:06 -05:00
da2a83b483 Update windows-x86-x64.yml 2025-07-23 10:03:01 -05:00
3002e98c1d Update windows-x86-x64.yml 2025-07-23 09:58:44 -05:00
76049370c3 Update windows-x86-x64.yml 2025-07-23 09:55:31 -05:00
ab09ab904c Update windows-x86-x64.yml 2025-07-23 09:49:19 -05:00
d85e10cf90 Update windows-x86-x64.yml 2025-07-23 09:46:10 -05:00
a93fcda3e0 Update windows-x86-x64.yml 2025-07-23 09:36:47 -05:00
df25a47ec2 Update windows-x86-x64.yml 2025-07-23 09:31:30 -05:00
ec6d12760e maybe maybe maybe 2025-07-23 09:16:04 -05:00
972eef88b6 again 2025-07-22 23:55:48 -05:00
3d94685209 make the exe smaller? 2025-07-22 23:48:57 -05:00
3 changed files with 203 additions and 5 deletions

View File

@ -188,3 +188,121 @@ jobs:
with:
name: UMSKT-DOS-x86
path: build/actions_upload
compress:
needs: build
if: success()
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Setup test environment
run: |
sudo apt -y update
sudo apt -y install dosbox
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: UMSKT-DOS-x86
path: .
- name: Install UPX
uses: crazy-max/ghaction-upx@v3
with:
install-only: true
- name: Compress binary
shell: pwsh
run: |
upx umskt.exe --best --ultra-brute -v
- name: Setup DOSBox test environment
run: |
mkdir -p dosbox_test
cp 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]
cputype=386
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 actions_upload
mv umskt.exe actions_upload/
- name: Upload build artifact
uses: actions/upload-artifact@v4.6.2
with:
name: UMSKT-DOS-x86-Compressed
path: actions_upload

View File

@ -98,9 +98,9 @@ jobs:
cd openssl-1.1.1
if [[ ${{ matrix.arch }} == "x86" ]]; then
/usr/bin/perl Configure mingw --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-32 no-tests no-sse2 no-asm no-threads -DOPENSSL_DEV_NO_ATOMICS -mno-mmx -mno-sse -mno-sse2 -march=i686 -mtune=generic
/usr/bin/perl Configure mingw --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-32 no-tests no-sse2 no-asm no-threads -DOPENSSL_DEV_NO_ATOMICS -mno-mmx -mno-sse -mno-sse2 -march=i686 -mtune=generic -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector
else
/usr/bin/perl Configure mingw64 --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-64 no-tests no-asm -DOPENSSL_DEV_NO_ATOMICS -mno-mmx
/usr/bin/perl Configure mingw64 --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-64 no-tests no-asm -DOPENSSL_DEV_NO_ATOMICS -mno-mmx -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector
fi
mingw32-make -j
mingw32-make install_sw
@ -158,3 +158,78 @@ jobs:
with:
name: UMSKT-WinNT-${{ matrix.arch }}
path: umskt.exe
compress:
needs: build
if: success()
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- arch: x86
- arch: x64
steps:
- name: Setup TDM-GCC
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'
Write-Host Creating directory...
New-Item -ItemType Directory -Path 'C:\TDM-GCC-64'
Write-Host Copying files [Set 1/3]...
Start-Process '7z' -ArgumentList 'e C:\Windows\temp\TDM-GCC-64.exe -oC:\TDM-GCC-64 -y' -Wait
Write-Host Copying files [Set 2/3]...
Start-Process '7z' -ArgumentList 'e C:\TDM-GCC-64\*.tar.xz -oC:\TDM-GCC-64 -y' -Wait
Write-Host Copying files [Set 3/3]...
Start-Process '7z' -ArgumentList 'x C:\TDM-GCC-64\*.tar -oC:\TDM-GCC-64 -y' -Wait
Write-Host Adding environment variables...
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
- name: Setup UPX
run: |
Invoke-WebRequest -Uri 'https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-win64.zip' -OutFile 'C:\Windows\temp\upx.zip'
Write-Host Creating directory...
New-Item -ItemType Directory -Path 'C:\UPX'
Write-Host Copying files...
Expand-Archive -Path 'C:\Windows\temp\upx.zip' -DestinationPath 'C:\UPX'
Write-Host Adding environment variables...
$env:PATH = 'C:\UPX\upx-5.0.2-win64;' + $env:PATH
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
- name: Download ${{matrix.arch}} artifact
uses: actions/download-artifact@v4
with:
name: UMSKT-WinNT-${{ matrix.arch }}
path: .
- name: Compress binaries
shell: pwsh
run: |
# Strip symbols
strip .\umskt.exe
# Remove resources
llvm-objcopy --remove-section .rsrc umskt.exe umskt_comp.exe
# Compress with UPX
& "C:\UPX\upx-5.0.2-win64\upx.exe" --best --ultra-brute .\umskt_comp.exe
# Replace original EXE
Remove-Item .\umskt.exe
Rename-Item -Path .\umskt_comp.exe -NewName umskt.exe
- name: Run tests
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-WinNT-${{ matrix.arch }}-Compressed
path: umskt.exe

View File

@ -27,6 +27,11 @@ if (WIN32 AND NOT MSVC)
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")
# Add size optimization flags for GCC
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wl,--gc-sections -Wl,--strip-all")
# Configure windres for resource compilation
set(CMAKE_RC_COMPILER "C:/TDM-GCC-64/bin/windres.exe")
set(CMAKE_RC_COMPILER_INIT windres)
@ -123,13 +128,13 @@ ENDIF()
IF(MSVC)
SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
IF(NOT BUILD_SHARED_LIBS)
SET(CMAKE_CXX_FLAGS_RELEASE "/MT")
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Os /GL /GS- /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd")
ELSE()
SET(CMAKE_CXX_FLAGS_RELEASE "/MD")
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /Os /GL /GS- /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd")
ENDIF()
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT")
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT /OPT:REF /OPT:ICF")
SET(CMAKE_ENABLE_EXPORTS ON)
SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc)
SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp)