Skip to content

Commit

Permalink
add new local composite action to simplify build
Browse files Browse the repository at this point in the history
composite action do all necessary steps to download, build and configure
add new local composite action to simplify build MSVC compiler setup

fix bug in VCT2003 cache image, missing setargv.obj file for x86 target

Use Visual studio numbering everywhere instead of mixing with Visual C++ compiler Toolkit numbering
fix building for arm by VS2019 and VS2022
  • Loading branch information
jmalak committed Dec 11, 2024
1 parent c295c34 commit 5c1a208
Show file tree
Hide file tree
Showing 7 changed files with 1,107 additions and 918 deletions.
99 changes: 99 additions & 0 deletions .github/actions/load-tools/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: load-build-tools
description: Load build tools
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
#
# JOM make, used instead of nmake for parallel builds
#
# expected filename: https://download.qt.io/official_releases/jom/jom.zip
#
# NASM assembler
#
# expected filename: https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win32/nasm-2.15.05-win32.zip
#
# Infozip
#
# expected filename: ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn.zip
# expected filename: ftp://ftp.info-zip.org/pub/infozip/os2/unz600.exe
#
# alternate site: https://ftp.zx.net.nz/pub/archive/ftp.info-zip.org/pub/infozip/
#
# OS2TK45 OS/2 header files
#
# expected filename: https://88watts.net/dlfile.php?F=Os2Tk45-
#
# OS/2 Developer's Toolkit v4.5 is available on David Azarewicz's 88watts.net
# *supposedly* with permission from IBM - or so Arca Noae (which David is
# involved with) claims on this page:
# https://www.arcanoae.com/wiki/information-for-developers/
# It is needed only for building the IBM TCP/IP 2.0 TCP/IP backend. The SDK
# for this is also available on the OS/2 Warp 4 CD.
#
runs:
using: composite
steps:
- name: Load Build Tools Cache
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-tools
with:
path: |
${{github.workspace}}/tools
${{github.workspace}}/info-zip/zip.exe
${{github.workspace}}/info-zip/unzip.exe
${{github.workspace}}/info-zip/os2
key: all-nasm+jom+info-zip+os2tk45
- run: mkdir -p tools
if: steps.cache-tools.outputs.cache-hit != 'true'
shell: bash
- name: Get and unpack nasm
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
curl -LsS -o nasm-2.15.05-win32.zip https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win32/nasm-2.15.05-win32.zip
7z x nasm-2.15.05-win32.zip -otools
rm -f nasm-2.15.05-win32.zip
mv tools/nasm-2.15.05 tools/nasm
echo "content of tools/nasm"
ls -l tools/nasm
shell: bash
- name: Get and unpack nasm
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
mkdir -p tools/jom
curl -LsS -o jom.zip https://download.qt.io/official_releases/jom/jom.zip
7z x jom.zip -otools/jom
rm -f jom.zip
echo "content of tools/jom"
ls -l tools/jom
shell: bash
- name: Get and unpack os2tk45
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
curl -LsS -o os2tk45.zip ${{env.OS2TK45}}
7z x os2tk45.zip
rm -f os2tk45.zip
mv toolkit/os2tk45 tools/os2tk45
mv tools/os2tk45/h tools/os2tk45/include
echo "content of tools/os2tk45"
ls -l tools/os2tk45
shell: bash
- name: Get and unpack Info-Zip
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
mkdir -p info-zip/os2
curl -LsS -o zip.zip ${{env.INFOZIP_FTP}}win32/zip300xn.zip
7z x zip.zip -oinfo-zip
rm -f zip.zip
curl -LsS -o unzip.zip ${{env.INFOZIP_FTP}}os2/unz600.exe
7z x unzip.zip -oinfo-zip/os2
rm -f unzip.zip
mv info-zip/os2/32-bit/* info-zip/os2/
echo "content of info-zip/os2"
ls -l info-zip/os2
echo "content of info-zip"
ls -l info-zip
shell: bash
51 changes: 51 additions & 0 deletions .github/actions/load-vs2003/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: load-vs2003-psdk2003-sp1
description: Load Visual Studio 2003/2005 Toolkit and PSDK 2003 SP1
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
arch:
description: 'Architecture'
default: ''
required: false
type: string
#
# expected filename: https://ftp.zx.net.nz/pub/dev/VC2003Toolkit/VCT2003+PSDK2003+cvtres.7z
#
runs:
using: composite
steps:
- name: Load Cache VS2003
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-vs2003
with:
path: |
${{github.workspace}}\vs2003
key: all-vs2003+psdk2003sp1
- name: Get and unpack Visual C++ 2003 Toolkit and PSDK 2003 SP1
if: steps.cache-vs2003.outputs.cache-hit != 'true'
run: |
curl -LsS -o vs2003.7z https://ftp.zx.net.nz/pub/dev/VC2003Toolkit/VCT2003+PSDK2003+cvtres.7z
7z x vs2003.7z
rm -f vs2003.7z
mv "Microsoft Platform SDK 2003SP1" vs2003
rm -f vs2003\Bin\Cvtres.exe
echo "content of vs2003"
ls -l vs2003
shell: bash
- name: Setup build MSVC compiler Environment
run: |
rem add build MSVC compiler on the beginning of PATH
rem we need cvtres.exe from current MSVC compiler only
if "${{inputs.arch}}" == "x86" echo ${{github.workspace}}\vs2003\bin>> "%GITHUB_PATH%"
if "${{inputs.arch}}" == "ia64" echo ${{github.workspace}}\vs2003\bin\win64;${{github.workspace}}\vs2003\bin>> "%GITHUB_PATH%"
rem Don't want to pick up headers or libraries from current MSVC compiler
rem we override INCLUDE and LIB environment variables to point to build MSVC compiler
echo INCLUDE=${{github.workspace}}\vs2003\include>> "%GITHUB_ENV%"
if "${{inputs.arch}}" == "x86" echo LIB=${{github.workspace}}\vs2003\lib;%LIB%>> "%GITHUB_ENV%"
if "${{inputs.arch}}" == "ia64" echo LIB=${{github.workspace}}\vs2003\lib\ia64>> "%GITHUB_ENV%"
shell: cmd

62 changes: 62 additions & 0 deletions .github/actions/load-vs2010/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: load-vs2010-psdk71
description: Load Visual Studio 2010 Toolkit and PSDK 7.1
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
arch:
description: 'Architecture'
default: ''
required: false
type: string
#
# expected filename: https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-vc.7z
# expected filename: https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-psdk.7z
# expected filename: http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe
#
runs:
using: composite
steps:
- name: Load Cache VS2010
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-vs2010
with:
path: |
${{github.workspace}}\Microsoft SDKs
${{github.workspace}}\Microsoft Visual Studio 10.0
${{github.workspace}}\vc10.cmd
${{github.workspace}}\vs2010
key: all-vs2010-psdk71-redist
- name: Get and unpack Visual C++ 2010 Toolkit
if: steps.cache-vs2010.outputs.cache-hit != 'true'
run: |
curl -LsS -o win7-7.1-sdk-vc.7z https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-vc.7z
7z x win7-7.1-sdk-vc.7z
rm -f win7-7.1-sdk-vc.7z
echo "content of Microsoft Visual Studio 10.0"
ls -l "Microsoft Visual Studio 10.0"
shell: bash
- name: Get and unpack Windows 7 Platform SDK 7.1
if: steps.cache-vs2010.outputs.cache-hit != 'true'
run: |
curl -LsS -o win7-7.1-sdk-psdk.7z https://ftp.zx.net.nz/pub/dev/WinSDK/win7-7.1-dn4/win7-7.1-sdk-psdk.7z
7z x win7-7.1-sdk-psdk.7z
rm -f win7-7.1-sdk-psdk.7z
echo "content of Microsoft SDKs"
ls -l "Microsoft SDKs"
shell: bash
- name: Get Visual C++ 2010 runtime
if: steps.cache-vs2010.outputs.cache-hit != 'true'
run: |
mkdir -p vs2010
curl -LsS -o vs2010/vcredist_x86.exe http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe
echo "content of vs2010"
ls -l vs2010
shell: bash
- name: Install the VS2010 runtime
working-directory: ${{ github.workspace }}
run: vs2010\vcredist_x86.exe /q /norestart
shell: cmd
73 changes: 73 additions & 0 deletions .github/actions/load-watcom/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: load-open-watcom
description: Load Open Watcom
inputs:
nocache:
description: 'skip cache'
default: ''
required: false
type: string
ver:
description: 'version'
default: ''
required: false
type: string
id:
description: 'Identification'
default: ''
required: false
type: string
#
# Open Watcom 1.9
# expected filename: https://github.com/open-watcom/open-watcom-1.9/releases/download/ow1.9/open-watcom-c-linux-1.9
#
# Open Watcom 2.0
# expected filename: https://github.com/open-watcom/open-watcom-v2/releases/download/Current-build/ow-snapshot.tar.xz
#
runs:
using: composite
steps:
- name: Load Cache VS2003
if: inputs.nocache != 'true'
uses: actions/cache@v4
id: cache-ow
with:
path: |
${{github.workspace}}\watcom
key: all-open-watcom-${{inputs.ver}}
- name: Get and unpack Open Watcom
if: steps.cache-ow.outputs.cache-hit != 'true'
run: |
mkdir -p watcom
if [[ "${{inputs.ver}}" = "2.0" ]]; then
curl -LsS -o ow-snapshot.tar.xz https://github.com/open-watcom/open-watcom-v2/releases/download/Current-build/ow-snapshot.tar.xz
7z x ow-snapshot.tar.xz
7z x ow-snapshot.tar -owatcom
rm -f ow-snapshot.tar.xz ow-snapshot.tar
else
curl -LsS -o ow.zip https://github.com/open-watcom/open-watcom-1.9/releases/download/ow1.9/open-watcom-c-linux-1.9
7z x ow.zip -owatcom
rm -f ow.zip
fi
echo "content of watcom"
ls -l watcom
shell: bash
- name: Setup Open Watcom Environment
run: |
if [[ "${{runner.os}}" = "Windows" ]]; then
X=\\
else
X=/
fi
echo "WATCOM=${{github.workspace}}${X}watcom">> "$GITHUB_ENV"
echo "${{github.workspace}}${X}watcom${X}binw">> "$GITHUB_PATH"
if [[ "${{runner.os}}" = "Windows" ]]; then
echo "${{github.workspace}}${X}watcom${X}binnt">> "$GITHUB_PATH"
else
echo "${{github.workspace}}${X}watcom${X}binl">> "$GITHUB_PATH"
fi
if [[ "${{inputs.id}}" = "os2" ]]; then
echo "INCLUDE=${{github.workspace}}${X}watcom${X}h;${{github.workspace}}${X}watcom${X}h${X}os2">> "$GITHUB_ENV"
else
echo "INCLUDE=${{github.workspace}}${X}watcom${X}h;${{github.workspace}}${X}watcom${X}h${X}nt">> "$GITHUB_ENV"
fi
shell: bash
40 changes: 40 additions & 0 deletions .github/actions/msvc-set/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: comp-set
description: 'setup build MSVC compiler environment'
inputs:
path:
description: 'path list to add to PATH'
default: ''
required: false
type: string
include:
description: 'item list to add to INCLUDE'
default: ''
required: false
type: string
lib:
description: 'item list to add to LIB'
default: ''
required: false
type: string
runs:
using: composite
steps:
- name: Setup build MSVC compiler Environment
run: |
rem add build MSVC compiler on the beginning of PATH
rem we need cvtres.exe from current MSVC compiler only
for /f "tokens=1,2" %%a in ("${{inputs.path}}") do (
if not "%%b" == "" echo ${{github.workspace}}\%%b>> "%GITHUB_PATH%"
if not "%%a" == "" echo ${{github.workspace}}\%%a>> "%GITHUB_PATH%"
)
rem Don't want to pick up headers or libraries from current MSVC compiler
rem we override INCLUDE and LIB environment variables to point to build MSVC compiler
for /f "tokens=1,2" %%a in ("${{inputs.include}}") do (
if not "%%b" == "" echo INCLUDE=${{github.workspace}}\%%a;${{github.workspace}}\%%b>> "%GITHUB_ENV%"
if "%%b" == "" if not "%%a" == "" echo INCLUDE=${{github.workspace}}\%%a>> "%GITHUB_ENV%"
)
for /f "tokens=1,2" %%a in ("${{inputs.lib}}") do (
if not "%%b" == "" echo LIB=${{github.workspace}}\%%a;${{github.workspace}}\%%b>> "%GITHUB_ENV%"
if "%%b" == "" if not "%%a" == "" echo LIB=${{github.workspace}}\%%a>> "%GITHUB_ENV%"
)
shell: cmd
Loading

0 comments on commit 5c1a208

Please sign in to comment.