-
Notifications
You must be signed in to change notification settings - Fork 226
Expand file tree
/
Copy path0001-android-build-compatabilty.patch
More file actions
133 lines (123 loc) · 4.81 KB
/
Copy path0001-android-build-compatabilty.patch
File metadata and controls
133 lines (123 loc) · 4.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
From bab337368cb4af98ba86f96fb97bd11973358bba Mon Sep 17 00:00:00 2001
From: lumaparallax <257510328+lumaparallax@users.noreply.github.com>
Date: Mon, 20 Apr 2026 20:19:17 +0900
Subject: [PATCH 01/10] android-build-compatabilty
---
CMakeLists.txt | 10 ++++++++++
cmake/common/compiler_common.cmake | 6 +++++-
cmake/common/osconfig.cmake | 11 ++++++++---
cmake/linux/compilerconfig.cmake | 10 ++++++++++
frontend/cmake/os-linux.cmake | 6 ++++--
plugins/CMakeLists.txt | 4 +++-
6 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4af6f90b7..22daf3e67 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,16 @@ include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/common/bootstrap.cmake" NO_POLICY_SCO
project(obs-studio VERSION ${OBS_VERSION_CANONICAL})
+# OBS subdirectories and Find*.cmake modules often strictly check for "Linux".
+if(CMAKE_SYSTEM_NAME MATCHES "Android" OR CMAKE_HOST_SYSTEM_NAME MATCHES "Android")
+ message(STATUS "Android platform detected. Enforcing Linux build paths.")
+ set(CMAKE_SYSTEM_NAME "Linux")
+ set(CMAKE_HOST_SYSTEM_NAME "Linux")
+ set(OS_LINUX TRUE)
+ set(OS_POSIX TRUE)
+ set(OS_ANDROID TRUE)
+endif()
+
if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/windows/architecture.cmake")
if(NOT OBS_PARENT_ARCHITECTURE STREQUAL CMAKE_VS_PLATFORM_NAME)
diff --git a/cmake/common/compiler_common.cmake b/cmake/common/compiler_common.cmake
index f6b9dd36f..bcb522b39 100644
--- a/cmake/common/compiler_common.cmake
+++ b/cmake/common/compiler_common.cmake
@@ -83,7 +83,11 @@ if(CMAKE_CXX_STANDARD GREATER_EQUAL 20)
endif()
if(NOT DEFINED CMAKE_COMPILE_WARNING_AS_ERROR)
- set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
+ if(OS_ANDROID)
+ set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)
+ else()
+ set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
+ endif()
endif()
# Enable interprocedural optimization
diff --git a/cmake/common/osconfig.cmake b/cmake/common/osconfig.cmake
index 2dc6dedb8..2c765d35b 100644
--- a/cmake/common/osconfig.cmake
+++ b/cmake/common/osconfig.cmake
@@ -12,9 +12,14 @@ elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
set(CMAKE_CXX_EXTENSIONS FALSE)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos")
set(OS_MACOS TRUE)
-elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD|OpenBSD")
+elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD|OpenBSD|Android")
set(CMAKE_CXX_EXTENSIONS FALSE)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux")
- string(TOUPPER "${CMAKE_HOST_SYSTEM_NAME}" _SYSTEM_NAME_U)
- set(OS_${_SYSTEM_NAME_U} TRUE)
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
+ set(OS_LINUX TRUE)
+ set(OS_ANDROID TRUE)
+ else()
+ string(TOUPPER "${CMAKE_HOST_SYSTEM_NAME}" _SYSTEM_NAME_U)
+ set(OS_${_SYSTEM_NAME_U} TRUE)
+ endif()
endif()
diff --git a/cmake/linux/compilerconfig.cmake b/cmake/linux/compilerconfig.cmake
index 3f4d45e4d..53bd28c82 100644
--- a/cmake/linux/compilerconfig.cmake
+++ b/cmake/linux/compilerconfig.cmake
@@ -85,3 +85,13 @@ else()
endif()
add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG> $<$<CONFIG:DEBUG>:_DEBUG> SIMDE_ENABLE_OPENMP)
+
+if(OS_ANDROID OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
+ add_compile_options(-fPIC)
+ add_compile_options(-ftls-model=global-dynamic)
+ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13)
+ add_link_options(-fPIC)
+ else()
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fPIC")
+ endif()
+endif()
diff --git a/frontend/cmake/os-linux.cmake b/frontend/cmake/os-linux.cmake
index d146e7297..0aa18d558 100644
--- a/frontend/cmake/os-linux.cmake
+++ b/frontend/cmake/os-linux.cmake
@@ -16,8 +16,10 @@ if(Qt6_VERSION AND Qt6_VERSION VERSION_LESS "6.9.0")
target_link_libraries(obs-studio PRIVATE Qt::GuiPrivate)
endif()
-find_package(Libpci REQUIRED)
-target_link_libraries(obs-studio PRIVATE Libpci::pci)
+if(NOT OS_ANDROID)
+ find_package(Libpci REQUIRED)
+ target_link_libraries(obs-studio PRIVATE Libpci::pci)
+endif()
if(TARGET OBS::python)
find_package(Python REQUIRED COMPONENTS Interpreter Development)
diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
index c12f015c8..5f540bd77 100644
--- a/plugins/CMakeLists.txt
+++ b/plugins/CMakeLists.txt
@@ -61,13 +61,15 @@ check_obs_browser()
add_obs_plugin(obs-ffmpeg)
add_obs_plugin(obs-filters)
add_obs_plugin(obs-libfdk)
-add_obs_plugin(obs-nvenc PLATFORMS WINDOWS LINUX ARCHITECTURES x64 x86_64)
add_obs_plugin(obs-outputs)
+if (NOT OS_ANDROID)
+add_obs_plugin(obs-nvenc PLATFORMS WINDOWS LINUX ARCHITECTURES x64 x86_64)
add_obs_plugin(
obs-qsv11
PLATFORMS WINDOWS LINUX
ARCHITECTURES x64 x86_64
)
+endif()
add_obs_plugin(obs-text PLATFORMS WINDOWS)
add_obs_plugin(obs-transitions)
add_obs_plugin(
--
2.54.0