1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindSDL_gfx
-----------
.. versionadded:: 3.25
Finds the SDL_gfx library that provides graphics support in SDL (Simple
DirectMedia Layer) applications.
.. note::
This module is for SDL_gfx version 1. For version 2 or newer usage refer to
the upstream documentation.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following :ref:`Imported Targets`:
``SDL::SDL_gfx``
Target encapsulating the SDL_gfx library usage requirements, available if
SDL_gfx is found.
Result Variables
^^^^^^^^^^^^^^^^
This module defines the following variables:
``SDL_gfx_FOUND``
Boolean indicating whether the (requested version of) SDL_gfx library is
found. For backward compatibility, the ``SDL_GFX_FOUND`` variable is also set
to the same value.
``SDL_GFX_VERSION_STRING``
The human-readable string containing the version of SDL_gfx found.
Cache Variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``SDL_GFX_INCLUDE_DIRS``
The directory containing the headers needed to use SDL_gfx.
``SDL_GFX_LIBRARIES``
The path to the SDL_gfx library needed to link against to use SDL_gfx.
Hints
^^^^^
This module accepts the following variables:
``SDLDIR``
Environment variable that can be set to help locate an SDL library installed
in a custom location. It should point to the installation destination that
was used when configuring, building, and installing SDL library:
``./configure --prefix=$SDLDIR``.
Examples
^^^^^^^^
Finding SDL_gfx library and linking it to a project target:
.. code-block:: cmake
find_package(SDL_gfx)
target_link_libraries(project_target PRIVATE SDL::SDL_gfx)
See Also
^^^^^^^^
* The :module:`FindSDL` module to find the main SDL library.
#]=======================================================================]
cmake_policy(PUSH)
cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
find_path(SDL_GFX_INCLUDE_DIRS
NAMES
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()
find_library(SDL_GFX_LIBRARIES
NAMES SDL_gfx
HINTS
ENV SDLGFXDIR
ENV SDLDIR
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
)
if(SDL_GFX_INCLUDE_DIRS AND EXISTS "${SDL_GFX_INCLUDE_DIRS}/SDL_gfxPrimitives.h")
file(STRINGS "${SDL_GFX_INCLUDE_DIRS}/SDL_gfxPrimitives.h" SDL_GFX_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_GFXPRIMITIVES_MAJOR[ \t]+[0-9]+$")
file(STRINGS "${SDL_GFX_INCLUDE_DIRS}/SDL_gfxPrimitives.h" SDL_GFX_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_GFXPRIMITIVES_MINOR[ \t]+[0-9]+$")
file(STRINGS "${SDL_GFX_INCLUDE_DIRS}/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()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SDL_gfx
REQUIRED_VARS SDL_GFX_LIBRARIES SDL_GFX_INCLUDE_DIRS
VERSION_VAR SDL_GFX_VERSION_STRING)
if(SDL_gfx_FOUND)
if(NOT TARGET SDL::SDL_gfx)
add_library(SDL::SDL_gfx INTERFACE IMPORTED)
set_target_properties(SDL::SDL_gfx PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SDL_GFX_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${SDL_GFX_LIBRARIES}")
endif()
endif()
cmake_policy(POP)
|