0026460: Implicit cast to TopoDS_Shape compilation error due to ambiguous conversion
[occt.git] / adm / cmake / freetype.cmake
CommitLineData
9f33b387 1# freetype
2
3if (NOT DEFINED INSTALL_FREETYPE)
4 set (INSTALL_FREETYPE OFF CACHE BOOL "Is freetype required to be copied into install directory")
5endif()
6
7if (NOT DEFINED 3RDPARTY_FREETYPE_DIR)
8 set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype")
9endif()
10
11# store ENV{FREETYPE_DIR}
12SET (CACHED_FREETYPE_DIR $ENV{FREETYPE_DIR})
13
fa0cbe55 14# include occt macros. compiler_bitness, os_wiht_bit, compiler
19286d7c 15OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
9f33b387 16
17OCCT_MAKE_COMPILER_SHORT_NAME()
18OCCT_MAKE_COMPILER_BITNESS()
19
20if (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()
32endif()
33
34if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
35 set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path of ft2build.h")
36endif()
37
38if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
39 set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2")
40endif()
41
42if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR)
43 set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library")
44endif()
45
46if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR)
47 set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE FILEPATH "The directory containing freetype library")
48endif()
49
50if (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()
54endif()
55
56if (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()
60endif()
61
9f33b387 62find_package(Freetype)
9f33b387 63
64# ft2build header
65if (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()
69endif()
70
71if (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 87elseif (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()
111endif()
112
113# return ENV{FREETYPE_DIR}
114SET (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR})
115
116# freetype2 header
117if (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()
121endif()
122
123if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR)
124 set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE)
125elseif (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()
130endif()
131
132if (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()
141endif()
142
143# freetype library
144if (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()
169endif()
170
171
172if (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)
174endif()
175
176if (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()
180endif()
181
182# include found paths to common variables
183if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
184 list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
185else()
186 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
187endif()
188
189if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
190 list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
191else()
192 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
193endif()
194
195if (3RDPARTY_FREETYPE_LIBRARY)
196 list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
197else()
198 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR)
199endif()
200
201if (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()
207endif()
208
209if (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 "")
241else()
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 248endif()
249
250# unset all redundant variables
251OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build)
252OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2)
253OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY)
254
255mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL)