From a36e68512346ba2516c4affceba8571b906e2b6a Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Fri, 6 Jul 2018 21:22:25 +0200 Subject: [PATCH] webp: add cmake support --- README.md | 1 + cmake/FindWebP.cmake | 73 ++++++++++++++++++++++++++++++++ plugins/CMakeLists.txt | 1 + plugins/imagewebp/CMakeLists.txt | 7 +++ tools/quake3/CMakeLists.txt | 4 ++ 5 files changed, 86 insertions(+) create mode 100644 cmake/FindWebP.cmake create mode 100644 plugins/imagewebp/CMakeLists.txt diff --git a/README.md b/README.md index eb6bf975..428c172b 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ See also https://gitlab.com/xonotic/netradiant/ for a source browser, issues and * GtkGLExt * LibJpeg * LibPng + * LibWebp * Minizip * ZLib diff --git a/cmake/FindWebP.cmake b/cmake/FindWebP.cmake new file mode 100644 index 00000000..08682557 --- /dev/null +++ b/cmake/FindWebP.cmake @@ -0,0 +1,73 @@ +# - Find WebP library +# Find the native WebP headers and libraries. +# +# WEBP_INCLUDE_DIRS - where to find webp/decode.h, etc. +# WEBP_LIBRARIES - List of libraries when using webp. +# WEBP_FOUND - True if webp is found. + +#============================================================================= +#Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +#All rights reserved. +# +#Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +#* Redistributions of source code must retain the above copyright notice, +#this list of conditions and the following disclaimer. +# +#* 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. +# +#* Neither the names of Kitware, Inc., the Insight Software Consortium, nor +#the names of their contributors may be used to endorse or promote products +#derived from this software without specific prior written permission. +# +#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 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. +#============================================================================= + +# Look for the header file. +FIND_PATH(WEBP_INCLUDE_DIR NAMES webp/decode.h) +MARK_AS_ADVANCED(WEBP_INCLUDE_DIR) + +# Look for the library. +FIND_LIBRARY(WEBP_LIBRARY NAMES webp) +MARK_AS_ADVANCED(WEBP_LIBRARY) + +# handle the QUIETLY and REQUIRED arguments and set WEBFOUND_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(WebP DEFAULT_MSG WEBP_LIBRARY WEBP_INCLUDE_DIR) + +SET(WEBP_LIBRARIES ${WEBP_LIBRARY}) +SET(WEBP_INCLUDE_DIRS ${WEBP_INCLUDE_DIR}) + +SET(_WEBP_RQ_INCLUDES ${CMAKE_REQUIRED_INCLUDES}) + +if(NOT DEFINED _WEBP_COMPILATION_TEST) + INCLUDE (CheckCSourceCompiles) + SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WEBP_INCLUDE_DIRS}) + CHECK_C_SOURCE_COMPILES("#include + int main(void) { + #if WEBP_DECODER_ABI_VERSION < 0x0200 + error; // Deliberate compile-time error + #endif + return 0; + }" + _WEBP_COMPILATION_TEST) + SET(CMAKE_REQUIRED_INCLUDES ${_WEBP_RQ_INCLUDES}) +endif() + +if(NOT _WEBP_COMPILATION_TEST) + set( USE_INTERNAL_WEBP 1 ) +endif() diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index d6c7f075..80f45f1f 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -25,6 +25,7 @@ endif() add_subdirectory(imagehl) add_subdirectory(imagepng) add_subdirectory(imageq2) +add_subdirectory(imagewebp) add_subdirectory(iqmmodel) add_subdirectory(mapq3) add_subdirectory(mapxml) diff --git a/plugins/imagewebp/CMakeLists.txt b/plugins/imagewebp/CMakeLists.txt new file mode 100644 index 00000000..baac0cae --- /dev/null +++ b/plugins/imagewebp/CMakeLists.txt @@ -0,0 +1,7 @@ +radiant_plugin(imagewebp + plugin.cpp + ) + +find_package(WebP REQUIRED) +target_include_directories(imagewebp PRIVATE ${WEBP_INCLUDE_DIR}) +target_link_libraries(imagewebp PRIVATE ${WEBP_LIBRARIES}) diff --git a/tools/quake3/CMakeLists.txt b/tools/quake3/CMakeLists.txt index 2dfc9ef9..b1e8e67b 100644 --- a/tools/quake3/CMakeLists.txt +++ b/tools/quake3/CMakeLists.txt @@ -22,6 +22,9 @@ include_directories(${JPEG_INCLUDE_DIR}) find_package(PNG REQUIRED) include_directories(${PNG_INCLUDE_DIR}) +find_package(WebP REQUIRED) +include_directories(${WEBP_INCLUDE_DIR}) + find_package(LibXml2 REQUIRED) include_directories(${LIBXML2_INCLUDE_DIR}) @@ -135,6 +138,7 @@ target_link_libraries(q3map2 ${GLIB_LIBRARIES} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} + ${WEBP_LIBRARIES} ${LIBXML2_LIBRARIES} ${Minizip_LIBRARIES} ${ZLIB_LIBRARIES} -- 2.39.2