cmake_minimum_required(VERSION 3.0)
project(DarkRP2D)
set (CMAKE_CXX_STANDARD 11)
include(ExternalProject)

if(NOT CMAKE_BUILD_TYPE) 
    set(CMAKE_BUILD_TYPE RELEASE)
	add_definitions(-DNDEBUG)
endif(NOT CMAKE_BUILD_TYPE)

MESSAGE( STATUS "PROJECT_SOURCE_DIR: " ${PROJECT_SOURCE_DIR} )
MESSAGE( STATUS "DarkRP2D_SOURCE_DIR: " ${DarkRP2D_SOURCE_DIR} )

set(DarkRP2D_EXTERNAL_DIR ${DarkRP2D_SOURCE_DIR}/external)
set(SDL2_DIR ${DarkRP2D_EXTERNAL_DIR}/SDL2-2.0.8)
set(GLEW_DIR ${DarkRP2D_EXTERNAL_DIR}/glew-2.1.0)
set(SDL2_Image_DIR ${DarkRP2D_EXTERNAL_DIR}/SDL2_image-2.0.3)
set(FREETYPE_DIR ${DarkRP2D_EXTERNAL_DIR}/freetype-2.9)
set(GLM_DIR ${DarkRP2D_EXTERNAL_DIR}/glm-0.9.9-a2)
set(BOX2D_DIR ${DarkRP2D_EXTERNAL_DIR}/Box2D-2.3.1)
set(IMGUI_DIR ${DarkRP2D_EXTERNAL_DIR}/imgui-1.60)
set(ENTITYX_DIR ${DarkRP2D_EXTERNAL_DIR}/entityx-1.1.2)

#Libs
find_package(SDL2 REQUIRED CONFIG)
include_directories(${SDL2_INCLUDE_DIRS})

find_package(SDL2_Image REQUIRED CONFIG)
include_directories(${SDL2_IMAGE_INCLUDE_DIRS})

find_package(GLEW REQUIRED CONFIG)
include_directories(${GLEW_INCLUDE_DIRS})

find_package(FREETYPE REQUIRED CONFIG)
include_directories(${FREETYPE_INCLUDE_DIRS})

find_package(GLM REQUIRED CONFIG)
include_directories(${GLM_INCLUDE_DIRS})

find_package(OPENGL REQUIRED)

find_package(BOX2D REQUIRED CONFIG)
include_directories(${BOX2D_INCLUDE_DIRS})

find_package(ENTITYX REQUIRED CONFIG)
include_directories(${ENTITYX_INCLUDE_DIRS})

MESSAGE( STATUS "OpenGL Lib: " ${OPENGL_gl_LIBRARY} )
MESSAGE( STATUS "SDL2 Lib: " ${SDL2_LIBRARIES}  )
MESSAGE( STATUS "SDL2_IMG Lib: " ${SDL2_IMAGE_LIBRARIES}  )
MESSAGE( STATUS "Glew Lib: " ${GLEW_LIBRARIES}  )
MESSAGE( STATUS "Freetype lib: " ${FREETYPE_LIBRARIES}  )
MESSAGE( STATUS "Box2D lib: " ${BOX2D_LIBRARIES}  )

file(GLOB_RECURSE DarkRP2D_SOURCE_FILES ${DarkRP2D_SOURCE_DIR}/src/*.cpp)

if (${CMAKE_BUILD_TYPE} MATCHES "DEBUG")	
	file(GLOB IMGUI_SOURCE_FILES ${IMGUI_DIR}/*.cpp)
	include_directories(${IMGUI_DIR}/include)
	set(DarkRP2D_SOURCE_FILES ${DarkRP2D_SOURCE_FILES} ${IMGUI_SOURCE_FILES})
endif (${CMAKE_BUILD_TYPE} MATCHES "DEBUG")

add_executable(DarkRP2D ${DarkRP2D_SOURCE_FILES})

target_link_libraries(DarkRP2D	${SDL2_LIBRARIES} 
					${SDL2_IMAGE_LIBRARIES} 
					${GLEW_LIBRARIES} 
					${FREETYPE_LIBRARIES}
					${OPENGL_gl_LIBRARY}
					${BOX2D_LIBRARIES}
					${ENTITYX_LIBRARIES})

add_custom_target(CopyBinaries
	COMMAND ${CMAKE_COMMAND} -E copy ${SDL2_DLL} ${CMAKE_BINARY_DIR}
	COMMAND ${CMAKE_COMMAND} -E copy ${SDL2_IMAGE_DLL} ${CMAKE_BINARY_DIR}
	COMMAND ${CMAKE_COMMAND} -E copy ${FREETYPE_DLL} ${CMAKE_BINARY_DIR}
	COMMAND ${CMAKE_COMMAND} -E copy ${GLEW_DLL} ${CMAKE_BINARY_DIR}
	COMMAND ${CMAKE_COMMAND} -E copy ${BOX2D_DLL} ${CMAKE_BINARY_DIR}
	COMMAND ${CMAKE_COMMAND} -E copy ${ENTITYX_DLL} ${CMAKE_BINARY_DIR}
)

add_dependencies(DarkRP2D CopyBinaries)