cmake_minimum_required(VERSION 3.22)
project(gba_pocket C)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -D_GNU_SOURCE -DDISABLE_THREADING")
set(LIBMGBA_ONLY ON)
set(M_CORE_GBA ON)
set(M_CORE_GB OFF)
set(BUILD_GL OFF)
set(BUILD_GLES2 OFF)
set(BUILD_GLES3 OFF)
set(USE_DEBUGGERS OFF)
set(ENABLE_SCRIPTING OFF)
add_subdirectory(../vendor/mgba mgba-core EXCLUDE_FROM_ALL)
get_directory_property(CORE_DEFINES DIRECTORY ../vendor/mgba COMPILE_DEFINITIONS)
add_executable(gba_web web.c)
target_compile_definitions(gba_web PRIVATE ${CORE_DEFINES})
target_link_libraries(gba_web PRIVATE mgba)
target_link_options(gba_web PRIVATE -O3 --no-entry
 "-sMODULARIZE=1" "-sEXPORT_ES6=1" "-sEXPORT_NAME=createGBA"
 "-sENVIRONMENT=web,worker,node" "-sALLOW_MEMORY_GROWTH=1"
 "-sINITIAL_MEMORY=33554432" "-sMAXIMUM_MEMORY=134217728" "-sSTACK_SIZE=1048576"
 "-sEXPORTED_FUNCTIONS=['_malloc','_free']" "-sEXPORTED_RUNTIME_METHODS=['HEAPU8','HEAP16']")
set_target_properties(gba_web PROPERTIES OUTPUT_NAME "mgba" SUFFIX ".mjs"
 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../public/core")
