cmake_minimum_required(VERSION 3.20) project(gamejam LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() # --------------------------------------------------------------------------- # Dependencies # # Native build: raylib + RmlUi come from nixpkgs / the `rmlui` derivation, # found on the default system paths set up by the dev shell. # # Wasm build: raylib + RmlUi come from the `raylibWasm` / `rmluiWasm` # derivations, located via -DCMAKE_PREFIX_PATH set by devShells.wasm. # --------------------------------------------------------------------------- find_package(raylib REQUIRED) find_package(RmlUi REQUIRED) add_executable(gamejam src/main.cpp src/Application.cpp src/backend/RaylibSystemInterface.cpp src/backend/RaylibRenderInterface.cpp src/backend/RaylibInput.cpp ) target_link_libraries(gamejam PRIVATE raylib RmlUi::Core RmlUi::Debugger ) target_include_directories(gamejam PRIVATE ${CMAKE_SOURCE_DIR}/src) set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets) if(EMSCRIPTEN) # ----------------------------------------------------------------------- # Wasm-specific settings # ----------------------------------------------------------------------- set(CMAKE_EXECUTABLE_SUFFIX ".html") target_link_options(gamejam PRIVATE "-sUSE_GLFW=3" "-sASYNCIFY" "-sALLOW_MEMORY_GROWTH=1" "-sFORCE_FILESYSTEM=1" "--preload-file=${ASSET_DIR}@assets" # "--shell-file=${CMAKE_SOURCE_DIR}/shell.html" ) else() add_custom_command(TARGET gamejam POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASSET_DIR} $/assets COMMENT "Copying assets to build output" ) endif() install(TARGETS gamejam RUNTIME DESTINATION bin) if(NOT EMSCRIPTEN) install(DIRECTORY ${ASSET_DIR} DESTINATION bin) endif()