Skip to content

Build LagrangeCodec Static Library #1

Build LagrangeCodec Static Library

Build LagrangeCodec Static Library #1

name: Build LagrangeCodec Static Library
on:
workflow_dispatch:
push:
branches:
- '*'
jobs:
build-windows-mingw-x64:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup Toolchains
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
git
ninja
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-cmake
mingw-w64-x86_64-ninja
mingw-w64-x86_64-nasm
- name: Build LagrangeCodec (static)
shell: msys2 {0}
run: |
export VCPKG_ROOT="C:/vcpkg"
export PATH="$VCPKG_ROOT:$PATH"
cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_BUILD_TYPE=release -DLAGRANGECODEC_BUILD_SHARED=OFF --preset mingw-x64-windows-static-release -S . -B build
cmake --build build
- name: Run Tests
shell: msys2 {0}
run: |
cd build && ctest -C Release -V --no-compress-output
- name: Stage Static Link Bundle
shell: msys2 {0}
run: |
set -euo pipefail
OUT_DIR="bundle"
VCPKG_LIB_DIR="build/vcpkg_installed/x64-mingw-static/lib"
mkdir -p "$OUT_DIR"
cp -f "build/libLagrangeCodec.a" "$OUT_DIR/"
required=(libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a)
missing=0
for name in "${required[@]}"; do
if [ ! -f "$VCPKG_LIB_DIR/$name" ]; then
echo "Missing required dependency: $VCPKG_LIB_DIR/$name"
missing=1
fi
done
if [ -f "$VCPKG_LIB_DIR/libz.a" ]; then
zlib_name="libz.a"
elif [ -f "$VCPKG_LIB_DIR/libzlib.a" ]; then
zlib_name="libzlib.a"
else
echo "Missing required dependency: $VCPKG_LIB_DIR/libz.a (or libzlib.a)"
missing=1
fi
if [ "$missing" -ne 0 ]; then
echo "Available files under $VCPKG_LIB_DIR:"
ls -la "$VCPKG_LIB_DIR" || true
exit 1
fi
for name in "${required[@]}" "$zlib_name"; do
cp -f "$VCPKG_LIB_DIR/$name" "$OUT_DIR/"
done
echo "Staged files:"
ls -la "$OUT_DIR"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: LagrangeCodec.staticlink.mingw.x64
path: bundle/
build-linux-amd64:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup Toolchains
run: |
sudo apt-get update && sudo apt install build-essential cmake ninja-build nasm -y
- name: Build LagrangeCodec (static)
run: |
export VCPKG_ROOT="/usr/local/share/vcpkg"
export PATH="$VCPKG_ROOT:$PATH"
cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_BUILD_TYPE=release -DLAGRANGECODEC_BUILD_SHARED=OFF --preset gcc-x64-linux-static-release -S . -B build
cmake --build build
- name: Run Tests
run: |
cd build && ctest -C Release -V --no-compress-output
- name: Stage Static Link Bundle
run: |
set -euo pipefail
OUT_DIR="bundle"
VCPKG_LIB_DIR="build/vcpkg_installed/x64-linux/lib"
mkdir -p "$OUT_DIR"
cp -f "build/libLagrangeCodec.a" "$OUT_DIR/"
required=(libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a)
missing=0
for name in "${required[@]}"; do
if [ ! -f "$VCPKG_LIB_DIR/$name" ]; then
echo "Missing required dependency: $VCPKG_LIB_DIR/$name"
missing=1
fi
done
if [ -f "$VCPKG_LIB_DIR/libz.a" ]; then
zlib_name="libz.a"
elif [ -f "$VCPKG_LIB_DIR/libzlib.a" ]; then
zlib_name="libzlib.a"
else
echo "Missing required dependency: $VCPKG_LIB_DIR/libz.a (or libzlib.a)"
missing=1
fi
if [ "$missing" -ne 0 ]; then
echo "Available files under $VCPKG_LIB_DIR:"
ls -la "$VCPKG_LIB_DIR" || true
exit 1
fi
for name in "${required[@]}" "$zlib_name"; do
cp -f "$VCPKG_LIB_DIR/$name" "$OUT_DIR/"
done
echo "Staged files:"
ls -la "$OUT_DIR"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: LagrangeCodec.staticlink.linux.x64
path: bundle/
build-linux-aarch64:
runs-on: ubuntu-22.04-arm
steps:
- uses: actions/checkout@v4
- name: Setup Toolchains
run: |
sudo apt-get update && sudo apt install build-essential cmake ninja-build nasm -y
- name: Build LagrangeCodec (static)
run: |
export VCPKG_ROOT="/usr/local/share/vcpkg"
export PATH="$VCPKG_ROOT:$PATH"
cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_BUILD_TYPE=release -DLAGRANGECODEC_BUILD_SHARED=OFF --preset gcc-arm64-linux-static-release -S . -B build
cmake --build build
- name: Run Tests
run: |
cd build && ctest -C Release -V --no-compress-output
- name: Stage Static Link Bundle
run: |
set -euo pipefail
OUT_DIR="bundle"
VCPKG_LIB_DIR="build/vcpkg_installed/arm64-linux/lib"
mkdir -p "$OUT_DIR"
cp -f "build/libLagrangeCodec.a" "$OUT_DIR/"
required=(libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a)
missing=0
for name in "${required[@]}"; do
if [ ! -f "$VCPKG_LIB_DIR/$name" ]; then
echo "Missing required dependency: $VCPKG_LIB_DIR/$name"
missing=1
fi
done
if [ -f "$VCPKG_LIB_DIR/libz.a" ]; then
zlib_name="libz.a"
elif [ -f "$VCPKG_LIB_DIR/libzlib.a" ]; then
zlib_name="libzlib.a"
else
echo "Missing required dependency: $VCPKG_LIB_DIR/libz.a (or libzlib.a)"
missing=1
fi
if [ "$missing" -ne 0 ]; then
echo "Available files under $VCPKG_LIB_DIR:"
ls -la "$VCPKG_LIB_DIR" || true
exit 1
fi
for name in "${required[@]}" "$zlib_name"; do
cp -f "$VCPKG_LIB_DIR/$name" "$OUT_DIR/"
done
echo "Staged files:"
ls -la "$OUT_DIR"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: LagrangeCodec.staticlink.linux.arm64
path: bundle/
build-macos-amd64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Toolchains
run: |
softwareupdate --install-rosetta --agree-to-license
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -x86_64 /usr/local/bin/brew install cmake make nasm ninja
arch -x86_64 /usr/local/bin/brew link --overwrite make
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && arch -x86_64 /bin/bash ./bootstrap-vcpkg.sh
- name: Build LagrangeCodec (static)
run: |
export VCPKG_ROOT=$GITHUB_WORKSPACE/vcpkg
export PATH=$VCPKG_ROOT:$PATH
arch -x86_64 /usr/local/bin/cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_BUILD_TYPE=release -DLAGRANGECODEC_BUILD_SHARED=OFF --preset clang-x64-osx-static-release -S . -B build
cd build && arch -x86_64 /usr/local/bin/ninja
- name: Run Tests
run: |
cd build && arch -x86_64 /usr/local/bin/ctest -C Release -V --no-compress-output
- name: Stage Static Link Bundle
run: |
set -euo pipefail
OUT_DIR="bundle"
VCPKG_LIB_DIR="build/vcpkg_installed/x64-osx/lib"
mkdir -p "$OUT_DIR"
cp -f "build/libLagrangeCodec.a" "$OUT_DIR/"
required=(libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a)
missing=0
for name in "${required[@]}"; do
if [ ! -f "$VCPKG_LIB_DIR/$name" ]; then
echo "Missing required dependency: $VCPKG_LIB_DIR/$name"
missing=1
fi
done
if [ -f "$VCPKG_LIB_DIR/libz.a" ]; then
zlib_name="libz.a"
elif [ -f "$VCPKG_LIB_DIR/libzlib.a" ]; then
zlib_name="libzlib.a"
else
echo "Missing required dependency: $VCPKG_LIB_DIR/libz.a (or libzlib.a)"
missing=1
fi
if [ "$missing" -ne 0 ]; then
echo "Available files under $VCPKG_LIB_DIR:"
ls -la "$VCPKG_LIB_DIR" || true
exit 1
fi
for name in "${required[@]}" "$zlib_name"; do
cp -f "$VCPKG_LIB_DIR/$name" "$OUT_DIR/"
done
echo "Staged files:"
ls -la "$OUT_DIR"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: LagrangeCodec.staticlink.macos.x64
path: bundle/
build-macos-aarch64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Toolchains
run: |
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && ./bootstrap-vcpkg.sh
brew install cmake ninja nasm
- name: Build LagrangeCodec (static)
run: |
export VCPKG_ROOT=$GITHUB_WORKSPACE/vcpkg
export PATH=$VCPKG_ROOT:$PATH
cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_BUILD_TYPE=release -DLAGRANGECODEC_BUILD_SHARED=OFF --preset clang-arm64-osx-static-release -S . -B build
cmake --build build
- name: Run Tests
run: |
cd build && ctest -C Release -V --no-compress-output
- name: Stage Static Link Bundle
run: |
set -euo pipefail
OUT_DIR="bundle"
VCPKG_LIB_DIR="build/vcpkg_installed/arm64-osx/lib"
mkdir -p "$OUT_DIR"
cp -f "build/libLagrangeCodec.a" "$OUT_DIR/"
required=(libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a)
missing=0
for name in "${required[@]}"; do
if [ ! -f "$VCPKG_LIB_DIR/$name" ]; then
echo "Missing required dependency: $VCPKG_LIB_DIR/$name"
missing=1
fi
done
if [ -f "$VCPKG_LIB_DIR/libz.a" ]; then
zlib_name="libz.a"
elif [ -f "$VCPKG_LIB_DIR/libzlib.a" ]; then
zlib_name="libzlib.a"
else
echo "Missing required dependency: $VCPKG_LIB_DIR/libz.a (or libzlib.a)"
missing=1
fi
if [ "$missing" -ne 0 ]; then
echo "Available files under $VCPKG_LIB_DIR:"
ls -la "$VCPKG_LIB_DIR" || true
exit 1
fi
for name in "${required[@]}" "$zlib_name"; do
cp -f "$VCPKG_LIB_DIR/$name" "$OUT_DIR/"
done
echo "Staged files:"
ls -la "$OUT_DIR"
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: LagrangeCodec.staticlink.macos.arm64
path: bundle/