cmake_minimum_required(VERSION 3.10)
project(objloader_assignment CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(GLM_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external"
    CACHE PATH "Directory containing the glm/ header folder")

if(NOT EXISTS "${GLM_INCLUDE_DIR}/glm/glm.hpp")
    message(FATAL_ERROR
        "Could not find glm/glm.hpp under GLM_INCLUDE_DIR (${GLM_INCLUDE_DIR}).\n"
        "glm is header-only; re-run cmake with -DGLM_INCLUDE_DIR=/path/to/glm")
endif()

set(LOADER_SOURCE src/objloader.cpp)
message(STATUS "objloader: building the student scaffold (src/objloader.cpp)")

add_library(objloader STATIC
    ${LOADER_SOURCE}
    src/diagnostics.cpp
    include/objloader.hpp
)
target_include_directories(objloader PUBLIC
    include
    ${GLM_INCLUDE_DIR}
)

if(MSVC)
    target_compile_options(objloader PRIVATE /W4)
else()
    target_compile_options(objloader PRIVATE -Wall -Wextra)
endif()

add_executable(objloader_tests tests/test_objloader.cpp)
target_link_libraries(objloader_tests PRIVATE objloader)
target_compile_definitions(objloader_tests PRIVATE
    MODELS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/models")

enable_testing()
add_test(NAME objloader COMMAND objloader_tests)
