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" )