3 if (NOT DEFINED INSTALL_FREETYPE AND BUILD_SHARED_LIBS)
4 set (INSTALL_FREETYPE OFF CACHE BOOL "${INSTALL_FREETYPE_DESCR}")
7 if (NOT DEFINED 3RDPARTY_FREETYPE_DIR)
8 set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype")
11 # include occt macros. compiler_bitness, os_wiht_bit, compiler
12 OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
14 OCCT_MAKE_COMPILER_SHORT_NAME()
15 OCCT_MAKE_COMPILER_BITNESS()
17 # specify freetype folder in connectin with 3RDPARTY_DIR
18 if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}")
19 #CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_DIR 3RDPARTY_FREETYPE_DIR PATH "The directory containing freetype")
21 if (NOT 3RDPARTY_FREETYPE_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DIR}")
22 FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" FREETYPE FREETYPE_DIR_NAME)
23 if (FREETYPE_DIR_NAME)
24 set (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" CACHE PATH "The directory containing freetype" FORCE)
28 #set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype" FORCE)
31 # define required freetype variables
32 if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
33 set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path of ft2build.h")
36 if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
37 set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2")
40 if (BUILD_SHARED_LIBS)
41 if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
42 set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE)
45 if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR)
46 set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library")
50 if (NOT DEFINED 3RDPARTY_FREETYPE_DLL OR NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}")
51 set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE)
56 if (NOT DEFINED 3RDPARTY_FREETYPE_DLL_DIR)
57 set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library")
62 # check 3RDPARTY_FREETYPE_ paths for consistency with specified 3RDPARTY_FREETYPE_DIR
63 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
64 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build FILEPATH "the path to ft2build.h")
65 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 FILEPATH "the path to ftheader.h")
66 if (BUILD_SHARED_LIBS)
67 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY FILEPATH "the path to freetype library")
69 if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
70 get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH)
71 set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE)
73 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY_DIR PATH "The directory containing freetype library")
77 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL FILEPATH "the path to freetype shared library")
79 if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}")
80 get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH)
81 set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype shared library" FORCE)
83 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL_DIR PATH "The directory containing freetype shared library")
89 # the FIRST step in search for freetype library and header folders (built-in search engine)
91 # execute built-in search engine to seek freetype
92 set (IS_BUILTIN_SEARCH_REQUIRED OFF)
93 if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
94 set (IS_BUILTIN_SEARCH_REQUIRED ON)
95 elseif (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
96 set (IS_BUILTIN_SEARCH_REQUIRED ON)
97 elseif (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
98 set (IS_BUILTIN_SEARCH_REQUIRED ON)
100 #if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}")
101 # set (IS_BUILTIN_SEARCH_REQUIRED ON)
105 if (IS_BUILTIN_SEARCH_REQUIRED)
107 # use 3RDPARTY_FREETYPE_DIR if it is specified for freetype search
108 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
109 set (CACHED_FREETYPE_DIR $ENV{FREETYPE_DIR})
110 set (ENV{FREETYPE_DIR} "${3RDPARTY_FREETYPE_DIR}")
113 find_package(Freetype)
115 # restore ENV{FREETYPE_DIR}
116 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
117 set (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR})
120 # check the found paths for consistency with specified 3RDPARTY_FREETYPE_DIR
121 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
122 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_INCLUDE_DIR_ft2build FILEPATH "the path to ft2build.h")
123 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_INCLUDE_DIR_freetype2 FILEPATH "the path to ftheader.h")
124 if (BUILD_SHARED_LIBS)
125 CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR FREETYPE_LIBRARY FILEPATH "freetype library")
129 # assign the found paths to corresponding 3RDPARTY_FREETYPE_ variables
130 if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
131 if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}")
132 set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "the path to ft2build.h" FORCE)
136 if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
137 if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}")
138 set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "the path to ftheader.h" FORCE)
142 if (BUILD_SHARED_LIBS)
143 if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
144 if (FREETYPE_LIBRARY AND EXISTS "${FREETYPE_LIBRARY}")
145 set (3RDPARTY_FREETYPE_LIBRARY "${FREETYPE_LIBRARY}" CACHE FILEPATH "The path to freetype library" FORCE)
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 PATH "The directory containing freetype library" FORCE)
153 set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE)
158 # the SECOND step in search for freetype library and header folders (additional search algorithms)
161 if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
162 set (FT2BUILD_NAMES ft2build.h config/ft2build.h freetype/config/ft2build.h)
164 # set 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build
165 set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build-NOTFOUND" CACHE FILEPATH "the path to ft2build.h" FORCE)
167 # cmake (version < 3.0) doesn't find ft2build.h of freetype (version is >= 2.5.1)
168 # do search taking into account freetype structure of 2.5.1 version
169 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
170 find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build NAMES ${FT2BUILD_NAMES}
171 PATHS ${3RDPARTY_FREETYPE_DIR}
172 PATH_SUFFIXES include freetype2 include/freetype2
173 CMAKE_FIND_ROOT_PATH_BOTH
176 find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build NAMES ${FT2BUILD_NAMES}
177 PATHS /usr/X11R6 /usr/local/X11R6 /usr/local/X11 /usr/freeware
178 PATH_SUFFIXES include/freetype2 include freetype2
179 CMAKE_FIND_ROOT_PATH_BOTH)
183 if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
184 list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
186 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
188 set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path to ft2build.h" FORCE)
192 if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
193 set (FTHEADER_NAMES ftheader.h config/ftheader.h freetype/config/ftheader.h)
195 # set 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2
196 set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2-NOTFOUND" CACHE FILEPATH "the path to ftheader.h" FORCE)
198 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
199 find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES}
200 HINTS ${3RDPARTY_FREETYPE_DIR}
201 PATH_SUFFIXES include/freetype2 include freetype2
202 CMAKE_FIND_ROOT_PATH_BOTH
205 find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES}
206 PATHS /usr/X11R6 /usr/local/X11R6 /usr/local/X11 /usr/freeware
207 PATH_SUFFIXES include/freetype2 include freetype2
208 CMAKE_FIND_ROOT_PATH_BOTH)
212 if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
213 list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
215 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
217 set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path to ftheader.h" FORCE)
221 if (BUILD_SHARED_LIBS)
222 if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
223 set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
225 set (FREETYPE_PATH_SUFFIXES lib)
227 set (FREETYPE_PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES} libs/${ANDROID_ABI})
230 # set 3RDPARTY_FREETYPE_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_LIBRARY
231 set (3RDPARTY_FREETYPE_LIBRARY "3RDPARTY_FREETYPE_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to freetype library" FORCE)
233 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
234 find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE}
235 PATHS "${3RDPARTY_FREETYPE_LIBRARY_DIR}" "${3RDPARTY_FREETYPE_DIR}"
236 PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES}
237 CMAKE_FIND_ROOT_PATH_BOTH
240 find_library (3RDPARTY_FREETYPE_LIBRARY ${CSF_FREETYPE}
241 PATH_SUFFIXES ${FREETYPE_PATH_SUFFIXES}
242 CMAKE_FIND_ROOT_PATH_BOTH)
245 if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
246 get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH)
247 set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE)
249 set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE)
253 if (3RDPARTY_FREETYPE_LIBRARY_DIR AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
254 list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
256 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR)
258 set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "The path to freetype library" FORCE)
261 # freetype shared library
263 if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}")
265 set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
267 # set 3RDPARTY_FREETYPE_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_DLL
268 set (3RDPARTY_FREETYPE_DLL "3RDPARTY_FREETYPE_DLL-NOTFOUND" CACHE FILEPATH "The path to freetype shared library" FORCE)
270 if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
271 find_library (3RDPARTY_FREETYPE_DLL ${CSF_FREETYPE}
272 PATHS "${3RDPARTY_FREETYPE_DIR}"
276 find_library (3RDPARTY_FREETYPE_DLL ${CSF_FREETYPE}
280 if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}")
281 get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH)
282 set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype library" FORCE)
284 set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library" FORCE)
286 set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE)
290 if (3RDPARTY_FREETYPE_DLL_DIR OR EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}")
291 list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FREETYPE_DLL_DIR}")
293 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_DLL_DIR)
297 # install instructions
298 if (INSTALL_FREETYPE)
299 OCCT_MAKE_OS_WITH_BITNESS()
302 if (SINGLE_GENERATOR)
303 install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR_BIN}")
305 install (FILES "${3RDPARTY_FREETYPE_DLL}"
306 CONFIGURATIONS Release
307 DESTINATION "${INSTALL_DIR_BIN}")
308 install (FILES "${3RDPARTY_FREETYPE_DLL}"
309 CONFIGURATIONS RelWithDebInfo
310 DESTINATION "${INSTALL_DIR_BIN}i")
311 install (FILES "${3RDPARTY_FREETYPE_DLL}"
313 DESTINATION "${INSTALL_DIR_BIN}d")
316 get_filename_component(3RDPARTY_FREETYPE_LIBRARY_ABS ${3RDPARTY_FREETYPE_LIBRARY} REALPATH)
317 get_filename_component(3RDPARTY_FREETYPE_LIBRARY_NAME ${3RDPARTY_FREETYPE_LIBRARY} NAME)
319 if (SINGLE_GENERATOR)
320 install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
321 DESTINATION "${INSTALL_DIR_LIB}"
322 RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
324 install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
325 CONFIGURATIONS Release
326 DESTINATION "${INSTALL_DIR_LIB}"
327 RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
328 install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
329 CONFIGURATIONS RelWithDebInfo
330 DESTINATION "${INSTALL_DIR_LIB}i"
331 RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
332 install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
334 DESTINATION "${INSTALL_DIR_LIB}d"
335 RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
339 set (USED_3RDPARTY_FREETYPE_DIR "")
341 # the library directory for using by the executable
343 set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_DLL_DIR})
345 set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_LIBRARY_DIR})
350 # unset all redundant variables
351 OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build)
352 OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2)
353 OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY)
355 if (BUILD_SHARED_LIBS)
356 mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL)
358 OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_DLL)
359 OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_DLL_DIR)
360 OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY)
361 OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY_DIR)
362 OCCT_CHECK_AND_UNSET(INSTALL_FREETYPE)