Browse Source

libobs: Enable compilation on aarch64

Add arch checks to enable aarch-compat layer on aarch64, retain normal
gcc intrinsics on x86 and ppc64.
Peter Geis 6 years ago
parent
commit
64d0b7fcb4

+ 3 - 0
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

+ 18 - 3
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

+ 2 - 1
libobs/graphics/quat.h

@@ -20,7 +20,8 @@
 #include "../util/c99defs.h"
 #include "math-defs.h"
 #include "vec3.h"
-#include <xmmintrin.h>
+
+#include <util/sse-intrin.h>
 
 /*
  * Quaternion math

+ 2 - 1
libobs/graphics/vec3.h

@@ -19,7 +19,8 @@
 
 #include "math-defs.h"
 #include "vec4.h"
-#include <xmmintrin.h>
+
+#include <util/sse-intrin.h>
 
 #ifdef __cplusplus
 extern "C" {

+ 2 - 1
libobs/graphics/vec4.h

@@ -18,7 +18,8 @@
 #pragma once
 
 #include "math-defs.h"
-#include <xmmintrin.h>
+
+#include <util/sse-intrin.h>
 
 #ifdef __cplusplus
 extern "C" {

+ 2 - 2
libobs/media-io/format-conversion.c

@@ -16,8 +16,8 @@
 ******************************************************************************/
 
 #include "format-conversion.h"
-#include <xmmintrin.h>
-#include <emmintrin.h>
+
+#include <util/sse-intrin.h>
 
 /* ...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. */

+ 2 - 1
libobs/obs-audio-controls.c

@@ -16,7 +16,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include <math.h>
-#include <xmmintrin.h>
+
+#include <util/sse-intrin.h>
 
 #include "util/threading.h"
 #include "util/bmem.h"

+ 1 - 1
plugins/decklink/audio-repack.c

@@ -1,6 +1,6 @@
 #include "audio-repack.h"
 
-#include <emmintrin.h>
+#include <util/sse-intrin.h>
 
 int check_buffer(struct audio_repack *repack, uint32_t frame_count)
 {

+ 1 - 1
plugins/win-capture/game-capture.c

@@ -5,7 +5,7 @@
 #include <util/threading.h>
 #include <windows.h>
 #include <dxgi.h>
-#include <emmintrin.h>
+#include <util/sse-intrin.h>
 #include <ipc-util/pipe.h>
 #include "obfuscate.h"
 #include "inject-library.h"