68 lines
No EOL
1.9 KiB
CMake
68 lines
No EOL
1.9 KiB
CMake
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() |