Files
CamSwapper/native/CMakeLists.txt
T

58 lines
1.4 KiB
CMake

cmake_minimum_required(VERSION 3.25)
project(camera_hook LANGUAGES CXX C)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Find Android libraries
find_library(log-lib log)
find_library(dl-lib dl)
find_library(mediandk-lib mediandk)
find_library(android-lib android)
# HAL hook shared library
add_library(camera_hook SHARED
src/camera_wrapper.cpp
src/video_decoder.cpp
src/rtsp_client.cpp
src/buffer_converter.cpp
)
target_include_directories(camera_hook PRIVATE
${CMAKE_SOURCE_DIR}/include
)
target_link_libraries(camera_hook
${log-lib}
${dl-lib}
${mediandk-lib}
${android-lib}
)
# Compiler flags for LD_PRELOAD hook
target_compile_options(camera_hook PRIVATE
-Wall
-Wextra
-fvisibility=hidden
-fPIC
)
# Enable NEON intrinsics for ARM64
if(ANDROID_ABI STREQUAL "arm64-v8a")
target_compile_options(camera_hook PRIVATE -march=armv8-a+simd)
endif()
# Output name
set_target_properties(camera_hook PROPERTIES
OUTPUT_NAME "camera_hook"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/../app/src/main/jniLibs/${ANDROID_ABI}"
)
# Camera provider wrapper (static C binary, bind-mounted over original)
add_executable(camera_provider_wrapper src/camera_provider_wrapper.c)
set_target_properties(camera_provider_wrapper PROPERTIES
LINKER_LANGUAGE C
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/../root-module"
)