Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 27 additions & 9 deletions build/build.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#!/usr/bin/env bash
set -e
builddir=$(cd "$(dirname "$0")"; pwd)
platform=x64
vs=vs2022
configuration=DebugOpt
build_only=false
Expand All @@ -18,8 +17,17 @@ oshost=""
os=""
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
else
echo "Unsupported machine type: ${_machine}"
exit 1

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed the logic here a bit to be more explicit. The x86 branch might need to support some more types than i686 but can be added if/when needed.

fi

build()
Expand Down Expand Up @@ -103,7 +111,7 @@ test()
}

clean()
{
{
rm -rf "$objdir"
rm -rf "$gendir"
rm -rf "$bindir"
Expand All @@ -125,14 +133,22 @@ download_premake()

if ! [ -f "$premake_path" ]; then
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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An important detail: premake 5.0.0-beta8 switches to using arm64 as the default: https://github.com/premake/premake-core/releases/tag/v5.0.0-beta8. This means that this will now "work", but will break things for Intel-based Macs. If we want to support them, the generated file name should be premake-5.0.0-beta8-macosx-x64.tar.gz for such platforms.

As far as I'm concerned, we could ignore this and focus on supporting ARM-based macOS for now, but if this is considered an issue, we should resolve this before merge.

premake_url=https://github.com/premake/premake-core/releases/download/v$premake_version/$premake_archive
curl -L -O $premake_url
if [ $oshost = "windows" ]; then
unzip $premake_archive $premake_filename -d "$premake_dir"
else
tar -xf $premake_archive -C "$premake_dir" ./$premake_filename
tar -xf $premake_archive -C "$premake_dir" $unpack_filename
fi
chmod +x "$premake_path"
rm $premake_archive
Expand Down Expand Up @@ -161,7 +177,9 @@ package_llvm()

detect_os()
{
case "$(uname -s)" in
local _system=$(uname -s)

case "${_system}" in
Darwin)
oshost=macosx
;;
Expand All @@ -172,7 +190,7 @@ detect_os()
oshost=windows
;;
*)
echo "Unsupported platform"
echo "Unsupported platform: ${_system}"
exit 1
;;
esac
Expand Down Expand Up @@ -202,7 +220,7 @@ while [[ $# > 0 ]]; do
-configuration)
configuration=$2
shift
;;
;;
-platform)
platform=$2
shift
Expand Down Expand Up @@ -240,7 +258,7 @@ case "$cmd" in
;;
generate_config)
generate_config
;;
;;
prepack)
prepack
;;
Expand Down