From 97a6efbad12714194dbd52d539d432d0d102d680 Mon Sep 17 00:00:00 2001 From: Anatolii Lehkyi Date: Tue, 11 Nov 2025 15:22:06 +0200 Subject: [PATCH 1/3] Added MacOS Build logic to `build.sh` --- build.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) mode change 100644 => 100755 build.sh diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 index 9799e3541f..724d2b58b5 --- a/build.sh +++ b/build.sh @@ -8,13 +8,25 @@ build_dir=build mkdir -p build cd build -CC=/usr/bin/clang-18 CXX=/usr/bin/clang++-18 cmake ../cmake -DCMAKE_CXX_FLAGS='-stdlib=libc++ -I/usr/lib/llvm-17/include/c++/v1~' +# Check if we are on Mac using the DARWIN environment variable +if [[ "$(uname)" == "Darwin" ]]; then + echo "Building for MacOS" + # llvm@21 gives errors on build + export CC="$(brew --prefix)/opt/llvm@18/bin/clang" + export CXX="$(brew --prefix)/opt/llvm@18/bin/clang++" + cmake ../cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DCMAKE_POLICY_VERSION_MINIMUM=3.10 + #CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake ../cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 +else + echo "Building for Linux" + CC=/usr/bin/clang-18 CXX=/usr/bin/clang++-18 cmake ../cmake -DCMAKE_CXX_FLAGS='-stdlib=libc++ -I/usr/lib/llvm-17/include/c++/v1~' +fi make -j$(nproc) cd .. mkdir -p AirLib/lib/x64/$folder_name +mkdir -p AirLib/lib/arm64/$folder_name mkdir -p AirLib/deps/rpclib/lib mkdir -p AirLib/deps/MavLinkCom/lib cp $build_dir/output/lib/libAirLib.a AirLib/lib @@ -23,6 +35,7 @@ cp $build_dir/output/lib/librpc.a AirLib/deps/rpclib/lib/librpc.a # Update AirLib/lib, AirLib/deps, Plugins folders with new binaries rsync -a --delete build/output/lib/ AirLib/lib/x64/$folder_name +rsync -a --delete build/output/lib/ AirLib/lib/arm64/$folder_name rsync -a --delete external/rpclib/$RPC_VERSION_FOLDER/include AirLib/deps/rpclib rsync -a --delete MavLinkCom/include AirLib/deps/MavLinkCom rsync -a --delete AirLib Unreal/Plugins/AirSim/Source From dca76cba426e804bca96206e4510775d1ef9ac91 Mon Sep 17 00:00:00 2001 From: Anatolii Lehkyi Date: Tue, 11 Nov 2025 15:22:18 +0200 Subject: [PATCH 2/3] Fixed MacOS 15.5 Compilation issue: `error: expected unqualified-id: typedef nil_t nil;` --- Unreal/Plugins/AirSim/Source/AirSim.Build.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Unreal/Plugins/AirSim/Source/AirSim.Build.cs b/Unreal/Plugins/AirSim/Source/AirSim.Build.cs index de9041afe0..49eefbd15c 100644 --- a/Unreal/Plugins/AirSim/Source/AirSim.Build.cs +++ b/Unreal/Plugins/AirSim/Source/AirSim.Build.cs @@ -83,6 +83,10 @@ public AirSim(ReadOnlyTargetRules Target) : base(Target) PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "ImageWrapper", "RenderCore", "RHI", "PhysicsCore", "AssetRegistry", "ChaosVehicles", "Landscape", "CinematicCamera" }); PrivateDependencyModuleNames.AddRange(new string[] { "UMG", "Slate", "SlateCore", "RenderCore" }); + if (Target.Platform == UnrealTargetPlatform.Mac) { + PublicDefinitions.Add("MSGPACK_DISABLE_LEGACY_NIL=1"); + } + //suppress VC++ proprietary warnings PublicDefinitions.Add("_SCL_SECURE_NO_WARNINGS=1"); PublicDefinitions.Add("_CRT_SECURE_NO_WARNINGS=1"); From e94c864b90e06997f272d2cf3f8fd7dfa8271c75 Mon Sep 17 00:00:00 2001 From: Anatolii Lehkyi Date: Fri, 14 Nov 2025 14:09:31 +0200 Subject: [PATCH 3/3] Fix for Unreal/Unity using x86_64/arm64 (Rosetta) on Apple Silicon hardware. --- build.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 724d2b58b5..cc065f32dd 100755 --- a/build.sh +++ b/build.sh @@ -10,11 +10,21 @@ cd build # Check if we are on Mac using the DARWIN environment variable if [[ "$(uname)" == "Darwin" ]]; then - echo "Building for MacOS" + + # Fix for Unreal/Unity using x86_64/arm64 (Rosetta) on Apple Silicon hardware. + CMAKE_VARS= + if [[ "$(uname -a)" == *"arm64"* ]]; then + echo "Building for MacOS (arm64)" + CMAKE_VARS="-DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DCMAKE_POLICY_VERSION_MINIMUM=3.10" + else + echo "Building for MacOS (x86_64)" + CMAKE_VARS="-DCMAKE_APPLE_SILICON_PROCESSOR=x86_64 -DCMAKE_POLICY_VERSION_MINIMUM=3.10" + fi + # llvm@21 gives errors on build export CC="$(brew --prefix)/opt/llvm@18/bin/clang" export CXX="$(brew --prefix)/opt/llvm@18/bin/clang++" - cmake ../cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DCMAKE_POLICY_VERSION_MINIMUM=3.10 + cmake ../cmake -DCMAKE_BUILD_TYPE=Release $CMAKE_VARS #CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake ../cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 else echo "Building for Linux"