cmake_minimum_required(VERSION 3.11) project(fishbone) option(FISHBONE_BUILD_TESTS "Compile tests for fishbone" OFF) 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") file(GLOB_RECURSE SRCS src/**.cc src/**.c) add_library(fishbone SHARED ${SRCS}) target_include_directories(fishbone PUBLIC include) target_compile_definitions(fishbone PRIVATE _FISHBONE) find_package(PkgConfig) macro(pkg_add) 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}) endmacro() 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}) # Physics fb_add_dep(fishbone ode) # Image fb_add_dep(fishbone stb_image) # Sound fb_add_dep(fishbone stb_vorbis) fb_add_dep(fishbone dr_libs) fb_add_dep(fishbone libxmp) # Compression fb_add_dep(fishbone lz4) # Networking fb_add_dep(fishbone enet) # 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()