9f33b387 |
1 | # tcl |
ad211ad3 |
2 | |
9f33b387 |
3 | if (NOT DEFINED INSTALL_TCL) |
316d77d9 |
4 | set (INSTALL_TCL OFF CACHE BOOL "${INSTALL_TCL_DESCR}") |
9f33b387 |
5 | endif() |
ad211ad3 |
6 | |
9f33b387 |
7 | # tcl directory |
8 | if (NOT DEFINED 3RDPARTY_TCL_DIR) |
9 | set (3RDPARTY_TCL_DIR "" CACHE PATH "The directory containing tcl") |
10 | endif() |
ad211ad3 |
11 | |
9f33b387 |
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") |
15 | endif() |
ad211ad3 |
16 | |
9f33b387 |
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) |
20 | endif() |
21 | |
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") |
25 | endif() |
26 | |
9f33b387 |
27 | # tcl shared library (with absolute path) |
28 | if (WIN32) |
29 | if (NOT DEFINED 3RDPARTY_TCL_DLL OR NOT 3RDPARTY_TCL_DLL_DIR) |
30 | set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "tcl shared library" FORCE) |
31 | endif() |
32 | endif() |
33 | |
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") |
37 | endif() |
38 | |
9f33b387 |
39 | # search for tcl in user defined directory |
40 | if (NOT 3RDPARTY_TCL_DIR AND 3RDPARTY_DIR) |
ad211ad3 |
41 | FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME) |
9f33b387 |
42 | if (TCL_DIR_NAME) |
43 | set (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "The directory containing tcl" FORCE) |
44 | endif() |
45 | endif() |
ad211ad3 |
46 | |
9f33b387 |
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") |
50 | endif() |
51 | |
82f443b6 |
52 | # check tcl include dir, library dir and shared library dir |
53 | COMPLIANCE_PRODUCT_CONSISTENCY(TCL) |
19286d7c |
54 | |
82f443b6 |
55 | # use default (CMake) TCL search |
56 | find_package(TCL) |
9f33b387 |
57 | |
82f443b6 |
58 | # tcl include dir |
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) |
9f33b387 |
62 | endif() |
82f443b6 |
63 | endif() |
9f33b387 |
64 | |
82f443b6 |
65 | # tcl dir and library |
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) |
9f33b387 |
69 | |
82f443b6 |
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) |
9f33b387 |
73 | endif() |
9f33b387 |
74 | endif() |
82f443b6 |
75 | endif() |
9f33b387 |
76 | |
82f443b6 |
77 | |
78 | if (WIN32) |
79 | if (NOT 3RDPARTY_TCL_DLL) |
e713baee |
80 | set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll) |
82f443b6 |
81 | |
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") |
9f33b387 |
90 | endif() |
9f33b387 |
91 | |
82f443b6 |
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}" |
95 | NO_DEFAULT_PATH) |
96 | endif() |
97 | endif() |
9f33b387 |
98 | |
82f443b6 |
99 | COMPLIANCE_PRODUCT_CONSISTENCY(TCL) |
9f33b387 |
100 | |
82f443b6 |
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}" |
106 | NO_DEFAULT_PATH) |
9f33b387 |
107 | |
82f443b6 |
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" |
111 | NO_DEFAULT_PATH) |
9f33b387 |
112 | |
9f33b387 |
113 | |
82f443b6 |
114 | if (NOT 3RDPARTY_TCL_LIBRARY OR NOT EXISTS "${3RDPARTY_TCL_LIBRARY}") |
115 | set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "TCL library" FORCE) |
9f33b387 |
116 | endif() |
117 | |
82f443b6 |
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) |
9f33b387 |
121 | endif() |
82f443b6 |
122 | endif() |
19286d7c |
123 | |
82f443b6 |
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}") |
9f33b387 |
128 | |
82f443b6 |
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") |
9f33b387 |
133 | endif() |
82f443b6 |
134 | endif() |
9f33b387 |
135 | |
82f443b6 |
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}") |
141 | endif() |
19286d7c |
142 | |
82f443b6 |
143 | if (WIN32) |
144 | if (NOT 3RDPARTY_TCL_DLL) |
e713baee |
145 | set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll) |
82f443b6 |
146 | |
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") |
152 | else() |
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") |
9f33b387 |
155 | endif() |
9f33b387 |
156 | |
82f443b6 |
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}" |
160 | NO_DEFAULT_PATH) |
19286d7c |
161 | |
82f443b6 |
162 | if (NOT 3RDPARTY_TCL_DLL OR NOT EXISTS "${3RDPARTY_TCL_DLL}") |
163 | set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "TCL shared library" FORCE) |
9f33b387 |
164 | endif() |
165 | endif() |
82f443b6 |
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) |
9f33b387 |
169 | endif() |
82f443b6 |
170 | endif() |
9f33b387 |
171 | |
82f443b6 |
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}") |
175 | else() |
176 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_INCLUDE_DIR) |
177 | endif() |
19286d7c |
178 | |
82f443b6 |
179 | if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}") |
180 | list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TCL_LIBRARY_DIR}") |
181 | else() |
182 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_LIBRARY_DIR}) |
183 | endif() |
9f33b387 |
184 | |
82f443b6 |
185 | if (WIN32) |
186 | if (3RDPARTY_TCL_DLL OR EXISTS "${3RDPARTY_TCL_DLL}") |
187 | list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TCL_DLL_DIR}") |
9f33b387 |
188 | else() |
82f443b6 |
189 | list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_DLL_DIR) |
9f33b387 |
190 | endif() |
82f443b6 |
191 | endif() |
9f33b387 |
192 | |
82f443b6 |
193 | # install tcl |
9f33b387 |
194 | if (INSTALL_TCL) |
fa0cbe55 |
195 | # include occt macros. compiler_bitness, os_wiht_bit, compiler |
19286d7c |
196 | OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros") |
9f33b387 |
197 | |
198 | OCCT_MAKE_OS_WITH_BITNESS() |
199 | OCCT_MAKE_COMPILER_SHORT_NAME() |
9f33b387 |
200 | |
201 | if (WIN32) |
94829f84 |
202 | # tcl 8.6 requires zlib. install all dlls from tcl bin folder that may contain zlib also |
203 | |
82f443b6 |
204 | # collect and install all dlls from tcl dll dirs |
94829f84 |
205 | file (GLOB TCL_DLLS "${3RDPARTY_TCL_DLL_DIR}/*.dll") |
096ef695 |
206 | |
4b3541c6 |
207 | if (SINGLE_GENERATOR) |
208 | install (FILES ${TCL_DLLS} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}") |
096ef695 |
209 | else() |
210 | install (FILES ${TCL_DLLS} |
211 | CONFIGURATIONS Release |
4b3541c6 |
212 | DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}") |
096ef695 |
213 | install (FILES ${TCL_DLLS} |
214 | CONFIGURATIONS RelWithDebInfo |
4b3541c6 |
215 | DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i") |
096ef695 |
216 | install (FILES ${TCL_DLLS} |
217 | CONFIGURATIONS Debug |
4b3541c6 |
218 | DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d") |
096ef695 |
219 | endif() |
9f33b387 |
220 | else() |
94829f84 |
221 | get_filename_component(3RDPARTY_TCL_LIBRARY_REALPATH ${3RDPARTY_TCL_LIBRARY} REALPATH) |
096ef695 |
222 | |
4b3541c6 |
223 | if (SINGLE_GENERATOR) |
224 | install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}") |
096ef695 |
225 | else() |
226 | install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} |
227 | CONFIGURATIONS Release |
4b3541c6 |
228 | DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}") |
096ef695 |
229 | install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} |
230 | CONFIGURATIONS RelWithDebInfo |
4b3541c6 |
231 | DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i") |
096ef695 |
232 | install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} |
233 | CONFIGURATIONS Debug |
4b3541c6 |
234 | DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d") |
096ef695 |
235 | endif() |
9f33b387 |
236 | endif() |
237 | |
238 | if (TCL_TCLSH_VERSION) |
fa0cbe55 |
239 | # tcl is required to install in lib folder (without) |
4b3541c6 |
240 | install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}") |
241 | install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}") |
9f33b387 |
242 | else() |
82f443b6 |
243 | message (STATUS "\nWarning: tclX.X subdir won't be copyied during the installation process.") |
9f33b387 |
244 | message (STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.") |
245 | endif() |
0a66e59d |
246 | |
247 | set (USED_3RDPARTY_TCL_DIR "") |
248 | else() |
249 | # the library directory for using by the executable |
250 | if (WIN32) |
251 | set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DLL_DIR}) |
252 | else() |
253 | set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_LIBRARY_DIR}) |
254 | endif() |
9f33b387 |
255 | endif() |
256 | |
82f443b6 |
257 | mark_as_advanced (3RDPARTY_TCL_LIBRARY 3RDPARTY_TCL_DLL) |
258 | |
259 | if (TK_FOUND AND 3RDPARTY_TCL_DIR) |
d3ff0ff2 |
260 | |
261 | get_filename_component (TK_WISH_ABSOLUTE "${TK_WISH}" ABSOLUTE) |
262 | get_filename_component (3RDPARTY_TCL_DIR_ABSOLUTE "${3RDPARTY_TCL_DIR}" ABSOLUTE) |
263 | |
264 | string (FIND "${TK_WISH_ABSOLUTE}" "${3RDPARTY_TCL_DIR_ABSOLUTE}" THE_SAME_FOLDER) |
265 | |
266 | if (${THE_SAME_FOLDER} EQUAL 0) |
82f443b6 |
267 | set (3RDPARTY_TCLTK_DIR "${3RDPARTY_TCL_DIR}") |
a6874708 |
268 | message (STATUS "Info: TK is used from TCL folder: ${3RDPARTY_TCLTK_DIR}") |
82f443b6 |
269 | endif() |
270 | endif() |
9f33b387 |
271 | |
272 | # unset all redundant variables |
273 | #TCL |
274 | OCCT_CHECK_AND_UNSET (TCL_LIBRARY) |
275 | OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH) |
276 | OCCT_CHECK_AND_UNSET (TCL_TCLSH) |
277 | #TK |
278 | OCCT_CHECK_AND_UNSET (TK_LIBRARY) |
279 | OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH) |
280 | OCCT_CHECK_AND_UNSET (TK_WISH) |