# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

cmake_minimum_required(VERSION 3.18.1)

project("crengine_ng_jni")

set(CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS_DEBUG}     -D_DEBUG=1 -DDEBUG=1")
set(CMAKE_CXX_FLAGS_DEBUG   "${CMAKE_CXX_FLAGS_DEBUG}   -D_DEBUG=1 -DDEBUG=1")
set(CMAKE_C_FLAGS_RELEASE   "${CMAKE_C_FLAGS_RELEASE}   -DNDEBUG=1 -O2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG=1 -O2")

# Set crengine-ng path
if (NOT CRENGINE_NG_COMMON_PREFIX_PATH)
    message(FATAL_ERROR "CRENGINE_NG_COMMON_PREFIX_PATH not defined!")
endif (NOT CRENGINE_NG_COMMON_PREFIX_PATH)

if ("${CMAKE_ANDROID_ARCH_ABI}" STREQUAL "arm64-v8a")
    set(CRENGINE_NG_ARCH_PREFIX_PATH "${CRENGINE_NG_COMMON_PREFIX_PATH}/arm64-v8a")
elseif ("${CMAKE_ANDROID_ARCH_ABI}" STREQUAL "armeabi-v7a")
    set(CRENGINE_NG_ARCH_PREFIX_PATH "${CRENGINE_NG_COMMON_PREFIX_PATH}/armeabi-v7a")
elseif ("${CMAKE_ANDROID_ARCH_ABI}" STREQUAL "x86")
    set(CRENGINE_NG_ARCH_PREFIX_PATH "${CRENGINE_NG_COMMON_PREFIX_PATH}/x86")
elseif ("${CMAKE_ANDROID_ARCH_ABI}" STREQUAL "x86_64")
    set(CRENGINE_NG_ARCH_PREFIX_PATH "${CRENGINE_NG_COMMON_PREFIX_PATH}/x86_64")
else ()
    message(FATAL_ERROR "Unsupported ABI=${CMAKE_ANDROID_ARCH_ABI}")
endif ()
if (NOT EXISTS ${CRENGINE_NG_ARCH_PREFIX_PATH})
    message(FATAL_ERROR "${CRENGINE_NG_ARCH_PREFIX_PATH} not exist!")
endif ()
list(APPEND CMAKE_FIND_ROOT_PATH "${CRENGINE_NG_ARCH_PREFIX_PATH}")

find_library(log-lib log)
#set(CMAKE_FIND_DEBUG_MODE ON)
find_package(crengine-ng 0.9.13 REQUIRED CONFIG)

include_directories(${CRENGINE_NG_INCLUDE_DIR})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -flto")

set(SRC_LIST
        crengine-ng-jni.cpp
        crengine-ng-binding.cpp
        crlog-jnibridge.cpp
        crjnienv.cpp
        lvtocitem-binding.cpp
        jnigraphicslib.cpp
        lvcolordrawbufex.cpp
        lvdocview_wrapper.cpp
        lvdocview_wrapper_private.cpp
        lvdocviewcallback-jnibridge.cpp
        hyphdataloaderproxy.cpp
)

add_library(crengine_ng_jni SHARED ${SRC_LIST})

target_link_libraries(crengine_ng_jni ${log-lib} crengine-ng::crengine-ng_static)
