Files
MiniGUI/cmake/FindPNG.cmake
2017-05-29 12:20:05 +08:00

45 lines
1.8 KiB
CMake

# - This module determines the png library of the system
# The following variables are set if the library found:
# PNG_FOUND - If false do nnt try to use png.
# PNG_INCLUDE_DIR - where to find the headfile of library.
# PNG_LIBRARY_DIR - where to find the png library.
# PNG_LIBRARY - the library needed to use png.
# find the headfile of library
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ./)
include (FindZLIB)
if (ZLIB_FOUND)
set (PNG_HEADS png.h)
find_path (PNG_INCLUDE_DIR ${PNG_HEADS})
set (PNG_NAMES png libpng png12 libpng12)
find_library (PNG_LIBRARY NAMES ${PNG_NAMES})
# just find one of dependency, guess other one.
if (NOT PNG_LIBRARY AND PNG_INCLUDE_DIR)
message ("We just find the headfile, try to guess the library location.")
set (PNG_LIBRARY_DIR "${PNG_INCLUDE_DIR}/../lib")
find_library (PNG_LIBRARY NAMES ${PNG_NAMES} PATHS ${PNG_LIBRARY_DIR})
elseif (NOT PNG_INCLUDE_DIR AND PNG_LIBRARY)
message ("We just find the lib file, try to guess the include location.")
string (REGEX REPLACE "[a-z|A-Z|0-9|_|-]+[.].*$" "" PNG_LIBRARY_DIR ${PNG_LIBRARY})
find_path (PNG_INCLUDE_DIR ${PNG_HEADS} "${PNG_LIBRARY_DIR}../included")
endif()
# find the library.
if (PNG_INCLUDE_DIR AND PNG_LIBRARY)
set (PNG_FOUND TRUE)
if (NOT PNG_LIBRARY_DIR)
string (REGEX REPLACE "[a-z|A-Z|0-9|_|-]+[.].*$" "" PNG_LIBRARY_DIR ${PNG_LIBRARY})
endif ()
string (REGEX MATCH "[a-z|A-Z|0-9|_|-]+[.](a|so|lib|dll|LIB|DLL)[^/]*$" PNG_LIBRARY_WHOLE_NAME "${PNG_LIBRARY}")
string (REGEX MATCH "[^(lib)][a-z|A-Z|0-9|_|-]+" PNG_LIBRARY_NAME ${PNG_LIBRARY_WHOLE_NAME})
message (STATUS "Find PNG include in ${PNG_INCLUDE_DIR}")
message (STATUS "Find PNG library in ${PNG_LIBRARY}")
else ()
message (STATUS "Could NOT find PNG, (missing: PNG_INCLUDE_DIR PNG_LIBRARY)")
endif ()
endif (ZLIB_FOUND)