Build LagrangeCodec Static Library #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/ | |