cmake_minimum_required(VERSION 3.20)
project(LeafEnigma C CXX)
set(CMAKE_CXX_STANDARD 14)
set(src ${CMAKE_CURRENT_SOURCE_DIR}/engine)
file(GLOB lua ${src}/lib-src/lua/*.c)
list(FILTER lua EXCLUDE REGEX "/(lua|luac|print|lexerproxy)\\.c$")
set_source_files_properties(${lua} PROPERTIES LANGUAGE CXX)
file(GLOB zip ${src}/lib-src/zipios++/src/*.cpp)
list(FILTER zip EXCLUDE REGEX "/(appendzip|ziptest|test).*\\.cpp$")
file(GLOB tiny ${src}/lib-src/tinygettext/src/*.cpp)
file(GLOB oxyd ${src}/lib-src/oxydlib/*.cpp)
list(FILTER oxyd EXCLUDE REGEX "/(EnigmaNames|extractbitmaps|extractchunks|printlevels|printstats)\\.cpp$")
file(GLOB core ${src}/lib-src/enigma-core/*.cc ${src}/lib-src/enigma-core/*.c)
file(GLOB enet ${src}/lib-src/enet/*.c)
file(GLOB_RECURSE game ${src}/src/*.cc)
add_executable(enigma ${CMAKE_CURRENT_SOURCE_DIR}/../../../scripts/expansion/enigma-compat.cpp ${lua} ${zip} ${tiny} ${oxyd} ${core} ${enet} ${game})
target_include_directories(enigma PRIVATE ${src}/src ${src}/lib-src ${src}/lib-src/zipios++ ${src}/lib-src/zipios++/src ${src}/lib-src/lua ${src}/lib-src/tinygettext/include ${src}/lib-src/tinygettext ${src}/lib-src/enigma-core ${src}/lib-src/enet/include ${CMAKE_CURRENT_SOURCE_DIR}/xerces/xerces-c-3.3.0/src ${CMAKE_CURRENT_SOURCE_DIR}/xerces-build/src)
target_compile_definitions(enigma PRIVATE SYSTEM_DATA_DIR="/games" DOCDIR="/games/doc" HAVE_SDL=1 CXXLUA=1 HAS_FCNTL=1 HAS_POLL=1 HAS_SOCKLEN_T=1)
target_compile_options(enigma PRIVATE -O2 -fexceptions -Wno-deprecated-declarations -Wno-register -sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sUSE_SDL_MIXER=2 -sUSE_SDL_TTF=2)
target_link_libraries(enigma ${CMAKE_CURRENT_SOURCE_DIR}/xerces-build/src/libxerces-c.a)
target_link_options(enigma PRIVATE --profiling-funcs -sASSERTIONS=1 -O2 -fexceptions -sDISABLE_EXCEPTION_CATCHING=0 -sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL2_IMAGE_FORMATS=["png","jpg"] -sUSE_SDL_MIXER=2 -sUSE_SDL_TTF=2 -sUSE_ZLIB=1 -sASYNCIFY -sASYNCIFY_IMPORTS=SDL_Delay,leaf_enigma_need_file -sEXIT_RUNTIME=1 -sALLOW_MEMORY_GROWTH -sSTACK_SIZE=1048576 -sEXPORTED_RUNTIME_METHODS=FS,ENV,callMain,ccall -Wl,--wrap=stat -Wl,--wrap=SDL_PollEvent -Wl,--wrap=SDL_UpdateWindowSurface -Wl,--wrap=SDL_UpdateWindowSurfaceRects -sINCOMING_MODULE_JS_API=canvas,preRun,noInitialRun,onRuntimeInitialized,onAbort,onExit,print,printErr,arguments,wasmBinary,locateFile)
set_target_properties(enigma PROPERTIES SUFFIX .js)
