cmake_minimum_required(VERSION 2.8.12)
#cmake_policy(SET CMP0015 NEW)
project(emhello)
set(CMAKE_VERBOSE_MAKEFILE on)
SET(CMAKE_EXECUTABLE_SUFFIX ".html")
 
add_compile_options("--source-map-base" "/")

include(ExternalProject)
ExternalProject_Add(box2d
  PREFIX 3rd_party
  # Using a git submodule instead of this is more cache friendly for gitlab CI
  #GIT_REPOSITORY    https://github.com/erincatto/box2d
  #GIT_TAG           v2.4.1
  #GIT_SHALLOW       ON
  CMAKE_ARGS        -DBOX2D_BUILD_TESTBED=Off -DBOX2D_BUILD_UNIT_TESTS=Off -DCMAKE_BUILD_TYPE=Release
  INSTALL_COMMAND   ""
  DOWNLOAD_COMMAND  "/bin/true"
  SOURCE_DIR        ${CMAKE_SOURCE_DIR}/external/box2d
  #BUILD_COMMAND     "emmake" "make"
  #CONFIGURE_COMMAND "emcmake" "cmake"
)
SET(BOX2D_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/box2d/include/")
SET(BOX2D_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/3rd_party/src/box2d-build/bin/")
add_library(b2d STATIC IMPORTED)
set_target_properties(b2d PROPERTIES IMPORTED_LOCATION ${BOX2D_LIB_DIR}/libbox2d.a)
add_dependencies(b2d box2d)

set(USE_SDL "-s ALLOW_MEMORY_GROWTH=1 -s ASYNCIFY=1 -s SDL2_IMAGE_FORMATS=[\"png\"] -s USE_SDL=2 -s USE_SDL_IMAGE=2 -s USE_SDL_MIXER=2 --preload-file ${CMAKE_SOURCE_DIR}/assets/preload@/assets/preload")
#set(EMDEBUG "--cpuprofiler --memoryprofiler  -s DEMANGLE_SUPPORT=1 -s ASSERTIONS=2 --emrun")
#set(EMDEBUG "-gsource-map --emrun -s DEMANGLE_SUPPORT=1  -s ASSERTIONS=2  -fsanitize=address,undefined")
set(EMDEBUG "--emrun")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${USE_SDL} -Wall -Wextra ${EMDEBUG} -Wno-unused-command-line-argument -Wno-unused-parameter")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${USE_SDL} -Wall -Wextra ${EMDEBUG} -std=c++17 -Wno-unused-command-line-argument -Wno-unused-parameter")

file(GLOB_RECURSE CORE_HDR ${CMAKE_SOURCE_DIR}/src/.h)
file(GLOB_RECURSE CORE_SRC ${CMAKE_SOURCE_DIR}/src/*.c ${CMAKE_SOURCE_DIR}/src/*.cc)
#add_definitions("-s DEMANGLE_SUPPORT=1 --preload-file ${CMAKE_SOURCE_DIR}/assets --bind")

include_directories(${BOX2D_INCLUDE_DIR})
add_executable(index ${CORE_SRC})
set_target_properties(index PROPERTIES LINK_FLAGS "-Wno-emcc --source-map-base / ${USE_SDL} ${EMDEBUG} --emrun")
target_link_libraries(index b2d)
