include(FetchContent)

SET(XTL_GIT_TAG  0.7.7)
SET(XSIMD_GIT_TAG 13.2.0)
SET(XTENSOR_GIT_TAG 0.25.0)

IF ( NOT TARGET xtl )
	MESSAGE(STATUS "Fetching xtl ...")
	FetchContent_Declare(
		xtl
		GIT_REPOSITORY https://github.com/xtensor-stack/xtl.git
		GIT_TAG        ${XTL_GIT_TAG}
		GIT_SHALLOW TRUE
		GIT_PROGRESS TRUE
		UPDATE_DISCONNECTED 1
		FIND_PACKAGE_ARGS NAMES xtl
	)
	FETCHCONTENT_MAKEAVAILABLE(xtl)
ENDIF()

IF ( NOT TARGET xsimd )
	MESSAGE(STATUS "Fetching simd ...")
	FetchContent_Declare(
		xsimd
		GIT_REPOSITORY https://github.com/xtensor-stack/xsimd.git
		GIT_TAG        ${XSIMD_GIT_TAG}
		GIT_SHALLOW TRUE
		GIT_PROGRESS TRUE
		UPDATE_DISCONNECTED 1
		FIND_PACKAGE_ARGS NAMES xsimd
	)
	FETCHCONTENT_MAKEAVAILABLE(xsimd)
ENDIF ()


IF ( NOT TARGET xtensor )
	MESSAGE(STATUS "Fetching xtensor ...")
	IF (WIN32)
	FetchContent_Declare(
		xtensor
		GIT_REPOSITORY https://github.com/xtensor-stack/xtensor.git
		GIT_TAG        ${XTENSOR_GIT_TAG}
		GIT_SHALLOW TRUE
		GIT_PROGRESS TRUE
		CMAKE_ARGS CMAKE_FIND_LIBRARY_SUFFIXES=${CMAKE_FIND_LIBRARY_SUFFIXES}
		UPDATE_DISCONNECTED 1
		FIND_PACKAGE_ARGS NAMES xtensor
	)
	ELSE()
	FetchContent_Declare(
		xtensor
		GIT_REPOSITORY https://github.com/xtensor-stack/xtensor.git
		GIT_TAG        ${XTENSOR_GIT_TAG}
		GIT_SHALLOW TRUE
		GIT_PROGRESS TRUE
		PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/xtensor_omp.patch
		CMAKE_ARGS CMAKE_FIND_LIBRARY_SUFFIXES=${CMAKE_FIND_LIBRARY_SUFFIXES}
		UPDATE_DISCONNECTED 1
		FIND_PACKAGE_ARGS NAMES xtensor
	)
	ENDIF()
	FETCHCONTENT_MAKEAVAILABLE(xtensor)
	IF ( ${XTENSOR_GIT_TAG} VERSION_LESS 0.26.0 )
		# SET(XTENSOR_NEW_HEADERS 0)
	ELSE ()
		SET(XTENSOR_NEW_HEADERS 1)
	ENDIF ()
ENDIF()

IF ( DEFINED XTENSOR_NEW_HEADERS )
	SET(XTENSOR_NEW_HEADERS ${XTENSOR_NEW_HEADERS} PARENT_SCOPE)
ENDIF ()
