diff --git a/BuildMacOS.sh b/BuildMacOS.sh new file mode 100755 index 000000000..9e6f537e9 --- /dev/null +++ b/BuildMacOS.sh @@ -0,0 +1,142 @@ +#!/bin/bash + +export ROOT=`pwd` +export NCORES=`sysctl -n hw.ncpu` + +while getopts ":ih" opt; do + case ${opt} in + i ) + export BUILD_IMAGE="1" + ;; + h ) echo "Usage: ./BuildMacOS.sh [-i]" + echo " -i: Generate DMG image (optional)" + exit 0 + ;; + esac +done + +# mkdir build +if [ ! -d "build" ] +then + mkdir build +fi + +echo -n "[1/9] Updating submodules..." +{ + # update submodule profiles + pushd resources/profiles + git submodule update --init + popd +} > $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[2/9] Changing date in version..." +{ + # change date in version + sed "s/+UNKNOWN/_$(date '+%F')/" version.inc > version.date.inc + mv version.date.inc version.inc +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +# mkdir in deps +if [ ! -d "deps/build" ] +then + mkdir deps/build +fi + +echo -n "[3/9] Configuring dependencies..." +{ + # cmake deps + pushd deps/build + cmake .. -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13" +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[4/9] Building dependencies..." +{ + # make deps + make -j$NCORES +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[5/9] Renaming wxscintilla library..." +{ + # rename wxscintilla + pushd destdir/usr/local/lib + cp libwxscintilla-3.1.a libwx_osx_cocoau_scintilla-3.1.a + popd +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[6/9] Cleaning dependencies..." +{ + # clean deps + rm -rf dep_* + popd +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[7/9] Configuring SuperSlicer..." +{ + # cmake + pushd build + cmake .. -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13" -DSLIC3R_STATIC=1 +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[8/9] Building SuperSlicer..." +{ + # make SuperSlicer + make -j$NCORES Slic3r + + # make .mo + make gettext_po_to_mo +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +echo -n "[9/9] Generating MacOS app..." +{ + # update Info.plist + pushd src + sed "s/+UNKNOWN/_$(date '+%F')/" Info.plist >Info.date.plist + popd + + # create directory and copy into it + if [ -d "pack" ] + then + rm -rf pack/* + fi + mkdir pack + mkdir pack/SuperSlicer + mkdir pack/SuperSlicer/SuperSlicer.app + mkdir pack/SuperSlicer/SuperSlicer.app/Contents + mkdir pack/SuperSlicer/SuperSlicer.app/Contents/_CodeSignature + mkdir pack/SuperSlicer/SuperSlicer.app/Contents/Frameworks + mkdir pack/SuperSlicer/SuperSlicer.app/Contents/MacOS + + # copy Resources + cp -Rf ../resources pack/SuperSlicer/SuperSlicer.app/Contents/Resources + cp pack/SuperSlicer/SuperSlicer.app/Contents/Resources/icons/SuperSlicer.icns pack/SuperSlicer/SuperSlicer.app/Contents/resources/SuperSlicer.icns + cp src/Info.date.plist pack/SuperSlicer/SuperSlicer.app/Contents/Info.plist + echo -n -e 'APPL????\x0a' > PkgInfo + cp PkgInfo pack/SuperSlicer/SuperSlicer.app/Contents/PkgInfo + + # copy bin and do not let it lower case + cp -f src/superslicer pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/SuperSlicer + chmod u+x pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/SuperSlicer +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" + +if [[ -n "$BUILD_IMAGE" ]] +then +echo -n "Creating DMG Image for distribution..." +{ + tar -cvf SuperSlicer.tar pack/SuperSlicer + + # create dmg + hdiutil create -ov -fs HFS+ -volname "SuperSlicer" -srcfolder "pack/SuperSlicer" temp.dmg + hdiutil convert temp.dmg -format UDZO -o SuperSlicer.dmg + popd +} &> $ROOT/build/MacOS_Build.log # Capture all command output +echo "done" +fi