Add icu'c pkg-config dir #257
This file contains 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: Meson CI | |
on: | |
push: | |
branches: | |
- master | |
- feature | |
- cibuilds | |
- buildtests | |
pull_request: | |
branches: | |
- master | |
- feature | |
jobs: | |
build: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- name: Windows MSVC Release | |
os: windows-latest | |
msvc: true | |
buildtype: release | |
args: >- | |
-Ddefault_library=static | |
--force-fallback-for=zlib,harfbuzz,freetype2,fribidi,libpng | |
-Dfreetype2:harfbuzz=disabled | |
-Dharfbuzz:freetype=disabled | |
-Dharfbuzz:cairo=disabled | |
-Dharfbuzz:glib=disabled | |
-Dharfbuzz:gobject=disabled | |
-Dharfbuzz:tests=disabled | |
-Dharfbuzz:docs=disabled | |
-Dharfbuzz:icu=disabled | |
-Dfribidi:tests=false | |
-Dfribidi:docs=false | |
-Dlibass:fontconfig=disabled | |
-Davisynth=enabled | |
-Dbestsource=enabled | |
-Dvapoursynth=enabled | |
- name: Windows MSVC Release (wx master) | |
os: windows-latest | |
msvc: true | |
buildtype: release | |
args: >- | |
-Ddefault_library=static | |
--force-fallback-for=zlib,harfbuzz,freetype2,fribidi,libpng | |
-Dfreetype2:harfbuzz=disabled | |
-Dharfbuzz:freetype=disabled | |
-Dharfbuzz:cairo=disabled | |
-Dharfbuzz:glib=disabled | |
-Dharfbuzz:gobject=disabled | |
-Dharfbuzz:tests=disabled | |
-Dharfbuzz:docs=disabled | |
-Dharfbuzz:icu=disabled | |
-Dfribidi:tests=false | |
-Dfribidi:docs=false | |
-Dlibass:fontconfig=disabled | |
-Davisynth=enabled | |
-Dbestsource=enabled | |
-Dvapoursynth=enabled | |
-Dwx_version='3.3.0' | |
#- { | |
# name: Windows MinGW, | |
# os: windows-latest, | |
# msvc: false | |
#} | |
- { | |
name: Ubuntu Debug, | |
os: ubuntu-latest, | |
buildtype: debugoptimized, | |
args: '' | |
} | |
- { | |
name: Ubuntu Release, | |
os: ubuntu-latest, | |
buildtype: release, | |
args: '' | |
} | |
- name: Ubuntu AppImage | |
os: ubuntu-22.04 | |
buildtype: release | |
appimage: true | |
# distro ffms is currently broken | |
args: >- | |
--prefix=/usr | |
-Dbuild_appimage=true | |
-Ddefault_library=static | |
--force-fallback-for=ffms2 | |
-Davisynth=enabled | |
-Dbestsource=enabled | |
-Dvapoursynth=enabled | |
- { | |
name: macOS Release, | |
os: macos-latest, | |
host: x86_64, | |
buildtype: release, | |
args: -Ddefault_library=static -Dbuild_osx_bundle=true -Dlocal_boost=true -Dvapoursynth=enabled --force-fallback-for=ffms2 | |
} | |
- { | |
name: macOS Release (arm64), | |
os: macos-latest, | |
host: arm64, | |
buildtype: release, | |
args: --cross-file arm64-apple-macos12.txt -Ddefault_library=static -Dbuild_osx_bundle=true -Dlocal_boost=true -Dvapoursynth=enabled --force-fallback-for=ffms2 | |
} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: '0' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Setup Meson | |
run: | | |
python -m pip install --upgrade pip setuptools | |
pip install meson | |
- name: Setup MSVC | |
if: matrix.config.os == 'windows-latest' && matrix.config.msvc == true | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Install dependencies (Windows) | |
if: matrix.config.os == 'windows-latest' | |
run: | | |
choco install ninja innosetup | |
$url = "https://github.com/leafo/moonscript/releases/download/win32-v0.5.0/moonscript-187bac54ee5a7450013e9c38e005a0e671b76f45.zip" | |
mkdir moonscript | |
Invoke-WebRequest -Uri $url -OutFile ".\moonscript\moonscript.zip" | |
cd moonscript | |
7z e moonscript.zip | |
Get-Location | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Install dependencies (MacOS) | |
if: matrix.config.os == 'macos-latest' && matrix.config.host == 'x86_64' | |
run: | | |
brew update | |
brew install luarocks ninja | |
luarocks install luafilesystem 1.8.0 | |
luarocks install moonscript --dev | |
brew install libass zlib ffms2 fftw hunspell | |
brew install pulseaudio # NO OpenAL in github CI | |
- name: Install dependencies (MacOS arm64) | |
if: matrix.config.os == 'macos-latest' && matrix.config.host == 'arm64' | |
run: | | |
brew update | |
brew install ninja | |
cd /Users/runner/work | |
mkdir arm64-homebrew | |
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C arm64-homebrew | |
armbrew=arm64-homebrew/bin/brew | |
arch=arm64_monterey | |
${armbrew} update | |
# ${armbrew} install curl | |
function install_package () { | |
${armbrew} list "$1" > /dev/null 2> /dev/null && return 0 | |
deps=$(${armbrew} deps "$1" | paste -s -d ' ' -) | |
echo "Installing dependencies for package $1: ${deps}" | |
for dep in ${deps}; do | |
install_package "${dep}" | |
done | |
echo "Installing $1" | |
${armbrew} fetch --force --bottle-tag=${arch} "$1" || true | |
${armbrew} install "$(${armbrew} --cache --bottle-tag=${arch} "$1")" || true # we don't care if post-install steps like fc-cache fail | |
} | |
for package in libass zlib ffmpeg fftw hunspell ; do | |
install_package ${package} | |
done | |
- name: Install dependencies (Linux) | |
if: startsWith(matrix.config.os, 'ubuntu-') | |
run: | | |
sudo apt-get update | |
sudo apt-get install ninja-build build-essential libx11-dev libwxgtk3.0-gtk3-dev libfreetype6-dev pkg-config libfontconfig1-dev libass-dev libasound2-dev libffms2-dev intltool libboost-all-dev libhunspell-dev libuchardet-dev libpulse-dev libopenal-dev libjansson-dev nasm | |
- name: Set up cross file (arm64) | |
if: matrix.config.os == 'macos-latest' && matrix.config.host == 'arm64' | |
run: | | |
cat <<EOT > arm64-apple-macos12.txt | |
[binaries] | |
c = 'cc' | |
cpp = 'c++' | |
objc = 'cc' | |
objcpp = 'c++' | |
[constants] | |
target_flags = ['-target', 'arm64-apple-macos12'] | |
[built-in options] | |
c_args = target_flags | |
cpp_args = target_flags | |
objc_args = target_flags | |
objcpp_args = target_flags | |
[host_machine] | |
system = 'darwin' | |
cpu_family = 'aarch64' | |
cpu = 'aarch64' | |
endian = 'little' | |
[properties] | |
pkg_config_libdir = '/Users/runner/work/arm64-homebrew/opt/icu4c/lib/pkgconfig:/Users/runner/work/arm64-homebrew/lib/pkgconfig' | |
EOT | |
- name: Configure | |
run: meson setup build ${{ matrix.config.args }} -Dbuildtype=${{ matrix.config.buildtype }} | |
- name: Build | |
run: meson compile -C build | |
- name: Run test | |
run: meson test -C build --verbose "gtest main" | |
# Windows artifacts | |
- name: Generate Windows installer | |
if: matrix.config.os == 'windows-latest' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | |
meson compile win-installer -C build | |
- name: Generate Windows portable installer | |
if: matrix.config.os == 'windows-latest' | |
run: cd build && ninja win-portable | |
- name: Upload artifacts - win_installer | |
uses: actions/upload-artifact@v3 | |
if: matrix.config.os == 'windows-latest' | |
with: | |
name: ${{ matrix.config.name }} - installer | |
path: build/Aegisub-*.exe | |
if-no-files-found: error | |
- name: Upload artifacts - portable.zip | |
uses: actions/upload-artifact@v3 | |
if: matrix.config.os == 'windows-latest' | |
with: | |
name: ${{ matrix.config.name }} - portable | |
path: build/aegisub-portable-64.zip | |
# macOS artifacts | |
- name: Generate macOS installer | |
if: matrix.config.os == 'macos-latest' | |
run: | | |
meson compile osx-bundle -C build | |
meson compile osx-build-dmg -C build | |
- name: Upload artifacts - macOS dmg | |
uses: actions/upload-artifact@v3 | |
if: matrix.config.os == 'macos-latest' | |
with: | |
name: ${{ matrix.config.name }} - installer | |
path: build/Aegisub-*.dmg | |
if-no-files-found: error | |
# Linux artifacts (AppImage) | |
- name: Generate AppImage | |
if: matrix.config.appimage | |
run: | | |
mkdir -p appimage/appdir | |
meson install -C build --destdir=../appimage/appdir | |
cd appimage | |
sudo apt-get install libfuse2 | |
curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20220822-1/linuxdeploy-x86_64.AppImage" -o linuxdeploy | |
curl -L "https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage" -o appimagetool | |
chmod +x linuxdeploy appimagetool | |
./linuxdeploy --appdir appdir --desktop-file=appdir/aegisub.desktop | |
./appimagetool appdir | |
- name: Upload artifacts - Linux AppImage | |
uses: actions/upload-artifact@v3 | |
if: matrix.config.appimage | |
with: | |
name: ${{ matrix.config.name }} | |
path: appimage/*.AppImage | |
if-no-files-found: error |