From 64d0b7fcb4da6d4c74f51fbbafca4b3ef78f2ee4 Mon Sep 17 00:00:00 2001 From: Peter Geis Date: Wed, 9 Oct 2019 16:13:23 +0000 Subject: [PATCH] libobs: Enable compilation on aarch64 Add arch checks to enable aarch-compat layer on aarch64, retain normal gcc intrinsics on x86 and ppc64. --- deps/media-playback/CMakeLists.txt | 3 +++ libobs/CMakeLists.txt | 21 ++++++++++++++++++--- libobs/graphics/quat.h | 3 ++- libobs/graphics/vec3.h | 3 ++- libobs/graphics/vec4.h | 3 ++- libobs/media-io/format-conversion.c | 4 ++-- libobs/obs-audio-controls.c | 3 ++- plugins/decklink/audio-repack.c | 2 +- plugins/win-capture/game-capture.c | 2 +- 9 files changed, 33 insertions(+), 11 deletions(-) diff --git a/deps/media-playback/CMakeLists.txt b/deps/media-playback/CMakeLists.txt index d58d121e0..6557abda2 100644 --- a/deps/media-playback/CMakeLists.txt +++ b/deps/media-playback/CMakeLists.txt @@ -28,6 +28,9 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le") PUBLIC -mvsx) add_compile_definitions(NO_WARN_X86_INTRINSICS) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + target_compile_options(media-playback + PUBLIC) elseif(NOT MSVC) target_compile_options(media-playback PUBLIC diff --git a/libobs/CMakeLists.txt b/libobs/CMakeLists.txt index 0eabf608c..bc969324b 100644 --- a/libobs/CMakeLists.txt +++ b/libobs/CMakeLists.txt @@ -174,9 +174,20 @@ elseif(UNIX) util/pipe-posix.c util/platform-nix.c) - set(libobs_PLATFORM_HEADERS - util/threading-posix.h) - + if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + set(libobs_PLATFORM_HEADERS + util/aarch/check.h + util/aarch/hedley.h + util/aarch/mmx.h + util/aarch/simde-arch.h + util/aarch/simde-common.h + util/aarch/sse.h + util/aarch/sse2.h + util/threading-posix.h) + else() + set(libobs_PLATFORM_HEADERS + util/threading-posix.h) + endif() if(HAVE_PULSEAUDIO) set(libobs_audio_monitoring_HEADERS audio-monitoring/pulse/pulseaudio-wrapper.h) @@ -337,6 +348,7 @@ set(libobs_util_SOURCES util/cf-parser.c util/profiler.c) set(libobs_util_HEADERS + util/sse-intrin.h util/array-serializer.h util/file-serializer.h util/utf8.h @@ -470,6 +482,9 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le") PUBLIC -mvsx) add_compile_definitions(NO_WARN_X86_INTRINSICS) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + target_compile_options(libobs + PUBLIC) elseif(NOT MSVC) target_compile_options(libobs PUBLIC diff --git a/libobs/graphics/quat.h b/libobs/graphics/quat.h index 23552ca5e..94d935c67 100644 --- a/libobs/graphics/quat.h +++ b/libobs/graphics/quat.h @@ -20,7 +20,8 @@ #include "../util/c99defs.h" #include "math-defs.h" #include "vec3.h" -#include + +#include /* * Quaternion math diff --git a/libobs/graphics/vec3.h b/libobs/graphics/vec3.h index d6b9f8df4..d6c995a8d 100644 --- a/libobs/graphics/vec3.h +++ b/libobs/graphics/vec3.h @@ -19,7 +19,8 @@ #include "math-defs.h" #include "vec4.h" -#include + +#include #ifdef __cplusplus extern "C" { diff --git a/libobs/graphics/vec4.h b/libobs/graphics/vec4.h index 61143cc83..4cabb7e14 100644 --- a/libobs/graphics/vec4.h +++ b/libobs/graphics/vec4.h @@ -18,7 +18,8 @@ #pragma once #include "math-defs.h" -#include + +#include #ifdef __cplusplus extern "C" { diff --git a/libobs/media-io/format-conversion.c b/libobs/media-io/format-conversion.c index f054064d3..1115342e7 100644 --- a/libobs/media-io/format-conversion.c +++ b/libobs/media-io/format-conversion.c @@ -16,8 +16,8 @@ ******************************************************************************/ #include "format-conversion.h" -#include -#include + +#include /* ...surprisingly, if I don't use a macro to force inlining, it causes the * CPU usage to boost by a tremendous amount in debug builds. */ diff --git a/libobs/obs-audio-controls.c b/libobs/obs-audio-controls.c index 81803adea..fe3dea6c4 100644 --- a/libobs/obs-audio-controls.c +++ b/libobs/obs-audio-controls.c @@ -16,7 +16,8 @@ along with this program. If not, see . */ #include -#include + +#include #include "util/threading.h" #include "util/bmem.h" diff --git a/plugins/decklink/audio-repack.c b/plugins/decklink/audio-repack.c index 8c59af5a2..b5968dd27 100644 --- a/plugins/decklink/audio-repack.c +++ b/plugins/decklink/audio-repack.c @@ -1,6 +1,6 @@ #include "audio-repack.h" -#include +#include int check_buffer(struct audio_repack *repack, uint32_t frame_count) { diff --git a/plugins/win-capture/game-capture.c b/plugins/win-capture/game-capture.c index 5c9422afd..693aa2b51 100644 --- a/plugins/win-capture/game-capture.c +++ b/plugins/win-capture/game-capture.c @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include "obfuscate.h" #include "inject-library.h"