Browse Source

Add premake support for ARM-based macOS

This upgrades to premake 5.0.0-beta8, which is the first version that
provides ARM64-based binaries for macOS.
pull/1958/head
Per Lundberg 6 months ago
parent
commit
4d59a23b27
No known key found for this signature in database
  1. 36
      build/build.sh

36
build/build.sh

@ -1,7 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
builddir=$(cd "$(dirname "$0")"; pwd) builddir=$(cd "$(dirname "$0")"; pwd)
platform=x64
vs=vs2022 vs=vs2022
configuration=DebugOpt configuration=DebugOpt
build_only=false build_only=false
@ -18,8 +17,17 @@ oshost=""
os="" os=""
test= test=
if [[ $(uname -m) != *"64"* ]]; then _machine=$(uname -m)
if [[ $_machine == "arm64" ]]; then
platform="arm64"
elif [[ $_machine == "x86_64" ]]; then
platform="x64"
elif [[ $_machine == "i686" ]]; then
platform=x86 platform=x86
else
echo "Unsupported machine type: ${_machine}"
exit 1
fi fi
build() build()
@ -103,7 +111,7 @@ test()
} }
clean() clean()
{ {
rm -rf "$objdir" rm -rf "$objdir"
rm -rf "$gendir" rm -rf "$gendir"
rm -rf "$bindir" rm -rf "$bindir"
@ -125,14 +133,22 @@ download_premake()
if ! [ -f "$premake_path" ]; then if ! [ -f "$premake_path" ]; then
echo "Downloading and unpacking Premake..." echo "Downloading and unpacking Premake..."
premake_version=5.0.0-beta2 unpack_filename=$premake_filename
if [ $oshost = "macosx" ]; then
# macOS needs a newer premake version which has arm64 (Apple Silicon) support
premake_version=5.0.0-beta8
else
# Other systems need an older premake that still works on Ubuntu 22.04
premake_version=5.0.0-beta2
unpack_filename=./${premake_filename}
fi
premake_archive=premake-$premake_version-$oshost.$premake_archive_ext premake_archive=premake-$premake_version-$oshost.$premake_archive_ext
premake_url=https://github.com/premake/premake-core/releases/download/v$premake_version/$premake_archive premake_url=https://github.com/premake/premake-core/releases/download/v$premake_version/$premake_archive
curl -L -O $premake_url curl -L -O $premake_url
if [ $oshost = "windows" ]; then if [ $oshost = "windows" ]; then
unzip $premake_archive $premake_filename -d "$premake_dir" unzip $premake_archive $premake_filename -d "$premake_dir"
else else
tar -xf $premake_archive -C "$premake_dir" ./$premake_filename tar -xf $premake_archive -C "$premake_dir" $unpack_filename
fi fi
chmod +x "$premake_path" chmod +x "$premake_path"
rm $premake_archive rm $premake_archive
@ -161,7 +177,9 @@ package_llvm()
detect_os() detect_os()
{ {
case "$(uname -s)" in local _system=$(uname -s)
case "${_system}" in
Darwin) Darwin)
oshost=macosx oshost=macosx
;; ;;
@ -172,7 +190,7 @@ detect_os()
oshost=windows oshost=windows
;; ;;
*) *)
echo "Unsupported platform" echo "Unsupported platform: ${_system}"
exit 1 exit 1
;; ;;
esac esac
@ -202,7 +220,7 @@ while [[ $# > 0 ]]; do
-configuration) -configuration)
configuration=$2 configuration=$2
shift shift
;; ;;
-platform) -platform)
platform=$2 platform=$2
shift shift
@ -240,7 +258,7 @@ case "$cmd" in
;; ;;
generate_config) generate_config)
generate_config generate_config
;; ;;
prepack) prepack)
prepack prepack
;; ;;

Loading…
Cancel
Save