# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the # toolchain file and module path of the fxSDK cmake_minimum_required(VERSION 3.18) project(MOMENTO C) include(GenerateG3A) include(Fxconv) find_package(Gint 2.5.3 REQUIRED) find_package(LibImg 2.4.0 REQUIRED) include_directories(include generated/include) set(SOURCES src/main.c src/util.c src/level/load.c src/level/update.c src/level/draw.c src/level/get_tile.c src/level/is_water.c src/player/init.c src/player/draw.c src/player/update.c src/player/collide.c src/player/collide_water.c src/trail/init.c src/trail/update.c src/trail/draw.c src/input/init.c src/input/update.c src/particles/init.c src/particles/update.c src/particles/draw.c src/particles/create.c src/transition/init.c src/transition/update.c src/transition/draw.c src/transition/fade.c src/titlescreen/init.c src/titlescreen/update.c src/titlescreen/draw.c src/levelselection/init.c src/levelselection/update.c src/levelselection/draw.c src/mainmenu/init.c src/mainmenu/update.c src/mainmenu/draw.c src/pause/init.c src/pause/update.c src/pause/draw.c generated/filepaths.c ) set(LEVELS assets/levels/00/0pillars.kble assets/levels/00/1breach.kble assets/levels/00/2human.kble assets/levels/00/3amas.kble assets/levels/01/0qujna.kble assets/levels/01/1greed.kble assets/levels/01/2dos.kble assets/levels/01/3secrets.kble assets/levels/02/0martha.kble assets/levels/02/1eden.kble assets/levels/02/2midnight.kble assets/levels/02/3limited.kble assets/levels/03/0waterlogged.kble assets/levels/03/1empty.kble assets/levels/03/2jack.kble assets/levels/03/3inspiration.kble ) add_custom_target(filepaths WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${LEVELS} make_filepaths.sh COMMENT "filepaths.c & pack_count.h target") add_custom_command( OUTPUT "${CMAKE_CURRENT_LIST_DIR}/generated/filepaths.c" "${CMAKE_CURRENT_LIST_DIR}/generated/include/pack_count.h" COMMENT "Generate genereated/filepaths.c & " "generated/include/pack_count.h" COMMAND mkdir -p generated && ./make_filepaths.sh > generated/filepaths.c WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} DEPENDS ${LEVELS} make_filepaths.sh) set(ASSETS assets/graphics/tileset.png assets/graphics/water.png assets/graphics/trail.png assets/graphics/coin-particle.png assets/graphics/switch-particle.png assets/graphics/switch-activated-particle.png assets/graphics/exit-active-particle.png assets/graphics/exit-unlock-particle.png assets/graphics/bounce-particle.png assets/graphics/font.png assets/graphics/font_big.png assets/graphics/player/blink.png assets/graphics/player/idle.png assets/graphics/player/jump.png assets/graphics/player/walk.png ${LEVELS} ) set(FLAGS -Wall -Wextra -Wshadow -Wswitch-default -Wswitch-enum -Wunreachable-code -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Werror-implicit-function-declaration -std=c11 -O3) fxconv_declare_assets(${ASSETS} WITH_METADATA) add_executable(${PROJECT_NAME} ${SOURCES} ${ASSETS}) add_dependencies(${PROJECT_NAME} filepaths) target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS}) target_link_libraries(${PROJECT_NAME} Gint::Gint) target_link_libraries(${PROJECT_NAME} LibImg::LibImg) target_link_options(${PROJECT_NAME} PRIVATE -Wl,-Map=map) generate_g3a(TARGET ${PROJECT_NAME} OUTPUT "${PROJECT_NAME}.g3a" NAME "${PROJECT_NAME}" ICONS assets/graphics/icon-uns.png assets/graphics/icon-sel.png)