mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
- Added examples section. - Explained the DevIL package libraries and imported targets in more details. - Separated the result variables and cache variables. - Module documentation synced as much as possible for the time being with other similar find modules.
186 lines
5.1 KiB
CMake
186 lines
5.1 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindDevIL
|
|
---------
|
|
|
|
Finds the Developer's Image Library, `DevIL <https://openil.sourceforge.net/>`_.
|
|
|
|
The DevIL package internally consists of the following libraries, all
|
|
distributed as part of the same release:
|
|
|
|
* The core Image Library (IL)
|
|
|
|
This library is always required when working with DevIL, as it provides the
|
|
main image loading and manipulation functionality.
|
|
|
|
* The Image Library Utilities (ILU)
|
|
|
|
This library depends on IL and provides image filters and effects. It is only
|
|
required if the application uses this extended functionality.
|
|
|
|
* The Image Library Utility Toolkit (ILUT)
|
|
|
|
This library depends on both IL and ILU, and additionally provides an
|
|
interface to OpenGL. It is only needed if the application uses DevIL together
|
|
with OpenGL.
|
|
|
|
Imported Targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module provides the following :ref:`Imported Targets`:
|
|
|
|
``DevIL::IL``
|
|
.. versionadded:: 3.21
|
|
|
|
Target encapsulating the core Image Library (IL) usage requirements, available
|
|
if the DevIL package is found.
|
|
|
|
``DevIL::ILU``
|
|
.. versionadded:: 3.21
|
|
|
|
Target encapsulating the Image Library Utilities (ILU) usage requirements,
|
|
available if the DevIL package is found. This target also links to
|
|
``DevIL::IL`` for convenience, as ILU depends on the core IL library.
|
|
|
|
``DevIL::ILUT``
|
|
.. versionadded:: 3.21
|
|
|
|
Target encapsulating the Image Library Utility Toolkit (ILUT) usage
|
|
requirements, available if the DevIL package and its ILUT library are found.
|
|
This target also links to ``DevIL::ILU``, and transitively to ``DevIL::IL``,
|
|
since ILUT depends on both.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following variables:
|
|
|
|
``DevIL_FOUND``
|
|
Boolean indicating whether the DevIL package is found, including the IL and
|
|
ILU libraries.
|
|
|
|
``DevIL_ILUT_FOUND``
|
|
.. versionadded:: 3.21
|
|
|
|
Boolean indicating whether the ILUT library is found. On most systems, ILUT
|
|
is found when both IL and ILU are available.
|
|
|
|
Cache Variables
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The following cache variables may also be set:
|
|
|
|
``IL_INCLUDE_DIR``
|
|
The directory containing the ``il.h``, ``ilu.h`` and ``ilut.h`` header files.
|
|
|
|
``IL_LIBRARIES``
|
|
The full path to the core Image Library (IL).
|
|
|
|
``ILU_LIBRARIES``
|
|
The full path to the ILU library.
|
|
|
|
``ILUT_LIBRARIES``
|
|
The full path to the ILUT library.
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
Finding the DevIL package and linking against the core Image Library (IL):
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(DevIL)
|
|
target_link_libraries(app PRIVATE DevIL::IL)
|
|
|
|
Linking against the Image Library Utilities (ILU):
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(DevIL)
|
|
target_link_libraries(app PRIVATE DevIL::ILU)
|
|
|
|
Linking against the Image Library Utility Toolkit (ILUT):
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(DevIL)
|
|
target_link_libraries(app PRIVATE DevIL::ILUT)
|
|
#]=======================================================================]
|
|
|
|
# TODO: Add version support.
|
|
# Tested under Linux and Windows (MSVC)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
find_path(IL_INCLUDE_DIR il.h
|
|
PATH_SUFFIXES include IL
|
|
DOC "The path to the directory that contains il.h"
|
|
)
|
|
|
|
#message("IL_INCLUDE_DIR is ${IL_INCLUDE_DIR}")
|
|
|
|
find_library(IL_LIBRARIES
|
|
NAMES IL DEVIL
|
|
PATH_SUFFIXES libx32 lib64 lib lib32
|
|
DOC "The file that corresponds to the base il library."
|
|
)
|
|
|
|
#message("IL_LIBRARIES is ${IL_LIBRARIES}")
|
|
|
|
find_library(ILUT_LIBRARIES
|
|
NAMES ILUT
|
|
PATH_SUFFIXES libx32 lib64 lib lib32
|
|
DOC "The file that corresponds to the il (system?) utility library."
|
|
)
|
|
|
|
#message("ILUT_LIBRARIES is ${ILUT_LIBRARIES}")
|
|
|
|
find_library(ILU_LIBRARIES
|
|
NAMES ILU
|
|
PATH_SUFFIXES libx32 lib64 lib lib32
|
|
DOC "The file that corresponds to the il utility library."
|
|
)
|
|
|
|
#message("ILU_LIBRARIES is ${ILU_LIBRARIES}")
|
|
|
|
find_package_handle_standard_args(DevIL DEFAULT_MSG
|
|
IL_LIBRARIES ILU_LIBRARIES
|
|
IL_INCLUDE_DIR)
|
|
# provide legacy variable for compatibility
|
|
set(IL_FOUND ${DevIL_FOUND})
|
|
|
|
# create imported targets ONLY if we found DevIL.
|
|
if(DevIL_FOUND)
|
|
# Report the ILUT found if ILUT_LIBRARIES contains valid path.
|
|
if (ILUT_LIBRARIES)
|
|
set(DevIL_ILUT_FOUND TRUE)
|
|
else()
|
|
set(DevIL_ILUT_FOUND FALSE)
|
|
endif()
|
|
|
|
if(NOT TARGET DevIL::IL)
|
|
add_library(DevIL::IL UNKNOWN IMPORTED)
|
|
set_target_properties(DevIL::IL PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${IL_INCLUDE_DIR}"
|
|
IMPORTED_LOCATION "${IL_LIBRARIES}")
|
|
endif()
|
|
|
|
# DevIL Utilities target
|
|
if(NOT TARGET DevIL::ILU)
|
|
add_library(DevIL::ILU UNKNOWN IMPORTED)
|
|
set_target_properties(DevIL::ILU PROPERTIES
|
|
IMPORTED_LOCATION "${ILU_LIBRARIES}")
|
|
target_link_libraries(DevIL::ILU INTERFACE DevIL::IL)
|
|
endif()
|
|
|
|
# ILUT (if found)
|
|
if(NOT TARGET DevIL::ILUT AND DevIL_ILUT_FOUND)
|
|
add_library(DevIL::ILUT UNKNOWN IMPORTED)
|
|
set_target_properties(DevIL::ILUT PROPERTIES
|
|
IMPORTED_LOCATION "${ILUT_LIBRARIES}")
|
|
target_link_libraries(DevIL::ILUT INTERFACE DevIL::ILU)
|
|
endif()
|
|
endif()
|