mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 00:49:19 +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
|
#pragma once
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#if defined(__APPLE__) && !__has_include(<AL/al.h>)
|
||||||
#include <OpenAL/al.h>
|
#include <OpenAL/al.h>
|
||||||
#include <OpenAL/alc.h>
|
#include <OpenAL/alc.h>
|
||||||
#else
|
#else
|
||||||
|
|||||||
4
stdafx.h
4
stdafx.h
@@ -89,7 +89,11 @@
|
|||||||
#define glfwFocusWindow(w)
|
#define glfwFocusWindow(w)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__aarch64__) || defined(__arm64__)
|
||||||
|
#define GLM_FORCE_NEON
|
||||||
|
#else
|
||||||
#define GLM_FORCE_AVX2
|
#define GLM_FORCE_AVX2
|
||||||
|
#endif
|
||||||
#define GLM_FORCE_SWIZZLE
|
#define GLM_FORCE_SWIZZLE
|
||||||
#define GLM_ENABLE_EXPERIMENTAL
|
#define GLM_ENABLE_EXPERIMENTAL
|
||||||
#define GLM_FORCE_CTOR_INIT
|
#define GLM_FORCE_CTOR_INIT
|
||||||
|
|||||||
@@ -39,9 +39,18 @@ bool DebugTractionFlag = false;
|
|||||||
|
|
||||||
std::string Now()
|
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 now = std::chrono::system_clock::now();
|
||||||
auto local = std::chrono::current_zone()->to_local(now);
|
auto local = std::chrono::current_zone()->to_local(now);
|
||||||
return std::format("{:%c}", local);
|
return std::format("{:%c}", local);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// zwraca różnicę czasu
|
// zwraca różnicę czasu
|
||||||
|
|||||||
Reference in New Issue
Block a user