Fix FindFreetype naming and find logic

Freetype is quite complicated, copied most of the logic from the
original FindFreetype module.
This commit is contained in:
BtbN
2014-08-21 02:20:05 +02:00
parent 997b4f9161
commit 5ec0d2ded4
2 changed files with 57 additions and 38 deletions

View File

@@ -1,16 +1,12 @@
# Once done these will be defined:
#
# LIBFREETYPE_FOUND
# LIBFREETYPE_INCLUDE_DIRS
# LIBFREETYPE_LIBRARIES
#
# For use in OBS:
#
# FREETYPE_INCLUDE_DIR
# FREETYPE_FOUND
# FREETYPE_INCLUDE_DIRS
# FREETYPE_LIBRARIES
#
if(LIBFREETYPE_INCLUDE_DIRS AND LIBFREETYPE_LIBRARIES)
set(LIBFREETYPE_FOUND TRUE)
if(FREETYPE_INCLUDE_DIRS AND FREETYPE_LIBRARIES)
set(FREETYPE_FOUND TRUE)
else()
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
@@ -23,38 +19,62 @@ else()
set(_lib_suffix 32)
endif()
set(FREETYPE_PATH_ARCH FreetypePath${_lib_suffix})
find_path(FREETYPE_INCLUDE_DIR_ft2build
NAMES
ft2build.h
HINTS
${_FREETYPE_INCLUDE_DIRS}
"${CMAKE_SOURCE_DIR}/additional_install_files/include"
"$ENV{obsAdditionalInstallFiles}/include"
ENV FreetypePath${_lib_suffix}
ENV FreetypePath
ENV FREETYPE_DIR
PATHS
/usr/include /usr/local/include /opt/local/include /sw/include
PATH_SUFFIXES
include/freetype2 include)
if (NOT _FREETYPE_INCLUDE_DIRS STREQUAL "")
set (FREETYPE_INCLUDE_DIR ${_FREETYPE_INCLUDE_DIRS})
else()
find_path(FREETYPE_INCLUDE_DIR
NAMES ft2build.h
HINTS
${_FREETYPE_INCLUDE_DIRS}
"${CMAKE_SOURCE_DIR}/additional_install_files/include"
"$ENV{obsAdditionalInstallFiles}/include"
ENV FreetypePath
ENV ${FREETYPE_PATH_ARCH}
PATHS
/usr/include /usr/local/include /opt/local/include /sw/include)
endif()
find_path(FREETYPE_INCLUDE_DIR_freetype2
NAMES
freetype/config/ftheader.h
config/ftheader.h
HINTS
${_FREETYPE_INCLUDE_DIRS}
"${CMAKE_SOURCE_DIR}/additional_install_files/include"
"$ENV{obsAdditionalInstallFiles}/include"
ENV FreetypePath${_lib_suffix}
ENV FreetypePath
ENV FREETYPE_DIR
PATHS
/usr/include /usr/local/include /opt/local/include /sw/include
PATH_SUFFIXES
include/freetype2 include)
find_library(FREETYPE_LIB
NAMES ${_FREETYPE_LIBRARIES} freetype libfreetype
HINTS
${_FREETYPE_LIBRARY_DIRS}
"${FREETYPE_INCLUDE_DIR}/../lib"
"${FREETYPE_INCLUDE_DIR}/../lib${_lib_suffix}"
"${FREETYPE_INCLUDE_DIR}/../libs${_lib_suffix}"
"${FREETYPE_INCLUDE_DIR}/lib"
"${FREETYPE_INCLUDE_DIR}/lib${_lib_suffix}"
"${FREETYPE_INCLUDE_DIR_ft2build}/../lib"
"${FREETYPE_INCLUDE_DIR_ft2build}/../lib${_lib_suffix}"
"${FREETYPE_INCLUDE_DIR_ft2build}/../libs${_lib_suffix}"
"${FREETYPE_INCLUDE_DIR_ft2build}/lib"
"${FREETYPE_INCLUDE_DIR_ft2build}/lib${_lib_suffix}"
ENV FREETYPE_DIR
PATHS
/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
/usr/lib /usr/local/lib /opt/local/lib /sw/lib
PATH_SUFFIXES
lib${_lib_suffix} lib)
set(LIBFREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR} CACHE PATH "freetype include dir")
set(LIBFREETYPE_LIBRARIES ${FREETYPE_LIB} CACHE STRING "freetype libraries")
if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
set(FREETYPE_INCLUDE_DIR "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
list(REMOVE_DUPLICATES FREETYPE_INCLUDE_DIR)
else()
unset(FREETYPE_INCLUDE_DIR)
endif()
find_package_handle_standard_args(Libfreetype DEFAULT_MSG FREETYPE_LIB FREETYPE_INCLUDE_DIR)
mark_as_advanced(FREETYPE_INCLUDE_DIR FREETYPE_LIB)
set(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR} CACHE PATH "freetype include dirs")
set(FREETYPE_LIBRARIES ${FREETYPE_LIB} CACHE STRING "freetype libraries")
find_package_handle_standard_args(Freetype DEFAULT_MSG FREETYPE_LIB FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2)
mark_as_advanced(FREETYPE_INCLUDE_DIR FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_LIB)
endif()