Blob Blame Raw
name: MacOS Build

on: [push, pull_request]

jobs:
  macOS:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v2

    - name: Remove symlinks
      run: |
        # remove existing symlinks before installing python@3.10 and 3.11
        rm /usr/local/bin/2to3
        rm /usr/local/bin/idle3
        rm /usr/local/bin/pydoc3
        rm /usr/local/bin/python3
        rm /usr/local/bin/python3-config
        rm /usr/local/bin/2to3-3.11
        rm /usr/local/bin/idle3.11
        rm /usr/local/bin/pydoc3.11
        rm /usr/local/bin/python3.11
        rm /usr/local/bin/python3.11-config

    - name: Install libraries
      run: |
        checkPkgAndInstall()
        {
          while [ $# -ne 0 ]
          do
            if brew ls --versions $1 ; then
              brew upgrade $1
            else
              brew install $1
            fi
            shift
          done
        }        
        brew update
        checkPkgAndInstall pkg-config glew lz4 libjpeg libpng lzo boost libusb libmypaint ccache jpeg-turbo ninja
        checkPkgAndInstall opencv
        # opencv depends on vtk and vtk depends on qt6
        brew unlink qt
        checkPkgAndInstall qt@5
        
    - uses: actions/cache@v1
      with:
        path: /Users/runner/.ccache
        key: ${{ runner.os }}-${{ github.sha }}
        restore-keys: ${{ runner.os }}-

    - name: Build libtiff
      run: |
        export PATH="/usr/local/opt/ccache/libexec:$PATH"
        cd thirdparty/tiff-4.0.3
        CFLAGS='-fPIC' CXXFLAGS='-fPIC' ./configure --disable-lzma
        make -j $(nproc)

    - name: Build
      run: |
        export PKG_CONFIG_PATH="/usr/local/opt/jpeg-turbo/lib/pkgconfig:$PKG_CONFIG_PATH"
        cd toonz
        mkdir build
        cd build
        cmake ../sources -G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DQT_PATH='/usr/local/opt/qt@5/lib' -DWITH_TRANSLATION=OFF
        ninja -w dupbuild=warn
    
    - name: Introduce Libraries and Stuff
      run: |
        cd toonz/build/toonz
        cp -pr ../../../stuff OpenToonz.app/portablestuff
        /usr/local/opt/qt@5/bin/macdeployqt OpenToonz.app -verbose=1 -always-overwrite \
        -executable=OpenToonz.app/Contents/MacOS/lzocompress \
        -executable=OpenToonz.app/Contents/MacOS/lzodecompress \
        -executable=OpenToonz.app/Contents/MacOS/tcleanup \
        -executable=OpenToonz.app/Contents/MacOS/tcomposer \
        -executable=OpenToonz.app/Contents/MacOS/tconverter \
        -executable=OpenToonz.app/Contents/MacOS/tfarmcontroller \
        -executable=OpenToonz.app/Contents/MacOS/tfarmserver
    
    - name: Modify Library Paths
      run: |
        cd toonz/build/toonz/OpenToonz.app/Contents/Frameworks
        for TARGETLIB in `ls ./ | grep dylib`
        do
          echo $TARGETLIB
          for FROMPATH in `otool -L "$TARGETLIB" | grep ".dylib" | grep -v "$TARGETLIB" | grep -v "@executable_path/../Frameworks" | sed -e"s/ (.*$//"`
          do
            echo "  $FROMPATH"
            LIBNAME=`basename $FROMPATH`
            if [[ -e ./$LIBNAME ]]; then
              echo "updating library path of $LIBNAME in $TARGETLIB"
              install_name_tool -change "$FROMPATH" "@executable_path/../Frameworks/$LIBNAME" $TARGETLIB
            fi
          done
        done

    - name: Create Artifact
      run: |
        cd toonz/build/toonz
        /usr/local/opt/qt@5/bin/macdeployqt OpenToonz.app -dmg -verbose=1
    
    - uses: actions/upload-artifact@v1
      with:
        name: Opentoonz-${{ runner.os }}-${{ github.sha }}
        path: toonz/build/toonz/OpenToonz.dmg