cmake_minimum_required(VERSION 3.15) project(ChaosDrop VERSION 1.0 LANGUAGES CXX C ASM) list(APPEND CMAKE_MODULE_PATH "$ENV{AZUR_PATH_${AZUR_PLATFORM}}/lib/cmake") find_package(Azur 0.1 REQUIRED) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(SOURCES src/main.cc src/game.cc src/raytracing.cc) set(ASSETS) if(AZUR_PLATFORM STREQUAL gint) list(APPEND SOURCES src/backend/gint/shader_vfx.cc src/backend/gint/shader.cc) list(APPEND ASSETS assets/font.png assets/cursor0.png assets/cursor.png assets/title.png assets/1_1.txt assets/1_2.txt assets/1_3.txt assets/2_1.txt assets/2_2.txt assets/2_3.txt assets/3_1.txt assets/3_2.txt assets/3_3.txt) endif() if(AZUR_PLATFORM STREQUAL linux) list(APPEND SOURCES src/backend/linux/programs.cc) endif() # No emscripten backend for now if(AZUR_PLATFORM STREQUAL emscripten) # configure_file(backend/emscripten/index.html index.html) # list(APPEND SOURCES # src/backend/emscripten/render.cc) message(FATAL_ERROR "No emscripten build yet") endif() add_executable(chaos-drop ${SOURCES} ${ASSETS}) target_compile_options(chaos-drop PRIVATE -Wall -Wextra -O3 -fmodulo-sched -fmodulo-sched-allow-regmoves) if(AZUR_PLATFORM STREQUAL gint) find_package(Gint 2.10 REQUIRED) find_package(LibProf 2.4 REQUIRED) include(Fxconv) fxconv_declare_converters(converters.py) fxconv_declare_assets(${ASSETS} WITH_METADATA) target_link_libraries(chaos-drop Azur::Azur LibProf::LibProf Gint::Gint -lm) target_link_options(chaos-drop PRIVATE -Wl,-Map=map -Wl,--print-memory-usage) include(GenerateG3A) generate_g3a(TARGET chaos-drop NAME "Chaos Drop!" OUTPUT "ChaosDrop.g3a" ICONS assets/icon-uns.png assets/icon-sel.png) endif() if(AZUR_PLATFORM STREQUAL linux) target_link_libraries(chaos-drop Azur::Azur Azur::ImGui) endif()