| 1 | # - Find Tcl includes and libraries |
| 2 | |
| 3 | IF(WIN32) |
| 4 | SET(TCL_SEP "") |
| 5 | |
| 6 | GET_FILENAME_COMPONENT(ActiveTcl_CurrentVersion |
| 7 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]" NAME) |
| 8 | |
| 9 | ELSE() |
| 10 | SET(TCL_SEP ".") |
| 11 | ENDIF() |
| 12 | |
| 13 | IF(NOT DEFINED 3RDPARTY_TCL_DIR) |
| 14 | SET(3RDPARTY_TCL_DIR "" CACHE PATH "Directory contains TCL product") |
| 15 | ENDIF() |
| 16 | |
| 17 | IF(3RDPARTY_DIR AND ("${3RDPARTY_TCL_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED)) |
| 18 | FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME) |
| 19 | IF("${TCL_DIR_NAME}" STREQUAL "") |
| 20 | MESSAGE(STATUS "\nInfo: tcl folder isn't found in ${3RDPARTY_DIR}. Start seeking in default folders") |
| 21 | ELSE() |
| 22 | SET(3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "Directory contains TCL product" FORCE) |
| 23 | ENDIF() |
| 24 | ENDIF() |
| 25 | |
| 26 | SET(INSTALL_TCL OFF CACHE BOOL "Is TCL lib copy to install directory") |
| 27 | |
| 28 | # include dir search |
| 29 | IF("${3RDPARTY_TCL_INCLUDE_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TCL_INCLUDE_DIR}" STREQUAL "3RDPARTY_TCL_INCLUDE_DIR-NOTFOUND") |
| 30 | SET(3RDPARTY_TCL_INCLUDE_DIR "3RDPARTY_TCL_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "Directory contains headers of the TCL product" FORCE) |
| 31 | |
| 32 | IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "") |
| 33 | FIND_PATH(3RDPARTY_TCL_INCLUDE_DIR tcl.h PATHS "${3RDPARTY_TCL_DIR}/include" NO_DEFAULT_PATH) |
| 34 | ELSE() |
| 35 | SET(3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS /usr/include |
| 36 | /usr/local/include |
| 37 | /usr/include/tcl8${TCL_SEP}6 |
| 38 | /usr/include/tcl8${TCL_SEP}5) |
| 39 | IF(WIN32) |
| 40 | SET(3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS ${3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS} |
| 41 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include" |
| 42 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/include" |
| 43 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include" |
| 44 | "$ENV{ProgramFiles}/Tcl/include" |
| 45 | #"$ENV{ProgramFiles\(x86\)}/Tcl/include" |
| 46 | "C:/Program Files/Tcl/include" |
| 47 | "C:/Tcl/include") |
| 48 | ENDIF(WIN32) |
| 49 | |
| 50 | # check default path (with additions) for header search |
| 51 | FIND_PATH(3RDPARTY_TCL_INCLUDE_DIR tcl.h PATHS ${3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS}) |
| 52 | |
| 53 | #if find_path found something - set 3RDPARTY_TCL_DIR |
| 54 | IF(NOT "${3RDPARTY_TCL_INCLUDE_DIR}" STREQUAL "3RDPARTY_TCL_INCLUDE_DIR-NOTFOUND") |
| 55 | GET_FILENAME_COMPONENT (3RDPARTY_TCL_DIR "${3RDPARTY_TCL_INCLUDE_DIR}/../" ABSOLUTE) |
| 56 | SET(3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DIR} CACHE FILEPATH "Directory contains TCL product" FORCE) |
| 57 | ENDIF() |
| 58 | ENDIF() |
| 59 | ENDIF() |
| 60 | |
| 61 | #library dir search |
| 62 | IF("${3RDPARTY_TCL_LIBRARY}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TCL_LIBRARY}" STREQUAL "3RDPARTY_TCL_LIBRARY-NOTFOUND") |
| 63 | SET(3RDPARTY_TCL_LIBRARY "3RDPARTY_TCL_LIBRARY-NOTFOUND" CACHE FILEPATH "Path to library of the TCL product" FORCE) |
| 64 | |
| 65 | IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "") |
| 66 | FIND_LIBRARY(3RDPARTY_TCL_LIBRARY |
| 67 | NAMES tcl tcl8${TCL_SEP}6 tcl8${TCL_SEP}5 |
| 68 | PATHS "${3RDPARTY_TCL_DIR}/lib" NO_DEFAULT_PATH) |
| 69 | ELSE() |
| 70 | SET(3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS /usr/lib /usr/local/lib) |
| 71 | |
| 72 | IF(WIN32) |
| 73 | SET(3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS ${3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS} |
| 74 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/lib" |
| 75 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/lib" |
| 76 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/lib" |
| 77 | "$ENV{ProgramFiles}/Tcl/Lib" |
| 78 | "C:/Program Files/Tcl/lib" |
| 79 | "C:/Tcl/lib" ) |
| 80 | ENDIF() |
| 81 | |
| 82 | # check default path (with additions) for library search |
| 83 | FIND_LIBRARY(3RDPARTY_TCL_LIBRARY |
| 84 | NAMES tcl tcl8${TCL_SEP}6 tcl8${TCL_SEP}5 |
| 85 | PATHS ${3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS}) |
| 86 | ENDIF() |
| 87 | ENDIF() |
| 88 | |
| 89 | #search the version of found tcl library |
| 90 | IF("${3RDPARTY_TCL_LIBRARY}" STREQUAL "" OR "${3RDPARTY_TCL_LIBRARY}" STREQUAL "3RDPARTY_TCL_LIBRARY-NOTFOUND") |
| 91 | SET (TCL_DLL_SO_NAMES ${DLL_SO_PREFIX}tcl.${DLL_SO} |
| 92 | ${DLL_SO_PREFIX}tcl8${TCL_SEP}5.${DLL_SO} |
| 93 | ${DLL_SO_PREFIX}tcl8${TCL_SEP}6.${DLL_SO} ) |
| 94 | ELSE() |
| 95 | GET_FILENAME_COMPONENT(TCL_LIBRARY_NAME "${3RDPARTY_TCL_LIBRARY}" NAME) |
| 96 | |
| 97 | STRING(REGEX REPLACE "^.*tcl([0-9])[^0-9]*[0-9].*$" "\\1" TCL_MAJOR_VERSION "${TCL_LIBRARY_NAME}") |
| 98 | STRING(REGEX REPLACE "^.*tcl[0-9][^0-9]*([0-9]).*$" "\\1" TCL_MINOR_VERSION "${TCL_LIBRARY_NAME}") |
| 99 | |
| 100 | IF (NOT "${TCL_MAJOR_VERSION}" STREQUAL "${TCL_LIBRARY_NAME}") |
| 101 | SET (IS_TCL_VERSION_FOUND ON) |
| 102 | ELSE() |
| 103 | SET (IS_TCL_VERSION_FOUND OFF) |
| 104 | ENDIF() |
| 105 | |
| 106 | IF (IS_TCL_VERSION_FOUND) |
| 107 | SET (TCL_DLL_SO_NAMES "${DLL_SO_PREFIX}tcl${TCL_MAJOR_VERSION}${TCL_SEP}${TCL_MINOR_VERSION}.${DLL_SO}") |
| 108 | ELSE() |
| 109 | MESSAGE(STATUS "\nWarning: Tcl version isn't found. ${DLL_SO_PREFIX}tcl.${DLL_SO} is used") |
| 110 | SET (TCL_DLL_SO_NAMES "${DLL_SO_PREFIX}tcl.${DLL_SO}") |
| 111 | ENDIF() |
| 112 | ENDIF() |
| 113 | |
| 114 | #dll_so search |
| 115 | IF("${3RDPARTY_TCL_DLL}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TCL_DLL}" STREQUAL "3RDPARTY_TCL_DLL-NOTFOUND") |
| 116 | SET(3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "Path to shared library of the TCL product" FORCE) |
| 117 | |
| 118 | IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "") |
| 119 | FIND_FILE(3RDPARTY_TCL_DLL |
| 120 | NAMES ${TCL_DLL_SO_NAMES} |
| 121 | PATHS "${3RDPARTY_TCL_DIR}/${DLL_SO_FOLDER}" NO_DEFAULT_PATH) |
| 122 | ELSE() |
| 123 | SET(3RDPARTY_TCL_POSSIBLE_SO_DIRS /usr/lib /usr/local/lib) |
| 124 | |
| 125 | IF(WIN32) |
| 126 | SET(3RDPARTY_TCL_POSSIBLE_SO_DIRS ${3RDPARTY_TCL_POSSIBLE_SO_DIRS} |
| 127 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin" |
| 128 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin" |
| 129 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin" |
| 130 | "$ENV{ProgramFiles}/Tcl/Bin" |
| 131 | "C:/Program Files/Tcl/bin" |
| 132 | "C:/Tcl/b" ) |
| 133 | ENDIF() |
| 134 | |
| 135 | # check default path (with additions) for dll_so search |
| 136 | FIND_FILE(3RDPARTY_TCL_DLL |
| 137 | NAMES ${TCL_DLL_SO_NAMES} |
| 138 | PATHS ${3RDPARTY_TCL_POSSIBLE_SO_DIRS}) |
| 139 | ENDIF() |
| 140 | ENDIF() |
| 141 | |
| 142 | IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "") |
| 143 | MARK_AS_ADVANCED(3RDPARTY_TCL_DIR) |
| 144 | ENDIF() |
| 145 | |
| 146 | # #includes found paths to common variables |
| 147 | IF(3RDPARTY_TCL_INCLUDE_DIR) |
| 148 | SET(3RDPARTY_INCLUDE_DIRS "${3RDPARTY_INCLUDE_DIRS};${3RDPARTY_TCL_INCLUDE_DIR}") |
| 149 | ELSE() |
| 150 | LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_INCLUDE_DIR) |
| 151 | ENDIF() |
| 152 | |
| 153 | IF(3RDPARTY_TCL_LIBRARY) |
| 154 | GET_FILENAME_COMPONENT(3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH) |
| 155 | SET(3RDPARTY_LIBRARY_DIRS "${3RDPARTY_LIBRARY_DIRS};${3RDPARTY_TCL_LIBRARY_DIR}") |
| 156 | ELSE() |
| 157 | LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_LIBRARY) |
| 158 | ENDIF() |
| 159 | |
| 160 | IF(3RDPARTY_TCL_DLL) |
| 161 | ELSE() |
| 162 | LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_DLL) |
| 163 | ENDIF() |