3 if (NOT DEFINED INSTALL_TCL)
4 set (INSTALL_TCL OFF CACHE BOOL "${INSTALL_TCL_DESCR}")
8 if (NOT DEFINED 3RDPARTY_TCL_DIR)
9 set (3RDPARTY_TCL_DIR "" CACHE PATH "The directory containing tcl")
12 # tcl include directory
13 if (NOT DEFINED 3RDPARTY_TCL_INCLUDE_DIR)
14 set (3RDPARTY_TCL_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tcl")
17 # tcl library file (with absolute path)
18 if (NOT DEFINED 3RDPARTY_TCL_LIBRARY OR NOT 3RDPARTY_TCL_LIBRARY_DIR)
19 set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "tcl library" FORCE)
22 # tcl library directory
23 if (NOT DEFINED 3RDPARTY_TCL_LIBRARY_DIR)
24 set (3RDPARTY_TCL_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tcl library")
27 # tcl shared library (with absolute path)
29 if (NOT DEFINED 3RDPARTY_TCL_DLL OR NOT 3RDPARTY_TCL_DLL_DIR)
30 set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "tcl shared library" FORCE)
34 # tcl shared library directory
35 if (WIN32 AND NOT DEFINED 3RDPARTY_TCL_DLL_DIR)
36 set (3RDPARTY_TCL_DLL_DIR "" CACHE FILEPATH "The directory containing tcl shared library")
39 # search for tcl in user defined directory
40 if (NOT 3RDPARTY_TCL_DIR AND 3RDPARTY_DIR)
41 FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME)
43 set (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "The directory containing tcl" FORCE)
47 # define paths for default engine
48 if (3RDPARTY_TCL_DIR AND EXISTS "${3RDPARTY_TCL_DIR}")
49 set (TCL_INCLUDE_PATH "${3RDPARTY_TCL_DIR}/include")
52 # check tcl include dir, library dir and shared library dir
53 COMPLIANCE_PRODUCT_CONSISTENCY(TCL)
55 # use default (CMake) TCL search
59 if (NOT 3RDPARTY_TCL_INCLUDE_DIR)
60 if (TCL_INCLUDE_PATH AND EXISTS "${TCL_INCLUDE_PATH}")
61 set (3RDPARTY_TCL_INCLUDE_DIR "${TCL_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TCL" FORCE)
66 if (NOT 3RDPARTY_TCL_LIBRARY)
67 if (TCL_LIBRARY AND EXISTS "${TCL_LIBRARY}")
68 set (3RDPARTY_TCL_LIBRARY "${TCL_LIBRARY}" CACHE FILEPATH "TCL library" FORCE)
70 if (NOT 3RDPARTY_TCL_LIBRARY_DIR)
71 get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH)
72 set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE)
79 if (NOT 3RDPARTY_TCL_DLL)
80 set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll)
82 set (DLL_FOLDER_FOR_SEARCH "")
83 if (3RDPARTY_TCL_DLL_DIR)
84 set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DLL_DIR}")
85 elseif (3RDPARTY_TCL_DIR)
86 set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin")
87 elseif (3RDPARTY_TCL_LIBRARY_DIR)
88 get_filename_component (3RDPARTY_TCL_LIBRARY_DIR_PARENT "${3RDPARTY_TCL_LIBRARY_DIR}" PATH)
89 set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin")
92 set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE)
93 find_library (3RDPARTY_TCL_DLL NAMES tcl86 tcl85
94 PATHS "${DLL_FOLDER_FOR_SEARCH}"
99 COMPLIANCE_PRODUCT_CONSISTENCY(TCL)
101 # tcl dir and library
102 if (NOT 3RDPARTY_TCL_LIBRARY)
103 set (3RDPARTY_TCL_LIBRARY "3RDPARTY_TCL_LIBRARY-NOTFOUND" CACHE FILEPATH "TCL library" FORCE)
104 find_library (3RDPARTY_TCL_LIBRARY NAMES tcl8.6 tcl86 tcl8.5 tcl85
105 PATHS "${3RDPARTY_TCL_LIBRARY_DIR}"
108 # search in another place if previous search doesn't find anything
109 find_library (3RDPARTY_TCL_LIBRARY NAMES tcl8.6 tcl86 tcl8.5 tcl85
110 PATHS "${3RDPARTY_TCL_DIR}/lib"
114 if (NOT 3RDPARTY_TCL_LIBRARY OR NOT EXISTS "${3RDPARTY_TCL_LIBRARY}")
115 set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "TCL library" FORCE)
118 if (NOT 3RDPARTY_TCL_LIBRARY_DIR AND 3RDPARTY_TCL_LIBRARY)
119 get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH)
120 set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE)
124 set (3RDPARTY_TCL_LIBRARY_VERSION "")
125 if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}")
126 get_filename_component (TCL_LIBRARY_NAME "${3RDPARTY_TCL_LIBRARY}" NAME)
127 string(REGEX REPLACE "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY_NAME}")
129 if (NOT "${TCL_LIBRARY_VERSION}" STREQUAL "${TCL_LIBRARY_NAME}")
130 set (3RDPARTY_TCL_LIBRARY_VERSION "${TCL_LIBRARY_VERSION}")
131 else() # if the version isn't found - seek other library with 8.6 or 8.5 version in the same dir
132 message (STATUS "Info: TCL version isn't found")
136 set (3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT "")
137 if (3RDPARTY_TCL_LIBRARY_VERSION)
138 string (REGEX REPLACE "^.*([0-9])[^0-9]*[0-9].*$" "\\1" 3RDPARTY_TCL_MAJOR_VERSION "${3RDPARTY_TCL_LIBRARY_VERSION}")
139 string (REGEX REPLACE "^.*[0-9][^0-9]*([0-9]).*$" "\\1" 3RDPARTY_TCL_MINOR_VERSION "${3RDPARTY_TCL_LIBRARY_VERSION}")
140 set (3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT "${3RDPARTY_TCL_MAJOR_VERSION}.${3RDPARTY_TCL_MINOR_VERSION}")
144 if (NOT 3RDPARTY_TCL_DLL)
145 set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll)
147 set (DLL_FOLDER_FOR_SEARCH "")
148 if (3RDPARTY_TCL_DLL_DIR)
149 set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DLL_DIR}")
150 elseif (3RDPARTY_TCL_DIR)
151 set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin")
153 get_filename_component (3RDPARTY_TCL_LIBRARY_DIR_PARENT "${3RDPARTY_TCL_LIBRARY_DIR}" PATH)
154 set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin")
157 set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE)
158 find_library (3RDPARTY_TCL_DLL NAMES tcl${3RDPARTY_TCL_LIBRARY_VERSION}
159 PATHS "${DLL_FOLDER_FOR_SEARCH}"
162 if (NOT 3RDPARTY_TCL_DLL OR NOT EXISTS "${3RDPARTY_TCL_DLL}")
163 set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "TCL shared library" FORCE)
166 if (NOT 3RDPARTY_TCL_DLL_DIR AND 3RDPARTY_TCL_DLL)
167 get_filename_component (3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL}" PATH)
168 set (3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL_DIR}" CACHE FILEPATH "The directory containing TCL shared library" FORCE)
172 # include found paths to common variables
173 if (3RDPARTY_TCL_INCLUDE_DIR AND EXISTS "${3RDPARTY_TCL_INCLUDE_DIR}")
174 list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TCL_INCLUDE_DIR}")
176 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_INCLUDE_DIR)
179 if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}")
180 list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TCL_LIBRARY_DIR}")
182 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_LIBRARY_DIR})
186 if (3RDPARTY_TCL_DLL OR EXISTS "${3RDPARTY_TCL_DLL}")
187 list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TCL_DLL_DIR}")
189 list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_DLL_DIR)
195 # include occt macros. compiler_bitness, os_wiht_bit, compiler
196 OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
198 OCCT_MAKE_OS_WITH_BITNESS()
199 OCCT_MAKE_COMPILER_SHORT_NAME()
202 # tcl 8.6 requires zlib. install all dlls from tcl bin folder that may contain zlib also
204 # collect and install all dlls from tcl dll dirs
205 file (GLOB TCL_DLLS "${3RDPARTY_TCL_DLL_DIR}/*.dll")
206 install (FILES ${TCL_DLLS}
207 CONFIGURATIONS Release
208 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
209 install (FILES ${TCL_DLLS}
210 CONFIGURATIONS RelWithDebInfo
211 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
212 install (FILES ${TCL_DLLS}
214 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
216 get_filename_component(3RDPARTY_TCL_LIBRARY_REALPATH ${3RDPARTY_TCL_LIBRARY} REALPATH)
217 install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH}
218 CONFIGURATIONS Release
219 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
220 install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH}
221 CONFIGURATIONS RelWithDebInfo
222 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libi")
223 install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH}
225 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd")
228 if (TCL_TCLSH_VERSION)
229 # tcl is required to install in lib folder (without)
230 install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
231 install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
233 message (STATUS "\nWarning: tclX.X subdir won't be copyied during the installation process.")
234 message (STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.")
237 set (USED_3RDPARTY_TCL_DIR "")
239 # the library directory for using by the executable
241 set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DLL_DIR})
243 set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_LIBRARY_DIR})
247 mark_as_advanced (3RDPARTY_TCL_LIBRARY 3RDPARTY_TCL_DLL)
249 if (TK_FOUND AND 3RDPARTY_TCL_DIR)
251 get_filename_component (TK_WISH_ABSOLUTE "${TK_WISH}" ABSOLUTE)
252 get_filename_component (3RDPARTY_TCL_DIR_ABSOLUTE "${3RDPARTY_TCL_DIR}" ABSOLUTE)
254 string (FIND "${TK_WISH_ABSOLUTE}" "${3RDPARTY_TCL_DIR_ABSOLUTE}" THE_SAME_FOLDER)
256 if (${THE_SAME_FOLDER} EQUAL 0)
257 set (3RDPARTY_TCLTK_DIR "${3RDPARTY_TCL_DIR}")
258 message (STATUS "Info: TK is used from TCL folder: ${3RDPARTY_TCLTK_DIR}")
262 # unset all redundant variables
264 OCCT_CHECK_AND_UNSET (TCL_LIBRARY)
265 OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH)
266 OCCT_CHECK_AND_UNSET (TCL_TCLSH)
268 OCCT_CHECK_AND_UNSET (TK_LIBRARY)
269 OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH)
270 OCCT_CHECK_AND_UNSET (TK_WISH)