cmake_minimum_required(VERSION 3.16...3.24 FATAL_ERROR)

include(FetchContent)

option(TOMATO_DEP_LIBWEBP_USE_SYSTEM "Prefer system provided libwebp" OFF)

if (TOMATO_DEP_LIBWEBP_USE_SYSTEM)
	if (NOT TARGET WebP::libwebpmux)
		cmake_minimum_required(VERSION 3.24 FATAL_ERROR)
		find_package(WebP CONFIG GLOBAL QUIET COMPONENTS webp webpdemux libwebpmux)
	endif()

	#if (NOT TARGET libwebp)
	#    find_package(WebP GLOBAL)
	#endif()

	if (NOT TARGET WebP::libwebpmux)
		find_package(PkgConfig)
		if (PKG_CONFIG_FOUND)
			pkg_check_modules(libwebp_PKG IMPORTED_TARGET GLOBAL libwebp)
			pkg_check_modules(libwebpdemux_PKG IMPORTED_TARGET GLOBAL libwebpdemux)
			pkg_check_modules(libwebpmux_PKG IMPORTED_TARGET GLOBAL libwebpmux)

			if (TARGET PkgConfig::libwebp_PKG AND TARGET PkgConfig::libwebpdemux_PKG AND TARGET PkgConfig::libwebpmux_PKG)
				add_library(WebP::webp ALIAS PkgConfig::libwebp_PKG)
				add_library(WebP::webpdemux ALIAS PkgConfig::libwebpdemux_PKG)
				add_library(WebP::libwebpmux ALIAS PkgConfig::libwebpmux_PKG)
			endif()
		endif()
	endif()

	if (TARGET WebP::webp)
		message(STATUS "found WebP::webp")
	endif()
	if (TARGET WebP::webpdemux)
		message(STATUS "found WebP::webpdemux")
	endif()
	if (TARGET WebP::libwebpmux)
		message(STATUS "found WebP::libwebpmux")
	endif()

	if (TARGET WebP::libwebpmux)
		message(STATUS "found system libwebp")
	else()
		message(STATUS "system libwebp not found")
	endif()
endif()

if (NOT TARGET WebP::libwebpmux)
	set(WEBP_LINK_STATIC ON CACHE BOOL "" FORCE)
	set(WEBP_BUILD_ANIM_UTILS OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_CWEBP OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_DWEBP OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_GIF2WEBP OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_IMG2WEBP OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_VWEBP OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_WEBPINFO OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_LIBWEBPMUX ON CACHE BOOL "" FORCE)
	set(WEBP_BUILD_WEBPMUX OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_EXTRAS OFF CACHE BOOL "" FORCE)
	set(WEBP_BUILD_WEBP_JS OFF CACHE BOOL "" FORCE)
	set(WEBP_USE_THREAD ON CACHE BOOL "" FORCE)

	FetchContent_Declare(libwebp
		GIT_REPOSITORY https://github.com/webmproject/libwebp
		GIT_TAG v1.6.0
		FIND_PACKAGE_ARGS
	)
	FetchContent_MakeAvailable(libwebp)

	add_library(WebP::webp ALIAS webp)
	add_library(WebP::webpdemux ALIAS webpdemux)
	add_library(WebP::libwebpmux ALIAS libwebpmux)
endif()

