mirror of https://github.com/stenzek/duckstation
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			167 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			CMake
		
	
		
		
			
		
	
	
			167 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			CMake
		
	
| 
								 
											2 years ago
										 
									 | 
							
								# Copyright (C) 2020 Sony Interactive Entertainment Inc.
							 | 
						||
| 
								 | 
							
								# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org>
							 | 
						||
| 
								 | 
							
								# Copyright (C) 2013 Igalia S.L.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Redistribution and use in source and binary forms, with or without
							 | 
						||
| 
								 | 
							
								# modification, are permitted provided that the following conditions
							 | 
						||
| 
								 | 
							
								# are met:
							 | 
						||
| 
								 | 
							
								# 1.  Redistributions of source code must retain the above copyright
							 | 
						||
| 
								 | 
							
								#     notice, this list of conditions and the following disclaimer.
							 | 
						||
| 
								 | 
							
								# 2.  Redistributions in binary form must reproduce the above copyright
							 | 
						||
| 
								 | 
							
								#     notice, this list of conditions and the following disclaimer in the
							 | 
						||
| 
								 | 
							
								#     documentation and/or other materials provided with the distribution.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
							 | 
						||
| 
								 | 
							
								# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
							 | 
						||
| 
								 | 
							
								# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
							 | 
						||
| 
								 | 
							
								# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
							 | 
						||
| 
								 | 
							
								# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
							 | 
						||
| 
								 | 
							
								# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
							 | 
						||
| 
								 | 
							
								# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
							 | 
						||
| 
								 | 
							
								# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
							 | 
						||
| 
								 | 
							
								# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
							 | 
						||
| 
								 | 
							
								# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
							 | 
						||
| 
								 | 
							
								# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#[=======================================================================[.rst:
							 | 
						||
| 
								 | 
							
								FindWebP
							 | 
						||
| 
								 | 
							
								--------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Find WebP headers and libraries.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Imported Targets
							 | 
						||
| 
								 | 
							
								^^^^^^^^^^^^^^^^
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``WebP::libwebp``
							 | 
						||
| 
								 | 
							
								  The WebP library, if found.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``WebP::demux``
							 | 
						||
| 
								 | 
							
								  The WebP demux library, if found.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Result Variables
							 | 
						||
| 
								 | 
							
								^^^^^^^^^^^^^^^^
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This will define the following variables in your project:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``WebP_FOUND``
							 | 
						||
| 
								 | 
							
								  true if (the requested version of) WebP is available.
							 | 
						||
| 
								 | 
							
								``WebP_VERSION``
							 | 
						||
| 
								 | 
							
								  the version of WebP.
							 | 
						||
| 
								 | 
							
								``WebP_LIBRARIES``
							 | 
						||
| 
								 | 
							
								  the libraries to link against to use WebP.
							 | 
						||
| 
								 | 
							
								``WebP_INCLUDE_DIRS``
							 | 
						||
| 
								 | 
							
								  where to find the WebP headers.
							 | 
						||
| 
								 | 
							
								``WebP_COMPILE_OPTIONS``
							 | 
						||
| 
								 | 
							
								  this should be passed to target_compile_options(), if the
							 | 
						||
| 
								 | 
							
								  target is not used for linking
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#]=======================================================================]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_package(PkgConfig QUIET)
							 | 
						||
| 
								 | 
							
								pkg_check_modules(PC_WEBP QUIET libwebp)
							 | 
						||
| 
								 | 
							
								set(WebP_COMPILE_OPTIONS ${PC_WEBP_CFLAGS_OTHER})
							 | 
						||
| 
								 | 
							
								set(WebP_VERSION ${PC_WEBP_CFLAGS_VERSION})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_path(WebP_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								    NAMES webp/decode.h
							 | 
						||
| 
								 | 
							
								    HINTS ${PC_WEBP_INCLUDEDIR} ${PC_WEBP_INCLUDE_DIRS}
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_library(WebP_LIBRARY
							 | 
						||
| 
								 | 
							
								    NAMES ${WebP_NAMES} webp libwebp
							 | 
						||
| 
								 | 
							
								    HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS}
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# There's nothing in the WebP headers that could be used to detect the exact
							 | 
						||
| 
								 | 
							
								# WebP version being used so don't attempt to do so. A version can only be found
							 | 
						||
| 
								 | 
							
								# through pkg-config
							 | 
						||
| 
								 | 
							
								if ("${WebP_FIND_VERSION}" VERSION_GREATER "${WebP_VERSION}")
							 | 
						||
| 
								 | 
							
								    if (WebP_VERSION)
							 | 
						||
| 
								 | 
							
								        message(FATAL_ERROR "Required version (" ${WebP_FIND_VERSION} ") is higher than found version (" ${WebP_VERSION} ")")
							 | 
						||
| 
								 | 
							
								    else ()
							 | 
						||
| 
								 | 
							
								        message(WARNING "Cannot determine WebP version without pkg-config")
							 | 
						||
| 
								 | 
							
								    endif ()
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Find components
							 | 
						||
| 
								 | 
							
								if (WebP_INCLUDE_DIR AND WebP_LIBRARY)
							 | 
						||
| 
								 | 
							
								    set(_WebP_REQUIRED_LIBS_FOUND ON)
							 | 
						||
| 
								 | 
							
								    set(WebP_LIBS_FOUND "WebP (required): ${WebP_LIBRARY}")
							 | 
						||
| 
								 | 
							
								else ()
							 | 
						||
| 
								 | 
							
								    set(_WebP_REQUIRED_LIBS_FOUND OFF)
							 | 
						||
| 
								 | 
							
								    set(WebP_LIBS_NOT_FOUND "WebP (required)")
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if ("demux" IN_LIST WebP_FIND_COMPONENTS)
							 | 
						||
| 
								 | 
							
								    find_library(WebP_DEMUX_LIBRARY
							 | 
						||
| 
								 | 
							
								        NAMES ${WebP_DEMUX_NAMES} webpdemux libwebpdemux
							 | 
						||
| 
								 | 
							
								        HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS}
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (WebP_DEMUX_LIBRARY)
							 | 
						||
| 
								 | 
							
								        if (WebP_FIND_REQUIRED_demux)
							 | 
						||
| 
								 | 
							
								            list(APPEND WebP_LIBS_FOUND "demux (required): ${WebP_DEMUX_LIBRARY}")
							 | 
						||
| 
								 | 
							
								        else ()
							 | 
						||
| 
								 | 
							
								           list(APPEND WebP_LIBS_FOUND "demux (optional): ${WebP_DEMUX_LIBRARY}")
							 | 
						||
| 
								 | 
							
								        endif ()
							 | 
						||
| 
								 | 
							
								    else ()
							 | 
						||
| 
								 | 
							
								        if (WebP_FIND_REQUIRED_demux)
							 | 
						||
| 
								 | 
							
								           set(_WebP_REQUIRED_LIBS_FOUND OFF)
							 | 
						||
| 
								 | 
							
								           list(APPEND WebP_LIBS_NOT_FOUND "demux (required)")
							 | 
						||
| 
								 | 
							
								        else ()
							 | 
						||
| 
								 | 
							
								           list(APPEND WebP_LIBS_NOT_FOUND "demux (optional)")
							 | 
						||
| 
								 | 
							
								        endif ()
							 | 
						||
| 
								 | 
							
								    endif ()
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (NOT WebP_FIND_QUIETLY)
							 | 
						||
| 
								 | 
							
								    if (WebP_LIBS_FOUND)
							 | 
						||
| 
								 | 
							
								        message(STATUS "Found the following WebP libraries:")
							 | 
						||
| 
								 | 
							
								        foreach (found ${WebP_LIBS_FOUND})
							 | 
						||
| 
								 | 
							
								            message(STATUS " ${found}")
							 | 
						||
| 
								 | 
							
								        endforeach ()
							 | 
						||
| 
								 | 
							
								    endif ()
							 | 
						||
| 
								 | 
							
								    if (WebP_LIBS_NOT_FOUND)
							 | 
						||
| 
								 | 
							
								        message(STATUS "The following WebP libraries were not found:")
							 | 
						||
| 
								 | 
							
								        foreach (found ${WebP_LIBS_NOT_FOUND})
							 | 
						||
| 
								 | 
							
								            message(STATUS " ${found}")
							 | 
						||
| 
								 | 
							
								        endforeach ()
							 | 
						||
| 
								 | 
							
								    endif ()
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include(FindPackageHandleStandardArgs)
							 | 
						||
| 
								 | 
							
								find_package_handle_standard_args(WebP
							 | 
						||
| 
								 | 
							
								    FOUND_VAR WebP_FOUND
							 | 
						||
| 
								 | 
							
								    REQUIRED_VARS WebP_INCLUDE_DIR WebP_LIBRARY _WebP_REQUIRED_LIBS_FOUND
							 | 
						||
| 
								 | 
							
								    VERSION_VAR WebP_VERSION
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (WebP_LIBRARY AND NOT TARGET WebP::libwebp)
							 | 
						||
| 
								 | 
							
								    add_library(WebP::libwebp UNKNOWN IMPORTED GLOBAL)
							 | 
						||
| 
								 | 
							
								    set_target_properties(WebP::libwebp PROPERTIES
							 | 
						||
| 
								 | 
							
								        IMPORTED_LOCATION "${WebP_LIBRARY}"
							 | 
						||
| 
								 | 
							
								        INTERFACE_COMPILE_OPTIONS "${WebP_COMPILE_OPTIONS}"
							 | 
						||
| 
								 | 
							
								        INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR}"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (WebP_DEMUX_LIBRARY AND NOT TARGET WebP::demux)
							 | 
						||
| 
								 | 
							
								    add_library(WebP::demux UNKNOWN IMPORTED GLOBAL)
							 | 
						||
| 
								 | 
							
								    set_target_properties(WebP::demux PROPERTIES
							 | 
						||
| 
								 | 
							
								        IMPORTED_LOCATION "${WebP_DEMUX_LIBRARY}"
							 | 
						||
| 
								 | 
							
								        INTERFACE_COMPILE_OPTIONS "${WebP_COMPILE_OPTIONS}"
							 | 
						||
| 
								 | 
							
								        INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR}"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mark_as_advanced(
							 | 
						||
| 
								 | 
							
								    WebP_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								    WebP_LIBRARY
							 | 
						||
| 
								 | 
							
								    WebP_DEMUX_LIBRARY
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (WebP_FOUND)
							 | 
						||
| 
								 | 
							
								    set(WebP_LIBRARIES ${WebP_LIBRARY} ${WebP_DEMUX_LIBRARY})
							 | 
						||
| 
								 | 
							
								    set(WebP_INCLUDE_DIRS ${WebP_INCLUDE_DIR})
							 | 
						||
| 
								 | 
							
								endif ()
							 |