|
- name: build
-
- on:
- push:
- branches:
- - '*'
- pull_request:
- branches:
- - '*'
- env:
- CACHE_VERSION: 20240930
- PAWPAW_VERSION: a9ab736dc297b2055536c71cddf1c79711d420bb
- PAWPAW_SKIP_LTO: 1
- PAWPAW_SKIP_GLIB: 1
- PAWPAW_SKIP_LV2: 1
-
- jobs:
- macos:
- strategy:
- matrix:
- target: [intel, universal]
- runs-on: macos-13
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: recursive
- - name: Set up cache
- uses: actions/cache@v4
- with:
- path: |
- ~/PawPawBuilds
- key: macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
- - name: Set up dependencies
- run: |
- brew install cmake jq meson
- - name: Bootstrap dependencies
- shell: bash
- run: |
- if [ ! -d PawPaw ]; then
- git clone https://github.com/DISTRHO/PawPaw.git
- git -C PawPaw checkout ${PAWPAW_VERSION}
- fi
- ./PawPaw/.github/workflows/bootstrap-deps.sh macos-${{ matrix.target }}
- ./PawPaw/bootstrap-jack2.sh macos-${{ matrix.target }}
- ./PawPaw/.cleanup.sh macos-${{ matrix.target }}
- - name: Build jack2
- shell: bash
- run: |
- pushd PawPaw && source local.env macos-${{ matrix.target }} && popd
- python ./waf configure --platform=darwin --prefix=/usr/local
- python ./waf build -j $(sysctl -n hw.logicalcpu)
- python ./waf install --destdir=$(pwd)/destdir
- - name: Set sha8 (non-release)
- if: startsWith(github.ref, 'refs/tags/') != true
- run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
- - name: Set sha8 (release)
- if: startsWith(github.ref, 'refs/tags/')
- run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV
- - name: Generate macOS package
- shell: bash
- run: |
- ./macosx/generate-pkg.sh $(pwd)/destdir/usr/local ${{ github.event.pull_request.number || env.SHA8 }}
- - uses: actions/upload-artifact@v4
- with:
- name: jack2-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
- path: macosx/jack2-osx-*.pkg
-
- windows:
- strategy:
- matrix:
- target: [win32, win64]
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: recursive
- - name: Set up cache
- uses: actions/cache@v4
- with:
- path: |
- ~/PawPawBuilds
- key: ${{ matrix.target }}-v${{ env.CACHE_VERSION }}
- - name: Restore debian packages cache
- shell: bash
- run: |
- if [ -d ~/PawPawBuilds/debs ] && [ "$(ls ~/PawPawBuilds/debs | wc -l)" -ne 0 ]; then
- sudo cp ~/PawPawBuilds/debs/*.deb /var/cache/apt/archives/;
- fi
- - name: Fix GitHub's mess
- shell: bash
- run: |
- sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
- sudo dpkg --add-architecture i386
- sudo apt-get update -qq
- sudo apt-get install -yqq --allow-downgrades libc6:i386 libgcc-s1:i386 libstdc++6:i386
- - name: Set up dependencies
- shell: bash
- run: |
- if [ ! -d PawPaw ]; then
- git clone https://github.com/DISTRHO/PawPaw.git
- git -C PawPaw checkout ${PAWPAW_VERSION}
- fi
- sudo ./PawPaw/.github/workflows/bootstrap-deps.sh ${{ matrix.target }}
- sudo apt-get install -y build-essential llvm xvfb wine-stable
- - name: Cache debian packages
- shell: bash
- run: |
- mkdir -p ~/PawPawBuilds/debs
- sudo mv /var/cache/apt/archives/*.deb ~/PawPawBuilds/debs/
- - name: Bootstrap dependencies
- shell: bash
- run: |
- ./PawPaw/bootstrap-jack2.sh ${{ matrix.target }}
- ./PawPaw/.cleanup.sh ${{ matrix.target }}
- - name: Build jack2
- shell: bash
- run: |
- pushd PawPaw && source local.env ${{ matrix.target }} && popd
- export PATH+=":/usr/i686-w64-mingw32/bin"
- export LDFLAGS+="-L~/PawPawBuilds/targets/win64/lib32"
- ./waf configure --platform=win32 --prefix=$(pwd)/destdir --static ${{ matrix.target == 'win64' && '--mixed' || '' }}
- ./waf build -j $(nproc)
- ./waf install
- - name: Generate MSVC lib files
- if: ${{ matrix.target == 'win32' }}
- shell: bash
- run: |
- pushd $(pwd)/destdir/lib
- llvm-dlltool -m i386 -D libjack.dll -d libjack.def -l libjack.lib
- llvm-dlltool -m i386 -D libjacknet.dll -d libjacknet.def -l libjacknet.lib
- llvm-dlltool -m i386 -D libjackserver.dll -d libjackserver.def -l libjackserver.lib
- popd
- - name: Generate MSVC lib files
- if: ${{ matrix.target == 'win64' }}
- shell: bash
- run: |
- # 32bit
- pushd $(pwd)/destdir/lib32
- llvm-dlltool -m i386 -D libjack.dll -d libjack.def -l libjack.lib
- popd
- # 64bit
- pushd $(pwd)/destdir/lib
- llvm-dlltool -m i386:x86-64 -D libjack64.dll -d libjack64.def -l libjack64.lib
- llvm-dlltool -m i386:x86-64 -D libjacknet64.dll -d libjacknet64.def -l libjacknet64.lib
- llvm-dlltool -m i386:x86-64 -D libjackserver64.dll -d libjackserver64.def -l libjackserver64.lib
- popd
- - name: Set sha8 (non-release)
- if: startsWith(github.ref, 'refs/tags/') != true
- run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
- - name: Set sha8 (release)
- if: startsWith(github.ref, 'refs/tags/')
- run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV
- - name: Generate Windows installer
- shell: bash
- run: |
- # Setup wine
- export WINEDLLOVERRIDES="mscoree,mshtml="
- export WINEPREFIX=$(pwd)/innosetup
- xvfb-run wineboot -u
- # Download and install innosetup
- curl -L https://jrsoftware.org/download.php/is.exe?site=2 -o is.exe
- xvfb-run wine is.exe /allusers /dir=C:\\InnoSeup /nocancel /norestart /verysilent
- # create installer
- ln -sf $(pwd)/destdir windows/inno/${{ matrix.target }}
- pushd windows/inno
- echo "#define VERSION \"${{ github.event.pull_request.number || env.SHA8 }}\"" > version.iss
- xvfb-run wine ${WINEPREFIX}/drive_c/InnoSeup/ISCC.exe ${{ matrix.target }}-mini.iss
- popd
- - uses: actions/upload-artifact@v4
- with:
- name: jack2-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
- path: windows/inno/jack2-*.exe
|