cmake_minimum_required(VERSION 3.22)
project(TechnozonHeroes C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(HEROES "${CMAKE_CURRENT_SOURCE_DIR}/../fheroes2")
add_library(SDL2 SHARED IMPORTED)
set_target_properties(SDL2 PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../app-project/app/src/main/jniLibs/${ANDROID_ABI}/libSDL2.so" INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include")
add_library(SDL2::SDL2 ALIAS SDL2)
set(SDL2_DISABLE_INSTALL ON)
set(BUILD_SHARED_LIBS ON)
foreach(F MOD OPUS WAVPACK CMD SAMPLES MIDI_FLUIDSYNTH MIDI_NATIVE)
 set(SDL2MIXER_${F} OFF CACHE BOOL "" FORCE)
endforeach()
set(SDL2MIXER_MIDI ON CACHE BOOL "" FORCE)
set(SDL2MIXER_MIDI_TIMIDITY ON CACHE BOOL "" FORCE)
set(SDL2MIXER_MP3 ON CACHE BOOL "" FORCE)
set(SDL2MIXER_FLAC ON CACHE BOOL "" FORCE)
set(SDL2MIXER_VORBIS STB CACHE STRING "" FORCE)
add_subdirectory(../SDL_mixer mixer)
target_link_options(SDL2_mixer PRIVATE "-Wl,-z,max-page-size=16384")
file(GLOB_RECURSE HEROES_SOURCES CONFIGURE_DEPENDS "${HEROES}/src/fheroes2/*.cpp" "${HEROES}/src/engine/*.cpp")
add_library(heroes SHARED ${HEROES_SOURCES} ${HEROES}/src/thirdparty/libsmacker/smacker.c tv_heroes.cpp)
file(GLOB_RECURSE HEROES_HEADERS "${HEROES}/src/fheroes2/*.h")
set(HEROES_INCLUDES "${HEROES}/src/engine" "${HEROES}/src/thirdparty/libsmacker")
foreach(HEADER ${HEROES_HEADERS})
 get_filename_component(DIR ${HEADER} DIRECTORY)
 list(APPEND HEROES_INCLUDES ${DIR})
endforeach()
list(REMOVE_DUPLICATES HEROES_INCLUDES)
target_include_directories(heroes PRIVATE ${HEROES_INCLUDES})
target_compile_definitions(heroes PRIVATE ANDROID)
set_source_files_properties(${HEROES}/src/fheroes2/game/fheroes2.cpp PROPERTIES COMPILE_DEFINITIONS "SDL_main=HeroesMain")
target_link_libraries(heroes SDL2 SDL2_mixer z log)
target_link_options(heroes PRIVATE "-Wl,-z,max-page-size=16384")
