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 | |
14 | # include occt macros. compiler_bitness, os_wiht_bit, compiler and build_postfix |
15 | OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_macros") |
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 | |
62 | message (STATUS "Info: CMake default freetype search start...") |
63 | find_package(Freetype) |
64 | message (STATUS "Info: CMake default freetype search end") |
65 | |
66 | # ft2build header |
67 | if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}") |
68 | if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
69 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "the path of ft2build.h" FORCE) |
70 | endif() |
71 | endif() |
72 | |
73 | if (NOT FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
74 | # cmake (version is < 3.0) doesn't find ftheader.h of freetype (version is >= 2.5.1) |
75 | # do search taking into account freetype structure of 2.5.1 version |
76 | message (STATUS "Info: CMake default search doesn't found FREETYPE_INCLUDE_DIR_freetype2") |
77 | find_path (FREETYPE_INCLUDE_DIR_freetype2 NAMES |
78 | freetype/config/ftheader.h |
79 | config/ftheader.h |
80 | HINTS |
81 | ENV FREETYPE_DIR |
82 | PATHS |
83 | /usr/X11R6 |
84 | /usr/local/X11R6 |
85 | /usr/local/X11 |
86 | /usr/freeware |
87 | PATH_SUFFIXES include/freetype2 include freetype2 |
88 | NO_DEFAULT_PATH) |
89 | find_path (FREETYPE_INCLUDE_DIR_freetype2 NAMES freetype/config/ftheader.h config/ftheader.h) |
90 | |
91 | if (NOT FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
92 | message (STATUS "Info: FREETYPE_INCLUDE_DIR_freetype2 is NOT found by additional search") |
93 | else() |
94 | message (STATUS "Info: FREETYPE_INCLUDE_DIR_freetype2 is found by additional search") |
95 | endif() |
96 | elseif (FREETYPE_INCLUDE_DIR_freetype2 OR EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
97 | if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}") |
98 | get_filename_component (3RDPARTY_FREETYPE_DIR_ABS "${3RDPARTY_FREETYPE_DIR}" ABSOLUTE) |
99 | get_filename_component (FREETYPE_INCLUDE_DIR_freetype2_ABS "${FREETYPE_INCLUDE_DIR_freetype2}" ABSOLUTE) |
100 | |
101 | string (REGEX MATCH "${3RDPARTY_FREETYPE_DIR_ABS}" DOES_PATH_CONTAIN "${FREETYPE_INCLUDE_DIR_freetype2_ABS}") |
102 | |
103 | if (NOT DOES_PATH_CONTAIN) # if cmake found freetype2 at different place from 3RDPARTY_FREETYPE_DIR |
104 | # search for freetype2 in 3RDPARTY_FREETYPE_DIR and if it will be found - replace freetyp2 path by new one |
105 | set (TMP_FREETYPE2 "TMP_FREETYPE2-NOTFOUND" CACHE FILEPATH "" FORCE) |
106 | find_path (TMP_FREETYPE2 NAMES freetype/config/ftheader.h config/ftheader.h |
107 | PATHS "${3RDPARTY_FREETYPE_DIR}" |
108 | PATH_SUFFIXES include/freetype2 include freetype2 |
109 | NO_DEFAULT_PATH) |
110 | |
111 | if (TMP_FREETYPE2 OR NOT EXISTS "${TMP_FREETYPE2}") |
112 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${TMP_FREETYPE2}" CACHE FILEPATH "the path of freetype2" FORCE) |
113 | |
114 | # hide and remove TMP_FREETYPE2 |
115 | mark_as_advanced (TMP_FREETYPE2) |
116 | unset (TMP_FREETYPE2) |
117 | endif() |
118 | endif() |
119 | endif() |
120 | endif() |
121 | |
122 | # return ENV{FREETYPE_DIR} |
123 | SET (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR}) |
124 | |
125 | # freetype2 header |
126 | if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}") |
127 | if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
128 | set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "the path of freetype2" FORCE) |
129 | endif() |
130 | endif() |
131 | |
132 | if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR) |
133 | set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE) |
134 | elseif (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") |
135 | get_filename_component(3RDPARTY_FREETYPE_LIBRARY_DIR_TMP "${3RDPARTY_FREETYPE_LIBRARY}" PATH) |
136 | if (NOT "${3RDPARTY_FREETYPE_LIBRARY_DIR}" STREQUAL "${3RDPARTY_FREETYPE_LIBRARY_DIR_TMP}") |
137 | set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE) |
138 | endif() |
139 | endif() |
140 | |
141 | if (WIN32) |
142 | if (NOT 3RDPARTY_FREETYPE_DLL_DIR) |
143 | set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) |
144 | elseif (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") |
145 | get_filename_component(3RDPARTY_FREETYPE_DLL_DIR_TMP "${3RDPARTY_FREETYPE_DLL}" PATH) |
146 | if (NOT "${3RDPARTY_FREETYPE_DLL_DIR}" STREQUAL "${3RDPARTY_FREETYPE_DLL_DIR_TMP}") |
147 | set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE) |
148 | endif() |
149 | endif() |
150 | endif() |
151 | |
152 | # freetype library |
153 | if (FREETYPE_LIBRARY AND EXISTS "${FREETYPE_LIBRARY}") |
154 | if (NOT 3RDPARTY_FREETYPE_LIBRARY) |
155 | set (3RDPARTY_FREETYPE_LIBRARY "${FREETYPE_LIBRARY}" CACHE FILEPATH "freetype library" FORCE) |
156 | endif() |
157 | |
158 | if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}") |
159 | get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH) |
160 | set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE FILEPATH "The directory containing freetype library" FORCE) |
161 | endif() |
162 | |
163 | if (WIN32) |
164 | set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") |
165 | |
166 | if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") |
167 | get_filename_component (FREETYPE_LIBRARY_PARENT_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" PATH) # parent of the library directory |
168 | |
169 | set (3RDPARTY_FREETYPE_DLL "3RDPARTY_FREETYPE_DLL-NOTFOUND" CACHE FILEPATH "freetype shared library" FORCE) |
170 | find_library (3RDPARTY_FREETYPE_DLL freetype PATHS "${FREETYPE_LIBRARY_PARENT_DIR}/bin" NO_DEFAULT_PATH) |
171 | endif() |
172 | |
173 | if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}") |
174 | get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH) |
175 | set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE FILEPATH "The directory containing freetype shared library" FORCE) |
176 | endif() |
177 | endif() |
178 | endif() |
179 | |
180 | |
181 | if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") |
182 | set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE FILEPATH "The directory containing freetype library" FORCE) |
183 | endif() |
184 | |
185 | if (WIN32) |
186 | if (NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}") |
187 | set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE FILEPATH "The directory containing shared freetype library" FORCE) |
188 | endif() |
189 | endif() |
190 | |
191 | # include found paths to common variables |
192 | if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
193 | list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}") |
194 | else() |
195 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build) |
196 | endif() |
197 | |
198 | if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
199 | list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}") |
200 | else() |
201 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2) |
202 | endif() |
203 | |
204 | if (3RDPARTY_FREETYPE_LIBRARY) |
205 | list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}") |
206 | else() |
207 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR) |
208 | endif() |
209 | |
210 | if (WIN32) |
211 | if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}") |
212 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_DLL_DIR) |
213 | endif() |
214 | endif() |
215 | |
216 | if (INSTALL_FREETYPE) |
217 | |
218 | OCCT_MAKE_OS_WITH_BITNESS() |
219 | OCCT_MAKE_BUILD_POSTFIX() |
220 | |
221 | if (WIN32) |
222 | install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}") |
223 | else() |
224 | install (FILES "${3RDPARTY_FREETYPE_LIBRARY}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}") |
225 | endif() |
226 | endif() |
227 | |
228 | # unset all redundant variables |
229 | OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build) |
230 | OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2) |
231 | OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY) |
232 | |
233 | mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL) |