# with the line below, the project won't build 
# when tinyobjloader is included here (and in the hpp/cpp files)
# though it fixes the two warnings
# cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
project(RoFIbots)

if(NOT CMAKE_BUILD_TYPE)
    message("Build type not set => setting 'Release' as default.")
    set(CMAKE_BUILD_TYPE "Release"  CACHE STRING "Release" FORCE)
endif()
message("Build type = " ${CMAKE_BUILD_TYPE})
if(CMAKE_BUILD_TYPE MATCHES "Debug")
    add_definitions(-DDEBUG)
elseif(CMAKE_BUILD_TYPE MATCHES "Release")
    add_definitions(-DRELEASE)
elseif(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
    add_definitions(-DRELWITHDEBINFO)
else()
    message(SEND_ERROR "Unknown build type. Use either Debug, Release, or RelWithDebInfo. E.g.: -DCMAKE_BUILD_TYPE=Release")
endif()

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(SDL2 CONFIG REQUIRED)
find_package(OpenGL REQUIRED)
find_package(glad CONFIG REQUIRED)
find_package(Boost REQUIRED COMPONENTS json)
find_package(GTest CONFIG REQUIRED)
find_package(Threads)
find_package(glm CONFIG REQUIRED)
find_package(imgui CONFIG REQUIRED)

set(ROFIBOTS_3RD_PARTY_LIBRARIES_TO_LINK_WITH
    $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main>
    $<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>
    ${OPENGL_LIBRARIES}
    glad::glad
    glm::glm
    imgui::imgui
    ${Boost_LIBRARIES}
    )

set(ROFIBOTS_TESTING_LIBRARY_TO_LINK_WITH
    GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main
    )

set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/dist" CACHE STRING "Install path" FORCE)
set(CMAKE_INSTALL_RPATH "./")
set(CMAKE_BINARY_DIR "${PROJECT_SOURCE_DIR}/build" CACHE STRING "Build directory" FORCE)
set(ROFIBOTS_3RD_INCLUDE_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
include_directories(${ROFIBOTS_3RD_INCLUDE_DIR})
message("3rd includes directory = ${ROFIBOTS_3RD_INCLUDE_DIR}")
message("Sources directory = ${PROJECT_SOURCE_DIR}/src")
message("Install directory = ${CMAKE_INSTALL_PREFIX}")
message("Using math library = ${ROFIBOTS_MATH_LIBRARY}")

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/code")

add_subdirectory(./src)

file(MAKE_DIRECTORY ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY ./data DESTINATION .)

message("Generating build files ...")
