#!/bin/bash CANONPATH=$(readlink -f "$0") DIRPATH="$(dirname "$CANONPATH")" cd "$DIRPATH" || exit VERSION= for i in "$@"; do case $i in --version) if [[ -n $2 ]]; then VERSION="$2"; fi shift shift ;; -*|--*) echo "Unknown option $i" exit 1 ;; *) ;; esac done SDL2_CONFIG=$(which sdl2-config) CONFIG_NAME= ARCH_PATH= DYLIB_PATH= if command -v premake4 &> /dev/null then CONFIG_NAME=release DYLIB_PATH=../../../libs/macosx/libeepp.dylib elif command -v premake5 &> /dev/null then CONFIG_NAME=release_arm64 ARCH_PATH="arm64/" DYLIB_PATH=../../../libs/macosx/"$ARCH_PATH"libeepp.dylib else echo "Neither premake5 nor premake4 is available. Please install one." exit 1 fi rm -rf ../../../libs/macosx if [ -z "$SDL2_CONFIG" ]; then echo "Building using frameworks" ../make.sh config=$CONFIG_NAME ecode || exit else echo "Building using sdl2-config" ../make_no_fw.sh config=$CONFIG_NAME ecode || exit fi RESOURCES_PATH="ecode.app/Contents/Resources" bash ../../scripts/copy_ecode_assets.sh ../../bin $RESOURCES_PATH || exit mkdir -p ecode.app/Contents/MacOS/ cp ../../../bin/assets/icon/ecode.icns $RESOURCES_PATH/ecode.icns VERSIONPATH=../../../src/tools/ecode/version.hpp ECODE_MAJOR_VERSION=$(grep "define ECODE_MAJOR_VERSION" $VERSIONPATH | awk '{print $3}') ECODE_MINOR_VERSION=$(grep "define ECODE_MINOR_VERSION" $VERSIONPATH | awk '{print $3}') ECODE_PATCH_LEVEL=$(grep "define ECODE_PATCH_LEVEL" $VERSIONPATH | awk '{print $3}') if [ -n "$VERSION" ]; then ECODE_VERSION="$VERSION" else ECODE_VERSION="$ECODE_MAJOR_VERSION"."$ECODE_MINOR_VERSION"."$ECODE_PATCH_LEVEL" fi cat Info.plist.tpl | sed "s/ECODE_VERSION_STRING/${ECODE_VERSION}/g" | sed "s/ECODE_MAJOR_VERSION/${ECODE_MAJOR_VERSION}/g" | sed "s/ECODE_MINOR_VERSION/${ECODE_MINOR_VERSION}/g" > Info.plist cp Info.plist ecode.app/Contents/ rm Info.plist cp $DYLIB_PATH ecode.app/Contents/MacOS cp ../../../bin/ecode ecode.app/Contents/MacOS if [ -z "$SDL2_CONFIG" ]; then SDL2_LIB_PATH="/Library/Frameworks/SDL2.framework/Versions/A/" cp "$SDL2_LIB_PATH/SDL2" ecode.app/Contents/MacOS/SDL2 install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/SDL2 ecode.app/Contents/MacOS/libeepp.dylib codesign --force -s - ecode.app/Contents/MacOS/SDL2 install_name_tool -change @rpath/libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode else SDL2_LIB_PATH=$(sdl2-config --libs | awk '{ print $1 }' | cut -b 3-) cp "$SDL2_LIB_PATH"/libSDL2-2.0.0.dylib ecode.app/Contents/MacOS SDL2_LIB_REAL_PATH=$(otool -L ecode.app/Contents/MacOS/libeepp.dylib | grep libSDL2 | awk '{ print $1 }') install_name_tool -change "$SDL2_LIB_REAL_PATH" @executable_path/libSDL2-2.0.0.dylib ecode.app/Contents/MacOS/libeepp.dylib # premake4 generates a different location if [ -z "$ARCH_PATH" ]; then install_name_tool -change libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode else install_name_tool -change @rpath/libeepp.dylib @executable_path/libeepp.dylib ecode.app/Contents/MacOS/ecode fi fi # Clear quarantine flag recursively (more targeted than -cr) xattr -d -r com.apple.quarantine ecode.app 2>/dev/null || true # Clear permissions (basically for libSDL2) chmod -R u+rwX,go+rX,go-w ecode.app xattr -cr ecode.app