Merge topic 'FindDevIL-targets'

73b27f6ae8 FindDevIL: add imported targets and tests
52d3d1bdc5 FindDevIL: Format documentation of provided variables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5891
This commit is contained in:
Brad King
2021-03-19 15:20:03 +00:00
committed by Kitware Robot
7 changed files with 143 additions and 17 deletions

View File

@@ -0,0 +1,4 @@
FindDevIL
---------
* The :module:`FindDevIL` module now provides imported targets.

View File

@@ -10,26 +10,57 @@ FindDevIL
This module locates the developer's image library.
http://openil.sourceforge.net/
IMPORTED Targets
^^^^^^^^^^^^^^^^
.. versionadded:: 3.21
This module defines the :prop_tgt:`IMPORTED` targets:
``DevIL::IL``
Defined if the system has DevIL.
``DevIL::ILU``
Defined if the system has DevIL Utilities.
``DevIL::ILUT``
Defined if the system has DevIL Utility Toolkit.
Result Variables
^^^^^^^^^^^^^^^^
This module sets:
::
``IL_LIBRARIES``
The name of the IL library. These include the full path to
the core DevIL library. This one has to be linked into the
application.
IL_LIBRARIES - the name of the IL library. These include the full path to
the core DevIL library. This one has to be linked into the
application.
ILU_LIBRARIES - the name of the ILU library. Again, the full path. This
library is for filters and effects, not actual loading. It
doesn't have to be linked if the functionality it provides
is not used.
ILUT_LIBRARIES - the name of the ILUT library. Full path. This part of the
library interfaces with OpenGL. It is not strictly needed
in applications.
IL_INCLUDE_DIR - where to find the il.h, ilu.h and ilut.h files.
DevIL_FOUND - this is set to TRUE if all the above variables were set.
This will be set to false if ILU or ILUT are not found,
even if they are not needed. In most systems, if one
library is found all the others are as well. That's the
way the DevIL developers release it.
``ILU_LIBRARIES``
The name of the ILU library. Again, the full path. This
library is for filters and effects, not actual loading. It
doesn't have to be linked if the functionality it provides
is not used.
``ILUT_LIBRARIES``
The name of the ILUT library. Full path. This part of the
library interfaces with OpenGL. It is not strictly needed
in applications.
``IL_INCLUDE_DIR``
where to find the il.h, ilu.h and ilut.h files.
``DevIL_FOUND``
This is set to TRUE if all the above variables were set.
This will be set to false if ILU or ILUT are not found,
even if they are not needed. In most systems, if one
library is found all the others are as well. That's the
way the DevIL developers release it.
``DevIL_ILUT_FOUND``
.. versionadded:: 3.21
This is set to TRUE if the ILUT library is found.
#]=======================================================================]
# TODO: Add version support.
@@ -73,3 +104,36 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(DevIL DEFAULT_MSG
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()

View File

@@ -1424,6 +1424,7 @@ if(BUILD_TESTING)
CURL
Cups
Doxygen
DevIL
EnvModules
EXPAT
Fontconfig

View File

@@ -0,0 +1,10 @@
add_test(NAME FindDevIL.Test COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/FindDevIL/Test"
"${CMake_BINARY_DIR}/Tests/FindDevIL/Test"
${build_generator_args}
--build-project TestFindDevIL
--build-options ${build_options}
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)

View File

@@ -0,0 +1,29 @@
cmake_minimum_required(VERSION 3.1)
project(TestFindDevIL C)
include(CTest)
find_package(DevIL)
#FIXME: check version too.
# add_definitions(
# -DCMAKE_EXPECTED_SDL_VERSION_MAJOR=${SDL_VERSION_MAJOR}
# -DCMAKE_EXPECTED_SDL_VERSION_MINOR=${SDL_VERSION_MINOR}
# -DCMAKE_EXPECTED_SDL_VERSION_PATCH=${SDL_VERSION_PATCH})
add_executable(test_devil_var main.c)
target_include_directories(test_devil_var PRIVATE ${IL_INCLUDE_DIRS})
target_link_libraries(test_devil_var PRIVATE ${IL_LIBRARIES})
add_test(NAME test_devil_var COMMAND test_devil_var)
add_executable(test_devil_il_tgt main.c)
target_link_libraries(test_devil_il_tgt DevIL::IL)
add_test(NAME test_devil_il_tgt COMMAND test_devil_il_tgt)
add_executable(test_devil_ilu_tgt main_ilu.c)
target_link_libraries(test_devil_ilu_tgt DevIL::ILU)
add_executable(test_devil_ilu_var main_ilu.c)
target_include_directories(test_devil_ilu_var PRIVATE ${IL_INCLUDE_DIRS} ${ILU_INCLUDE_DIRS})
target_link_libraries(test_devil_ilu_var ${IL_LIBRARIES} ${ILU_LIBRARIES})
#FIXME: Check DevIL::ILUT target

View File

@@ -0,0 +1,10 @@
#include <IL/il.h>
int main()
{
// Test 1 requires to link to the library.
ilInit();
ilShutDown();
return 0;
}

View File

@@ -0,0 +1,8 @@
#include <IL/ilu.h>
int main()
{
// IL Utilities requires only initialization.
// Unlike main DevIL there are no shutdown function.
iluInit();
}