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