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"); diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 index 9799e3541f..cc065f32dd --- a/build.sh +++ b/build.sh @@ -8,13 +8,35 @@ 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 + + # 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 $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" + 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 +45,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