mirror of
https://github.com/Neo-Desktop/WindowsXPKg
synced 2025-07-15 16:50:21 +03:00
Compare commits
4 Commits
v0.3.1-bet
...
f630ed1e53
Author | SHA1 | Date | |
---|---|---|---|
f630ed1e53 | |||
7c8a7dd54c | |||
befe149285 | |||
5eb3ed11f8 |
16
.github/workflows/dos-djgpp.yml
vendored
16
.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 dosbox
|
||||
sudo apt -y install build-essential cmake wget 7zip git flex libfl-dev nasm libslang2-dev pkg-config libslang2-modules gcc-multilib dosbox tree
|
||||
|
||||
- name: Download and Setup DJGPP Toolchain
|
||||
run: |
|
||||
@ -50,6 +50,7 @@ jobs:
|
||||
wget https://github.com/andrewwutw/build-djgpp/releases/download/v3.4/djgpp-linux64-gcc1220.tar.bz2
|
||||
tar xjf djgpp-linux64-gcc1220.tar.bz2
|
||||
cd ${{ github.workspace }}/djgpp
|
||||
tree . -S
|
||||
git clone https://github.com/UMSKT/Watt-32.git watt32
|
||||
cd watt32/util
|
||||
make clean && make linux
|
||||
@ -84,12 +85,18 @@ jobs:
|
||||
path: |
|
||||
${{ github.workspace }}/djgpp
|
||||
key: openssl-3.1.2-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
|
||||
- name: Download stub
|
||||
run: |
|
||||
wget https://web.archive.org/web/20250308092209/https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/system/cwsdpmi/csdpmi7b.zip -O CSDPMI7B.ZIP
|
||||
mkdir /home/runner/dpmibin
|
||||
7z e CSDPMI7B.ZIP bin/CWSDSTUB.EXE -o/home/runner/dpmibin
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
source ${{ github.workspace }}/djgpp/setenv
|
||||
pushd build
|
||||
cmake ../ -D DJGPP_WATT32=${WATT_ROOT}/lib/libwatt.a -D CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}
|
||||
cmake ../ -D DJGPP_WATT32=${WATT_ROOT}/lib/libwatt.a -D CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH} -D CWSDSTUB_LOCATION=/home/runner/dpmibin/CWSDSTUB.EXE -D DJGPP_BIN_LOCATION=/home/runner/work/UMSKT/UMSKT/djgpp/i586-pc-msdosdjgpp/bin
|
||||
make
|
||||
|
||||
- name: Setup DOSBox test environment
|
||||
@ -97,7 +104,7 @@ jobs:
|
||||
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
|
||||
# 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
|
||||
@ -119,6 +126,7 @@ jobs:
|
||||
[sdl]
|
||||
nosound=true
|
||||
[cpu]
|
||||
cputype=386
|
||||
core=dynamic
|
||||
cycles=max
|
||||
[autoexec]
|
||||
|
125
.github/workflows/windows.yml
vendored
125
.github/workflows/windows.yml
vendored
@ -30,6 +30,7 @@ jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x64, x86, arm64]
|
||||
steps:
|
||||
@ -50,6 +51,19 @@ jobs:
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
|
||||
|
||||
- name: Setup MSYS2
|
||||
if: matrix.arch != 'arm64'
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ${{ matrix.arch == 'x86' && 'MINGW32' || 'MINGW64' }}
|
||||
update: true
|
||||
install: >-
|
||||
mingw-w64-${{ matrix.arch == 'x86' && 'i686' || 'x86_64' }}-gcc
|
||||
mingw-w64-${{ matrix.arch == 'x86' && 'i686' || 'x86_64' }}-make
|
||||
mingw-w64-x86_64-perl
|
||||
perl
|
||||
git
|
||||
|
||||
- name: Setup MSVC for ARM64
|
||||
if: matrix.arch == 'arm64'
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
@ -59,28 +73,99 @@ jobs:
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download OpenSSL-TDM release asset
|
||||
if: matrix.arch != 'arm64'
|
||||
- name: Cache OpenSSL 3.1.2 (32-bit)
|
||||
uses: actions/cache/restore@v4
|
||||
if: matrix.arch == 'x86'
|
||||
id: cache-openssl-32
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/OpenSSL-TDM-32
|
||||
key: openssl-3.1.2-x86-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
- name: Cache OpenSSL 3.1.2 (64-bit)
|
||||
uses: actions/cache/restore@v4
|
||||
if: matrix.arch == 'x64'
|
||||
id: cache-openssl-64
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/OpenSSL-TDM-64
|
||||
key: openssl-3.1.2-x64-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
- name: Checkout and Compile OpenSSL 3.1.2
|
||||
if: matrix.arch != 'arm64' && steps.cache-openssl-32.outputs.cache-hit != 'true' && steps.cache-openssl-64.outputs.cache-hit != 'true'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
# Clone UMSKT's OpenSSL fork
|
||||
echo "Cloning UMSKT OpenSSL fork..."
|
||||
git clone https://github.com/UMSKT/openssl.git --depth 1 openssl-3.1.2
|
||||
|
||||
- name: Checkout and Compile OpenSSL 3.1.2 (32-bit)
|
||||
if: matrix.arch == 'x86' && steps.cache-openssl-32.outputs.cache-hit != 'true'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
# Set up proper MSYS2 environment
|
||||
export MSYS=winsymlinks:nativestrict
|
||||
export MSYS2_PATH_TYPE=strict
|
||||
export LANG=en_US.UTF-8
|
||||
export PATH="/usr/bin:/mingw64/bin:$PATH"
|
||||
export PATH="/c/TDM-GCC-64/bin:$PATH"
|
||||
export MSYSTEM=MINGW32
|
||||
echo "Compiling 32-bit OpenSSL..."
|
||||
cd openssl-3.1.2
|
||||
/usr/bin/perl Configure mingw --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-32 --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=i386 -mtune=generic
|
||||
mingw32-make -j
|
||||
mingw32-make install_sw
|
||||
cd ..
|
||||
|
||||
- name: Checkout and Compile OpenSSL 3.1.2 (64-bit)
|
||||
if: matrix.arch == 'x64' && steps.cache-openssl-64.outputs.cache-hit != 'true'
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
# Set up proper MSYS2 environment
|
||||
export MSYS=winsymlinks:nativestrict
|
||||
export MSYS2_PATH_TYPE=strict
|
||||
export LANG=en_US.UTF-8
|
||||
export PATH="/usr/bin:/mingw64/bin:$PATH"
|
||||
export PATH="/c/TDM-GCC-64/bin:$PATH"
|
||||
export MSYSTEM=MINGW64
|
||||
echo "Compiling 64-bit OpenSSL..."
|
||||
cd openssl-3.1.2
|
||||
/usr/bin/perl Configure mingw64 --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-64 --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-64 no-tests no-asm -DOPENSSL_DEV_NO_ATOMICS -mno-mmx
|
||||
mingw32-make -j
|
||||
mingw32-make install_sw
|
||||
cd ..
|
||||
|
||||
- name: Save OpenSSL 3.1.2 (32-bit)
|
||||
if: matrix.arch == 'x86' && steps.cache-openssl-32.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/OpenSSL-TDM-32
|
||||
key: openssl-3.1.2-x86-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
- name: Save OpenSSL 3.1.2 (64-bit)
|
||||
if: matrix.arch == 'x64' && steps.cache-openssl-64.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
${{ github.workspace }}/OpenSSL-TDM-64
|
||||
key: openssl-3.1.2-x64-${{ hashFiles('**/CMakeLists.txt') }}
|
||||
|
||||
- name: Set OpenSSL Environment (32-bit)
|
||||
if: matrix.arch == 'x86'
|
||||
shell: pwsh
|
||||
run: |
|
||||
if ('${{ matrix.arch }}' -eq 'x64') {
|
||||
$url = "https://github.com/UMSKT/winactiontest/releases/download/openssl/OpenSSL-TDM-64.zip"
|
||||
$dest = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-64"
|
||||
$libdir = "lib64"
|
||||
$cmake_flags = "-m64"
|
||||
$openssl_root = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-64"
|
||||
} else {
|
||||
$url = "https://github.com/UMSKT/winactiontest/releases/download/openssl/OpenSSL-TDM-32.zip"
|
||||
$dest = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-32"
|
||||
$libdir = "lib32"
|
||||
$cmake_flags = "-m32"
|
||||
$openssl_root = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-32"
|
||||
}
|
||||
Invoke-WebRequest -Uri $url -OutFile "OpenSSL-TDM.zip"
|
||||
Expand-Archive -Path "OpenSSL-TDM.zip" -DestinationPath $env:GITHUB_WORKSPACE
|
||||
echo "OPENSSL_ROOT=$openssl_root" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "OPENSSL_LIBDIR=$libdir" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "CMAKE_FLAGS=$cmake_flags" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "OPENSSL_ROOT=$env:GITHUB_WORKSPACE/OpenSSL-TDM-32" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "OPENSSL_LIBDIR=lib" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "CMAKE_FLAGS=-m32" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
|
||||
- name: Set OpenSSL Environment (64-bit)
|
||||
if: matrix.arch == 'x64'
|
||||
shell: pwsh
|
||||
run: |
|
||||
echo "OPENSSL_ROOT=$env:GITHUB_WORKSPACE/OpenSSL-TDM-64" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "OPENSSL_LIBDIR=lib" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
echo "CMAKE_FLAGS=-m64" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
|
||||
- name: Setup vcpkg for ARM64
|
||||
if: matrix.arch == 'arm64'
|
||||
|
@ -36,6 +36,8 @@ if (WIN32 AND NOT MSVC)
|
||||
# Match resource architecture with target architecture
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -F pe-i386")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i386 -mtune=generic -mno-sse -mno-sse2 -mno-mmx -mno-3dnow")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i386 -mtune=generic -mno-sse -mno-sse2 -mno-mmx -mno-3dnow")
|
||||
else()
|
||||
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -F pe-x86-64")
|
||||
endif()
|
||||
@ -108,7 +110,8 @@ IF(DJGPP_WATT32)
|
||||
# Maximum compatibility flags for DOS/NTVDM
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i386 -mtune=i386 -mno-sse -mno-sse2 -mno-mmx -mno-3dnow -mno-ssse3 -mno-sse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-avx2 -mno-fma -mno-fma4")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i386 -mtune=i386 -mno-sse -mno-sse2 -mno-mmx -mno-3dnow -mno-ssse3 -mno-sse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-avx2 -mno-fma -mno-fma4")
|
||||
MESSAGE(STATUS "[UMSKT] Using i386 target for DOS DGJPP")
|
||||
|
||||
MESSAGE(STATUS "[UMSKT] Using i386 target for DOS DGJPP with stub: ${CWSDSTUB_LOCATION}")
|
||||
ENDIF()
|
||||
|
||||
##if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
@ -273,4 +276,21 @@ ELSE()
|
||||
GET_FILENAME_COMPONENT(OPENSSL_CRYPTO_LIBRARY_FILENAME ${OPENSSL_CRYPTO_LIBRARY} NAME)
|
||||
CONFIGURE_FILE(${OPENSSL_CRYPTO_LIBRARY} "${CMAKE_CURRENT_BINARY_DIR}/${OPENSSL_CRYPTO_LIBRARY_FILENAME}" COPYONLY)
|
||||
ENDIF()
|
||||
|
||||
IF (DJGPP_WATT32)
|
||||
message(STATUS "[UMSKT] Configuring DJGPP post-build commands")
|
||||
# Set .exe suffix for DJGPP builds
|
||||
set_target_properties(umskt PROPERTIES SUFFIX ".exe")
|
||||
add_custom_command(TARGET umskt POST_BUILD
|
||||
# Convert exe to coff, removing the default stub
|
||||
COMMAND ${DJGPP_BIN_LOCATION}/exe2coff $<TARGET_FILE:umskt>
|
||||
# Concatenate CWSDSTUB with the COFF file
|
||||
COMMAND ${CMAKE_COMMAND} -E cat ${CWSDSTUB_LOCATION} $<TARGET_FILE_DIR:umskt>/umskt > $<TARGET_FILE:umskt>
|
||||
# Clean up the COFF file
|
||||
COMMAND ${CMAKE_COMMAND} -E rm $<TARGET_FILE_DIR:umskt>/umskt
|
||||
)
|
||||
message(STATUS "[UMSKT] STUBIFY_LOCATION set to: ${STUBIFY_LOCATION}")
|
||||
message(STATUS "[UMSKT] CWSDSTUB_LOCATION set to: ${CWSDSTUB_LOCATION}")
|
||||
message(STATUS "[UMSKT] DJGPP_BIN_LOCATION set to: ${DJGPP_BIN_LOCATION}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
Reference in New Issue
Block a user