cmake_minimum_required(VERSION 3.28) project(yeti3dpro LANGUAGES C) find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared) # base engine library add_library(y3d STATIC) target_sources(y3d PRIVATE ${PROJECT_SOURCE_DIR}/src/y3d/y3d_animation.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_ansic.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_cell.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_draw.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_engine.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_entity.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_file.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_fixed.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_fruity.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_image.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_keyboard.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_map.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_matrix.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_pixel.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_record.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_sound.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_spanner.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_surface.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_vertex.c ${PROJECT_SOURCE_DIR}/src/y3d/y3d_yeti.c ) target_include_directories(y3d PUBLIC ${PROJECT_SOURCE_DIR}/src/y3d/) target_compile_definitions(y3d PUBLIC __SDL__) # demo game library add_library(game STATIC) target_sources(game PRIVATE ${PROJECT_SOURCE_DIR}/src/game/data.c ${PROJECT_SOURCE_DIR}/src/game/entities.c ${PROJECT_SOURCE_DIR}/src/game/game.c ${PROJECT_SOURCE_DIR}/src/game/maps.c ${PROJECT_SOURCE_DIR}/src/game/models.c ${PROJECT_SOURCE_DIR}/src/game/screens.c ${PROJECT_SOURCE_DIR}/src/game/sprites.c ) target_include_directories(game PUBLIC ${PROJECT_SOURCE_DIR}/src/game/) target_link_libraries(game PRIVATE y3d) # sdl3 platform add_executable(game-sdl3) target_sources(game-sdl3 PRIVATE ${PROJECT_SOURCE_DIR}/platform/sdl3/main.c ) target_link_libraries(game-sdl3 PRIVATE SDL3::SDL3 game y3d) find_library(MATH m) if(MATH) target_link_libraries(game-sdl3 PUBLIC ${MATH}) endif()