cmake_minimum_required(VERSION 3.30)
project(twnlua LANGUAGES C)

find_package(Python3 COMPONENTS Interpreter)

if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE Debug)
endif()

add_subdirectory($ENV{TWNROOT} ${CMAKE_BINARY_DIR}/twn)

set(FLAGS
        $<$<NOT:$<BOOL:${TWN_FEATURE_DYNLIB_GAME}>>:--no-dynlib-game>
)

add_custom_command(
   OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/game.c
   COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/bindgen.py $ENV{TWNROOT}/share/twn_api.json ${FLAGS} > ${CMAKE_CURRENT_SOURCE_DIR}/luabind.c
   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bindgen.py $ENV{TWNROOT}/share/twn_api.json
)

add_custom_command(
   OUTPUT ${TWN_OUT_DIR}/data/scripts/twnapi.lua
   COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/docgen.py $ENV{TWNROOT}/share/twn_api.json > ${TWN_OUT_DIR}/data/scripts/twnapi.lua
   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/docgen.py $ENV{TWNROOT}/share/twn_api.json
)

add_custom_target(
    twnlua_docgen ALL
    DEPENDS ${TWN_OUT_DIR}/data/scripts/twnapi.lua
)

add_compile_definitions(LUA_32BITS=1)

set(SOURCE_FILES
        game.c
        minilua.c
)

use_townengine("${SOURCE_FILES}" ${TWN_OUT_DIR})