mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-17 22:39:17 +02:00
Add macOS ARM64 build support
Three small source tweaks that let the OpenGL renderer build and run on Apple Silicon without affecting the Windows/Linux paths: - stdafx.h: use GLM_FORCE_NEON on ARM64 instead of GLM_FORCE_AVX2. AVX2 pulls <immintrin.h>, which clang on ARM64 rejects because the x86 intrinsics are unimplemented. - utilities/utilities.cpp: provide an Apple libc++ fallback for Now() using localtime_r + strftime, since std::chrono::current_zone() is not yet implemented there. - audio/audio.h: prefer Khronos-style <AL/al.h> headers when they are on the include path (brew openal-soft) and fall back to the deprecated Apple OpenAL.framework's <OpenAL/al.h> only otherwise.
This commit is contained in:
@@ -9,7 +9,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __APPLE__
|
||||
#if defined(__APPLE__) && !__has_include(<AL/al.h>)
|
||||
#include <OpenAL/al.h>
|
||||
#include <OpenAL/alc.h>
|
||||
#else
|
||||
|
||||
4
stdafx.h
4
stdafx.h
@@ -89,7 +89,11 @@
|
||||
#define glfwFocusWindow(w)
|
||||
#endif
|
||||
|
||||
#if defined(__aarch64__) || defined(__arm64__)
|
||||
#define GLM_FORCE_NEON
|
||||
#else
|
||||
#define GLM_FORCE_AVX2
|
||||
#endif
|
||||
#define GLM_FORCE_SWIZZLE
|
||||
#define GLM_ENABLE_EXPERIMENTAL
|
||||
#define GLM_FORCE_CTOR_INIT
|
||||
|
||||
@@ -39,9 +39,18 @@ bool DebugTractionFlag = false;
|
||||
|
||||
std::string Now()
|
||||
{
|
||||
#if defined(__APPLE__)
|
||||
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
|
||||
std::tm tm{};
|
||||
localtime_r(&t, &tm);
|
||||
char buf[64];
|
||||
std::strftime(buf, sizeof(buf), "%c", &tm);
|
||||
return std::string(buf);
|
||||
#else
|
||||
auto now = std::chrono::system_clock::now();
|
||||
auto local = std::chrono::current_zone()->to_local(now);
|
||||
return std::format("{:%c}", local);
|
||||
#endif
|
||||
}
|
||||
|
||||
// zwraca różnicę czasu
|
||||
|
||||
Reference in New Issue
Block a user