cmake_minimum_required(VERSION 3.22.1)
project("MyNativePlugin")

find_library(log-lib log)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

message(STATUS "AAA-${UNITY_ROOT}")
message(STATUS "AAA-${UNITY_PROJECT_DIR}")
message(STATUS "AAA-${ANDROID_SDK}")

set(PLUGIN_API "${UNITY_ROOT}/PluginAPI")
set(BINDER_DIR "${ANDROID_SDK}/platforms/android-36/optional/libbinder_ndk_cpp")

set(SHARED_SRC_DIR "${UNITY_PROJECT_DIR}/../MosisService/src/main/cpp/")
set(AIDL_EXE "${ANDROID_SDK}/build-tools/36.1.0/aidl.exe")
set(AIDL_BASE_ARGS --lang=ndk --min_sdk_version=36
    -o ${CMAKE_CURRENT_BINARY_DIR} -h ${CMAKE_CURRENT_BINARY_DIR} -I ..\\aidl)

add_custom_command(
    OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/com/omixlab/mosis/IMosisService.cpp"
    COMMAND ${AIDL_EXE} ${AIDL_BASE_ARGS} ..\\aidl\\com\\omixlab\\mosis\\IMosisService.aidl
    DEPENDS ../aidl/com/omixlab/mosis/IMosisService.aidl
    WORKING_DIRECTORY ${SHARED_SRC_DIR}
    VERBATIM
)
add_custom_command(
    OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/com/omixlab/mosis/IMosisListener.cpp"
    COMMAND ${AIDL_EXE} ${AIDL_BASE_ARGS} ..\\aidl\\com\\omixlab\\mosis\\IMosisListener.aidl
    DEPENDS ../aidl/com/omixlab/mosis/IMosisListener.aidl
    WORKING_DIRECTORY ${SHARED_SRC_DIR}
    VERBATIM
)

add_library(my_native_lib SHARED
    my_native_code.cpp
    ${CMAKE_CURRENT_BINARY_DIR}/com/omixlab/mosis/IMosisService.cpp
    ${CMAKE_CURRENT_BINARY_DIR}/com/omixlab/mosis/IMosisListener.cpp
    ${SHARED_SRC_DIR}/logger.cpp
    ${SHARED_SRC_DIR}/external_texture.cpp
    ${SHARED_SRC_DIR}/render_target.cpp
    ${SHARED_SRC_DIR}/glad/src/egl.c
    ${SHARED_SRC_DIR}/glad/src/gles2.c
)
target_link_libraries(my_native_lib ${log-lib} binder_ndk EGL GLESv2 nativewindow)
target_include_directories(my_native_lib PUBLIC
    ${SHARED_SRC_DIR}
    ${SHARED_SRC_DIR}/glad/include
    ${CMAKE_CURRENT_BINARY_DIR}
    ${BINDER_DIR}
    ${PLUGIN_API}
)
