cmake_minimum_required(VERSION 3.10)
project(elias)

set(CMAKE_C_STANDARD 99)

set(EMSCRIPTEN_FLAGS
	"-s WASM=1"
	"-s EXPORTED_RUNTIME_METHODS=['ccall','cwrap']"
	"-s ALLOW_MEMORY_GROWTH=1"
	"-s INITIAL_MEMORY=64MB"
	"-s MAXIMUM_MEMORY=512MB"
	"-s NO_EXIT_RUNTIME=1"
	"-s WASM_BIGINT=1"
	"--pre-js" "${CMAKE_SOURCE_DIR}/obs/fp.js"
	"-O3"
	"-flto"
	"-lwebsocket.js"
)

set(ELIAS_COMPILE_FLAGS
	"-std=gnu99"
	"-Wno-incompatible-pointer-types"
	"-Wno-int-conversion"
	"-Wno-ignored-attributes"
	"-Wno-implicit-function-declaration"
	"-Wno-non-literal-null-conversion"
)

add_executable(elias
	obs/main.c
	src/fp.c
)

target_compile_options(elias PRIVATE ${ELIAS_COMPILE_FLAGS})
target_link_options(elias PRIVATE ${EMSCRIPTEN_FLAGS})
set_target_properties(elias PROPERTIES 
	OUTPUT_NAME "elias"
	SUFFIX ".js"
	RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
)