cmake_minimum_required(VERSION 3.12.4)

project(HelloXR)
set(CMAKE_CXX_STANDARD 17)

# If running on cmake > 3.19, set cmp0111 to old to avoid spamming
# warnings/error to console when generating a project.
if (POLICY CMP0111)
  cmake_policy(SET CMP0111 OLD)
endif()

if(NOT CMAKE_CL_64)
    message(FATAL_ERROR "Expecting 64bit build")
endif()

set(_target "HelloXR")
set(_arch "x86_64")

set(_src_dir "${CMAKE_CURRENT_SOURCE_DIR}/helloxr")
file(
    GLOB_RECURSE _source_list
    LIST_DIRECTORIES false
    "${_src_dir}/*.[ch]*"
)

add_executable(${_target} ${_source_list})
target_precompile_headers(${_target} PRIVATE ${_src_dir}/stdafx.h)
target_include_directories(${_target} PUBLIC ${_src_dir})

# Add library: OpenXR
add_library(OpenXR INTERFACE)
target_include_directories(OpenXR INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/OpenXR/include)
add_library(OpenXR::OpenXR ALIAS OpenXR)

# Add library: OpenXRLoader
add_library(OpenXRLoader STATIC  IMPORTED GLOBAL)
set_target_properties(OpenXRLoader PROPERTIES
    IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/vendor/OpenXRLoader/lib/${_arch}/Debug/openxr_loaderd.lib"
    IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/vendor/OpenXRLoader/lib/${_arch}/Release/openxr_loader.lib"
    IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/vendor/OpenXRLoader/lib/${_arch}/RelWithDebInfo/openxr_loader.lib"
    INTERFACE_COMPILE_DEFINITIONS "OpenXRLoader_STATIC"
)
add_library(OpenXRLoader::OpenXRLoader ALIAS OpenXRLoader)

# Add library: GLEW
add_library(GLEW STATIC  IMPORTED GLOBAL)
set_target_properties(GLEW PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/vendor/Glew/include"
    IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/vendor/Glew/lib/${_arch}/Debug/libglew32d.lib"
    IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/vendor/Glew/lib/${_arch}/Release/libglew32.lib"
    IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/vendor/Glew/lib/${_arch}/RelWithDebInfo/libglew32.lib"
    INTERFACE_COMPILE_DEFINITIONS "GLEW_STATIC"
)
add_library(Glew::Glew ALIAS GLEW)

# Add library: GLM
add_library(GLM INTERFACE)
target_include_directories(GLM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/GLM/include)
add_library(GLM::GLM ALIAS GLM)

target_link_libraries(${_target} OpenXR OpenXRLoader d3d12 GLEW GLM "pathcch.lib" "shlwapi.lib" windowscodecs)
