|
|
@@ -9,7 +9,11 @@ Finds the Developer's Image Library, `DevIL <https://openil.sourceforge.net/>`_:
|
|
|
|
|
|
.. code-block:: cmake
|
|
|
|
|
|
- find_package(DevIL [...])
|
|
|
+ find_package(DevIL [<version>] [...])
|
|
|
+
|
|
|
+.. versionadded:: 4.2
|
|
|
+ Support for the ``<version>`` argument in the :command:`find_package`
|
|
|
+ call. Version can be also specified as a range.
|
|
|
|
|
|
The DevIL package internally consists of the following libraries, all
|
|
|
distributed as part of the same release:
|
|
|
@@ -62,8 +66,13 @@ Result Variables
|
|
|
This module defines the following variables:
|
|
|
|
|
|
``DevIL_FOUND``
|
|
|
- Boolean indicating whether the DevIL package is found, including the IL and
|
|
|
- ILU libraries.
|
|
|
+ Boolean indicating whether the (requested version of) DevIL package is
|
|
|
+ found, including the IL and ILU libraries.
|
|
|
+
|
|
|
+``DevIL_VERSION``
|
|
|
+ .. versionadded:: 4.2
|
|
|
+
|
|
|
+ The version of the DevIL found.
|
|
|
|
|
|
``DevIL_ILUT_FOUND``
|
|
|
.. versionadded:: 3.21
|
|
|
@@ -113,8 +122,8 @@ Linking against the Image Library Utility Toolkit (ILUT):
|
|
|
target_link_libraries(app PRIVATE DevIL::ILUT)
|
|
|
#]=======================================================================]
|
|
|
|
|
|
-# TODO: Add version support.
|
|
|
-# Tested under Linux and Windows (MSVC)
|
|
|
+cmake_policy(PUSH)
|
|
|
+cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
|
|
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
|
|
@@ -123,35 +132,62 @@ find_path(IL_INCLUDE_DIR il.h
|
|
|
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}")
|
|
|
+# Get version.
|
|
|
+block(PROPAGATE DevIL_VERSION)
|
|
|
+ if(IL_INCLUDE_DIR AND EXISTS "${IL_INCLUDE_DIR}/il.h")
|
|
|
+ set(regex "^[ \t]*#[ \t]*define[ \t]+IL_VERSION[ \t]+([0-9]+)[ \t]*$")
|
|
|
+
|
|
|
+ file(STRINGS ${IL_INCLUDE_DIR}/il.h result REGEX "${regex}")
|
|
|
+
|
|
|
+ if(result MATCHES "${regex}")
|
|
|
+ set(DevIL_VERSION "${CMAKE_MATCH_1}")
|
|
|
+
|
|
|
+ math(EXPR DevIL_VERSION_MAJOR "${DevIL_VERSION} / 100")
|
|
|
+ math(EXPR DevIL_VERSION_MINOR "${DevIL_VERSION} / 10 % 10")
|
|
|
+ math(EXPR DevIL_VERSION_PATCH "${DevIL_VERSION} % 10")
|
|
|
+
|
|
|
+ set(DevIL_VERSION "")
|
|
|
+ foreach(part MAJOR MINOR PATCH)
|
|
|
+ if(DevIL_VERSION)
|
|
|
+ string(APPEND ".${DevIL_VERSION_${part}}")
|
|
|
+ else()
|
|
|
+ set(DevIL_VERSION "${DevIL_VERSION_${part}}")
|
|
|
+ endif()
|
|
|
+
|
|
|
+ set(
|
|
|
+ DevIL_VERSION
|
|
|
+ "${DevIL_VERSION_MAJOR}.${DevIL_VERSION_MINOR}.${DevIL_VERSION_PATCH}"
|
|
|
+ )
|
|
|
+ endforeach()
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+endblock()
|
|
|
+
|
|
|
+find_package_handle_standard_args(
|
|
|
+ DevIL
|
|
|
+ REQUIRED_VARS IL_LIBRARIES ILU_LIBRARIES IL_INCLUDE_DIR
|
|
|
+ VERSION_VAR DevIL_VERSION
|
|
|
+ HANDLE_VERSION_RANGE
|
|
|
+)
|
|
|
|
|
|
-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})
|
|
|
|
|
|
@@ -187,3 +223,5 @@ if(DevIL_FOUND)
|
|
|
target_link_libraries(DevIL::ILUT INTERFACE DevIL::ILU)
|
|
|
endif()
|
|
|
endif()
|
|
|
+
|
|
|
+cmake_policy(POP)
|