cmake_minimum_required(VERSION 3.9) project(TeaWeb-Native) set (CMAKE_CXX_STANDARD 17) function(import_opus) # Native SIMD isn't supported yet by most browsers (only experimental) # But since opus already detects if emscripten is able to handle SIMD we have no need to disable this explicitly # Disable the math.h warning spam: # #warning "Don't have the functions lrint() and lrintf ()." # #warning "Replacing these functions with a standard C cast." set(CMAKE_C_FLAGS "-Wno-#warnings") set(OPUS_STACK_PROTECTOR OFF CACHE BOOL "" FORCE) add_subdirectory(libraries/opus/) endfunction() import_opus() set(CMAKE_CXX_FLAGS "-O3 --llvm-lto 1 --memory-init-file 0 -s WASM=1 -s ASSERTIONS=1") # -s ALLOW_MEMORY_GROWTH=1 -O3 set(CMAKE_EXE_LINKER_FLAGS "-s MODULARIZE=1 -s EXPORTED_FUNCTIONS='[\"_malloc\", \"_free\"]' -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -s ENVIRONMENT='worker' --pre-js ${CMAKE_SOURCE_DIR}/init.js") # set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/generated/") add_executable(TeaWeb-Worker-Codec-Opus src/opus.cpp) target_link_libraries(TeaWeb-Worker-Codec-Opus opus)