summaryrefslogtreecommitdiffstats
path: root/cmake/FindWrapSystemPNG.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindWrapSystemPNG.cmake')
-rw-r--r--cmake/FindWrapSystemPNG.cmake49
1 files changed, 31 insertions, 18 deletions
diff --git a/cmake/FindWrapSystemPNG.cmake b/cmake/FindWrapSystemPNG.cmake
index dc42c731fb..967ccc5c02 100644
--- a/cmake/FindWrapSystemPNG.cmake
+++ b/cmake/FindWrapSystemPNG.cmake
@@ -1,29 +1,42 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
# We can't create the same interface imported target multiple times, CMake will complain if we do
# that. This can happen if the find_package call is done in multiple different subdirectories.
if(TARGET WrapSystemPNG::WrapSystemPNG)
- set(WrapSystemPNG_FOUND ON)
+ set(WrapSystemPNG_FOUND TRUE)
return()
endif()
+set(WrapSystemPNG_REQUIRED_VARS __png_found)
-set(WrapSystemPNG_FOUND OFF)
-
-find_package(PNG QUIET)
+find_package(PNG ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} QUIET)
-if(PNG_FOUND)
- set(potential_target_names PNG::PNG)
- foreach(target_name ${potential_target_names})
- if(TARGET ${target_name})
- set(WrapSystemPNG_FOUND ON)
- set(final_target_name ${target_name})
-
- add_library(WrapSystemPNG::WrapSystemPNG INTERFACE IMPORTED)
- target_link_libraries(WrapSystemPNG::WrapSystemPNG INTERFACE
- ${final_target_name})
+set(__png_target_name "PNG::PNG")
+if(PNG_FOUND AND TARGET "${__png_target_name}")
+ set(__png_found TRUE)
+ if(PNG_VERSION)
+ set(WrapSystemPNG_VERSION "${PNG_VERSION}")
+ endif()
+endif()
- break()
- endif()
- endforeach()
+if(PNG_LIBRARIES)
+ list(PREPEND WrapSystemPNG_REQUIRED_VARS PNG_LIBRARIES)
+endif()
+if(PNG_VERSION)
+ set(WrapSystemPNG_VERSION "${PNG_VERSION}")
+elseif(PNG_VERSION_STRING)
+ set(WrapSystemPNG_VERSION "${PNG_VERSION_STRING}")
endif()
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(WrapSystemPNG DEFAULT_MSG WrapSystemPNG_FOUND)
+find_package_handle_standard_args(WrapSystemPNG
+ REQUIRED_VARS ${WrapSystemPNG_REQUIRED_VARS}
+ VERSION_VAR WrapSystemPNG_VERSION)
+
+if(WrapSystemPNG_FOUND)
+ add_library(WrapSystemPNG::WrapSystemPNG INTERFACE IMPORTED)
+ target_link_libraries(WrapSystemPNG::WrapSystemPNG
+ INTERFACE "${__png_target_name}")
+endif()
+unset(__png_target_name)
+unset(__png_found)