John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 1 | # CMakeLists.txt |
| 2 | # |
Werner Lemberg | b6e8a71 | 2021-01-17 07:18:48 +0100 | [diff] [blame] | 3 | # Copyright (C) 2013-2021 by |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 4 | # David Turner, Robert Wilhelm, and Werner Lemberg. |
| 5 | # |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 6 | # Written originally by John Cary <cary@txcorp.com> |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 7 | # |
| 8 | # This file is part of the FreeType project, and may only be used, modified, |
| 9 | # and distributed under the terms of the FreeType project license, |
| 10 | # LICENSE.TXT. By continuing to use, modify, or distribute this file you |
| 11 | # indicate that you have read the license and understand and accept it |
| 12 | # fully. |
| 13 | # |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 14 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 15 | # The following will (1) create a build directory, and (2) change into it and |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 16 | # call cmake to configure the build with default parameters as a static |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 17 | # library. See |
| 18 | # |
| 19 | # https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html |
| 20 | # |
| 21 | # for information about debug or release builds, for example |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 22 | # |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 23 | # cmake -B build -D CMAKE_BUILD_TYPE=Release |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 24 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 25 | # |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 26 | # For a dynamic library, use |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 27 | # |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 28 | # cmake -B build -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 29 | # |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 30 | # For a framework on OS X, use |
| 31 | # |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 32 | # cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true .. |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 33 | # |
| 34 | # For an iOS static library, use |
| 35 | # |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 36 | # cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS .. |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 37 | # |
| 38 | # or |
| 39 | # |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 40 | # cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR .. |
| 41 | # |
Nikolaus Waxweiler | bfbde79 | 2018-06-10 13:19:31 +0100 | [diff] [blame] | 42 | # or |
| 43 | # |
| 44 | # cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 .. |
| 45 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 46 | # |
| 47 | # Finally, build the project with |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 48 | # |
| 49 | # cmake --build build |
| 50 | # |
| 51 | # Install it with |
| 52 | # |
| 53 | # (sudo) cmake --build build --target install |
| 54 | # |
| 55 | # A binary distribution can be made with |
| 56 | # |
| 57 | # cmake --build build --config Release --target package |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 58 | # |
| 59 | # Please refer to the cmake manual for further options, in particular, how |
| 60 | # to modify compilation and linking parameters. |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 61 | # |
| 62 | # Some notes. |
| 63 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 64 | # - `cmake' creates configuration files in |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 65 | # |
| 66 | # <build-directory>/include/freetype/config |
| 67 | # |
| 68 | # which should be further modified if necessary. |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 69 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 70 | # - You can use `cmake' directly on a freshly cloned FreeType git |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 71 | # repository. |
| 72 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 73 | # - `CMakeLists.txt' is provided as-is since it is normally not used by the |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 74 | # developer team. |
Alexander Bock | 8f982b3 | 2015-11-27 06:34:39 +0100 | [diff] [blame] | 75 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 76 | # - Set the `FT_REQUIRE_ZLIB', `FT_REQUIRE_BZIP2', `FT_REQUIRE_PNG', |
| 77 | # `FT_REQUIRE_HARFBUZZ', and `FT_REQUIRE_BROTLI' CMake variables to `ON' |
| 78 | # or `TRUE' to force using a dependency. Leave a variable undefined |
| 79 | # (which is the default) to use the dependency only if it is available. |
| 80 | # Example: |
Werner Lemberg | 3de1b8d | 2019-09-05 14:10:01 +0200 | [diff] [blame] | 81 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 82 | # cmake -B build -D FT_REQUIRE_ZLIB=TRUE \ |
| 83 | # -D FT_REQUIRE_BZIP2=TRUE \ |
| 84 | # -D FT_REQUIRE_PNG=TRUE \ |
| 85 | # -D FT_REQUIRE_HARFBUZZ=TRUE \ |
| 86 | # -D FT_REQUIRE_BROTLI=TRUE [...] |
Tamas Kenez | da97b4c | 2015-11-27 07:11:42 +0100 | [diff] [blame] | 87 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 88 | # - Set `FT_DISABLE_XXX=TRUE' to disable a dependency completely (where |
| 89 | # `XXX' is a CMake package name like `BZip2'). Example for disabling all |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 90 | # dependencies: |
| 91 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 92 | # cmake -B build -D FT_DISABLE_ZLIB=TRUE \ |
| 93 | # -D FT_DISABLE_BZIP2=TRUE \ |
| 94 | # -D FT_DISABLE_PNG=TRUE \ |
| 95 | # -D FT_DISABLE_HARFBUZZ=TRUE \ |
| 96 | # -D FT_DISABLE_BROTLI=TRUE [...] |
David Capello | 9224f05 | 2016-04-16 10:24:24 +0200 | [diff] [blame] | 97 | # |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 98 | # - NOTE: If a package is set as DISABLED, it cannot be set as REQUIRED |
| 99 | # without unsetting the DISABLED value first. For example, if |
| 100 | # `FT_DISABLE_HARFBUZZ=TRUE' has been set (Cache is present), you need to |
| 101 | # call `FT_DISABLE_HARFBUZZ=FALSE' before calling |
| 102 | # `FT_REQUIRE_HARFBUZZ=TRUE'. |
| 103 | # |
| 104 | # - Installation of FreeType can be controlled with the CMake variables |
David Capello | 9224f05 | 2016-04-16 10:24:24 +0200 | [diff] [blame] | 105 | # `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' |
| 106 | # (this is compatible with the same CMake variables in zlib's CMake |
| 107 | # support). |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 108 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 109 | # FreeType explicitly marks the API to be exported and relies on the compiler |
| 110 | # to hide all other symbols. CMake supports a C_VISBILITY_PRESET property |
| 111 | # starting with 2.8.12. |
| 112 | cmake_minimum_required(VERSION 2.8.12) |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 113 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 114 | if (NOT CMAKE_VERSION VERSION_LESS 3.3) |
| 115 | # Allow symbol visibility settings also on static libraries. CMake < 3.3 |
Werner Lemberg | 12351ee | 2019-09-05 12:02:59 +0200 | [diff] [blame] | 116 | # only sets the property on a shared library build. |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 117 | cmake_policy(SET CMP0063 NEW) |
Nikolaus Waxweiler | ebf9e5a | 2021-05-15 22:36:00 +0100 | [diff] [blame] | 118 | |
| 119 | # Support new IN_LIST if() operator. |
| 120 | cmake_policy(SET CMP0057 NEW) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 121 | endif () |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 122 | |
| 123 | include(CheckIncludeFile) |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 124 | include(CMakeDependentOption) |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 125 | |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 126 | # CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which |
| 127 | # configures the base build environment and references the toolchain file |
| 128 | if (APPLE) |
| 129 | if (DEFINED IOS_PLATFORM) |
| 130 | if (NOT "${IOS_PLATFORM}" STREQUAL "OS" |
Nikolaus Waxweiler | bfbde79 | 2018-06-10 13:19:31 +0100 | [diff] [blame] | 131 | AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR" |
| 132 | AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64") |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 133 | message(FATAL_ERROR |
Nikolaus Waxweiler | bfbde79 | 2018-06-10 13:19:31 +0100 | [diff] [blame] | 134 | "IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64") |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 135 | endif () |
| 136 | if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") |
| 137 | message(AUTHOR_WARNING |
| 138 | "You should use Xcode generator with IOS_PLATFORM enabled to get Universal builds.") |
| 139 | endif () |
| 140 | if (BUILD_SHARED_LIBS) |
| 141 | message(FATAL_ERROR |
| 142 | "BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled") |
| 143 | endif () |
| 144 | if (BUILD_FRAMEWORK) |
| 145 | message(FATAL_ERROR |
| 146 | "BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled") |
| 147 | endif () |
| 148 | |
| 149 | # iOS only uses static libraries |
| 150 | set(BUILD_SHARED_LIBS OFF) |
| 151 | |
| 152 | set(CMAKE_TOOLCHAIN_FILE |
Werner Lemberg | 10265db | 2016-03-11 06:50:23 +0100 | [diff] [blame] | 153 | ${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake) |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 154 | endif () |
| 155 | else () |
| 156 | if (DEFINED IOS_PLATFORM) |
| 157 | message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform") |
| 158 | endif () |
| 159 | endif () |
| 160 | |
Werner Lemberg | 22479ca | 2015-06-28 10:26:33 +0200 | [diff] [blame] | 161 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 162 | project(freetype C) |
| 163 | |
| 164 | set(VERSION_MAJOR "2") |
Werner Lemberg | 801cd84 | 2021-07-18 07:53:57 +0200 | [diff] [blame] | 165 | set(VERSION_MINOR "11") |
Werner Lemberg | 3f83dae | 2021-12-01 20:17:59 +0100 | [diff] [blame] | 166 | set(VERSION_PATCH "1") |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 167 | |
Werner Lemberg | 12351ee | 2019-09-05 12:02:59 +0200 | [diff] [blame] | 168 | # Generate LIBRARY_VERSION and LIBRARY_SOVERSION. |
| 169 | set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'") |
| 170 | file(STRINGS "${PROJECT_SOURCE_DIR}/builds/unix/configure.raw" |
| 171 | VERSION_INFO |
| 172 | REGEX ${LIBTOOL_REGEX}) |
| 173 | string(REGEX REPLACE |
| 174 | ${LIBTOOL_REGEX} "\\1" |
| 175 | LIBTOOL_CURRENT "${VERSION_INFO}") |
| 176 | string(REGEX REPLACE |
| 177 | ${LIBTOOL_REGEX} "\\2" |
| 178 | LIBTOOL_REVISION "${VERSION_INFO}") |
| 179 | string(REGEX REPLACE |
| 180 | ${LIBTOOL_REGEX} "\\3" |
| 181 | LIBTOOL_AGE "${VERSION_INFO}") |
| 182 | |
| 183 | # This is what libtool does internally on Unix platforms. |
| 184 | math(EXPR LIBRARY_SOVERSION "${LIBTOOL_CURRENT} - ${LIBTOOL_AGE}") |
| 185 | set(LIBRARY_VERSION "${LIBRARY_SOVERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION}") |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 186 | |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 187 | # External dependency library detection is automatic. See the notes at the |
| 188 | # top of this file, for how to force or disable dependencies completely. |
| 189 | option(FT_DISABLE_ZLIB |
| 190 | "Disable use of system zlib and use internal zlib library instead." OFF) |
| 191 | cmake_dependent_option(FT_REQUIRE_ZLIB |
| 192 | "Require system zlib instead of internal zlib library." OFF |
| 193 | "NOT FT_DISABLE_ZLIB" OFF) |
| 194 | |
| 195 | option(FT_DISABLE_BZIP2 |
| 196 | "Disable support of bzip2 compressed fonts." OFF) |
| 197 | cmake_dependent_option(FT_REQUIRE_BZIP2 |
| 198 | "Require support of bzip2 compressed fonts." OFF |
| 199 | "NOT FT_DISABLE_BZIP2" OFF) |
| 200 | |
| 201 | option(FT_DISABLE_PNG |
| 202 | "Disable support of PNG compressed OpenType embedded bitmaps." OFF) |
| 203 | cmake_dependent_option(FT_REQUIRE_PNG |
| 204 | "Require support of PNG compressed OpenType embedded bitmaps." OFF |
| 205 | "NOT FT_DISABLE_PNG" OFF) |
| 206 | |
| 207 | option(FT_DISABLE_HARFBUZZ |
| 208 | "Disable HarfBuzz (used for improving auto-hinting of OpenType fonts)." OFF) |
| 209 | cmake_dependent_option(FT_REQUIRE_HARFBUZZ |
| 210 | "Require HarfBuzz for improving auto-hinting of OpenType fonts." OFF |
| 211 | "NOT FT_DISABLE_HARFBUZZ" OFF) |
| 212 | |
| 213 | option(FT_DISABLE_BROTLI |
| 214 | "Disable support of compressed WOFF2 fonts." OFF) |
| 215 | cmake_dependent_option(FT_REQUIRE_BROTLI |
| 216 | "Require support of compressed WOFF2 fonts." OFF |
| 217 | "NOT FT_DISABLE_BROTLI" OFF) |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 218 | |
Werner Lemberg | 22479ca | 2015-06-28 10:26:33 +0200 | [diff] [blame] | 219 | |
| 220 | # Disallow in-source builds |
Nikolaus Waxweiler | f7b4fb3 | 2018-05-07 23:10:36 +0100 | [diff] [blame] | 221 | if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") |
Werner Lemberg | 22479ca | 2015-06-28 10:26:33 +0200 | [diff] [blame] | 222 | message(FATAL_ERROR |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 223 | "In-source builds are not permitted! Make a separate folder for" |
| 224 | " building, e.g.,\n" |
| 225 | " cmake -E make_directory build\n" |
| 226 | " cmake -E chdir build cmake ..\n" |
| 227 | "Before that, remove the files created by this failed run with\n" |
| 228 | " cmake -E remove CMakeCache.txt\n" |
| 229 | " cmake -E remove_directory CMakeFiles") |
Werner Lemberg | 22479ca | 2015-06-28 10:26:33 +0200 | [diff] [blame] | 230 | endif () |
| 231 | |
| 232 | |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 233 | # Add local cmake modules |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 234 | list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake) |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 235 | |
| 236 | |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 237 | if (BUILD_FRAMEWORK) |
| 238 | if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") |
Werner Lemberg | 54306f5 | 2014-10-18 10:42:28 +0200 | [diff] [blame] | 239 | message(FATAL_ERROR |
| 240 | "You should use Xcode generator with BUILD_FRAMEWORK enabled") |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 241 | endif () |
| 242 | set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)") |
| 243 | set(BUILD_SHARED_LIBS ON) |
| 244 | endif () |
| 245 | |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 246 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 247 | # Find dependencies |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 248 | if (NOT FT_DISABLE_HARFBUZZ) |
| 249 | set(HARFBUZZ_MIN_VERSION "2.0.0") |
| 250 | if (FT_REQUIRE_HARFBUZZ) |
| 251 | find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION} REQUIRED) |
| 252 | else () |
| 253 | find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION}) |
| 254 | endif () |
Steve Robinson | 707cd02 | 2018-01-10 07:48:39 +0100 | [diff] [blame] | 255 | endif () |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 256 | |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 257 | if (NOT FT_DISABLE_PNG) |
| 258 | if (FT_REQUIRE_PNG) |
| 259 | find_package(PNG REQUIRED) |
| 260 | else () |
| 261 | find_package(PNG) |
| 262 | endif () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 263 | endif () |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 264 | |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 265 | if (NOT FT_DISABLE_ZLIB) |
| 266 | if (FT_REQUIRE_ZLIB) |
| 267 | find_package(ZLIB REQUIRED) |
| 268 | else () |
| 269 | find_package(ZLIB) |
| 270 | endif () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 271 | endif () |
Tamas Kenez | da97b4c | 2015-11-27 07:11:42 +0100 | [diff] [blame] | 272 | |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 273 | if (NOT FT_DISABLE_BZIP2) |
| 274 | if (FT_REQUIRE_BZIP2) |
| 275 | find_package(BZip2 REQUIRED) |
| 276 | else () |
| 277 | find_package(BZip2) |
| 278 | endif () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 279 | endif () |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 280 | |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 281 | if (NOT FT_DISABLE_BROTLI) |
| 282 | if (FT_REQUIRE_BROTLI) |
| 283 | find_package(BrotliDec REQUIRED) |
| 284 | else () |
| 285 | find_package(BrotliDec) |
| 286 | endif () |
Werner Lemberg | 3de1b8d | 2019-09-05 14:10:01 +0200 | [diff] [blame] | 287 | endif () |
| 288 | |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 289 | # Create the configuration file |
Werner Lemberg | 68222dd | 2015-06-25 16:38:11 +0200 | [diff] [blame] | 290 | if (UNIX) |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 291 | check_include_file("unistd.h" HAVE_UNISTD_H) |
| 292 | check_include_file("fcntl.h" HAVE_FCNTL_H) |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 293 | |
David Turner | a4d9206 | 2020-07-02 10:10:25 +0200 | [diff] [blame] | 294 | file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.h.in" |
Werner Lemberg | 68222dd | 2015-06-25 16:38:11 +0200 | [diff] [blame] | 295 | FTCONFIG_H) |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 296 | if (HAVE_UNISTD_H) |
| 297 | string(REGEX REPLACE |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 298 | "#undef +(HAVE_UNISTD_H)" "#define \\1 1" |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 299 | FTCONFIG_H "${FTCONFIG_H}") |
| 300 | endif () |
| 301 | if (HAVE_FCNTL_H) |
| 302 | string(REGEX REPLACE |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 303 | "#undef +(HAVE_FCNTL_H)" "#define \\1 1" |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 304 | FTCONFIG_H "${FTCONFIG_H}") |
| 305 | endif () |
Minmin Gong | ebe3750 | 2019-04-15 10:46:19 +0200 | [diff] [blame] | 306 | else () |
Nikolaus Waxweiler | 660afb5 | 2018-05-02 23:19:55 +0100 | [diff] [blame] | 307 | file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" |
| 308 | FTCONFIG_H) |
Werner Lemberg | 68222dd | 2015-06-25 16:38:11 +0200 | [diff] [blame] | 309 | endif () |
Minmin Gong | ebe3750 | 2019-04-15 10:46:19 +0200 | [diff] [blame] | 310 | |
| 311 | set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") |
| 312 | if (EXISTS "${FTCONFIG_H_NAME}") |
| 313 | file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H) |
| 314 | else () |
| 315 | set(ORIGINAL_FTCONFIG_H "") |
| 316 | endif () |
| 317 | if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H)) |
| 318 | file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}") |
| 319 | endif () |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 320 | |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 321 | |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 322 | # Create the options file |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 323 | file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h" |
| 324 | FTOPTION_H) |
| 325 | if (ZLIB_FOUND) |
| 326 | string(REGEX REPLACE |
| 327 | "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1" |
| 328 | FTOPTION_H "${FTOPTION_H}") |
| 329 | endif () |
| 330 | if (BZIP2_FOUND) |
| 331 | string(REGEX REPLACE |
| 332 | "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1" |
| 333 | FTOPTION_H "${FTOPTION_H}") |
| 334 | endif () |
| 335 | if (PNG_FOUND) |
| 336 | string(REGEX REPLACE |
| 337 | "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1" |
| 338 | FTOPTION_H "${FTOPTION_H}") |
| 339 | endif () |
| 340 | if (HARFBUZZ_FOUND) |
| 341 | string(REGEX REPLACE |
| 342 | "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" |
| 343 | FTOPTION_H "${FTOPTION_H}") |
| 344 | endif () |
Werner Lemberg | 3de1b8d | 2019-09-05 14:10:01 +0200 | [diff] [blame] | 345 | if (BROTLIDEC_FOUND) |
| 346 | string(REGEX REPLACE |
| 347 | "/\\* +(#define +FT_CONFIG_OPTION_USE_BROTLI) +\\*/" "\\1" |
| 348 | FTOPTION_H "${FTOPTION_H}") |
| 349 | endif () |
Minmin Gong | ebe3750 | 2019-04-15 10:46:19 +0200 | [diff] [blame] | 350 | |
| 351 | set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") |
| 352 | if (EXISTS "${FTOPTION_H_NAME}") |
| 353 | file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H) |
| 354 | else () |
| 355 | set(ORIGINAL_FTOPTION_H "") |
| 356 | endif () |
| 357 | if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H)) |
| 358 | file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}") |
| 359 | endif () |
Werner Lemberg | 97b757d | 2015-06-28 10:42:47 +0200 | [diff] [blame] | 360 | |
| 361 | |
Werner Lemberg | 392cf22 | 2015-06-25 13:04:57 +0200 | [diff] [blame] | 362 | file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h") |
| 363 | file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h") |
| 364 | file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h") |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 365 | |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 366 | |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 367 | set(BASE_SRCS |
| 368 | src/autofit/autofit.c |
Werner Lemberg | 5ef5a4f | 2015-06-25 15:45:13 +0200 | [diff] [blame] | 369 | src/base/ftbase.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 370 | src/base/ftbbox.c |
Pavel Koshevoy | 15da66a | 2014-05-13 07:33:48 +0200 | [diff] [blame] | 371 | src/base/ftbdf.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 372 | src/base/ftbitmap.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 373 | src/base/ftcid.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 374 | src/base/ftfstype.c |
| 375 | src/base/ftgasp.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 376 | src/base/ftglyph.c |
| 377 | src/base/ftgxval.c |
| 378 | src/base/ftinit.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 379 | src/base/ftmm.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 380 | src/base/ftotval.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 381 | src/base/ftpatent.c |
| 382 | src/base/ftpfr.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 383 | src/base/ftstroke.c |
| 384 | src/base/ftsynth.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 385 | src/base/fttype1.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 386 | src/base/ftwinfnt.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 387 | src/bdf/bdf.c |
| 388 | src/bzip2/ftbzip2.c |
| 389 | src/cache/ftcache.c |
| 390 | src/cff/cff.c |
| 391 | src/cid/type1cid.c |
| 392 | src/gzip/ftgzip.c |
| 393 | src/lzw/ftlzw.c |
| 394 | src/pcf/pcf.c |
| 395 | src/pfr/pfr.c |
| 396 | src/psaux/psaux.c |
| 397 | src/pshinter/pshinter.c |
Werner Lemberg | 5ef5a4f | 2015-06-25 15:45:13 +0200 | [diff] [blame] | 398 | src/psnames/psnames.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 399 | src/raster/raster.c |
Anuj Verma | c6f394b | 2020-08-20 08:28:14 +0530 | [diff] [blame] | 400 | src/sdf/sdf.c |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 401 | src/sfnt/sfnt.c |
| 402 | src/smooth/smooth.c |
| 403 | src/truetype/truetype.c |
| 404 | src/type1/type1.c |
| 405 | src/type42/type42.c |
| 406 | src/winfonts/winfnt.c |
| 407 | ) |
| 408 | |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 409 | if (UNIX) |
| 410 | list(APPEND BASE_SRCS "builds/unix/ftsystem.c") |
Vincent Torri | bb33f03 | 2021-01-27 06:43:41 -0500 | [diff] [blame] | 411 | elseif (WIN32) |
| 412 | list(APPEND BASE_SRCS "builds/windows/ftsystem.c") |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 413 | else () |
| 414 | list(APPEND BASE_SRCS "src/base/ftsystem.c") |
| 415 | endif () |
| 416 | |
Werner Lemberg | 94c79c2 | 2015-06-26 06:46:59 +0200 | [diff] [blame] | 417 | if (WIN32) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 418 | enable_language(RC) |
| 419 | list(APPEND BASE_SRCS builds/windows/ftdebug.c |
| 420 | src/base/ftver.rc) |
Werner Lemberg | 94c79c2 | 2015-06-26 06:46:59 +0200 | [diff] [blame] | 421 | elseif (WINCE) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 422 | list(APPEND BASE_SRCS builds/wince/ftdebug.c) |
Werner Lemberg | 94c79c2 | 2015-06-26 06:46:59 +0200 | [diff] [blame] | 423 | else () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 424 | list(APPEND BASE_SRCS src/base/ftdebug.c) |
Werner Lemberg | 94c79c2 | 2015-06-26 06:46:59 +0200 | [diff] [blame] | 425 | endif () |
| 426 | |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 427 | if (BUILD_FRAMEWORK) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 428 | list(APPEND BASE_SRCS builds/mac/freetype-Info.plist) |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 429 | endif () |
| 430 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 431 | |
yuri_levchenko | af585ad | 2017-11-09 13:38:26 +0200 | [diff] [blame] | 432 | if (NOT DISABLE_FORCE_DEBUG_POSTFIX) |
| 433 | set(CMAKE_DEBUG_POSTFIX d) |
Minmin Gong | ebe3750 | 2019-04-15 10:46:19 +0200 | [diff] [blame] | 434 | endif () |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 435 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 436 | |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 437 | add_library(freetype |
| 438 | ${PUBLIC_HEADERS} |
| 439 | ${PUBLIC_CONFIG_HEADERS} |
| 440 | ${PRIVATE_HEADERS} |
| 441 | ${BASE_SRCS} |
| 442 | ) |
| 443 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 444 | set_target_properties( |
| 445 | freetype PROPERTIES |
| 446 | C_VISIBILITY_PRESET hidden) |
| 447 | |
| 448 | target_compile_definitions( |
| 449 | freetype PRIVATE FT2_BUILD_LIBRARY) |
| 450 | |
| 451 | if (WIN32) |
| 452 | target_compile_definitions( |
| 453 | freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS) |
Alexei Podtelezhnikov | 4b97ab9 | 2018-07-24 23:01:34 -0400 | [diff] [blame] | 454 | if (BUILD_SHARED_LIBS) |
| 455 | target_compile_definitions( |
| 456 | freetype PRIVATE DLL_EXPORT) |
| 457 | endif () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 458 | endif () |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 459 | |
Werner Lemberg | a82c45d | 2015-08-02 18:35:49 +0200 | [diff] [blame] | 460 | if (BUILD_SHARED_LIBS) |
| 461 | set_target_properties(freetype PROPERTIES |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 462 | VERSION ${LIBRARY_VERSION} |
| 463 | SOVERSION ${LIBRARY_SOVERSION}) |
Werner Lemberg | a82c45d | 2015-08-02 18:35:49 +0200 | [diff] [blame] | 464 | endif () |
| 465 | |
Nikolaus Waxweiler | f7b4fb3 | 2018-05-07 23:10:36 +0100 | [diff] [blame] | 466 | # Pick up ftconfig.h and ftoption.h generated above, first. |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 467 | target_include_directories( |
| 468 | freetype |
Nikolaus Waxweiler | f7b4fb3 | 2018-05-07 23:10:36 +0100 | [diff] [blame] | 469 | PUBLIC |
| 470 | $<INSTALL_INTERFACE:include/freetype2> |
| 471 | $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include> |
| 472 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
Werner Lemberg | d91f752 | 2018-08-31 07:34:30 +0200 | [diff] [blame] | 473 | PRIVATE |
Nikolaus Waxweiler | f7b4fb3 | 2018-05-07 23:10:36 +0100 | [diff] [blame] | 474 | ${CMAKE_CURRENT_BINARY_DIR}/include |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 475 | ${CMAKE_CURRENT_SOURCE_DIR}/include |
AnuthaDev | 1f742f0 | 2021-07-20 20:00:10 +0530 | [diff] [blame] | 476 | |
Nikolaus Waxweiler | 3aaae71 | 2019-11-07 23:39:41 +0000 | [diff] [blame] | 477 | # Make <ftconfig.h> available for builds/unix/ftsystem.c. |
| 478 | ${CMAKE_CURRENT_BINARY_DIR}/include/freetype/config |
| 479 | ) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 480 | |
Werner Lemberg | a82c45d | 2015-08-02 18:35:49 +0200 | [diff] [blame] | 481 | |
Alexey Petruchik | 02f2170 | 2014-05-16 08:09:43 +0200 | [diff] [blame] | 482 | if (BUILD_FRAMEWORK) |
| 483 | set_property(SOURCE ${PUBLIC_CONFIG_HEADERS} |
| 484 | PROPERTY MACOSX_PACKAGE_LOCATION Headers/config |
| 485 | ) |
| 486 | set_target_properties(freetype PROPERTIES |
| 487 | FRAMEWORK TRUE |
| 488 | MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist |
| 489 | PUBLIC_HEADER "${PUBLIC_HEADERS}" |
| 490 | XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" |
| 491 | ) |
| 492 | endif () |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 493 | |
Tamas Kenez | c80620c | 2015-11-27 18:37:21 +0100 | [diff] [blame] | 494 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 495 | set(PKG_CONFIG_REQUIRED_PRIVATE "") |
Daniel E | b2aeca5 | 2021-02-14 20:25:21 +0000 | [diff] [blame] | 496 | set(PKG_CONFIG_LIBS_PRIVATE "") |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 497 | |
| 498 | if (ZLIB_FOUND) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 499 | target_link_libraries(freetype PRIVATE ${ZLIB_LIBRARIES}) |
| 500 | target_include_directories(freetype PRIVATE ${ZLIB_INCLUDE_DIRS}) |
Werner Lemberg | 12351ee | 2019-09-05 12:02:59 +0200 | [diff] [blame] | 501 | list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "zlib") |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 502 | endif () |
| 503 | if (BZIP2_FOUND) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 504 | target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES}) |
| 505 | target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS |
Daniel E | b2aeca5 | 2021-02-14 20:25:21 +0000 | [diff] [blame] | 506 | list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2") |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 507 | endif () |
| 508 | if (PNG_FOUND) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 509 | target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES}) |
| 510 | target_compile_definitions(freetype PRIVATE ${PNG_DEFINITIONS}) |
| 511 | target_include_directories(freetype PRIVATE ${PNG_INCLUDE_DIRS}) |
Werner Lemberg | 12351ee | 2019-09-05 12:02:59 +0200 | [diff] [blame] | 512 | list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libpng") |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 513 | endif () |
Nikolaus Waxweiler | ebf9e5a | 2021-05-15 22:36:00 +0100 | [diff] [blame] | 514 | if (HarfBuzz_FOUND) |
| 515 | target_link_libraries(freetype PRIVATE ${HarfBuzz_LIBRARY}) |
| 516 | target_include_directories(freetype PRIVATE ${HarfBuzz_INCLUDE_DIRS}) |
Werner Lemberg | 12351ee | 2019-09-05 12:02:59 +0200 | [diff] [blame] | 517 | list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}") |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 518 | endif () |
Werner Lemberg | 3de1b8d | 2019-09-05 14:10:01 +0200 | [diff] [blame] | 519 | if (BROTLIDEC_FOUND) |
| 520 | target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES}) |
| 521 | target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS}) |
| 522 | target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS}) |
| 523 | list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libbrotlidec") |
| 524 | endif () |
Werner Lemberg | 52c9b1a | 2015-06-28 11:03:10 +0200 | [diff] [blame] | 525 | |
| 526 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 527 | # Installation |
| 528 | include(GNUInstallDirs) |
| 529 | |
David Capello | 9224f05 | 2016-04-16 10:24:24 +0200 | [diff] [blame] | 530 | if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 531 | install( |
| 532 | # Note the trailing slash in the argument to `DIRECTORY'! |
| 533 | DIRECTORY ${PROJECT_SOURCE_DIR}/include/ |
| 534 | DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2 |
| 535 | COMPONENT headers |
| 536 | PATTERN "internal" EXCLUDE |
| 537 | PATTERN "ftconfig.h" EXCLUDE |
| 538 | PATTERN "ftoption.h" EXCLUDE) |
| 539 | install( |
| 540 | FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h |
| 541 | ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h |
| 542 | DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config |
| 543 | COMPONENT headers) |
David Capello | 9224f05 | 2016-04-16 10:24:24 +0200 | [diff] [blame] | 544 | endif () |
| 545 | |
| 546 | if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 547 | # Generate the pkg-config file |
Christopher Degawa | 66005cb | 2021-03-15 14:51:30 -0500 | [diff] [blame] | 548 | file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in" FREETYPE2_PC_IN) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 549 | |
Christopher Degawa | 66005cb | 2021-03-15 14:51:30 -0500 | [diff] [blame] | 550 | string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}") |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 551 | |
Christopher Degawa | 66005cb | 2021-03-15 14:51:30 -0500 | [diff] [blame] | 552 | string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX} |
| 553 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
| 554 | string(REPLACE "%exec_prefix%" "\${prefix}" |
| 555 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
| 556 | string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}" |
| 557 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
| 558 | string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}" |
| 559 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
| 560 | string(REPLACE "%ft_version%" "${LIBTOOL_CURRENT}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}" |
| 561 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
| 562 | string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}" |
| 563 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
| 564 | string(REPLACE "%LIBS_PRIVATE%" "${PKG_CONFIG_LIBS_PRIVATE}" |
| 565 | FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 566 | |
Christopher Degawa | 66005cb | 2021-03-15 14:51:30 -0500 | [diff] [blame] | 567 | set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc") |
| 568 | if (EXISTS "${FREETYPE2_PC_IN_NAME}") |
| 569 | file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN) |
| 570 | else () |
| 571 | set(ORIGINAL_FREETYPE2_PC_IN "") |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 572 | endif () |
Christopher Degawa | 66005cb | 2021-03-15 14:51:30 -0500 | [diff] [blame] | 573 | if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN)) |
| 574 | file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN}) |
| 575 | endif () |
| 576 | |
| 577 | install( |
| 578 | FILES ${PROJECT_BINARY_DIR}/freetype2.pc |
| 579 | DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig |
| 580 | COMPONENT pkgconfig) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 581 | |
Boris Dalstein | 69353a1 | 2020-08-25 13:53:54 +0200 | [diff] [blame] | 582 | include(CMakePackageConfigHelpers) |
| 583 | write_basic_package_version_file( |
| 584 | ${PROJECT_BINARY_DIR}/freetype-config-version.cmake |
| 585 | VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} |
| 586 | COMPATIBILITY SameMajorVersion) |
| 587 | |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 588 | install( |
| 589 | TARGETS freetype |
| 590 | EXPORT freetype-targets |
| 591 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| 592 | ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} |
Werner Lemberg | 0c4feb7 | 2018-10-17 11:25:32 +0200 | [diff] [blame] | 593 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 594 | FRAMEWORK DESTINATION Library/Frameworks |
| 595 | COMPONENT libraries) |
| 596 | install( |
David Capello | 9224f05 | 2016-04-16 10:24:24 +0200 | [diff] [blame] | 597 | EXPORT freetype-targets |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 598 | DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype |
| 599 | FILE freetype-config.cmake |
| 600 | COMPONENT headers) |
Boris Dalstein | 69353a1 | 2020-08-25 13:53:54 +0200 | [diff] [blame] | 601 | install( |
| 602 | FILES ${PROJECT_BINARY_DIR}/freetype-config-version.cmake |
| 603 | DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype |
| 604 | COMPONENT headers) |
David Capello | 9224f05 | 2016-04-16 10:24:24 +0200 | [diff] [blame] | 605 | endif () |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 606 | |
Werner Lemberg | 0505537 | 2015-06-28 11:07:07 +0200 | [diff] [blame] | 607 | |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 608 | # Packaging |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 609 | set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) |
| 610 | set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.") |
| 611 | set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") |
Werner Lemberg | df7fcaf | 2021-02-22 15:33:23 +0100 | [diff] [blame] | 612 | set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT") |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 613 | |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 614 | set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) |
| 615 | set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 616 | set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) |
| 617 | set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") |
| 618 | |
| 619 | if (WIN32) |
| 620 | set(CPACK_GENERATOR ZIP) |
Minmin Gong | ebe3750 | 2019-04-15 10:46:19 +0200 | [diff] [blame] | 621 | else () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 622 | set(CPACK_GENERATOR TGZ) |
Minmin Gong | ebe3750 | 2019-04-15 10:46:19 +0200 | [diff] [blame] | 623 | endif () |
Nikolaus Waxweiler | 029721d | 2018-04-07 21:34:24 +0100 | [diff] [blame] | 624 | |
| 625 | set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") |
| 626 | set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers") |
| 627 | set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION |
| 628 | "Library used to build programs which use FreeType") |
| 629 | set(CPACK_COMPONENT_HEADERS_DESCRIPTION |
| 630 | "C/C++ header files for use with FreeType") |
| 631 | set(CPACK_COMPONENT_HEADERS_DEPENDS libraries) |
| 632 | set(CPACK_COMPONENT_LIBRARIES_GROUP "Development") |
| 633 | set(CPACK_COMPONENT_HEADERS_GROUP "Development") |
| 634 | |
John Cary | a0e4a73 | 2013-10-24 08:49:08 +0200 | [diff] [blame] | 635 | include(CPack) |