From 360ea710e090eb509735283d371d4923266e0b9e Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Fri, 15 Jul 2022 00:48:27 +0200 Subject: [PATCH] Implement FindSDL_gfx.cmake Surprisingly, as of today (July 2022) CMake ships with FindSDL*.cmake files for several SDL libraries such as SDL_mixer or SDL_image, but not for SDL_gfx, so one was created, based on FindSDL_mixer.cmake. Reference: https://gitlab.kitware.com/cmake/cmake/-/blob/8a3004d5c28c0ca0ac45f718b64ed3662e499c7a/Modules/FindSDL_mixer.cmake --- cmake/FindSDL_gfx.cmake | 106 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 cmake/FindSDL_gfx.cmake diff --git a/cmake/FindSDL_gfx.cmake b/cmake/FindSDL_gfx.cmake new file mode 100644 index 0000000..645eae2 --- /dev/null +++ b/cmake/FindSDL_gfx.cmake @@ -0,0 +1,106 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +FindSDL_gfx +------------- + +Locate SDL_gfx library + +This module defines: + +:: + + SDL_GFX_LIBRARIES, the name of the library to link against + SDL_GFX_INCLUDE_DIRS, where to find the headers + SDL_GFX_FOUND, if false, do not try to link against + SDL_GFX_VERSION_STRING - human-readable string containing the + version of SDL_gfx + + + +For backward compatibility the following variables are also set: + +:: + + SDLGFX_LIBRARY (same value as SDL_GFX_LIBRARIES) + SDLGFX_INCLUDE_DIR (same value as SDL_GFX_INCLUDE_DIRS) + SDLGFX_FOUND (same value as SDL_GFX_FOUND) + + + +$SDLDIR is an environment variable that would correspond to the +./configure --prefix=$SDLDIR used in building SDL. + +Created by Xavier Del Campo, heavily based on the original work by +Eric Wing, FindSDL_mixer.cmake. +#]=======================================================================] + +if(NOT SDL_GFX_INCLUDE_DIR AND SDLGFX_INCLUDE_DIR) + set(SDL_GFX_INCLUDE_DIR ${SDLGFX_INCLUDE_DIR} CACHE PATH "directory cache +entry initialized from old variable name") +endif() +find_path(SDL_GFX_INCLUDE_DIR + SDL_framerate.h + SDL_gfxBlitFunc.h + SDL_gfxPrimitives.h + SDL_gfxPrimitives_font.h + SDL_imageFilter.h + SDL_rotozoom.h + HINTS + ENV SDLGFXDIR + ENV SDLDIR + PATH_SUFFIXES SDL + # path suffixes to search inside ENV{SDLDIR} + include/SDL include/SDL12 include/SDL11 include +) + +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VC_LIB_PATH_SUFFIX lib/x64) +else() + set(VC_LIB_PATH_SUFFIX lib/x86) +endif() + +if(NOT SDL_GFX_LIBRARY AND SDLGFX_LIBRARY) + set(SDL_GFX_LIBRARY ${SDLGFX_LIBRARY} CACHE FILEPATH "file cache entry +initialized from old variable name") +endif() +find_library(SDL_GFX_LIBRARY + NAMES SDL_gfx + HINTS + ENV SDLGFXDIR + ENV SDLDIR + PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX} +) + +if(SDL_GFX_INCLUDE_DIR AND EXISTS "${SDL_GFX_INCLUDE_DIR}/SDL_gfxPrimitives.h") + file(STRINGS "${SDL_GFX_INCLUDE_DIR}/SDL_gfxPrimitives.h" SDL_GFX_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_GFXPRIMITIVES_MAJOR[ \t]+[0-9]+$") + file(STRINGS "${SDL_GFX_INCLUDE_DIR}/SDL_gfxPrimitives.h" SDL_GFX_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_GFXPRIMITIVES_MINOR[ \t]+[0-9]+$") + file(STRINGS "${SDL_GFX_INCLUDE_DIR}/SDL_gfxPrimitives.h" SDL_GFX_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_GFXPRIMITIVES_MICRO[ \t]+[0-9]+$") + string(REGEX REPLACE "^#define[ \t]+SDL_GFXPRIMITIVES_MAJOR[ \t]+([0-9]+)$" "\\1" SDL_GFX_VERSION_MAJOR "${SDL_GFX_VERSION_MAJOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_GFXPRIMITIVES_MINOR[ \t]+([0-9]+)$" "\\1" SDL_GFX_VERSION_MINOR "${SDL_GFX_VERSION_MINOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_GFXPRIMITIVES_MICRO[ \t]+([0-9]+)$" "\\1" SDL_GFX_VERSION_PATCH "${SDL_GFX_VERSION_PATCH_LINE}") + set(SDL_GFX_VERSION_STRING ${SDL_GFX_VERSION_MAJOR}.${SDL_GFX_VERSION_MINOR}.${SDL_GFX_VERSION_PATCH}) + unset(SDL_GFX_VERSION_MAJOR_LINE) + unset(SDL_GFX_VERSION_MINOR_LINE) + unset(SDL_GFX_VERSION_PATCH_LINE) + unset(SDL_GFX_VERSION_MAJOR) + unset(SDL_GFX_VERSION_MINOR) + unset(SDL_GFX_VERSION_PATCH) +endif() + +set(SDL_GFX_LIBRARIES ${SDL_GFX_LIBRARY}) +set(SDL_GFX_INCLUDE_DIRS ${SDL_GFX_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL_gfx + REQUIRED_VARS SDL_GFX_LIBRARIES SDL_GFX_INCLUDE_DIRS + VERSION_VAR SDL_GFX_VERSION_STRING) + +# for backward compatibility +set(SDLGFX_LIBRARY ${SDL_GFX_LIBRARIES}) +set(SDLGFX_INCLUDE_DIR ${SDL_GFX_INCLUDE_DIRS}) +set(SDLGFX_FOUND ${SDL_GFX_FOUND}) + +mark_as_advanced(SDL_GFX_LIBRARY SDL_GFX_INCLUDE_DIR)