Skip to content

fix(build): disable OpenMP to eliminate VCOMP140.DLL dependency #79

fix(build): disable OpenMP to eliminate VCOMP140.DLL dependency

fix(build): disable OpenMP to eliminate VCOMP140.DLL dependency #79

Workflow file for this run

# =============================================================================
# Gemini Watermark Tool - Cross-Platform CI
# =============================================================================
name: Build
on:
push:
branches: [ main, develop ]
tags: [ 'v*' ]
paths-ignore:
- '**.md'
- 'docs/**'
- 'LICENSE'
- '.gitignore'
pull_request:
branches: [ main ]
paths-ignore:
- '**.md'
- 'docs/**'
- 'LICENSE'
- '.gitignore'
workflow_dispatch:
jobs:
# ===========================================================================
# Windows Build
# ===========================================================================
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '594ad8871e1e8e45f8e626c015fd611163430207'
- name: Configure & Build
run: |
cmake --preset windows-x64-Release
cmake --build --preset windows-x64-Release
- name: Test binary
run: ./out/build/windows-x64-Release/GeminiWatermarkTool.exe --version
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: GeminiWatermarkTool-Windows-x64
path: out/build/windows-x64-Release/GeminiWatermarkTool.exe
# ===========================================================================
# Linux Build
# ===========================================================================
build-linux:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
ninja-build \
libxmu-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libegl1-mesa-dev \
libx11-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
libxext-dev \
libwayland-dev \
libxkbcommon-dev \
wayland-protocols \
libltdl-dev \
libvulkan-dev
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '594ad8871e1e8e45f8e626c015fd611163430207'
- name: Configure & Build
run: |
cmake --preset linux-x64-Release
cmake --build --preset linux-x64-Release
- name: Test binary
run: ./out/build/linux-x64-Release/GeminiWatermarkTool --version
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: GeminiWatermarkTool-Linux-x64
path: out/build/linux-x64-Release/GeminiWatermarkTool
# ===========================================================================
# macOS Build (Universal Binary)
# ===========================================================================
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: brew list ninja || brew install ninja
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '594ad8871e1e8e45f8e626c015fd611163430207'
- name: Build x64
run: |
cmake -B build-x64 -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_GUI=ON \
-DENABLE_AI_DENOISE=ON \
-DVCPKG_MANIFEST_FEATURES="gui;ai-denoise" \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-osx \
-DCMAKE_OSX_ARCHITECTURES=x86_64
cmake --build build-x64
- name: Build arm64
run: |
cmake -B build-arm64 -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_GUI=ON \
-DENABLE_AI_DENOISE=ON \
-DVCPKG_MANIFEST_FEATURES="gui;ai-denoise" \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=arm64-osx \
-DCMAKE_OSX_ARCHITECTURES=arm64
cmake --build build-arm64
- name: Create Universal Binary
run: |
lipo -create build-x64/GeminiWatermarkTool build-arm64/GeminiWatermarkTool -output GeminiWatermarkTool
strip GeminiWatermarkTool
- name: Ad-hoc code sign
run: |
mkdir -p dist
cp GeminiWatermarkTool dist/
codesign --force -s - dist/GeminiWatermarkTool
codesign -vv dist/GeminiWatermarkTool
mv dist/GeminiWatermarkTool .
rmdir dist
- name: Test binary
run: ./GeminiWatermarkTool --version
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: GeminiWatermarkTool-macOS-Universal
path: GeminiWatermarkTool
# ===========================================================================
# Release (on tag push)
# ===========================================================================
release:
needs: [build-windows, build-linux, build-macos]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch tags
run: git fetch --tags --force
- name: Get tag message
id: tag
run: |
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "Tag name: $TAG_NAME"
TAG_MESSAGE=$(git for-each-ref --format='%(contents)' refs/tags/$TAG_NAME)
echo "message<<EOF" >> $GITHUB_OUTPUT
echo "$TAG_MESSAGE" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Download all artifacts
uses: actions/download-artifact@v4
- name: List downloaded files
run: find . -type f
- name: Prepare release files
run: |
# Windows
cp GeminiWatermarkTool-Windows-x64/GeminiWatermarkTool.exe ./GeminiWatermarkTool.exe
zip GeminiWatermarkTool-Windows-x64.zip GeminiWatermarkTool.exe
rm GeminiWatermarkTool.exe
# Linux
cp GeminiWatermarkTool-Linux-x64/GeminiWatermarkTool ./GeminiWatermarkTool
chmod +x GeminiWatermarkTool
zip GeminiWatermarkTool-Linux-x64.zip GeminiWatermarkTool
rm GeminiWatermarkTool
# macOS
cp GeminiWatermarkTool-macOS-Universal/GeminiWatermarkTool ./GeminiWatermarkTool
chmod +x GeminiWatermarkTool
zip GeminiWatermarkTool-macOS-Universal.zip GeminiWatermarkTool
rm GeminiWatermarkTool
- name: Create Release
uses: softprops/action-gh-release@v1
with:
body: ${{ steps.tag.outputs.message }}
files: |
GeminiWatermarkTool-Windows-x64.zip
GeminiWatermarkTool-Linux-x64.zip
GeminiWatermarkTool-macOS-Universal.zip
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}