FindFreetype.cmake 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # - Locate FreeType library
  2. # This module defines
  3. # FREETYPE_LIBRARIES, the library to link against
  4. # FREETYPE_FOUND, if false, do not try to link to FREETYPE
  5. # FREETYPE_INCLUDE_DIRS, where to find headers.
  6. # This is the concatenation of the paths:
  7. # FREETYPE_INCLUDE_DIR_ft2build
  8. # FREETYPE_INCLUDE_DIR_freetype2
  9. #
  10. # $FREETYPE_DIR is an environment variable that would
  11. # correspond to the ./configure --prefix=$FREETYPE_DIR
  12. # used in building FREETYPE.
  13. # Created by Eric Wing.
  14. # Ugh, FreeType seems to use some #include trickery which
  15. # makes this harder than it should be. It looks like they
  16. # put ft2build.h in a common/easier-to-find location which
  17. # then contains a #include to a more specific header in a
  18. # more specific location (#include <freetype/config/ftheader.h>).
  19. # Then from there, they need to set a bunch of #define's
  20. # so you can do something like:
  21. # #include FT_FREETYPE_H
  22. # Unfortunately, using CMake's mechanisms like INCLUDE_DIRECTORIES()
  23. # wants explicit full paths and this trickery doesn't work too well.
  24. # I'm going to attempt to cut out the middleman and hope
  25. # everything still works.
  26. FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
  27. $ENV{FREETYPE_DIR}
  28. NO_DEFAULT_PATH
  29. PATH_SUFFIXES include
  30. )
  31. FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
  32. PATHS ${CMAKE_PREFIX_PATH}/include # Unofficial: We are proposing this.
  33. NO_DEFAULT_PATH
  34. )
  35. FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h
  36. PATHS
  37. /usr/local/X11R6/include
  38. /usr/local/X11/include
  39. /usr/X11/include
  40. /sw/include
  41. /opt/local/include
  42. /usr/freeware/include
  43. )
  44. FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
  45. $ENV{FREETYPE_DIR}/include/freetype2
  46. NO_DEFAULT_PATH
  47. )
  48. FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
  49. PATHS ${CMAKE_PREFIX_PATH}/include # Unofficial: We are proposing this.
  50. NO_DEFAULT_PATH
  51. PATH_SUFFIXES freetype2
  52. )
  53. FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
  54. /usr/local/X11R6/include
  55. /usr/local/X11/include
  56. /usr/X11/include
  57. /sw/include
  58. /opt/local/include
  59. /usr/freeware/include
  60. PATH_SUFFIXES freetype2
  61. )
  62. FIND_LIBRARY(FREETYPE_LIBRARY
  63. NAMES freetype libfreetype freetype219
  64. PATHS
  65. $ENV{FREETYPE_DIR}
  66. NO_DEFAULT_PATH
  67. PATH_SUFFIXES lib64 lib
  68. )
  69. FIND_LIBRARY(FREETYPE_LIBRARY
  70. NAMES freetype libfreetype freetype219
  71. PATHS ${CMAKE_PREFIX_PATH} # Unofficial: We are proposing this.
  72. NO_DEFAULT_PATH
  73. PATH_SUFFIXES lib64 lib
  74. )
  75. FIND_LIBRARY(FREETYPE_LIBRARY
  76. NAMES freetype libfreetype freetype219
  77. PATHS
  78. /usr/local
  79. /usr
  80. /usr/local/X11R6
  81. /usr/local/X11
  82. /usr/X11R6
  83. /usr/X11
  84. /sw
  85. /opt/local
  86. /opt/csw
  87. /opt
  88. /usr/freeware
  89. PATH_SUFFIXES lib64 lib
  90. )
  91. # set the user variables
  92. IF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
  93. SET(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
  94. ENDIF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
  95. SET(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
  96. # handle the QUIETLY and REQUIRED arguments and set PERLLIBS_FOUND to TRUE if
  97. # all listed variables are TRUE
  98. INCLUDE(FindPackageHandleStandardArgs)
  99. FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype DEFAULT_MSG FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
  100. MARK_AS_ADVANCED(FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build)