Files
eepp/projects/macos/ecode/build.app.sh
Martín Lucas Golini 461965f73d Fix SpartanJ/ecode#868.
2026-04-03 13:24:08 -03:00

102 lines
3.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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