cmake_minimum_required(VERSION 3.10) project(akgl LANGUAGES C) include(CTest) find_package(PkgConfig REQUIRED) find_package(SDL3 REQUIRED) find_package(SDL3_image REQUIRED) find_package(SDL3_mixer REQUIRED) find_package(SDL3_ttf REQUIRED) find_package(akerror REQUIRED) find_package(akstdlib REQUIRED) find_package(jansson REQUIRED) find_package(box2d REQUIRED) # Check for SDL3 using pkg-config #pkg_check_modules(SDL3 REQUIRED sdl3) #pkg_check_modules(SDL3_image REQUIRED sdl3-image) #pkg_check_modules(SDL3_mixer REQUIRED sdl3-mixer) #pkg_check_modules(jansson REQUIRED jansson) #pkg_check_modules(akerror REQUIRED akerror) set(GAMECONTROLLERDB_H "include/akgl/SDL_GameControllerDB.h") set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix "\${prefix}") set(libdir "\${exec_prefix}/lib") set(includedir "\${prefix}/include") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/akgl.pc.in ${CMAKE_CURRENT_BINARY_DIR}/akgl.pc @ONLY) add_custom_command( OUTPUT ${GAMECONTROLLERDB_H} COMMAND ../mkcontrollermappings.sh COMMENT "Generating controller mappings ..." ) # Add include directories include_directories(${SDL3_INCLUDE_DIRS}) add_library(akgl SHARED deps/semver/semver.c src/actor.c src/actor_state_string_names.c src/text.c src/assets.c src/character.c src/draw.c src/game.c src/controller.c src/heap.c src/json_helpers.c src/registry.c src/sprite.c src/staticstring.c src/tilemap.c src/util.c ${GAMECONTROLLERDB_H} ) add_executable(charviewer util/charviewer.c) add_executable(test_actor tests/actor.c) add_executable(test_bitmasks tests/bitmasks.c) add_executable(test_character tests/character.c) add_executable(test_registry tests/registry.c) add_executable(test_sprite tests/sprite.c) add_executable(test_staticstring tests/staticstring.c) add_executable(test_tilemap tests/tilemap.c) add_executable(test_util tests/util.c) add_executable(test_semver_unit deps/semver/semver_unit.c) add_test(NAME actor COMMAND test_actor) add_test(NAME bitmasks COMMAND test_bitmasks) add_test(NAME character COMMAND test_character) add_test(NAME registry COMMAND test_registry) add_test(NAME sprite COMMAND test_sprite) add_test(NAME staticstring COMMAND test_staticstring) add_test(NAME tilemap COMMAND test_tilemap) add_test(NAME util COMMAND test_util) add_test(NAME semver_unit COMMAND test_semver_unit) # Specify include directories for the library's headers (if applicable) target_include_directories(akgl PUBLIC include/ deps/semver/ ) target_link_libraries(akgl PUBLIC SDL3::SDL3 SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer SDL3_ttf::SDL3_ttf akstdlib::akstdlib ) target_link_libraries(test_actor PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_bitmasks PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_character PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_registry PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_sprite PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_staticstring PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_tilemap PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(test_util PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) target_link_libraries(charviewer PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) set(main_lib_dest "lib/akgl-${MY_LIBRARY_VERSION}") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/akgl.pc DESTINATION "lib/pkgconfig/") install(TARGETS akgl DESTINATION "lib/") install(FILES "deps/semver/semver.h" DESTINATION "include/") install(FILES "include/akgl/actor.h" DESTINATION "include/akgl/") install(FILES "include/akgl/types.h" DESTINATION "include/akgl/") install(FILES "include/akgl/text.h" DESTINATION "include/akgl/") install(FILES "include/akgl/assets.h" DESTINATION "include/akgl/") install(FILES "include/akgl/character.h" DESTINATION "include/akgl/") install(FILES "include/akgl/error.h" DESTINATION "include/akgl/") install(FILES "include/akgl/draw.h" DESTINATION "include/akgl/") install(FILES "include/akgl/game.h" DESTINATION "include/akgl/") install(FILES "include/akgl/controller.h" DESTINATION "include/akgl/") install(FILES "include/akgl/heap.h" DESTINATION "include/akgl/") install(FILES "include/akgl/iterator.h" DESTINATION "include/akgl/") install(FILES "include/akgl/json_helpers.h" DESTINATION "include/akgl/") install(FILES "include/akgl/registry.h" DESTINATION "include/akgl/") install(FILES "include/akgl/sprite.h" DESTINATION "include/akgl/") install(FILES "include/akgl/staticstring.h" DESTINATION "include/akgl/") install(FILES "include/akgl/tilemap.h" DESTINATION "include/akgl/") install(FILES "include/akgl/util.h" DESTINATION "include/akgl/") install(FILES ${GAMECONTROLLERDB_H} DESTINATION "include/akgl/")