
cmake_minimum_required(VERSION 3.22.1)
project(rmlandroid LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(ExternalProject)

set(DEPS_INSTALL ${CMAKE_BINARY_DIR}/deps/install)

set(ANDROID_TOOLCHAIN_ARGS
  -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
  -DANDROID_ABI=${ANDROID_ABI}
  -DANDROID_PLATFORM=${ANDROID_PLATFORM}
  -DANDROID_STL=c++_shared
  -DCMAKE_BUILD_TYPE=Release
  -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL}
  -DCMAKE_PREFIX_PATH=${DEPS_INSTALL}
  -DBUILD_SHARED_LIBS=OFF
  -DCMAKE_CXX_STANDARD=17
  -DCMAKE_CXX_STANDARD_REQUIRED=ON
  -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH
  -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH
  -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
)

find_package(SDL3 REQUIRED CONFIG)
find_package(SDL3_image REQUIRED CONFIG)

ExternalProject_Add(freetype_ext
  GIT_REPOSITORY https://github.com/freetype/freetype.git
  GIT_TAG VER-2-13-3
  CMAKE_ARGS ${ANDROID_TOOLCHAIN_ARGS}
    -DFT_DISABLE_ZLIB=TRUE
    -DFT_DISABLE_BZIP2=TRUE
    -DFT_DISABLE_PNG=TRUE
    -DFT_DISABLE_HARFBUZZ=TRUE
    -DFT_DISABLE_BROTLI=TRUE
)

ExternalProject_Add(rmlui_ext
  GIT_REPOSITORY https://github.com/mikke89/RmlUi.git
  GIT_TAG 6.2
  CMAKE_ARGS ${ANDROID_TOOLCHAIN_ARGS}
    -DFreetype_ROOT=${DEPS_INSTALL}
    -DRMLUI_SAMPLES=OFF
    -DBUILD_TESTING=OFF
  DEPENDS freetype_ext
)

set(PROJECT_SRC_DIR ${CMAKE_SOURCE_DIR}/../../src)
set(RMLUI_BACKEND_DIR ${CMAKE_SOURCE_DIR}/../../vendor/rmlui_backend)

add_library(rmlandroid SHARED
  ${PROJECT_SRC_DIR}/main.cpp
  
  ${RMLUI_BACKEND_DIR}/RmlUi_Backend_SDL_SDLrenderer.cpp
  ${RMLUI_BACKEND_DIR}/RmlUi_Platform_SDL.cpp
  ${RMLUI_BACKEND_DIR}/RmlUi_Renderer_SDL.cpp
)

add_dependencies(rmlandroid freetype_ext rmlui_ext)

target_include_directories(rmlandroid PRIVATE
  ${PROJECT_SRC_DIR}
  ${RMLUI_BACKEND_DIR}
  ${DEPS_INSTALL}/include
)

target_compile_definitions(rmlandroid PRIVATE
  RMLUI_SDL_VERSION_MAJOR=3
  RMLUI_STATIC_LIB
)

target_link_directories(rmlandroid PRIVATE ${DEPS_INSTALL}/lib)

target_link_libraries(rmlandroid PRIVATE
  SDL3::SDL3
  SDL3_image::SDL3_image
  rmlui
  rmlui_debugger
  freetype
)

target_link_options(rmlandroid PRIVATE "-Wl,-u,SDL_main")
