cmake_minimum_required(VERSION 3.22)
project(fipsapp C)

# Pre-built libraries shipped from the parent repo via stage_fips.sh.
set(JNILIBS "${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}")

if(NOT EXISTS "${JNILIBS}/libcrypto.so")
  message(FATAL_ERROR
    "Missing ${JNILIBS}/libcrypto.so. "
    "Run ../../stage_fips.sh ${ANDROID_ABI} from tests/android-fips/.")
endif()

add_library(crypto    SHARED IMPORTED)
set_target_properties(crypto    PROPERTIES IMPORTED_LOCATION "${JNILIBS}/libcrypto.so")

add_library(sqlcipher SHARED IMPORTED)
set_target_properties(sqlcipher PROPERTIES IMPORTED_LOCATION "${JNILIBS}/libsqlcipher.so")

# Headers staged from dist/<abi>/include via stage_fips.sh.
set(STAGED_INCLUDE "${CMAKE_SOURCE_DIR}/include")

# 1. setenv-only shim. No OpenSSL deps so it can be loaded BEFORE
#    libcrypto / libfips, which lets us setenv OPENSSL_CONF before the
#    FIPS provider initializes.
add_library(appenv SHARED appenv.c)
target_link_libraries(appenv PRIVATE log)

# 2. Main JNI bridge: FIPS checks + SQLCipher round-trip helpers.
add_library(fipsapp SHARED jni_bridge.c)
target_include_directories(fipsapp PRIVATE "${STAGED_INCLUDE}")
target_link_libraries(fipsapp PRIVATE crypto sqlcipher log android)
