fishbowl/engine/CMakeLists.txt

68 lines
1.9 KiB
Text
Raw Permalink Normal View History

2026-05-24 18:48:52 +09:00
cmake_minimum_required(VERSION 3.11)
project(fishbone)
2026-05-28 16:48:24 +02:00
option(FISHBONE_BUILD_TESTS "Compile tests for fishbone" OFF)
2026-05-25 04:53:45 +09:00
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake")
message(STATUS "Downloading CPM.cmake...")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
file(DOWNLOAD "https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/CPM.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake"
STATUS status
LOG log_content
)
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake")
message(FATAL_ERROR "Failed to download CPM.cmake: ${status}\n${log_content}")
endif()
endif()
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/util.cmake")
2026-05-24 18:48:52 +09:00
file(GLOB_RECURSE SRCS src/**.cc src/**.c)
add_library(fishbone SHARED ${SRCS})
target_include_directories(fishbone PUBLIC include)
2026-05-27 16:03:38 +09:00
target_compile_definitions(fishbone PRIVATE _FISHBONE)
2026-05-24 18:48:52 +09:00
find_package(PkgConfig)
macro(pkg_add)
2026-05-27 16:03:38 +09:00
pkg_check_modules(${ARGV1} ${ARGV2} ${ARGV1})
target_include_directories(${ARGV0} PRIVATE ${${ARGV1}_INCLUDE_DIRS})
target_link_directories(${ARGV0} PRIVATE ${${ARGV1}_LIBRARY_DIRS})
target_link_libraries(${ARGV0} PRIVATE ${${ARGV1}_LIBRARIES})
2026-05-24 18:48:52 +09:00
endmacro()
2026-05-27 16:03:38 +09:00
pkg_add(fishbone sdl2 REQUIRED)
set(FISHBONE_SOUND_USE_SDL2 ON)
set(FISHBONE_WINDOW_USE_SDL2 ON)
set(FISHBONE_THREAD_USE_SDL2 ON)
configure_file(config.h.in fishbone/config.h)
target_include_directories(fishbone PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
2026-05-25 04:53:45 +09:00
2026-05-25 07:32:14 +09:00
# Physics
2026-05-25 04:53:45 +09:00
fb_add_dep(fishbone ode)
2026-05-25 07:32:14 +09:00
# Image
fb_add_dep(fishbone stb_image)
# Sound
fb_add_dep(fishbone stb_vorbis)
fb_add_dep(fishbone dr_libs)
2026-05-27 23:51:37 +09:00
fb_add_dep(fishbone libxmp)
2026-05-25 07:32:14 +09:00
# Compression
2026-05-25 07:25:59 +09:00
fb_add_dep(fishbone lz4)
2026-05-25 07:58:06 +09:00
# Networking
fb_add_dep(fishbone enet)
2026-05-28 16:48:24 +02:00
# Testing
if(FISHBONE_BUILD_TESTS)
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deps/catch2.cmake")
list(APPEND CMAKE_MODULE_PATH ${Catch2_SOURCE_DIR}/extras)
enable_testing()
add_subdirectory(tests)
endif()