#
#Davinci (a software render)
#

cmake_minimum_required (VERSION 3.15)

project(davinci)

########
#system
########
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
	set(DV_SYS_LINUX TRUE)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
	set(DV_SYS_WINDOWS TRUE)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
	set(DV_SYS_MACOS TRUE)
else()
    message(FATAL_ERROR "Unknown target system \"${CMAKE_SYSTEM_NAME}\".")
endif()

########
#set compile flag
########
set(CMAKE_CXX_STANDARD 17)

########
#set davinci source files path
########
set(DV_CORE_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/source/core/include)
set(DV_UTILS_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/source/utils/include)

########
#check include file
########
include(CheckIncludeFile)
check_include_file(unistd.h         DV_HAVE_UNISTD_H)
check_include_file(inttypes.h       DV_HAVE_INTTYPES_H)
check_include_file(limits.h         DV_HAVE_LIMITS_H)

########
#make configure files
########
set(DV_AUTO_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR}/source)
set(DV_AUTO_CONFIG_FILE ${DV_AUTO_INCLUDE_PATH}/dv_config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/source/dv_config.h.in ${DV_AUTO_CONFIG_FILE})

########
#Thirdparty libraries
########

# rapidjson
set(RapidJSON_DIR $ENV{LIBRARIES_SDK_ROOT}/rapidjson/cmake)
find_package(RapidJSON REQUIRED)

#zlib
set(ZLIB_USE_STATIC_LIBS True)
set(ZLIB_ROOT $ENV{LIBRARIES_SDK_ROOT}/zlib)
find_package(ZLIB REQUIRED)

#libpng
set(PNG_DIR $ENV{LIBRARIES_SDK_ROOT}/libpng/lib/cmake/PNG)
find_package(PNG CONFIG REQUIRED)

#glm
set(glm_DIR $ENV{LIBRARIES_SDK_ROOT}/glm/share/glm)
find_package(glm CONFIG REQUIRED)

#tinygltf
set(TinyGLTF_DIR $ENV{LIBRARIES_SDK_ROOT}/tinygltf/lib/cmake/tinygltf)
find_package(TinyGLTF CONFIG REQUIRED)

set(ImGui_DIR "$ENV{LIBRARIES_SDK_ROOT}/imgui/lib/cmake/imgui")
find_package(ImGui REQUIRED)

#set(glfw3_DIR $ENV{LIBRARIES_SDK_ROOT}/glfw/lib/cmake/glfw3)
#find_package(glfw3 CONFIG REQUIRED)

set(SDL3_DIR "$ENV{LIBRARIES_SDK_ROOT}/SDL/cmake")
find_package(SDL3 CONFIG REQUIRED)

find_package(OpenGL REQUIRED)

########
#sub dictionary
########
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
add_subdirectory(source)

########
#test dictionary
########
add_subdirectory(test)
