58 lines
1.4 KiB
CMake
58 lines
1.4 KiB
CMake
cmake_minimum_required(VERSION 3.22.1)
|
|
project(camera_hook LANGUAGES CXX)
|
|
|
|
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)
|
|
target_link_options(camera_provider_wrapper PRIVATE -static)
|
|
set_target_properties(camera_provider_wrapper PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/../root-module"
|
|
)
|