cmake_minimum_required(VERSION 3.11)
project(fishbone)

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)

find_package(PkgConfig)

macro(pkg_add)
	pkg_check_modules(${ARGV0} ${ARGV1} ${ARGV0})
	target_include_directories(fishbone PRIVATE ${${ARGV0}_INCLUDE_DIRS})
	target_link_directories(fishbone PRIVATE ${${ARGV0}_LIBRARY_DIRS})
	target_link_libraries(fishbone PRIVATE ${${ARGV0}_LIBRARIES})
endmacro()

pkg_add(sdl2 REQUIRED)

# 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 jar)

# Compression
fb_add_dep(fishbone lz4)

# Networking
fb_add_dep(fishbone enet)
