Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
45953ad
make: New GNUMakefiles that reduce duplication for backup makefile bu…
vonericsen Feb 9, 2026
adb8cc6
ci: Fixing already existing build directory and pointing old builds t…
vonericsen Feb 9, 2026
9b30d34
make: Setting bash as shell to run without explicit linux path since …
vonericsen Feb 9, 2026
535e9cf
make: Using bash or falling back to posix shell when not available fo…
vonericsen Feb 9, 2026
1330c02
ci: Updating make commands to properly build all the targets in CI steps
vonericsen Feb 9, 2026
ee022d8
ci: Fixing make packaging and solaris builds
vonericsen Feb 9, 2026
fcb2df0
make: Fixing default build flags for various OS's in makefiles
vonericsen Feb 9, 2026
7930d69
make: Fixing build errors in Windows and Solaris biulds
vonericsen Feb 9, 2026
4624fed
lib: Pulling in missing header for opensea-transport to fix some make…
vonericsen Feb 9, 2026
8c00682
make: More changes to fix various makefile system builds
vonericsen Feb 9, 2026
d8dfcf7
ci: Changing where to find final build artifacts
vonericsen Feb 9, 2026
f62b1c9
make: Attempting more compilation fixes for various OS's in old makef…
vonericsen Feb 9, 2026
ba877c8
make: Testing for -fPIE and -fPIC
vonericsen Feb 9, 2026
0d823c2
make: Exporting CC and CXX so detection picks them up properly
vonericsen Feb 9, 2026
2cd511b
make: Removing hardcoded -fPIC in favor of testing for it in another …
vonericsen Feb 9, 2026
50c3d26
make: Special case for vmware where it's compiler doesn't respond wit…
vonericsen Feb 9, 2026
153ecce
ci: Fixing archive command to work properly with 7z
vonericsen Feb 9, 2026
bf284a9
make: More flag testing to ensure portability between systems
vonericsen Feb 9, 2026
ea3481f
ci: Adding mingw cross-compile test for makefiles. Cleaning up packag…
vonericsen Feb 9, 2026
3bfaab9
ci: Fixing artifacts since merge error was missed and trying to resol…
vonericsen Feb 9, 2026
6d4d229
lib: A couple minor opensea-common fixes
vonericsen Feb 9, 2026
8220342
ci: Cleaning up how compilers get set for Mingw build and removing so…
vonericsen Feb 9, 2026
369000e
lib: Mingw header fixes
vonericsen Feb 9, 2026
88eacc3
lib: Another mingw case sensitivity issue with headers on Linux
vonericsen Feb 9, 2026
d32ef63
doc: Updating how to build with the new makefiles and updating meson …
vonericsen Feb 9, 2026
911cde2
make: Updating meson option to use description rather than comments i…
vonericsen Feb 9, 2026
ce8c845
lib: Minor update for meson option files to use description fields
vonericsen Feb 9, 2026
964adb5
doc: Adding note about muon and samurai as meson and ninja build alte…
vonericsen Feb 9, 2026
33f43db
ci: Cleaning up package install steps for VMActions for meson builds.…
vonericsen Feb 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
300 changes: 278 additions & 22 deletions .github/workflows/c-cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
timeout-minutes: 60
timeout-minutes: 120
permissions:
contents: read
strategy:
Expand All @@ -25,35 +25,141 @@ jobs:
- {
name: "Windows GCC",
os: windows-latest,
builddir: "Make/gccWin",
makefile: "Makefile.gccWin",
release_name: "win-x86_64-gcc",
release_extension: ".zip",
archive_command: "7z a -tzip -mmt"
}
- {
name: "Ubuntu GCC",
os: ubuntu-latest,
builddir: "Make/gcc",
makefile: "Makefile",
release_name: "linux-x86_64-gcc",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
- {
name: "Ubuntu MinGW Cross-Compile",
os: ubuntu-latest,
cc: "x86_64-w64-mingw32-gcc",
cxx: "x86_64-w64-mingw32-g++",
ar: "x86_64-w64-mingw32-ar",
mingw_cross: true,
release_name: "win-x86_64-ubuntu-mingw",
release_extension: ".zip",
archive_command: "zip -r"
}
- {
name: "MSYS2 MINGW64 GCC",
os: windows-latest,
msys2_msystem: "MINGW64",
release_name: "win-x86_64-msys2-mingw64",
release_extension: ".zip",
archive_command: "7z a -tzip -mmt"
}
- {
name: "MSYS2 UCRT64 GCC",
os: windows-latest,
msys2_msystem: "UCRT64",
release_name: "win-x86_64-msys2-ucrt64",
release_extension: ".zip",
archive_command: "7z a -tzip -mmt"
}
# VMActions builds for BSD and Solaris platforms
- {
name: "VMActions FreeBSD latest (x86_64) Make Build",
os: ubuntu-latest,
vm_actions: true,
vm_platform: "freebsd",
vm_release: "",
vm_arch: "x86_64",
release_name: "freebsd-x86_64-make",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
- {
name: "VMActions OpenBSD latest (x86_64) Make Build",
os: ubuntu-latest,
vm_actions: true,
vm_platform: "openbsd",
vm_release: "",
vm_arch: "x86_64",
release_name: "openbsd-x86_64-make",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
- {
name: "VMActions NetBSD latest (x86_64) Make Build",
os: ubuntu-latest,
vm_actions: true,
vm_platform: "netbsd",
vm_release: "",
vm_arch: "x86_64",
release_name: "netbsd-x86_64-make",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
- {
name: "VMActions DragonFlyBSD latest (x86_64) Make Build",
os: ubuntu-latest,
vm_actions: true,
vm_platform: "dragonflybsd",
vm_release: "",
vm_arch: "x86_64",
release_name: "dragonflybsd-x86_64-make",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
- {
name: "VMActions OmniOS r151054 (x86_64) Make Build",
os: ubuntu-latest,
vm_actions: true,
vm_platform: "omnios",
vm_release: "r151054",
vm_arch: "x86_64",
release_name: "omnios_r151054-x86_64-make",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
- {
name: "VMActions Solaris 11.4 (x86_64) Make Build",
os: ubuntu-latest,
cc: "gcc",
cxx: "g++",
vm_actions: true,
vm_platform: "solaris",
vm_release: "11.4-gcc",
vm_arch: "x86_64",
release_name: "solaris_11_4-x86_64-make",
release_extension: ".tar.xz",
archive_command: "tar cvfJ"
}
defaults:
run:
shell: bash

steps:
- name: Harden Runner
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.14.1
with:
egress-policy: audit
# No runner hardening since it breaks the VMActions even though there is an ifcondition here
# - name: Harden Runner
# if: matrix.config.vm_actions != true
# uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.14.1
# with:
# egress-policy: audit

- uses: actions/checkout@v6.0.2
with:
submodules: recursive

- name: Setup MSYS2
if: matrix.config.msys2_msystem != ''
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.config.msys2_msystem }}
update: true
install: >-
base-devel
git
pacboy: >-
toolchain:p

- name: Escape backslash in branch name
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV

Expand All @@ -67,30 +173,180 @@ jobs:
run: |
echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH

- name: Install MinGW cross-compiler
if: matrix.config.mingw_cross == true
run: |
sudo apt-get update
sudo apt-get install -y mingw-w64 zip

- name: Make buildjsonc.sh executable
if: matrix.config.vm_actions != true && matrix.config.msys2_msystem == ''
run: chmod +x Make/buildjsonc.sh

# Ubuntu MinGW cross-compile build
- name: make (MinGW cross-compile)
if: matrix.config.mingw_cross == true
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}
AR: ${{ matrix.config.ar }}
run: |
make BUILD_TYPE=release

# Traditional make builds (Windows/Ubuntu native)
- name: make
working-directory: ${{ matrix.config.builddir }}
if: matrix.config.vm_actions != true && matrix.config.msys2_msystem == '' && matrix.config.mingw_cross != true
run: |
make BUILD_TYPE=release

# MSYS2 make builds (MINGW64/UCRT64)
- name: make (MSYS2)
if: matrix.config.msys2_msystem != ''
shell: msys2 {0}
run: |
make release -f ${{ matrix.config.makefile }}
chmod +x Make/buildjsonc.sh
make BUILD_TYPE=release

# VMActions FreeBSD Build
- name: Build with Make (VMActions FreeBSD)
if: matrix.config.vm_actions == true && matrix.config.vm_platform == 'freebsd'
uses: vmactions/freebsd-vm@v1
with:
envs: 'DESTDIR'
release: ${{ matrix.config.vm_release }}
arch: ${{ matrix.config.vm_arch }}
usesh: true
prepare: |
pkg update || true
pkg install -y curl gmake bash
pkg install -y ntp
ntpdate -u pool.ntp.org

run: |
chmod +x Make/buildjsonc.sh
gmake BUILD_TYPE=release

# VMActions OpenBSD Build
- name: Build with Make (VMActions OpenBSD)
if: matrix.config.vm_actions == true && matrix.config.vm_platform == 'openbsd'
uses: vmactions/openbsd-vm@v1
with:
envs: 'DESTDIR'
release: ${{ matrix.config.vm_release }}
arch: ${{ matrix.config.vm_arch }}
usesh: true
prepare: |
pkg_add curl gmake bash

# force a sync in the VM
ntpctl -s status || true

run: |
chmod +x Make/buildjsonc.sh
gmake BUILD_TYPE=release

# VMActions NetBSD Build
- name: Build with Make (VMActions NetBSD)
if: matrix.config.vm_actions == true && matrix.config.vm_platform == 'netbsd'
uses: vmactions/netbsd-vm@v1
with:
envs: 'DESTDIR'
release: ${{ matrix.config.vm_release }}
arch: ${{ matrix.config.vm_arch }}
usesh: true
prepare: |
/usr/sbin/pkg_add curl gmake
/usr/sbin/pkg_add ntp

run: |
chmod +x Make/buildjsonc.sh
gmake BUILD_TYPE=release

# VMActions DragonFlyBSD Build
- name: Build with Make (VMActions DragonFlyBSD)
if: matrix.config.vm_actions == true && matrix.config.vm_platform == 'dragonflybsd'
uses: vmactions/dragonflybsd-vm@v1
with:
envs: 'DESTDIR'
release: ${{ matrix.config.vm_release }}
arch: ${{ matrix.config.vm_arch }}
usesh: true
prepare: |
pkg update || true
pkg install -y curl gmake bash gcc
/usr/sbin/dntpd -s

run: |
chmod +x Make/buildjsonc.sh
gmake BUILD_TYPE=release

# VMActions OmniOS Build
- name: Build with Make (VMActions OmniOS)
if: matrix.config.vm_actions == true && matrix.config.vm_platform == 'omnios'
uses: vmactions/omnios-vm@v1
with:
envs: 'DESTDIR'
release: ${{ matrix.config.vm_release }}
arch: ${{ matrix.config.vm_arch }}
usesh: true
prepare: |
pkg install pkg:/package/pkg || true
pkg update || true
pkg install socat

run: |
pkg install build-essential pkg-config

chmod +x Make/buildjsonc.sh
gmake BUILD_TYPE=release

# VMActions Solaris Build
- name: Build with Make (VMActions Solaris)
if: matrix.config.vm_actions == true && matrix.config.vm_platform == 'solaris'
uses: vmactions/solaris-vm@v1
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}
with:
envs: 'DESTDIR CC CXX'
release: ${{ matrix.config.vm_release }}
arch: ${{ matrix.config.vm_arch }}
usesh: true
prepare: |
pkg update --accept || true
pkg install --accept developer/build/gnu-make || true
pkgutil -y -i socat

ntpdate -u pool.ntp.org

run: |
chmod +x Make/buildjsonc.sh
gmake BUILD_TYPE=release

- name: Packing release
env:
ARCHIVE_EXT: ${{ matrix.config.release_extension }}
run: |
mkdir build
# Find the bin directory and copy to DESTDIR for packaging
BIN_DIR=$(find build -type d -name bin | head -n 1)
if [ -z "$BIN_DIR" ]; then
echo "Error: No bin directory found in build/"
exit 1
fi
echo "Found executables in: $BIN_DIR"

# Copy binaries to a clean directory for packaging (matches meson approach)
mkdir -p "build/${DESTDIR}"
cp -r "${BIN_DIR}"/* "build/${DESTDIR}/"

# Create archive from build directory (simpler, matches meson.yml)
cd build
${{ matrix.config.archive_command }} "${DESTDIR}${ARCHIVE_EXT}" ../${{ matrix.config.builddir }}/openseachest_exes
${{ matrix.config.archive_command }} "${DESTDIR}${ARCHIVE_EXT}" "${DESTDIR}"

- name: Uploading artifacts
uses: actions/upload-artifact@v6.0.0
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ format('{0}', env.DESTDIR) }}
path: ${{ format('./build/{0}{1}', env.DESTDIR, matrix.config.release_extension) }}
name: ${{ env.DESTDIR }}
path: ./build/${{ env.DESTDIR }}${{ matrix.config.release_extension }}

# - name: Publish release
# if: ${{ startsWith(github.ref, 'refs/tags/v') && matrix.config.publish_release }}
# uses: softprops/action-gh-release@v2
# with:
# files: ${{ format('./build/{0}{1}', env.DESTDIR, matrix.config.release_extension) }}
# Not publishing release from make since this comes from meson instead. This CI is meant to check that we preserve compatibility with older make systems as a backup only.
Loading
Loading