9f33b387 |
1 | # freetype |
2 | |
3 | if (NOT DEFINED INSTALL_FREETYPE) |
4 | set (INSTALL_FREETYPE OFF CACHE BOOL "Is freetype required to be copied into install directory") |
5 | endif() |
6 | |
7 | if (NOT DEFINED 3RDPARTY_FREETYPE_DIR) |
8 | set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype") |
9 | endif() |
10 | |
11 | # store ENV{FREETYPE_DIR} |
12 | SET (CACHED_FREETYPE_DIR $ENV{FREETYPE_DIR}) |
13 | |
fa0cbe55 |
14 | # include occt macros. compiler_bitness, os_wiht_bit, compiler |
19286d7c |
15 | OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") |
9f33b387 |
16 | |
17 | OCCT_MAKE_COMPILER_SHORT_NAME() |
18 | OCCT_MAKE_COMPILER_BITNESS() |
19 | |
20 | if (NOT ENV{FREETYPE_DIR}) |
21 | # search for freetype in user defined directory |
22 | if (NOT 3RDPARTY_FREETYPE_DIR AND 3RDPARTY_DIR) |
23 | FIND_PRODUCT_DIR("${3RDPARTY_DIR}" FREETYPE FREETYPE_DIR_NAME) |
24 | if (FREETYPE_DIR_NAME) |
25 | set (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" CACHE PATH "The directory containing freetype" FORCE) |
26 | endif() |
27 | endif() |
28 | |
29 | if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") |
30 | set (ENV{FREETYPE_DIR} "${3RDPARTY_FREETYPE_DIR}") |
31 | endif() |
32 | endif() |
33 | |
34 | if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
35 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path of ft2build.h") |
36 | endif() |
37 | |
38 | if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
39 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2") |
40 | endif() |
41 | |
42 | if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR) |
43 | set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library") |
44 | endif() |
45 | |
46 | if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR) |
47 | set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE FILEPATH "The directory containing freetype library") |
48 | endif() |
49 | |
50 | if (WIN32) |
51 | if (NOT DEFINED 3RDPARTY_FREETYPE_DLL OR NOT 3RDPARTY_FREETYPE_DLL_DIR) |
52 | set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library") |
53 | endif() |
54 | endif() |
55 | |
56 | if (WIN32) |
57 | if (NOT DEFINED 3RDPARTY_FREETYPE_DLL_DIR) |
58 | set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE FILEPATH "The directory containing freetype shared library") |
59 | endif() |
60 | endif() |
61 | |
9f33b387 |
62 | find_package(Freetype) |
9f33b387 |
63 | |
64 | # ft2build header |
65 | if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}") |
66 | if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
67 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "the path of ft2build.h" FORCE) |
68 | endif() |
69 | endif() |
70 | |
71 | if (NOT FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
72 | # cmake (version is < 3.0) doesn't find ftheader.h of freetype (version is >= 2.5.1) |
73 | # do search taking into account freetype structure of 2.5.1 version |
9f33b387 |
74 | find_path (FREETYPE_INCLUDE_DIR_freetype2 NAMES |
75 | freetype/config/ftheader.h |
76 | config/ftheader.h |
77 | HINTS |
78 | ENV FREETYPE_DIR |
79 | PATHS |
80 | /usr/X11R6 |
81 | /usr/local/X11R6 |
82 | /usr/local/X11 |
83 | /usr/freeware |
84 | PATH_SUFFIXES include/freetype2 include freetype2 |
85 | NO_DEFAULT_PATH) |
86 | find_path (FREETYPE_INCLUDE_DIR_freetype2 NAMES freetype/config/ftheader.h config/ftheader.h) |
9f33b387 |
87 | elseif (FREETYPE_INCLUDE_DIR_freetype2 OR EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
88 | if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") |
89 | get_filename_component (3RDPARTY_FREETYPE_DIR_ABS "${3RDPARTY_FREETYPE_DIR}" ABSOLUTE) |
90 | get_filename_component (FREETYPE_INCLUDE_DIR_freetype2_ABS "${FREETYPE_INCLUDE_DIR_freetype2}" ABSOLUTE) |
91 | |
92 | string (REGEX MATCH "${3RDPARTY_FREETYPE_DIR_ABS}" DOES_PATH_CONTAIN "${FREETYPE_INCLUDE_DIR_freetype2_ABS}") |
93 | |
94 | if (NOT DOES_PATH_CONTAIN) # if cmake found freetype2 at different place from 3RDPARTY_FREETYPE_DIR |
95 | # search for freetype2 in 3RDPARTY_FREETYPE_DIR and if it will be found - replace freetyp2 path by new one |
96 | set (TMP_FREETYPE2 "TMP_FREETYPE2-NOTFOUND" CACHE FILEPATH "" FORCE) |
97 | find_path (TMP_FREETYPE2 NAMES freetype/config/ftheader.h config/ftheader.h |
98 | PATHS "${3RDPARTY_FREETYPE_DIR}" |
99 | PATH_SUFFIXES include/freetype2 include freetype2 |
100 | NO_DEFAULT_PATH) |
101 | |
102 | if (TMP_FREETYPE2 OR NOT EXISTS "${TMP_FREETYPE2}") |
103 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${TMP_FREETYPE2}" CACHE FILEPATH "the path of freetype2" FORCE) |
19286d7c |
104 | |
9f33b387 |
105 | # hide and remove TMP_FREETYPE2 |
106 | mark_as_advanced (TMP_FREETYPE2) |
107 | unset (TMP_FREETYPE2) |
108 | endif() |
109 | endif() |
110 | endif() |
111 | endif() |
112 | |
113 | # return ENV{FREETYPE_DIR} |
114 | SET (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR}) |
115 | |
116 | # freetype2 header |
117 | if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
118 | if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
119 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "the path of freetype2" FORCE) |
120 | endif() |
121 | endif() |
122 | |
123 | if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR) |
124 | set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE) |
125 | elseif (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") |
126 | get_filename_component(3RDPARTY_FREETYPE_LIBRARY_DIR_TMP "${3RDPARTY_FREETYPE_LIBRARY}" PATH) |
127 | if (NOT "${3RDPARTY_FREETYPE_LIBRARY_DIR}" STREQUAL "${3RDPARTY_FREETYPE_LIBRARY_DIR_TMP}") |
128 | set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE) |
129 | endif() |
130 | endif() |
131 | |
132 | if (WIN32) |
133 | if (NOT 3RDPARTY_FREETYPE_DLL_DIR) |
134 | set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) |
135 | elseif (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") |
136 | get_filename_component(3RDPARTY_FREETYPE_DLL_DIR_TMP "${3RDPARTY_FREETYPE_DLL}" PATH) |
137 | if (NOT "${3RDPARTY_FREETYPE_DLL_DIR}" STREQUAL "${3RDPARTY_FREETYPE_DLL_DIR_TMP}") |
138 | set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) |
139 | endif() |
140 | endif() |
141 | endif() |
142 | |
143 | # freetype library |
144 | if (FREETYPE_LIBRARY AND EXISTS "${FREETYPE_LIBRARY}") |
145 | if (NOT 3RDPARTY_FREETYPE_LIBRARY) |
146 | set (3RDPARTY_FREETYPE_LIBRARY "${FREETYPE_LIBRARY}" CACHE FILEPATH "freetype library" FORCE) |
147 | endif() |
19286d7c |
148 | |
9f33b387 |
149 | if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") |
150 | get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) |
151 | set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE FILEPATH "The directory containing freetype library" FORCE) |
152 | endif() |
153 | |
154 | if (WIN32) |
155 | set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") |
156 | |
157 | if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") |
158 | get_filename_component (FREETYPE_LIBRARY_PARENT_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" PATH) # parent of the library directory |
159 | |
160 | set (3RDPARTY_FREETYPE_DLL "3RDPARTY_FREETYPE_DLL-NOTFOUND" CACHE FILEPATH "freetype shared library" FORCE) |
161 | find_library (3RDPARTY_FREETYPE_DLL freetype PATHS "${FREETYPE_LIBRARY_PARENT_DIR}/bin" NO_DEFAULT_PATH) |
162 | endif() |
19286d7c |
163 | |
9f33b387 |
164 | if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") |
165 | get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH) |
166 | set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE FILEPATH "The directory containing freetype shared library" FORCE) |
167 | endif() |
168 | endif() |
169 | endif() |
170 | |
171 | |
172 | if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") |
173 | set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE FILEPATH "The directory containing freetype library" FORCE) |
174 | endif() |
175 | |
176 | if (WIN32) |
177 | if (NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}") |
178 | set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE FILEPATH "The directory containing shared freetype library" FORCE) |
179 | endif() |
180 | endif() |
181 | |
182 | # include found paths to common variables |
183 | if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
184 | list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") |
185 | else() |
186 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
187 | endif() |
188 | |
189 | if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
190 | list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") |
191 | else() |
192 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
193 | endif() |
194 | |
195 | if (3RDPARTY_FREETYPE_LIBRARY) |
196 | list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") |
197 | else() |
198 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR) |
199 | endif() |
200 | |
201 | if (WIN32) |
94829f84 |
202 | if (3RDPARTY_FREETYPE_DLL OR EXISTS "${3RDPARTY_FREETYPE_DLL}") |
203 | list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FREETYPE_DLL_DIR}") |
204 | else() |
9f33b387 |
205 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_DLL_DIR) |
206 | endif() |
207 | endif() |
208 | |
209 | if (INSTALL_FREETYPE) |
210 | |
211 | OCCT_MAKE_OS_WITH_BITNESS() |
9f33b387 |
212 | if (WIN32) |
fa0cbe55 |
213 | install (FILES "${3RDPARTY_FREETYPE_DLL}" |
214 | CONFIGURATIONS Release |
215 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") |
216 | install (FILES "${3RDPARTY_FREETYPE_DLL}" |
217 | CONFIGURATIONS RelWithDebInfo |
218 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") |
219 | install (FILES "${3RDPARTY_FREETYPE_DLL}" |
220 | CONFIGURATIONS Debug |
221 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind") |
9f33b387 |
222 | else() |
19286d7c |
223 | get_filename_component(ABS_PATH ${3RDPARTY_FREETYPE_LIBRARY} REALPATH) |
224 | get_filename_component(FREETYPELIB ${3RDPARTY_FREETYPE_LIBRARY} NAME) |
fa0cbe55 |
225 | |
226 | install (FILES "${ABS_PATH}" |
227 | CONFIGURATIONS Release |
228 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib" |
229 | RENAME ${FREETYPELIB}.6) |
230 | install (FILES "${ABS_PATH}" |
231 | CONFIGURATIONS RelWithDebInfo |
232 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib" |
233 | RENAME ${FREETYPELIB}.6) |
234 | install (FILES "${ABS_PATH}" |
235 | CONFIGURATIONS Debug |
236 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd" |
237 | RENAME ${FREETYPELIB}.6) |
9f33b387 |
238 | endif() |
0a66e59d |
239 | |
240 | set (USED_3RDPARTY_FREETYPE_DIR "") |
241 | else() |
242 | # the library directory for using by the executable |
243 | if (WIN32) |
244 | set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_DLL_DIR}) |
245 | else() |
246 | set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_LIBRARY_DIR}) |
247 | endif() |
9f33b387 |
248 | endif() |
249 | |
250 | # unset all redundant variables |
251 | OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build) |
252 | OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2) |
253 | OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY) |
254 | |
255 | mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL) |