cmake_minimum_required(VERSION 3.20)
project(leaf_pingus LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(PINGUS_SOURCE "" CACHE PATH "Official extracted Pingus 0.7.6 source")
set(BOOST_SOURCE "" CACHE PATH "Official extracted Boost 1.48.0 source")
set(LEAF_ADAPTER "" CACHE PATH "Leaf Arcade adapter directory")
set(PINGUS_DIRS editor engine/display engine/display/delta engine/gui engine/input
 engine/resource engine/screen engine/sound engine/system lisp math pingus
 pingus/actions pingus/colliders pingus/components pingus/movers pingus/particles
 pingus/screens pingus/worldmap pingus/worldobjs util)
set(PINGUS_FILES "${PINGUS_SOURCE}/src/main.cpp")
foreach(folder IN LISTS PINGUS_DIRS)
 file(GLOB files "${PINGUS_SOURCE}/src/${folder}/*.cpp")
 list(APPEND PINGUS_FILES ${files})
endforeach()
file(GLOB GETTEXT_FILES "${PINGUS_SOURCE}/external/tinygettext/tinygettext/*.cpp")
file(GLOB BOOST_SIGNALS_FILES "${BOOST_SOURCE}/libs/signals/src/*.cpp")
add_executable(pingus ${PINGUS_FILES} ${GETTEXT_FILES} ${BOOST_SIGNALS_FILES}
 "${LEAF_ADAPTER}/pingus-compat.cpp")
target_include_directories(pingus PRIVATE "${PINGUS_SOURCE}/src"
 "${PINGUS_SOURCE}/external/tinygettext" "${BOOST_SOURCE}")
target_compile_definitions(pingus PRIVATE VERSION="0.7.6" HAVE_ICONV_CONST ICONV_CONST=)
target_compile_options(pingus PRIVATE -O2 -fexceptions -include "${LEAF_ADAPTER}/pingus-platform.h"
 -sUSE_SDL=1 -sUSE_SDL_IMAGE=1 -sUSE_SDL_MIXER=1 -sUSE_LIBPNG=1 -sUSE_MODPLUG=1
 -Wno-deprecated-declarations -Wno-deprecated-builtins -Wno-deprecated-register)
target_link_options(pingus PRIVATE -O2 -fexceptions -sDISABLE_EXCEPTION_CATCHING=0
 -sUSE_SDL=1 -sUSE_SDL_IMAGE=1 -sUSE_SDL_MIXER=1 -sUSE_LIBPNG=1 -sUSE_MODPLUG=1
 --use-preload-plugins -sASYNCIFY -sASYNCIFY_IMPORTS=SDL_Delay -sEXIT_RUNTIME=1
 -sALLOW_MEMORY_GROWTH -sSTACK_SIZE=2097152 -sASSERTIONS=1
 -sEXPORTED_RUNTIME_METHODS=FS,ENV,callMain,ccall
 -sINCOMING_MODULE_JS_API=canvas,preRun,noInitialRun,onRuntimeInitialized,onAbort,onExit,print,printErr,arguments,wasmBinary,locateFile
 -Wl,--wrap=SDL_UnlockSurface -Wl,--wrap=SDL_Flip)
set_target_properties(pingus PROPERTIES SUFFIX ".js")
