# Minimal Basis Universal KTX2 transcoder JNI for GOES satellite tiles (parity with mapsgl satelliteKtxWorker.js).
cmake_minimum_required(VERSION 3.22)
project(aguacero_satellite_ktx)

set(CMAKE_CXX_STANDARD 17)

include(FetchContent)
FetchContent_Declare(
        basis_universal
        GIT_REPOSITORY https://github.com/BinomialLLC/basis_universal.git
        GIT_TAG master
        GIT_SHALLOW TRUE
)
# Do NOT use FetchContent_MakeAvailable: upstream CMake always builds the `basisu` CLI and links
# `-lpthread`, which fails on Android NDK (no separate libpthread). We only need transcoder sources.
FetchContent_GetProperties(basis_universal)
if(NOT basis_universal_POPULATED)
    FetchContent_Populate(basis_universal)
endif()

set(BASIS_DIR "${basis_universal_SOURCE_DIR}")

add_library(basisu_transcoder_min STATIC
        ${BASIS_DIR}/transcoder/basisu_transcoder.cpp
        ${BASIS_DIR}/zstd/zstddeclib.c
)

target_include_directories(basisu_transcoder_min PUBLIC
        ${BASIS_DIR}/transcoder
        ${BASIS_DIR}/zstd
)

target_compile_options(basisu_transcoder_min PRIVATE -fno-strict-aliasing)

add_library(aguacero_satellite_ktx SHARED satellite_ktx_jni.cpp)

target_include_directories(aguacero_satellite_ktx PRIVATE
        ${BASIS_DIR}/transcoder
)

target_link_libraries(aguacero_satellite_ktx PRIVATE basisu_transcoder_min log)

target_compile_options(aguacero_satellite_ktx PRIVATE -fno-strict-aliasing)
