# Simple examples for using hdk-sdl.

include(FetchContent)
include(GNUInstallDirs)

if(DEFINED HDK_CMAKE_POLICY_DIR AND EXISTS "${HDK_CMAKE_POLICY_DIR}/HDKExampleAssetsPolicy.cmake")
	include("${HDK_CMAKE_POLICY_DIR}/HDKExampleAssetsPolicy.cmake")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/HDKExampleAssetsPolicy.cmake")
	include("${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/HDKExampleAssetsPolicy.cmake")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/HDKExampleAssetsPolicy.cmake")
	include("${CMAKE_CURRENT_SOURCE_DIR}/../cmake/HDKExampleAssetsPolicy.cmake")
else()
	message(FATAL_ERROR "Unable to locate HDKExampleAssetsPolicy.cmake")
endif()

if(NOT DEFINED HDK_INSTALL_EXAMPLES)
	set(HDK_INSTALL_EXAMPLES OFF)
endif()

option(HDK_INSTALL_EXAMPLES "Install hdk-sdl example binaries and assets" ${HDK_INSTALL_EXAMPLES})
option(HDK_EXAMPLES_FETCH_ASSETS "Fetch hdk-assets when no suitable package is found" ON)

if(NOT DEFINED HDK_ASSETS_MIN_VERSION)
	set(HDK_ASSETS_MIN_VERSION "0.0.1")
endif()

if(NOT DEFINED HDK_ASSETS_GIT_REPOSITORY)
	set(HDK_ASSETS_GIT_REPOSITORY "https://git.ufp.institute/ufp/hdk-assets.git")
endif()

if(NOT DEFINED HDK_INSTALL_ASSETSDIR)
	set(HDK_INSTALL_ASSETSDIR "assets")
endif()

hdk_resolve_example_assets(
	OUT_VAR HDK_EXAMPLES_ASSETS_SOURCE_DIR
	FETCH_OPTION ${HDK_EXAMPLES_FETCH_ASSETS}
	MIN_VERSION ${HDK_ASSETS_MIN_VERSION}
	GIT_REPOSITORY ${HDK_ASSETS_GIT_REPOSITORY}
	GIT_TAG v${HDK_ASSETS_MIN_VERSION}
	CONTEXT "hdk-sdl examples"
)
set(HDK_EXAMPLES_ASSETS_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../assets)

add_executable(HelloRenderer2D HelloRenderer2D.cpp)
target_link_libraries(HelloRenderer2D PRIVATE hdk-sdl)

# Stage shared example assets beside the example executables in the build tree.
add_custom_command(TARGET HelloRenderer2D POST_BUILD
	COMMAND ${CMAKE_COMMAND} -E rm -rf ${HDK_EXAMPLES_ASSETS_BUILD_DIR}
	COMMAND ${CMAKE_COMMAND} -E copy_directory
		${HDK_EXAMPLES_ASSETS_SOURCE_DIR}
		${HDK_EXAMPLES_ASSETS_BUILD_DIR}
	COMMENT "Staging hdk-sdl example assets"
	VERBATIM
)

if(HDK_INSTALL_EXAMPLES)
	install(TARGETS HelloRenderer2D
		RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
		COMPONENT hdk-sdl_examples
	)

	install(DIRECTORY ${HDK_EXAMPLES_ASSETS_SOURCE_DIR}/
		DESTINATION ${HDK_INSTALL_ASSETSDIR}
		COMPONENT hdk-sdl_examples
	)
endif()