From: <and...@us...> - 2008-07-17 06:52:41
|
Revision: 8518 http://plplot.svn.sourceforge.net/plplot/?rev=8518&view=rev Author: andrewross Date: 2008-07-17 06:52:50 +0000 (Thu, 17 Jul 2008) Log Message: ----------- TK_LIBRARY is not a suitable replacement for ITK_LIBRARY. This causes the tk build to fail on debian testing with cmake 2.6.0 (although it seems ok on my older system with cmake 2.4). Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2008-07-17 06:50:25 UTC (rev 8517) +++ trunk/cmake/modules/tcl-related.cmake 2008-07-17 06:52:50 UTC (rev 8518) @@ -152,7 +152,7 @@ message(STATUS "Looking for itk library") set(itk_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itk_library_versions}) - find_library(ITK_LIBRARY itk${version} ${TK_LIBRARY} + find_library(ITK_LIBRARY itk${version} PATH_SUFFIXES itk${version}) endforeach(version ${itk_library_versions}) if(ITK_LIBRARY) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-08-20 23:03:59
|
Revision: 8690 http://plplot.svn.sourceforge.net/plplot/?rev=8690&view=rev Author: airwin Date: 2008-08-20 23:04:09 +0000 (Wed, 20 Aug 2008) Log Message: ----------- White space changes according to emacs cmake mode. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2008-08-20 11:59:26 UTC (rev 8689) +++ trunk/cmake/modules/tcl-related.cmake 2008-08-20 23:04:09 UTC (rev 8690) @@ -33,7 +33,7 @@ endif(DEFAULT_NO_BINDINGS) # Depending on these above options and system resources may also determine -# the following variables which are largely self-explantory unless documented +# the following variables which are largely self-explanatory unless documented # further. #TCL_INCLUDE_PATH @@ -60,8 +60,8 @@ # Supplement those results with iTcl and iTk include paths and libraries. if(TCL_FOUND) message(STATUS - "Looking for include paths and libraries for Tcl/Tk - found" - ) + "Looking for include paths and libraries for Tcl/Tk - found" + ) message(STATUS "Looking for tclsh") include(FindTclsh) if(TCL_TCLSH) @@ -69,10 +69,10 @@ message(STATUS "TCL_TCLSH = ${TCL_TCLSH}") # test to determine HAVE_TCL_GT_84 execute_process( - COMMAND ${TCL_TCLSH} CheckTCL_GT_84.tcl - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/modules - OUTPUT_VARIABLE HAVE_TCL_GT_84 - ) + COMMAND ${TCL_TCLSH} CheckTCL_GT_84.tcl + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/modules + OUTPUT_VARIABLE HAVE_TCL_GT_84 + ) else(TCL_TCLSH) message(STATUS "Looking for tclsh - not found") # Fall back to user option for determining HAVE_TCL_GT_84. @@ -81,8 +81,8 @@ message(STATUS "HAVE_TCL_GT_84 = ${HAVE_TCL_GT_84}") else(TCL_FOUND) message(STATUS - "Looking for include paths and libraries for Tcl/Tk - not found" - ) + "Looking for include paths and libraries for Tcl/Tk - not found" + ) endif(TCL_FOUND) if(TCL_FOUND AND TCL_TCLSH) message(STATUS "TCL_INCLUDE_PATH = ${TCL_INCLUDE_PATH}") @@ -97,7 +97,7 @@ set(itcl_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itcl_library_versions}) find_library(ITCL_LIBRARY itcl${version} PATHS ${TCL_LIBRARY_PATH} - PATH_SUFFIXES itcl${version}) + PATH_SUFFIXES itcl${version}) endforeach(version ${itcl_library_versions}) if(ITCL_LIBRARY) message(STATUS "Looking for itcl library - found") @@ -105,14 +105,12 @@ find_path(HAVE_ITCLDECLS_H itclDecls.h ${TCL_INCLUDE_PATH}) else(ITCL_LIBRARY) message(STATUS "Looking for itcl library - not found") - message(STATUS "WARNING: Disabling incr Tcl interface code" - ) - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) + message(STATUS "WARNING: Disabling incr Tcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) endif(ITCL_LIBRARY) else(ITCL_INCLUDE_PATH) message(STATUS "Looking for itcl.h - not found") - message(STATUS "WARNING: Disabling incr Tcl interface code" - ) + message(STATUS "WARNING: Disabling incr Tcl interface code") set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) endif(ITCL_INCLUDE_PATH) endif(ENABLE_itcl) @@ -140,8 +138,8 @@ message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") else(ENABLE_tk) message(STATUS - "WARNING: Because Tk is disabled must disable incr Tk as well" - ) + "WARNING: Because Tk is disabled must disable incr Tk as well" + ) set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) endif(ENABLE_tk) if(ENABLE_itk) @@ -153,16 +151,15 @@ set(itk_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itk_library_versions}) find_library(ITK_LIBRARY itk${version} - PATH_SUFFIXES itk${version}) + PATH_SUFFIXES itk${version}) endforeach(version ${itk_library_versions}) if(ITK_LIBRARY) message(STATUS "Looking for itk library - found") set(HAVE_ITK ON) else(ITK_LIBRARY) message(STATUS "Looking for itk library - not found") - message(STATUS "WARNING: Disabling incr Tk interface code" - ) - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + message(STATUS "WARNING: Disabling incr Tk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) endif(ITK_LIBRARY) else(ITK_INCLUDE_PATH) message(STATUS "Looking for itk.h - not found") @@ -183,9 +180,9 @@ endif(TCL_FOUND AND TCL_TCLSH) else(ENABLE_tcl) message(STATUS - "ENABLE_tcl is OFF so disabling everything else that " - "is Tcl/Tk related" - ) + "ENABLE_tcl is OFF so disabling everything else that " + "is Tcl/Tk related" + ) set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-10-25 06:22:21
|
Revision: 12627 http://sourceforge.net/p/plplot/code/12627 Author: airwin Date: 2013-10-25 06:22:19 +0000 (Fri, 25 Oct 2013) Log Message: ----------- Bump the maximum version searched for to 4.0.0 for iTcl. (Note that version is an integral part of the Tcl-8.6.1 source code and automatically builds when Tcl-8.6.1 is built.) Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-10-24 23:01:26 UTC (rev 12626) +++ trunk/cmake/modules/tcl-related.cmake 2013-10-25 06:22:19 UTC (rev 12627) @@ -94,7 +94,7 @@ message(STATUS "Looking for itcl.h - found") message(STATUS "Looking for itcl library") get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH) - set(itcl_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) + set(itcl_library_versions 4.0.0 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itcl_library_versions}) find_library(ITCL_LIBRARY itcl${version} PATHS ${TCL_LIBRARY_PATH} PATH_SUFFIXES itcl${version}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-11-06 00:35:18
|
Revision: 12664 http://sourceforge.net/p/plplot/code/12664 Author: airwin Date: 2013-11-06 00:35:15 +0000 (Wed, 06 Nov 2013) Log Message: ----------- Implement USE_INCRTCL_VERSION_4 option which allows users to express a preference for version 4 of itcl and friends of both version 3 and version 4 are available. This option is OFF by default (i.e., the default preference is version 3 of itcl and friends when both version 3 and 4 are available). Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-11-05 20:25:06 UTC (rev 12663) +++ trunk/cmake/modules/tcl-related.cmake 2013-11-06 00:35:15 UTC (rev 12664) @@ -32,6 +32,8 @@ option(ENABLE_itk "Enable incr TK interface code" ON) endif(DEFAULT_NO_BINDINGS) +option(USE_INCRTCL_VERSION_4 "Use [incr Tcl] version 4" OFF) + # Depending on these above options and system resources may also determine # the following variables which are largely self-explanatory unless documented # further. @@ -94,7 +96,10 @@ message(STATUS "Looking for itcl.h - found") message(STATUS "Looking for itcl library") get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH) - set(itcl_library_versions 4.0.0 3.4 3.3 3.2 3.1 3.0 2.1 2.0) + set(itcl_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) + if(USE_INCRTCL_VERSION_4) + set(itcl_library_versions 4.0.0 ${itcl_library_versions}) + endif(USE_INCRTCL_VERSION_4) foreach(version ${itcl_library_versions}) find_library(ITCL_LIBRARY itcl${version} PATHS ${TCL_LIBRARY_PATH} PATH_SUFFIXES itcl${version}) @@ -161,7 +166,10 @@ if(ITK_INCLUDE_PATH) message(STATUS "Looking for itk.h - found") message(STATUS "Looking for itk library") - set(itk_library_versions 4.0.0 3.4 3.3 3.2 3.1 3.0 2.1 2.0) + set(itk_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) + if(USE_INCRTCL_VERSION_4) + set(itk_library_versions 4.0.0 ${itk_library_versions}) + endif(USE_INCRTCL_VERSION_4) foreach(version ${itk_library_versions}) find_library(ITK_LIBRARY itk${version} PATHS ${TCL_LIBRARY_PATH} PATH_SUFFIXES itk${version}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-11-09 02:31:56
|
Revision: 12672 http://sourceforge.net/p/plplot/code/12672 Author: airwin Date: 2013-11-09 02:31:53 +0000 (Sat, 09 Nov 2013) Log Message: ----------- Continue to rationalize and strengthen Itcl, Itk, and Iwidgets detection and consistency checking. Tested by Alan W. Irwin <ai...@us...> on Linux using the output from cmake configuration of PLplot. The cases tested were as follows: 1. Ordinary PATH variable, use (the default) -DUSE_INCRTCL_VERSION_4=OFF. 2. Identical to (1.), except specify -DUSE_INCRTCL_VERSION_4=ON. 3. Identical to (1.), except the PATH was modified to put a special install location used by epa_build (a.k.a., build_projects) on the PATH. The result was the tclsh version built by epa_build was used for this test. 4. Identical to (3.), except specify -DUSE_INCRTCL_VERSION_4=ON. The result for (1.) was consistent data for Tcl8.5, Tk8.5, version 3 of Itcl and Itk, and version 4.0.1 of Iwidgets were found corresponding to the (old) Debian wheezy packages that have been installed on my system. The result for (2.) smoothly dropped Itcl, Itk, and Iwidgets (as expected since Debian wheezy does not give access to version 4 of Itcl and friends). The result for (3.) was consistent data for Tcl8.6, Tk8.6, version 3 of Itcl and Itk (both built against Tcl/Tk8.6), and version 4.0.1 of Iwidgets were found corresponding to the epa_build for version 3 of itcl and friends. The result for (4.) was consistent data for Tcl8.6, Tk8.6, version 4 of Itcl and Itk (both built against Tcl/Tk8.6), and version 4.1.0 of Iwidgets were found corresponding to the epa_build for version 3 of itcl and friends. So a simple manipulation of the PATH and/or the -DUSE_INCRTCL_VERSION_4 cmake option gives consistent results in all cases. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-11-08 21:41:30 UTC (rev 12671) +++ trunk/cmake/modules/tcl-related.cmake 2013-11-09 02:31:53 UTC (rev 12672) @@ -57,17 +57,15 @@ # Used for source file configuration.) if(ENABLE_tcl) - message(STATUS "Looking for include paths and libraries for Tcl/Tk") - find_package(TCL) - # Supplement those results with iTcl and iTk include paths and libraries. + message(STATUS "Use system introspection to determine data for Tcl and friends") + find_package(TCL QUIET) if(TCL_FOUND) - message(STATUS - "Looking for include paths and libraries for Tcl/Tk - found" - ) + message(STATUS "Looking for include paths and libraries for Tcl - found") + message(STATUS "TCL_INCLUDE_PATH = ${TCL_INCLUDE_PATH}") + message(STATUS "TCL_LIBRARY = ${TCL_LIBRARY}") get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH) + message(STATUS "TCL_LIBRARY_PATH = ${TCL_LIBRARY_PATH}") - message(STATUS "Looking for tclsh") - include(FindTclsh) if(TCL_TCLSH) message(STATUS "Looking for tclsh - found") message(STATUS "TCL_TCLSH = ${TCL_TCLSH}") @@ -75,13 +73,11 @@ message(STATUS "Looking for tclsh - not found") endif(TCL_TCLSH) else(TCL_FOUND) - message(STATUS - "Looking for include paths and libraries for Tcl/Tk - not found" - ) + message(STATUS "Looking for include paths and libraries for Tcl - not found") endif(TCL_FOUND) + set(HAVE_ITCL OFF) + set(HAVE_ITK OFF) if(TCL_FOUND AND TCL_TCLSH) - message(STATUS "TCL_INCLUDE_PATH = ${TCL_INCLUDE_PATH}") - message(STATUS "TCL_LIBRARY = ${TCL_LIBRARY}") if(ENABLE_itcl) if(USE_INCRTCL_VERSION_4) set(SUGGESTED_ITCL_VERSION 4) @@ -97,19 +93,26 @@ ERROR_VARIABLE ITCL_STDERR ) if(NOT ITCL_RC) - set(ITCL_PACKAGE_NAME "-exact Itcl ${ITCL_VERSION}") + set(ITCL_PACKAGE_NAME "Itcl ${ITCL_VERSION}") message(STATUS "ITCL_PACKAGE_NAME = ${ITCL_PACKAGE_NAME}") message(STATUS "Looking for itcl.h") - find_path(ITCL_INCLUDE_PATH itcl.h ${TCL_INCLUDE_PATH}) + if(NOT USE_INCRTCL_VERSION_4) + # Search first for epa_build install location. + find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}/itcl${ITCL_VERSION}) + endif(NOT USE_INCRTCL_VERSION_4) + find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}) if(ITCL_INCLUDE_PATH) message(STATUS "Looking for itcl.h - found") + message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") message(STATUS "Looking for itcl library") - find_library(ITCL_LIBRARY itcl${ITCL_VERSION} PATHS ${TCL_LIBRARY_PATH} - PATH_SUFFIXES itcl${ITCL_VERSION}) + # Search first for epa_build install location. + find_library(ITCL_LIBRARY itcl${ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${ITCL_VERSION}) + find_library(ITCL_LIBRARY itcl${ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}) if(ITCL_LIBRARY) message(STATUS "Looking for itcl library - found") + message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}") set(HAVE_ITCL ON) - find_path(HAVE_ITCLDECLS_H itclDecls.h ${TCL_INCLUDE_PATH}) + find_path(HAVE_ITCLDECLS_H itclDecls.h HINTS ${ITCL_INCLUDE_PATH}) else(ITCL_LIBRARY) message(STATUS "Looking for itcl library - not found") message(STATUS "WARNING: Disabling incr Tcl interface code") @@ -123,14 +126,10 @@ else(NOT ITCL_RC) message(STATUS "Itcl not available or not compatible with current Tcl shell") message(STATUS "WARNING: Disabling incr Tcl interface code") - set(HAVE_ITCL OFF) set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) endif(NOT ITCL_RC) endif(ENABLE_itcl) - if(ENABLE_itcl) - message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") - message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}") - endif(ENABLE_itcl) + # ------------------------------------------------------------------------ # figure out how to build tclIndex # ------------------------------------------------------------------------ @@ -141,28 +140,32 @@ set(MKTCLINDEX_ARGS "-tcl") endif(ENABLE_itcl) + if(ENABLE_tk AND NOT TK_FOUND) + message(STATUS "WARNING: Tk not found so disabling Tk interface code") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) + endif(ENABLE_tk AND NOT TK_FOUND) + if(ENABLE_tk AND NOT X11_FOUND) - message(STATUS "WARNING: X11 not found, disabling Tk interface code") + message(STATUS "WARNING: X11 not found so disabling Tk interface code") set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) endif(ENABLE_tk AND NOT X11_FOUND) + if(ENABLE_tk) + message(STATUS "Looking for include paths and libraries for Tk - found") + set(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${X11_INCLUDE_DIR}) + message(STATUS "TK_INCLUDE_PATH = ${TK_INCLUDE_PATH}") + message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") + get_filename_component(TK_LIBRARY_PATH ${TK_LIBRARY} PATH) + message(STATUS "TK_LIBRARY_PATH = ${TK_LIBRARY_PATH}") if(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) - message(STATUS "TCL_LIBRARY_PATH = ${TCL_LIBRARY_PATH}") - message(STATUS "TK_LIBRARY_PATH = ${TK_LIBRARY_PATH}") message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible") endif(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) - endif(ENABLE_tk) - if(ENABLE_tk) - set(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${X11_INCLUDE_DIR}) - message(STATUS "TK_INCLUDE_PATH = ${TK_INCLUDE_PATH}") - message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") else(ENABLE_tk) - message(STATUS - "WARNING: Because Tk is disabled must disable incr Tk as well" - ) + message(STATUS "WARNING: Because Tk is disabled must disable incr Tk as well") set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) endif(ENABLE_tk) + if(ENABLE_itk) if(USE_INCRTCL_VERSION_4) set(SUGGESTED_ITK_VERSION 4) @@ -178,18 +181,27 @@ ERROR_VARIABLE ITK_STDERR ) if(NOT ITK_RC) - set(ITK_PACKAGE_NAME "-exact Itk ${ITK_VERSION}") + set(ITK_PACKAGE_NAME "Itk ${ITK_VERSION}") message(STATUS "ITK_PACKAGE_NAME = ${ITK_PACKAGE_NAME}") + message(STATUS "Looking for itk.h") - find_path(ITK_INCLUDE_PATH itk.h ${TK_INCLUDE_PATH}) + if(NOT USE_INCRTCL_VERSION_4) + # Search first for epa_build install location. + find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}/itcl${ITCL_VERSION}) + endif(NOT USE_INCRTCL_VERSION_4) + find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}) if(ITK_INCLUDE_PATH) message(STATUS "Looking for itk.h - found") + message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") + message(STATUS "Looking for itk library") - find_library(ITK_LIBRARY itk${ITK_VERSION} PATHS ${TCL_LIBRARY_PATH} - PATH_SUFFIXES itk${ITK_VERSION}) + # Search first for epa_build install location. + find_library(ITK_LIBRARY itk${ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${ITK_VERSION}) + find_library(ITK_LIBRARY itk${ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}) if(ITK_LIBRARY) message(STATUS "Looking for itk library - found") - set(HAVE_ITK ON) + message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") + set(HAVE_ITK ON) # Test version consistency between iwidgets, itk, and itcl. if(USE_INCRTCL_VERSION_4) @@ -211,8 +223,8 @@ # inaccessible to my google searches or privately made # available before all development of iwidgets4.0 # stopped. So add 4.0.2 to the list just in case. - foreach(SUGGESTED_ITK_VERSION 4.0.2 4.0.1 4.0.0) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") + foreach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require -exact Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") execute_process( COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl RESULT_VARIABLE IWIDGETS_RC @@ -222,16 +234,30 @@ if(NOT IWIDGETS_RC) break() endif(NOT IWIDGETS_RC) - endforeach(SUGGESTED_ITK_VERSION 4.0.2 4.0.1 4.0.0) + endforeach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) endif(USE_INCRTCL_VERSION_4) if(NOT IWIDGETS_RC) list(GET IWIDGETS_VERSIONS_LIST 0 IWIDGETS_VERSION) list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) if(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) - set(IWIDGETS_PACKAGE_NAME "-exact Iwidgets ${IWIDGETS_VERSION}") + if(USE_INCRTCL_VERSION_4) + set(IWIDGETS_PACKAGE_NAME "Iwidgets ${IWIDGETS_VERSION}") + else(USE_INCRTCL_VERSION_4) + # Must use exact to distinguish from 4.1 version with + # the same major version number. This should not be + # an issue after install since it is rare/nonexistent to + # change the patch number of this really old version of + # iwidgets between the build and post-install eras. + set(IWIDGETS_PACKAGE_NAME "-exact Iwidgets ${IWIDGETS_VERSION}") + endif(USE_INCRTCL_VERSION_4) message(STATUS "IWIDGETS_PACKAGE_NAME = ${IWIDGETS_PACKAGE_NAME}") else(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) + message(STATUS "IWIDGETS_VERSION = ${IWIDGETS_VERSION}") + message(STATUS "ITK_VERSION = ${ITK_VERSION}") + message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") + message(STATUS "ITCL_VERSION = ${ITCL_VERSION}") + message(STATUS "CONSISTENT_ITCL_VERSION = ${CONSISTENT_ITCL_VERSION}") message(STATUS "WARNING: Consistent combination of Iwidgets, Itk, and Itcl not found so disabling Itcl and Itk") set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) @@ -254,27 +280,21 @@ else(NOT ITK_RC) message(STATUS "Itk not available or not compatible with current Tcl shell") message(STATUS "WARNING: Disabling incr Tk interface code") - set(HAVE_ITK OFF) set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) endif(NOT ITK_RC) endif(ENABLE_itk) - if(ENABLE_itk) - message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") - message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") - endif(ENABLE_itk) else(TCL_FOUND AND TCL_TCLSH) + message(STATUS "Tcl not found OR tclsh not found") message(STATUS "WARNING: Disabling everything that is Tcl/Tk related") set(ENABLE_tcl OFF CACHE BOOL "Enable Tcl bindings" FORCE) set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) endif(TCL_FOUND AND TCL_TCLSH) + message(STATUS "Finished system introspection to determine data for Tcl and friends") else(ENABLE_tcl) - message(STATUS - "ENABLE_tcl is OFF so disabling everything else that " - "is Tcl/Tk related" - ) + message(STATUS "WARNING: ENABLE_tcl is OFF so disabling everything else that is Tcl/Tk related") set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-11-23 23:37:38
|
Revision: 12745 http://sourceforge.net/p/plplot/code/12745 Author: airwin Date: 2013-11-23 23:37:35 +0000 (Sat, 23 Nov 2013) Log Message: ----------- Allow expert users to specify PLPLOT_ITCL_VERSION, PLPLOT_ITK_VERSION, and IWIDGETS_VERSIONS_LIST to avoid running tclsh at the configuration stage. However, the values must be consistent to avoid automatic disabling of Itcl and/or Itk. So for example, -DIWIDGETS_VERSIONS_LIST:STRING="4.0.1;3.3;3.4" -DPLPLOT_ITK_VERSION:STRING=3.3 -DPLPLOT_ITCL_VERSION:STRING=3.4 works correctly on Debian Wheezy, but specifying something different than the values that would be found automatically by "package require" commands under tclsh would result in disabling of Itcl, and/or Itk. So users specify these values at their own risk. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-11-23 04:20:14 UTC (rev 12744) +++ trunk/cmake/modules/tcl-related.cmake 2013-11-23 23:37:35 UTC (rev 12745) @@ -96,14 +96,28 @@ else(USE_INCRTCL_VERSION_4) set(SUGGESTED_ITCL_VERSION 3) endif(USE_INCRTCL_VERSION_4) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl "puts -nonewline [package require Itcl ${SUGGESTED_ITCL_VERSION}]; exit") - # Refine SUGGESTED_ITCL_VERSION to exact value or fail. - execute_process( - COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl - RESULT_VARIABLE ITCL_RC - OUTPUT_VARIABLE PLPLOT_ITCL_VERSION - ERROR_VARIABLE ITCL_STDERR - ) + if(NOT PLPLOT_ITCL_VERSION) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl "puts -nonewline [package require Itcl ${SUGGESTED_ITCL_VERSION}]; exit") + # Refine SUGGESTED_ITCL_VERSION to exact value or fail. + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl + RESULT_VARIABLE ITCL_RC + OUTPUT_VARIABLE _plplot_itcl_version + ) + if(NOT ITCL_RC) + # Store result in cached variable so it will be remembered + # when cmake is re-run, but use type of STRING rather than + # INTERNAL to allow users to specify the value with a + # -DPLPLOT_ITCL_VERSION:STRING=<whatever> on the command + # line for those rare cases when "package require Itcl" + # would error out due to some tclsh issue. + set(PLPLOT_ITCL_VERSION ${_plplot_itcl_version} + CACHE STRING "Itcl version that will be used" + ) + endif(NOT ITCL_RC) + else(NOT PLPLOT_ITCL_VERSION) + set(ITCL_RC 0) + endif(NOT PLPLOT_ITCL_VERSION) if(NOT ITCL_RC) message(STATUS "Looking for itcl.h") if(NOT USE_INCRTCL_VERSION_4) @@ -212,14 +226,29 @@ else(USE_INCRTCL_VERSION_4) set(SUGGESTED_ITK_VERSION 3) endif(USE_INCRTCL_VERSION_4) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl "puts -nonewline [package require Itk ${SUGGESTED_ITK_VERSION}]; exit") - # Refine SUGGESTED_ITK_VERSION to exact value or fail. - execute_process( - COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl - RESULT_VARIABLE ITK_RC - OUTPUT_VARIABLE PLPLOT_ITK_VERSION - ERROR_VARIABLE ITK_STDERR - ) + if(NOT PLPLOT_ITK_VERSION) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl "puts -nonewline [package require Itk ${SUGGESTED_ITK_VERSION}]; exit") + # Refine SUGGESTED_ITK_VERSION to exact value or fail. + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl + RESULT_VARIABLE ITK_RC + OUTPUT_VARIABLE _plplot_itk_version + ) + if(NOT ITK_RC) + # Store result in cached variable so it will be remembered + # when cmake is re-run, but use type of STRING rather than + # INTERNAL to allow users to specify the value with a + # -DPLPLOT_ITK_VERSION:STRING=<whatever> on the command line + # for those rare cases (e.g., autobuild environment without X) + # when "package require Itk" would error out due to the lack + # of X or some tclsh issue. + set(PLPLOT_ITK_VERSION ${_plplot_itk_version} + CACHE STRING "Itk version that will be used" + ) + endif(NOT ITK_RC) + else(NOT PLPLOT_ITK_VERSION) + set(ITCL_RC 0) + endif(NOT PLPLOT_ITK_VERSION) if(NOT ITK_RC) message(STATUS "Looking for itk.h") if(NOT USE_INCRTCL_VERSION_4) @@ -278,39 +307,57 @@ set(HAVE_ITK ON) # Test version consistency between iwidgets, itk, and itcl. - if(USE_INCRTCL_VERSION_4) - set(SUGGESTED_IWIDGETS_VERSION 4.1) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") - execute_process( - COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl - RESULT_VARIABLE IWIDGETS_RC - OUTPUT_VARIABLE IWIDGETS_VERSIONS_LIST - ERROR_VARIABLE IWIDGETS_STDERR - ) - else(USE_INCRTCL_VERSION_4) - # Find maximum 4.0 version of iwidgets that is - # available. 4.0.1 (released in 2002) is the largest - # version of iwidgets4.0 (as opposed to the recently - # developed iwidgets4.1) I have found on the web in - # tarball form, but I have seen one reference to 4.0.2 - # which may have been publicly released somewhere - # inaccessible to my google searches or privately made - # available before all development of iwidgets4.0 - # stopped. So add 4.0.2 to the list just in case. - foreach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require -exact Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") + if(NOT IWIDGETS_VERSIONS_LIST) + if(USE_INCRTCL_VERSION_4) + set(SUGGESTED_IWIDGETS_VERSION 4.1) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") execute_process( COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl RESULT_VARIABLE IWIDGETS_RC - OUTPUT_VARIABLE IWIDGETS_VERSIONS_LIST - ERROR_VARIABLE IWIDGETS_STDERR + OUTPUT_VARIABLE _iwidgets_versions_list ) - if(NOT IWIDGETS_RC) - break() - endif(NOT IWIDGETS_RC) - endforeach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) - endif(USE_INCRTCL_VERSION_4) + else(USE_INCRTCL_VERSION_4) + # Find maximum 4.0 version of iwidgets that is + # available. 4.0.1 (released in 2002) is the largest + # version of iwidgets4.0 (as opposed to the recently + # developed iwidgets4.1) I have found on the web in + # tarball form, but I have seen one reference to 4.0.2 + # which may have been publicly released somewhere + # inaccessible to my google searches or privately made + # available before all development of iwidgets4.0 + # stopped. So add 4.0.2 to the list just in case. + foreach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require -exact Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl + RESULT_VARIABLE IWIDGETS_RC + OUTPUT_VARIABLE _iwidgets_versions_list + ERROR_QUIET + ) + if(NOT IWIDGETS_RC) + break() + endif(NOT IWIDGETS_RC) + endforeach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) + endif(USE_INCRTCL_VERSION_4) + if(NOT IWIDGETS_RC) + # Store result in cached variable so it will be + # remembered when cmake is re-run, but use type of + # STRING rather than INTERNAL to allow users to + # specify the value with a + # -DIWIDGETS_VERSIONS_LIST:STRING=<whatever> on the + # command line for those rare cases (e.g., autobuild + # environment without X) when "package require Itk (or + # Itcl or IWidgets)" would error out due to the lack of + # X or some tclsh issue + set(IWIDGETS_VERSIONS_LIST ${_iwidgets_versions_list} + CACHE STRING "list of Iwidgets; Itk, and Itcl versions (in that order) that will be used" + ) + endif(NOT IWIDGETS_RC) + else(NOT IWIDGETS_VERSIONS_LIST) + set(IWIDGETS_RC 0) + endif(NOT IWIDGETS_VERSIONS_LIST) if(NOT IWIDGETS_RC) + message(STATUS "IWIDGETS_VERSIONS_LIST = ${IWIDGETS_VERSIONS_LIST}") list(GET IWIDGETS_VERSIONS_LIST 0 PLPLOT_IWIDGETS_VERSION) list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2014-01-10 01:44:13
|
Revision: 12927 http://sourceforge.net/p/plplot/code/12927 Author: airwin Date: 2014-01-10 01:44:07 +0000 (Fri, 10 Jan 2014) Log Message: ----------- Move setup of RPATH directory lists to better locations in the logic where there has been complete success at finding the associated Tcl extension package. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2014-01-09 21:38:57 UTC (rev 12926) +++ trunk/cmake/modules/tcl-related.cmake 2014-01-10 01:44:07 UTC (rev 12927) @@ -78,9 +78,6 @@ get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH) message(STATUS "TCL_LIBRARY_PATH = ${TCL_LIBRARY_PATH}") - set(TCL_RPATH ${TCL_LIBRARY_PATH}) - set(TCL_TK_RPATH ${TCL_RPATH}) - set(TCL_TK_ITCL_ITK_RPATH ${TCL_RPATH}) if(TCL_TCLSH) message(STATUS "Looking for tclsh - found") @@ -125,6 +122,10 @@ if(ENABLE_tcl) message(STATUS "PLPLOT_TCL_VERSION = ${PLPLOT_TCL_VERSION}") + set(TCL_RPATH ${TCL_LIBRARY_PATH}) + set(TCL_TK_RPATH ${TCL_RPATH}) + set(TCL_TK_ITCL_ITK_RPATH ${TCL_RPATH}) + # Sanity checking of Tcl version consistency _if_ a Tcl version string # can be extracted from the Tcl library name. string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${TCL_LIBRARY}) @@ -256,10 +257,6 @@ message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") message(STATUS "TK_STUB_LIBRARY = ${TK_STUB_LIBRARY}") - get_filename_component(TK_LIBRARY_PATH ${TK_LIBRARY} PATH) - list(APPEND TCL_TK_RPATH ${TK_LIBRARY_PATH}) - list(APPEND TCL_TK_ITCL_ITK_RPATH ${TK_LIBRARY_PATH}) - message(STATUS "TK_LIBRARY_PATH = ${TK_LIBRARY_PATH}") if(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible") @@ -382,10 +379,14 @@ endif(WIN32 AND NOT CYGWIN) endif(ENABLE_tk AND NOT X11_FOUND) - if(NOT ENABLE_tk) + if(ENABLE_tk) + get_filename_component(TK_LIBRARY_PATH ${TK_LIBRARY} PATH) + list(APPEND TCL_TK_RPATH ${TK_LIBRARY_PATH}) + list(APPEND TCL_TK_ITCL_ITK_RPATH ${TK_LIBRARY_PATH}) + else(ENABLE_tk) message(STATUS "WARNING: Because Tk is disabled must disable Itk as well") set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(NOT ENABLE_tk) + endif(ENABLE_tk) if(ENABLE_itk) if(USE_INCRTCL_VERSION_4) @@ -472,8 +473,6 @@ message(STATUS "Looking for itk library - found") message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") set(HAVE_ITK ON) - get_filename_component(ITK_LIBRARY_PATH ${ITK_LIBRARY} PATH) - list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITK_LIBRARY_PATH}) # Test version consistency between iwidgets, itk, and itcl. if(NOT IWIDGETS_VERSIONS_LIST) @@ -535,6 +534,8 @@ message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent") if(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - true") + get_filename_component(ITK_LIBRARY_PATH ${ITK_LIBRARY} PATH) + list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITK_LIBRARY_PATH}) else(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2014-01-10 07:43:05
|
Revision: 12929 http://sourceforge.net/p/plplot/code/12929 Author: airwin Date: 2014-01-10 07:43:02 +0000 (Fri, 10 Jan 2014) Log Message: ----------- Improve the reliability of determining the Tcl and Tk library version numbers by only version parsing the library name rather the full path of the library name. This change solved a bug where the library version was being parsed from the wine (!) version number that I happened to be using in my build tree prefix to keep track of various results for various wine versions. Add some additional names (with a compact numeric suffix and with no numerical suffix at all) to search for the itcl and itk libraries. This change solved a bug where epa_build creates itcl and itk libraries with compact numerical suffixes on the MinGW/MSYS platform. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2014-01-10 01:45:35 UTC (rev 12928) +++ trunk/cmake/modules/tcl-related.cmake 2014-01-10 07:43:02 UTC (rev 12929) @@ -128,7 +128,8 @@ # Sanity checking of Tcl version consistency _if_ a Tcl version string # can be extracted from the Tcl library name. - string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${TCL_LIBRARY}) + get_filename_component(library_name ${TCL_LIBRARY} NAME) + string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${library_name}) if(library_version) # If no decimal point in version insert as the second character. if(NOT library_version MATCHES "[.]") @@ -226,8 +227,9 @@ if(ENABLE_itcl) message(STATUS "Looking for itcl library") # Search first for epa_build install location. - find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${PLPLOT_ITCL_VERSION}) - find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}) + string(REGEX REPLACE "\\." "" COMPACT_PLPLOT_ITCL_VERSION ${PLPLOT_ITCL_VERSION}) + find_library(ITCL_LIBRARY NAMES itcl${PLPLOT_ITCL_VERSION} itcl${COMPACT_PLPLOT_ITCL_VERSION} itcl HINTS ${TCL_LIBRARY_PATH}/itcl${PLPLOT_ITCL_VERSION}) + find_library(ITCL_LIBRARY NAMES itcl${PLPLOT_ITCL_VERSION} itcl${COMPACT_PLPLOT_ITCL_VERSION} itcl HINTS ${TCL_LIBRARY_PATH}) if(ITCL_LIBRARY) message(STATUS "Looking for itcl library - found") message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}") @@ -305,7 +307,8 @@ # Sanity checking of Tk version consistency _if_ a Tk # version string can be extracted from the Tk library # name. - string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${TK_LIBRARY}) + get_filename_component(library_name ${TK_LIBRARY} NAME) + string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${library_name}) if(library_version) # If no decimal point in version insert as the second character. if(NOT library_version MATCHES "[.]") @@ -467,8 +470,9 @@ if(ENABLE_itk) message(STATUS "Looking for itk library") # Search first for epa_build install location. - find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${PLPLOT_ITK_VERSION}) - find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}) + string(REGEX REPLACE "\\." "" COMPACT_PLPLOT_ITK_VERSION ${PLPLOT_ITK_VERSION}) + find_library(ITK_LIBRARY NAMES itk${PLPLOT_ITK_VERSION} itk${COMPACT_PLPLOT_ITK_VERSION} itk HINTS ${TK_LIBRARY_PATH}/itk${PLPLOT_ITK_VERSION}) + find_library(ITK_LIBRARY NAMES itk${PLPLOT_ITK_VERSION} itk${COMPACT_PLPLOT_ITK_VERSION} itk HINTS ${TK_LIBRARY_PATH}) if(ITK_LIBRARY) message(STATUS "Looking for itk library - found") message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2009-02-10 05:32:33
|
Revision: 9487 http://plplot.svn.sourceforge.net/plplot/?rev=9487&view=rev Author: arjenmarkus Date: 2009-02-10 05:32:30 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Removing trailing blanks Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2009-02-10 04:05:40 UTC (rev 9486) +++ trunk/cmake/modules/tcl-related.cmake 2009-02-10 05:32:30 UTC (rev 9487) @@ -150,7 +150,7 @@ message(STATUS "Looking for itk library") set(itk_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itk_library_versions}) - find_library(ITK_LIBRARY itk${version} + find_library(ITK_LIBRARY itk${version} PATH_SUFFIXES itk${version}) endforeach(version ${itk_library_versions}) if(ITK_LIBRARY) @@ -179,7 +179,7 @@ set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) endif(TCL_FOUND AND TCL_TCLSH) else(ENABLE_tcl) - message(STATUS + message(STATUS "ENABLE_tcl is OFF so disabling everything else that " "is Tcl/Tk related" ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-04-26 01:19:34
|
Revision: 9852 http://plplot.svn.sourceforge.net/plplot/?rev=9852&view=rev Author: airwin Date: 2009-04-26 01:19:33 +0000 (Sun, 26 Apr 2009) Log Message: ----------- Enable Tk and Itk by default now that we have shown by experiment that the segfaults in these components of PLplot were caused by HAVE_PTHREAD ON (which is now OFF by default for this reason). Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2009-04-26 01:14:33 UTC (rev 9851) +++ trunk/cmake/modules/tcl-related.cmake 2009-04-26 01:19:33 UTC (rev 9852) @@ -28,8 +28,8 @@ else(DEFAULT_NO_BINDINGS) option(ENABLE_tcl "Enable Tcl bindings" ON) option(ENABLE_itcl "Enable incr Tcl interface code" ON) - option(ENABLE_tk "Enable Tk interface code" OFF) - option(ENABLE_itk "Enable incr TK interface code" OFF) + option(ENABLE_tk "Enable Tk interface code" ON) + option(ENABLE_itk "Enable incr TK interface code" ON) endif(DEFAULT_NO_BINDINGS) # Depending on these above options and system resources may also determine This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-10-28 22:05:44
|
Revision: 12638 http://sourceforge.net/p/plplot/code/12638 Author: airwin Date: 2013-10-28 22:05:41 +0000 (Mon, 28 Oct 2013) Log Message: ----------- Warn if Tcl/Tk library locations are different. Add 4.0.0 to the list of possible itk versions. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-10-26 21:18:55 UTC (rev 12637) +++ trunk/cmake/modules/tcl-related.cmake 2013-10-28 22:05:41 UTC (rev 12638) @@ -85,15 +85,15 @@ OUTPUT_VARIABLE AVAILABLE_ITCL) if(AVAILABLE_ITCL) execute_process( - COMMAND ${TCL_TCLSH} GetITCL_Version.tcl - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/modules - OUTPUT_VARIABLE itcl_library_versions) + COMMAND ${TCL_TCLSH} GetITCL_Version.tcl + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/modules + OUTPUT_VARIABLE itcl_library_versions) message(STATUS "Looking for itcl.h") find_path(ITCL_INCLUDE_PATH itcl.h ${TCL_INCLUDE_PATH}) if(ITCL_INCLUDE_PATH) message(STATUS "Looking for itcl.h - found") message(STATUS "Looking for itcl library") - get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH) + get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH) set(itcl_library_versions 4.0.0 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itcl_library_versions}) find_library(ITCL_LIBRARY itcl${version} PATHS ${TCL_LIBRARY_PATH} @@ -132,13 +132,21 @@ else(ENABLE_itcl) set(MKTCLINDEX_ARGS "-tcl") endif(ENABLE_itcl) + if(ENABLE_tk AND NOT X11_FOUND) message(STATUS "WARNING: X11 not found, disabling Tk interface code") set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) endif(ENABLE_tk AND NOT X11_FOUND) if(ENABLE_tk) + get_filename_component(TK_LIBRARY_PATH ${TK_LIBRARY} PATH) + if(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) + message(STATUS "TCL_LIBRARY_PATH = ${TCL_LIBRARY_PATH}") + message(STATUS "TK_LIBRARY_PATH = ${TK_LIBRARY_PATH}") + message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible") + endif(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) + endif(ENABLE_tk) + if(ENABLE_tk) set(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${X11_INCLUDE_DIR}) - set(TK_LIBRARY ${TK_LIBRARY}) message(STATUS "TK_INCLUDE_PATH = ${TK_INCLUDE_PATH}") message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") else(ENABLE_tk) @@ -153,9 +161,9 @@ if(ITK_INCLUDE_PATH) message(STATUS "Looking for itk.h - found") message(STATUS "Looking for itk library") - set(itk_library_versions 3.4 3.3 3.2 3.1 3.0 2.1 2.0) + set(itk_library_versions 4.0.0 3.4 3.3 3.2 3.1 3.0 2.1 2.0) foreach(version ${itk_library_versions}) - find_library(ITK_LIBRARY itk${version} + find_library(ITK_LIBRARY itk${version} PATHS ${TCL_LIBRARY_PATH} PATH_SUFFIXES itk${version}) endforeach(version ${itk_library_versions}) if(ITK_LIBRARY) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-11-10 01:15:02
|
Revision: 12674 http://sourceforge.net/p/plplot/code/12674 Author: airwin Date: 2013-11-10 01:14:57 +0000 (Sun, 10 Nov 2013) Log Message: ----------- Add Itcl and Itk header consistency checks using the version numbers in the itcl.h and itk.h headers that are found. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-11-09 19:59:07 UTC (rev 12673) +++ trunk/cmake/modules/tcl-related.cmake 2013-11-10 01:14:57 UTC (rev 12674) @@ -22,17 +22,17 @@ if(DEFAULT_NO_BINDINGS) option(ENABLE_tcl "Enable Tcl bindings" OFF) - option(ENABLE_itcl "Enable incr Tcl interface code" OFF) + option(ENABLE_itcl "Enable Itcl interface code" OFF) option(ENABLE_tk "Enable Tk interface code" OFF) - option(ENABLE_itk "Enable incr Tk interface code" OFF) + option(ENABLE_itk "Enable Itk interface code" OFF) else(DEFAULT_NO_BINDINGS) option(ENABLE_tcl "Enable Tcl bindings" ON) - option(ENABLE_itcl "Enable incr Tcl interface code" ON) + option(ENABLE_itcl "Enable Itcl interface code" ON) option(ENABLE_tk "Enable Tk interface code" ON) - option(ENABLE_itk "Enable incr Tk interface code" ON) + option(ENABLE_itk "Enable Itk interface code" ON) endif(DEFAULT_NO_BINDINGS) -option(USE_INCRTCL_VERSION_4 "Use [incr Tcl] version 4" OFF) +option(USE_INCRTCL_VERSION_4 "Use version 4 of Itcl and Itcl, version 4.1 of Iwidgets" OFF) # Depending on these above options and system resources may also determine # the following variables which are largely self-explanatory unless documented @@ -57,7 +57,7 @@ # Used for source file configuration.) if(ENABLE_tcl) - message(STATUS "Use system introspection to determine data for Tcl and friends") + message(STATUS "Start determining consistent system data for Tcl and friends") find_package(TCL QUIET) if(TCL_FOUND) message(STATUS "Looking for include paths and libraries for Tcl - found") @@ -101,9 +101,45 @@ find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}/itcl${ITCL_VERSION}) endif(NOT USE_INCRTCL_VERSION_4) find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}) + if(ITCL_INCLUDE_PATH) message(STATUS "Looking for itcl.h - found") message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") + + message(STATUS "Checking for Itcl header version consistency") + string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITCL_MAJOR_VERSION "${ITCL_VERSION}") + string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITCL_MINOR_VERSION "${ITCL_VERSION}") + message(STATUS "ITCL_MAJOR_VERSION = ${ITCL_MAJOR_VERSION}") + message(STATUS "ITCL_MINOR_VERSION = ${ITCL_MINOR_VERSION}") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c + "// #define RC_INVOKED to avoid sucking in lots of additional includes for +// efficiency and simplicity. +#define RC_INVOKED 1 +#include <itcl.h> +#if ITCL_MAJOR_VERSION != ${ITCL_MAJOR_VERSION} || ITCL_MINOR_VERSION != ${ITCL_MINOR_VERSION} + #error ITCL_VERSION mismatch +#endif +void main(void){} +" + ) + try_compile(CONSISTENT_HEADER_ITCL_VERSION ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${ITCL_INCLUDE_PATH};${TCL_INCLUDE_PATH}" + ) + if(CONSISTENT_HEADER_ITCL_VERSION) + message(STATUS "Checking for Itcl header version consistency - true") + else(CONSISTENT_HEADER_ITCL_VERSION) + message(STATUS "Checking for Itcl header version consistency - false") + message(STATUS "WARNING: Disabling Itcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + endif(CONSISTENT_HEADER_ITCL_VERSION) + else(ITCL_INCLUDE_PATH) + message(STATUS "Looking for itcl.h - not found") + message(STATUS "WARNING: Disabling Itcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + endif(ITCL_INCLUDE_PATH) + + if(ENABLE_itcl) message(STATUS "Looking for itcl library") # Search first for epa_build install location. find_library(ITCL_LIBRARY itcl${ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${ITCL_VERSION}) @@ -115,18 +151,14 @@ find_path(HAVE_ITCLDECLS_H itclDecls.h HINTS ${ITCL_INCLUDE_PATH}) else(ITCL_LIBRARY) message(STATUS "Looking for itcl library - not found") - message(STATUS "WARNING: Disabling incr Tcl interface code") - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) + message(STATUS "WARNING: Disabling Itcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) endif(ITCL_LIBRARY) - else(ITCL_INCLUDE_PATH) - message(STATUS "Looking for itcl.h - not found") - message(STATUS "WARNING: Disabling incr Tcl interface code") - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) - endif(ITCL_INCLUDE_PATH) + endif(ENABLE_itcl) else(NOT ITCL_RC) message(STATUS "Itcl not available or not compatible with current Tcl shell") - message(STATUS "WARNING: Disabling incr Tcl interface code") - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) + message(STATUS "WARNING: Disabling Itcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) endif(NOT ITCL_RC) endif(ENABLE_itcl) @@ -162,8 +194,8 @@ message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible") endif(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) else(ENABLE_tk) - message(STATUS "WARNING: Because Tk is disabled must disable incr Tk as well") - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + message(STATUS "WARNING: Because Tk is disabled must disable Itk as well") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(ENABLE_tk) if(ENABLE_itk) @@ -190,10 +222,46 @@ find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}/itcl${ITCL_VERSION}) endif(NOT USE_INCRTCL_VERSION_4) find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}) + if(ITK_INCLUDE_PATH) message(STATUS "Looking for itk.h - found") message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") + message(STATUS "Checking for Itk header version consistency") + string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITK_MAJOR_VERSION "${ITK_VERSION}") + string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITK_MINOR_VERSION "${ITK_VERSION}") + message(STATUS "ITK_MAJOR_VERSION = ${ITK_MAJOR_VERSION}") + message(STATUS "ITK_MINOR_VERSION = ${ITK_MINOR_VERSION}") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c + "// #define RC_INVOKED to avoid sucking in lots of additional includes for +// efficiency and simplicity and also to avoid the header file disaster that has long +// been a problem for version 3.3 of itk.h +#define RC_INVOKED 1 +#include <itk.h> +#if ITK_MAJOR_VERSION != ${ITK_MAJOR_VERSION} || ITK_MINOR_VERSION != ${ITK_MINOR_VERSION} + #error ITK_VERSION mismatch +#endif +void main(void){} +" + ) + try_compile(CONSISTENT_HEADER_ITK_VERSION ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c + CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${ITK_INCLUDE_PATH} + ) + if(CONSISTENT_HEADER_ITK_VERSION) + message(STATUS "Checking for Itk header version consistency - true") + else(CONSISTENT_HEADER_ITK_VERSION) + message(STATUS "Checking for Itk header version consistency - false") + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(CONSISTENT_HEADER_ITK_VERSION) + else(ITK_INCLUDE_PATH) + message(STATUS "Looking for itk.h - not found") + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(ITK_INCLUDE_PATH) + + if(ENABLE_itk) message(STATUS "Looking for itk library") # Search first for epa_build install location. find_library(ITK_LIBRARY itk${ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${ITK_VERSION}) @@ -240,6 +308,7 @@ list(GET IWIDGETS_VERSIONS_LIST 0 IWIDGETS_VERSION) list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) + message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent") if(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) if(USE_INCRTCL_VERSION_4) set(IWIDGETS_PACKAGE_NAME "Iwidgets ${IWIDGETS_VERSION}") @@ -251,6 +320,7 @@ # iwidgets between the build and post-install eras. set(IWIDGETS_PACKAGE_NAME "-exact Iwidgets ${IWIDGETS_VERSION}") endif(USE_INCRTCL_VERSION_4) + message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - true") message(STATUS "IWIDGETS_PACKAGE_NAME = ${IWIDGETS_PACKAGE_NAME}") else(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) message(STATUS "IWIDGETS_VERSION = ${IWIDGETS_VERSION}") @@ -258,29 +328,26 @@ message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") message(STATUS "ITCL_VERSION = ${ITCL_VERSION}") message(STATUS "CONSISTENT_ITCL_VERSION = ${CONSISTENT_ITCL_VERSION}") + message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - false") message(STATUS "WARNING: Consistent combination of Iwidgets, Itk, and Itcl not found so disabling Itcl and Itk") - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) else(NOT IWIDGETS_RC) message(STATUS "WARNING: Iwidgets could not be found so disabling Itcl and Itk") - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(NOT IWIDGETS_RC) else(ITK_LIBRARY) message(STATUS "Looking for itk library - not found") - message(STATUS "WARNING: Disabling incr Tk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(ITK_LIBRARY) - else(ITK_INCLUDE_PATH) - message(STATUS "Looking for itk.h - not found") - message(STATUS "WARNING: Disabling incr Tk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) - endif(ITK_INCLUDE_PATH) + endif(ENABLE_itk) else(NOT ITK_RC) message(STATUS "Itk not available or not compatible with current Tcl shell") - message(STATUS "WARNING: Disabling incr Tk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(NOT ITK_RC) endif(ENABLE_itk) @@ -288,16 +355,16 @@ message(STATUS "Tcl not found OR tclsh not found") message(STATUS "WARNING: Disabling everything that is Tcl/Tk related") set(ENABLE_tcl OFF CACHE BOOL "Enable Tcl bindings" FORCE) - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(TCL_FOUND AND TCL_TCLSH) - message(STATUS "Finished system introspection to determine data for Tcl and friends") + message(STATUS "Finished determining consistent system data for Tcl and friends") else(ENABLE_tcl) message(STATUS "WARNING: ENABLE_tcl is OFF so disabling everything else that is Tcl/Tk related") - set(ENABLE_itcl OFF CACHE BOOL "Enable incr Tcl interface code" FORCE) + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) - set(ENABLE_itk OFF CACHE BOOL "Enable incr Tk interface code" FORCE) + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(ENABLE_tcl) if(NOT ENABLE_itk) set(itk_true "#") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-11-11 22:23:51
|
Revision: 12676 http://sourceforge.net/p/plplot/code/12676 Author: airwin Date: 2013-11-11 22:23:48 +0000 (Mon, 11 Nov 2013) Log Message: ----------- Fix up CMake logic for version numbers associated with Itcl, Itk, and Iwidgets. In preparation for making these variables accessible from the PLplot C environment, replace ITCL_VERSION, ITK_VERSION, and IWIDGETS_VERSION everywhere with PLPLOT_ITCL_VERSION, PLPLOT_ITK_VERSION, and PLPLOT_IWIDGETS_VERSION Set PLPLOT_ITCL_VERSION to 0.0.0 to mark when this version number should not be used (i.e., when enable_itcl if OFF). Set PLPLOT_ITK_VERSION and PLPLOT_IWIDGETS_VERSION to 0.0.0 to mark when these version numbers should not be used (i.e., when enable_itk if OFF). Drop plitcl_packagename, plikt_packagename, and pliwidgets_packagename everywhere since the plan for making those variables accessible from the PLplot C environment has been dropped. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-11-11 21:28:53 UTC (rev 12675) +++ trunk/cmake/modules/tcl-related.cmake 2013-11-11 22:23:48 UTC (rev 12676) @@ -42,7 +42,7 @@ #TCL_LIBRARY #ITCL_INCLUDE_PATH #ITCL_LIBRARY -#HAVE_ITCL (On when itcl header and library has been found. +#HAVE_ITCL (On when itcl header and library have been found. # Otherwise, undefined. # Used for source file configuration.) #HAVE_ITCLDECLS_H (defined [actually as a path, but we don't use that] @@ -52,9 +52,12 @@ #TK_LIBRARY #ITK_INCLUDE_PATH #ITK_LIBRARY -#HAVE_ITK (On when itcl header and library has been found. +#HAVE_ITK (On when itcl header and library have been found. # Otherwise, undefined. # Used for source file configuration.) +#PLPLOT_ITCL_VERSION (Consistent Itcl version number found by PLplot). +#PLPLOT_ITK_VERSION (Consistent Itk version number found by PLplot). +#PLPLOT_IWIDGETS_VERSION (Consistent Iwidgets version number found by PLplot). if(ENABLE_tcl) message(STATUS "Start determining consistent system data for Tcl and friends") @@ -75,8 +78,11 @@ else(TCL_FOUND) message(STATUS "Looking for include paths and libraries for Tcl - not found") endif(TCL_FOUND) + + # Initially mark various quantities as as unfound in case that turns out to be the case. set(HAVE_ITCL OFF) set(HAVE_ITK OFF) + if(TCL_FOUND AND TCL_TCLSH) if(ENABLE_itcl) if(USE_INCRTCL_VERSION_4) @@ -89,16 +95,14 @@ execute_process( COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl RESULT_VARIABLE ITCL_RC - OUTPUT_VARIABLE ITCL_VERSION + OUTPUT_VARIABLE PLPLOT_ITCL_VERSION ERROR_VARIABLE ITCL_STDERR ) if(NOT ITCL_RC) - set(ITCL_PACKAGE_NAME "Itcl ${ITCL_VERSION}") - message(STATUS "ITCL_PACKAGE_NAME = ${ITCL_PACKAGE_NAME}") message(STATUS "Looking for itcl.h") if(NOT USE_INCRTCL_VERSION_4) # Search first for epa_build install location. - find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}/itcl${ITCL_VERSION}) + find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}/itcl${PLPLOT_ITCL_VERSION}) endif(NOT USE_INCRTCL_VERSION_4) find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}) @@ -107,8 +111,8 @@ message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") message(STATUS "Checking for Itcl header version consistency") - string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITCL_MAJOR_VERSION "${ITCL_VERSION}") - string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITCL_MINOR_VERSION "${ITCL_VERSION}") + string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITCL_MAJOR_VERSION "${PLPLOT_ITCL_VERSION}") + string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITCL_MINOR_VERSION "${PLPLOT_ITCL_VERSION}") message(STATUS "ITCL_MAJOR_VERSION = ${ITCL_MAJOR_VERSION}") message(STATUS "ITCL_MINOR_VERSION = ${ITCL_MINOR_VERSION}") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c @@ -142,8 +146,8 @@ if(ENABLE_itcl) message(STATUS "Looking for itcl library") # Search first for epa_build install location. - find_library(ITCL_LIBRARY itcl${ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${ITCL_VERSION}) - find_library(ITCL_LIBRARY itcl${ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}) + find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${PLPLOT_ITCL_VERSION}) + find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}) if(ITCL_LIBRARY) message(STATUS "Looking for itcl library - found") message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}") @@ -162,16 +166,6 @@ endif(NOT ITCL_RC) endif(ENABLE_itcl) - # ------------------------------------------------------------------------ - # figure out how to build tclIndex - # ------------------------------------------------------------------------ - set(MKTCLINDEX ${CMAKE_SOURCE_DIR}/scripts/mktclIndex) - if(ENABLE_itcl) - set(MKTCLINDEX_ARGS "-itcl") - else(ENABLE_itcl) - set(MKTCLINDEX_ARGS "-tcl") - endif(ENABLE_itcl) - if(ENABLE_tk AND NOT TK_FOUND) message(STATUS "WARNING: Tk not found so disabling Tk interface code") set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) @@ -209,17 +203,14 @@ execute_process( COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl RESULT_VARIABLE ITK_RC - OUTPUT_VARIABLE ITK_VERSION + OUTPUT_VARIABLE PLPLOT_ITK_VERSION ERROR_VARIABLE ITK_STDERR ) if(NOT ITK_RC) - set(ITK_PACKAGE_NAME "Itk ${ITK_VERSION}") - message(STATUS "ITK_PACKAGE_NAME = ${ITK_PACKAGE_NAME}") - message(STATUS "Looking for itk.h") if(NOT USE_INCRTCL_VERSION_4) # Search first for epa_build install location. - find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}/itcl${ITCL_VERSION}) + find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}/itcl${PLPLOT_ITCL_VERSION}) endif(NOT USE_INCRTCL_VERSION_4) find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}) @@ -228,8 +219,8 @@ message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") message(STATUS "Checking for Itk header version consistency") - string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITK_MAJOR_VERSION "${ITK_VERSION}") - string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITK_MINOR_VERSION "${ITK_VERSION}") + string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITK_MAJOR_VERSION "${PLPLOT_ITK_VERSION}") + string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITK_MINOR_VERSION "${PLPLOT_ITK_VERSION}") message(STATUS "ITK_MAJOR_VERSION = ${ITK_MAJOR_VERSION}") message(STATUS "ITK_MINOR_VERSION = ${ITK_MINOR_VERSION}") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c @@ -264,8 +255,8 @@ if(ENABLE_itk) message(STATUS "Looking for itk library") # Search first for epa_build install location. - find_library(ITK_LIBRARY itk${ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${ITK_VERSION}) - find_library(ITK_LIBRARY itk${ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}) + find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${PLPLOT_ITK_VERSION}) + find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}) if(ITK_LIBRARY) message(STATUS "Looking for itk library - found") message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") @@ -309,30 +300,19 @@ list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent") - if(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) - if(USE_INCRTCL_VERSION_4) - set(IWIDGETS_PACKAGE_NAME "Iwidgets ${IWIDGETS_VERSION}") - else(USE_INCRTCL_VERSION_4) - # Must use exact to distinguish from 4.1 version with - # the same major version number. This should not be - # an issue after install since it is rare/nonexistent to - # change the patch number of this really old version of - # iwidgets between the build and post-install eras. - set(IWIDGETS_PACKAGE_NAME "-exact Iwidgets ${IWIDGETS_VERSION}") - endif(USE_INCRTCL_VERSION_4) + if(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - true") - message(STATUS "IWIDGETS_PACKAGE_NAME = ${IWIDGETS_PACKAGE_NAME}") - else(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) + else(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) message(STATUS "IWIDGETS_VERSION = ${IWIDGETS_VERSION}") - message(STATUS "ITK_VERSION = ${ITK_VERSION}") + message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") - message(STATUS "ITCL_VERSION = ${ITCL_VERSION}") + message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") message(STATUS "CONSISTENT_ITCL_VERSION = ${CONSISTENT_ITCL_VERSION}") message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - false") message(STATUS "WARNING: Consistent combination of Iwidgets, Itk, and Itcl not found so disabling Itcl and Itk") set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(CONSISTENT_ITCL_VERSION STREQUAL ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL ITK_VERSION) + endif(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) else(NOT IWIDGETS_RC) message(STATUS "WARNING: Iwidgets could not be found so disabling Itcl and Itk") set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) @@ -351,6 +331,16 @@ endif(NOT ITK_RC) endif(ENABLE_itk) + # ------------------------------------------------------------------------ + # figure out how to build tclIndex + # ------------------------------------------------------------------------ + set(MKTCLINDEX ${CMAKE_SOURCE_DIR}/scripts/mktclIndex) + if(ENABLE_itcl) + set(MKTCLINDEX_ARGS "-itcl") + else(ENABLE_itcl) + set(MKTCLINDEX_ARGS "-tcl") + endif(ENABLE_itcl) + else(TCL_FOUND AND TCL_TCLSH) message(STATUS "Tcl not found OR tclsh not found") message(STATUS "WARNING: Disabling everything that is Tcl/Tk related") @@ -366,6 +356,13 @@ set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) endif(ENABLE_tcl) + +if(NOT ENABLE_itcl) + set(PLPLOT_ITCL_VERSION 0.0.0) +endif(NOT ENABLE_itcl) + if(NOT ENABLE_itk) set(itk_true "#") + set(PLPLOT_ITK_VERSION 0.0.0) + set(PLPLOT_IWIDGETS_VERSION 0.0.0) endif(NOT ENABLE_itk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-11-12 08:15:42
|
Revision: 12682 http://sourceforge.net/p/plplot/code/12682 Author: airwin Date: 2013-11-12 08:15:37 +0000 (Tue, 12 Nov 2013) Log Message: ----------- Add some more output of version information. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-11-12 06:03:11 UTC (rev 12681) +++ trunk/cmake/modules/tcl-related.cmake 2013-11-12 08:15:37 UTC (rev 12682) @@ -109,6 +109,7 @@ if(ITCL_INCLUDE_PATH) message(STATUS "Looking for itcl.h - found") message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") + message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") message(STATUS "Checking for Itcl header version consistency") string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITCL_MAJOR_VERSION "${PLPLOT_ITCL_VERSION}") @@ -217,6 +218,7 @@ if(ITK_INCLUDE_PATH) message(STATUS "Looking for itk.h - found") message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") + message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") message(STATUS "Checking for Itk header version consistency") string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITK_MAJOR_VERSION "${PLPLOT_ITK_VERSION}") @@ -299,11 +301,12 @@ list(GET IWIDGETS_VERSIONS_LIST 0 PLPLOT_IWIDGETS_VERSION) list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) + + message(STATUS "PLPLOT_IWIDGETS_VERSION = ${PLPLOT_IWIDGETS_VERSION}") message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent") if(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - true") else(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) - message(STATUS "PLPLOT_IWIDGETS_VERSION = ${PLPLOT_IWIDGETS_VERSION}") message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-12-15 23:56:40
|
Revision: 12866 http://sourceforge.net/p/plplot/code/12866 Author: airwin Date: 2013-12-15 23:56:37 +0000 (Sun, 15 Dec 2013) Log Message: ----------- USE_TCL_TK_STUBS option temporarily set to OFF by default for this release since using the the stubs versions of libTcl and libTk (which is recommended by Tcl/Tk developers) has proven not to be reliable (-dev tk segfaults) for version 8.6 of Tcl/Tk. The stubs versions of libTcl and libTk work fine for version 8.5 of Tcl/Tk. Moving from the deprecated Tcl/Tk API we currently use to the recommended Tcl/Tk API may allow us to reliably use the stubs versions of libTcl and libTk for all versions of Tcl/Tk post-release. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-12-14 21:23:33 UTC (rev 12865) +++ trunk/cmake/modules/tcl-related.cmake 2013-12-15 23:56:37 UTC (rev 12866) @@ -34,7 +34,7 @@ option(USE_INCRTCL_VERSION_4 "Use version 4 of Itcl and Itcl, version 4.1 of Iwidgets" OFF) -option(USE_TCL_TK_STUBS "Use Tcl/Tk stubs libraries" ON) +option(USE_TCL_TK_STUBS "Use Tcl/Tk stubs libraries" OFF) # Depending on these above options and system resources may also determine # the following variables which are largely self-explanatory unless documented This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-12-29 02:13:56
|
Revision: 12913 http://sourceforge.net/p/plplot/code/12913 Author: airwin Date: 2013-12-29 02:13:54 +0000 (Sun, 29 Dec 2013) Log Message: ----------- Check Tcl/Tk version consistency by implementing the following: * Determine Tcl version from tclsh * Determine Tcl version from library name (if that is possible) and WARN if it is not consistent with Tcl version from tclsh. * Determine Tk version from wish and confirm it is the same as the Tcl version from tclsh or else disable Tk. * Determine Tcl version from wish and confirm it is the same as the Tcl version from tclsh or else disable Tk. * Determine Tk version from tclsh and confirm it is the same as the Tk version from wish or else disable Tk. * Determine Tk version from library name (if that is possible) and confirm consistent with Tcl version from tclsh or else disable Tk. Tested by: Alan W. Irwin <ai...@us...> using various runs of cmake with wrong results locally imposed to test all the WARNING logic. Modified Paths: -------------- trunk/cmake/modules/tcl-related.cmake Modified: trunk/cmake/modules/tcl-related.cmake =================================================================== --- trunk/cmake/modules/tcl-related.cmake 2013-12-22 22:35:13 UTC (rev 12912) +++ trunk/cmake/modules/tcl-related.cmake 2013-12-29 02:13:54 UTC (rev 12913) @@ -71,7 +71,7 @@ message(STATUS "Start determining consistent system data for Tcl and friends") find_package(TclStub QUIET) if(TCL_FOUND) - message(STATUS "Looking for include paths and libraries for Tcl - found") + message(STATUS "Looking for Tcl - found") message(STATUS "TCL_INCLUDE_PATH = ${TCL_INCLUDE_PATH}") message(STATUS "TCL_LIBRARY = ${TCL_LIBRARY}") message(STATUS "TCL_STUB_LIBRARY = ${TCL_STUB_LIBRARY}") @@ -85,66 +85,117 @@ if(TCL_TCLSH) message(STATUS "Looking for tclsh - found") message(STATUS "TCL_TCLSH = ${TCL_TCLSH}") + if(NOT PLPLOT_TCL_VERSION) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckTCL_VERSION.tcl "puts -nonewline [package require Tcl]; exit") + # Find Tcl version via tclsh or fail. + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckTCL_VERSION.tcl + RESULT_VARIABLE TCL_RC + OUTPUT_VARIABLE _plplot_tcl_version + ) + if(NOT TCL_RC) + message(STATUS "Looking for Tcl version with tclsh - found") + # Store result in cached variable so it will be remembered + # when cmake is re-run, but use type of STRING rather than + # INTERNAL to allow users to specify the value with a + # -DPLPLOT_TCL_VERSION:STRING=<whatever> on the command + # line for those rare cases when "package require Tcl" + # would error out due to some tclsh issue. + set(PLPLOT_TCL_VERSION ${_plplot_tcl_version} + CACHE STRING "Tcl version that is available" + ) + else(NOT TCL_RC) + message(STATUS "Looking for Tcl version with tclsh - not found") + message(STATUS "WARNING: setting ENABLE_tcl to OFF") + set(ENABLE_tcl OFF CACHE BOOL "Enable Tcl bindings" FORCE) + endif(NOT TCL_RC) + endif(NOT PLPLOT_TCL_VERSION) else(TCL_TCLSH) message(STATUS "Looking for tclsh - not found") + message(STATUS "WARNING: setting ENABLE_tcl to OFF") + set(ENABLE_tcl OFF CACHE BOOL "Enable Tcl bindings" FORCE) endif(TCL_TCLSH) else(TCL_FOUND) - message(STATUS "Looking for include paths and libraries for Tcl - not found") + message(STATUS "Looking for Tcl - not found") + message(STATUS "WARNING: setting ENABLE_tcl to OFF") + set(ENABLE_tcl OFF CACHE BOOL "Enable Tcl bindings" FORCE) endif(TCL_FOUND) +endif(ENABLE_tcl) - # Initially mark various quantities as as unfound in case that turns out to be the case. +if(ENABLE_tcl) + message(STATUS "PLPLOT_TCL_VERSION = ${PLPLOT_TCL_VERSION}") + + # Sanity checking of Tcl version consistency _if_ a Tcl version string + # can be extracted from the Tcl library name. + string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${TCL_LIBRARY}) + if(library_version) + # If no decimal point in version insert as the second character. + if(NOT library_version MATCHES "[.]") + string(REGEX REPLACE "^([0-9])([0-9]+)$" "\\1.\\2" library_version ${library_version}) + endif(NOT library_version MATCHES "[.]") + #message(STATUS "library_version = ${library_version}") + string(LENGTH ${library_version} length_library_version) + string(SUBSTRING ${PLPLOT_TCL_VERSION} 0 ${length_library_version} truncated_version) + #message(STATUS "truncated_version = ${truncated_version}") + if(NOT truncated_version STREQUAL library_version) + message(STATUS "WARNING: Tcl library version = ${library_version} that is extracted from the + library name is not consistent with PLPLOT_TCL_VERSION = ${PLPLOT_TCL_VERSION}") + endif(NOT truncated_version STREQUAL library_version) + endif(library_version) + + # Initially mark various quantities as unfound in case that turns out to be true. set(HAVE_ITCL OFF) set(HAVE_ITK OFF) - if(TCL_FOUND AND TCL_TCLSH) - if(ENABLE_itcl) - if(USE_INCRTCL_VERSION_4) - set(SUGGESTED_ITCL_VERSION 4) - else(USE_INCRTCL_VERSION_4) - set(SUGGESTED_ITCL_VERSION 3) - endif(USE_INCRTCL_VERSION_4) - if(NOT PLPLOT_ITCL_VERSION) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl "puts -nonewline [package require Itcl ${SUGGESTED_ITCL_VERSION}]; exit") - # Refine SUGGESTED_ITCL_VERSION to exact value or fail. - execute_process( - COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl - RESULT_VARIABLE ITCL_RC - OUTPUT_VARIABLE _plplot_itcl_version + if(ENABLE_itcl) + if(USE_INCRTCL_VERSION_4) + set(SUGGESTED_ITCL_VERSION 4) + else(USE_INCRTCL_VERSION_4) + set(SUGGESTED_ITCL_VERSION 3) + endif(USE_INCRTCL_VERSION_4) + if(NOT PLPLOT_ITCL_VERSION) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl "puts -nonewline [package require Itcl ${SUGGESTED_ITCL_VERSION}]; exit") + # Refine SUGGESTED_ITCL_VERSION to exact value or fail. + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_Available.tcl + RESULT_VARIABLE ITCL_RC + OUTPUT_VARIABLE _plplot_itcl_version + ) + if(NOT ITCL_RC) + # Store result in cached variable so it will be remembered + # when cmake is re-run, but use type of STRING rather than + # INTERNAL to allow users to specify the value with a + # -DPLPLOT_ITCL_VERSION:STRING=<whatever> on the command + # line for those rare cases when "package require Itcl" + # would error out due to some tclsh issue. + set(PLPLOT_ITCL_VERSION ${_plplot_itcl_version} + CACHE STRING "Itcl version that will be used" ) - if(NOT ITCL_RC) - # Store result in cached variable so it will be remembered - # when cmake is re-run, but use type of STRING rather than - # INTERNAL to allow users to specify the value with a - # -DPLPLOT_ITCL_VERSION:STRING=<whatever> on the command - # line for those rare cases when "package require Itcl" - # would error out due to some tclsh issue. - set(PLPLOT_ITCL_VERSION ${_plplot_itcl_version} - CACHE STRING "Itcl version that will be used" - ) - endif(NOT ITCL_RC) - else(NOT PLPLOT_ITCL_VERSION) - set(ITCL_RC 0) - endif(NOT PLPLOT_ITCL_VERSION) - if(NOT ITCL_RC) - message(STATUS "Looking for itcl.h") - if(NOT USE_INCRTCL_VERSION_4) - # Search first for epa_build install location. - find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}/itcl${PLPLOT_ITCL_VERSION}) - endif(NOT USE_INCRTCL_VERSION_4) - find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}) + endif(NOT ITCL_RC) + else(NOT PLPLOT_ITCL_VERSION) + set(ITCL_RC 0) + endif(NOT PLPLOT_ITCL_VERSION) - if(ITCL_INCLUDE_PATH) - message(STATUS "Looking for itcl.h - found") - message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") - message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") + if(NOT ITCL_RC) + message(STATUS "Looking for itcl.h") + if(NOT USE_INCRTCL_VERSION_4) + # Search first for epa_build install location. + find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}/itcl${PLPLOT_ITCL_VERSION}) + endif(NOT USE_INCRTCL_VERSION_4) + find_path(ITCL_INCLUDE_PATH itcl.h HINTS ${TCL_INCLUDE_PATH}) - message(STATUS "Checking for Itcl header version consistency") - string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITCL_MAJOR_VERSION "${PLPLOT_ITCL_VERSION}") - string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITCL_MINOR_VERSION "${PLPLOT_ITCL_VERSION}") - message(STATUS "ITCL_MAJOR_VERSION = ${ITCL_MAJOR_VERSION}") - message(STATUS "ITCL_MINOR_VERSION = ${ITCL_MINOR_VERSION}") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c - "// #define RC_INVOKED to avoid sucking in lots of additional includes for + if(ITCL_INCLUDE_PATH) + message(STATUS "Looking for itcl.h - found") + message(STATUS "ITCL_INCLUDE_PATH = ${ITCL_INCLUDE_PATH}") + message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") + + message(STATUS "Checking for Itcl header version consistency") + string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITCL_MAJOR_VERSION "${PLPLOT_ITCL_VERSION}") + string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITCL_MINOR_VERSION "${PLPLOT_ITCL_VERSION}") + message(STATUS "ITCL_MAJOR_VERSION = ${ITCL_MAJOR_VERSION}") + message(STATUS "ITCL_MINOR_VERSION = ${ITCL_MINOR_VERSION}") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c + "// #define RC_INVOKED to avoid sucking in lots of additional includes for // efficiency and simplicity. #define RC_INVOKED 1 #include <itcl.h> @@ -153,133 +204,238 @@ #endif void main(void){} " - ) - try_compile(CONSISTENT_HEADER_ITCL_VERSION ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c - CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${ITCL_INCLUDE_PATH};${TCL_INCLUDE_PATH}" - ) - if(CONSISTENT_HEADER_ITCL_VERSION) - message(STATUS "Checking for Itcl header version consistency - true") - else(CONSISTENT_HEADER_ITCL_VERSION) - message(STATUS "Checking for Itcl header version consistency - false") - message(STATUS "WARNING: Disabling Itcl interface code") - set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) - endif(CONSISTENT_HEADER_ITCL_VERSION) - else(ITCL_INCLUDE_PATH) - message(STATUS "Looking for itcl.h - not found") + ) + try_compile(CONSISTENT_HEADER_ITCL_VERSION ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/CheckITCL_VERSION.c + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${ITCL_INCLUDE_PATH};${TCL_INCLUDE_PATH}" + ) + if(CONSISTENT_HEADER_ITCL_VERSION) + message(STATUS "Checking for Itcl header version consistency - true") + else(CONSISTENT_HEADER_ITCL_VERSION) + message(STATUS "Checking for Itcl header version consistency - false") message(STATUS "WARNING: Disabling Itcl interface code") - set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) - endif(ITCL_INCLUDE_PATH) - - if(ENABLE_itcl) - message(STATUS "Looking for itcl library") - # Search first for epa_build install location. - find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${PLPLOT_ITCL_VERSION}) - find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}) - if(ITCL_LIBRARY) - message(STATUS "Looking for itcl library - found") - message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}") - get_filename_component(ITCL_LIBRARY_PATH ${ITCL_LIBRARY} PATH) - list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITCL_LIBRARY_PATH}) - set(HAVE_ITCL ON) - find_path(HAVE_ITCLDECLS_H itclDecls.h HINTS ${ITCL_INCLUDE_PATH}) - else(ITCL_LIBRARY) - message(STATUS "Looking for itcl library - not found") - message(STATUS "WARNING: Disabling Itcl interface code") - set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) - endif(ITCL_LIBRARY) - endif(ENABLE_itcl) - else(NOT ITCL_RC) - message(STATUS "Itcl not available or not compatible with current Tcl shell") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + endif(CONSISTENT_HEADER_ITCL_VERSION) + else(ITCL_INCLUDE_PATH) + message(STATUS "Looking for itcl.h - not found") message(STATUS "WARNING: Disabling Itcl interface code") set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) - endif(NOT ITCL_RC) - endif(ENABLE_itcl) + endif(ITCL_INCLUDE_PATH) - if(ENABLE_tk AND NOT TK_FOUND) - message(STATUS "WARNING: Tk not found so disabling Tk interface code") - set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) - endif(ENABLE_tk AND NOT TK_FOUND) + if(ENABLE_itcl) + message(STATUS "Looking for itcl library") + # Search first for epa_build install location. + find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}/itcl${PLPLOT_ITCL_VERSION}) + find_library(ITCL_LIBRARY itcl${PLPLOT_ITCL_VERSION} HINTS ${TCL_LIBRARY_PATH}) + if(ITCL_LIBRARY) + message(STATUS "Looking for itcl library - found") + message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}") + get_filename_component(ITCL_LIBRARY_PATH ${ITCL_LIBRARY} PATH) + list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITCL_LIBRARY_PATH}) + set(HAVE_ITCL ON) + find_path(HAVE_ITCLDECLS_H itclDecls.h HINTS ${ITCL_INCLUDE_PATH}) + else(ITCL_LIBRARY) + message(STATUS "Looking for itcl library - not found") + message(STATUS "WARNING: Disabling Itcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + endif(ITCL_LIBRARY) + endif(ENABLE_itcl) + else(NOT ITCL_RC) + message(STATUS "Itcl not available or not compatible with current Tcl shell") + message(STATUS "WARNING: Disabling Itcl interface code") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + endif(NOT ITCL_RC) + endif(ENABLE_itcl) - if(ENABLE_tk AND NOT X11_FOUND) - if(WIN32 AND NOT CYGWIN) - message(STATUS "WARNING: X11 not found, turning off Tk devices that depend on it") - set(PLD_tk OFF CACHE BOOL "Enable Tk device" FORCE) - set(PLD_tkwin OFF CACHE BOOL "Enable Tk device" FORCE) - else(WIN32 AND NOT CYGWIN) - message(STATUS "WARNING: X11 not found so disabling Tk interface code") - set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) - endif(WIN32 AND NOT CYGWIN) - endif(ENABLE_tk AND NOT X11_FOUND) + if(ENABLE_tk AND TK_FOUND) + message(STATUS "Looking for Tk - found") + if(X11_FOUND) + list(APPEND TK_INCLUDE_PATH ${X11_INCLUDE_DIR}) + endif(X11_FOUND) + message(STATUS "TK_INCLUDE_PATH = ${TK_INCLUDE_PATH}") + message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") + message(STATUS "TK_STUB_LIBRARY = ${TK_STUB_LIBRARY}") - if(ENABLE_tk) - message(STATUS "Looking for include paths and libraries for Tk - found") - set(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${X11_INCLUDE_DIR}) - message(STATUS "TK_INCLUDE_PATH = ${TK_INCLUDE_PATH}") - message(STATUS "TK_LIBRARY = ${TK_LIBRARY}") - message(STATUS "TK_STUB_LIBRARY = ${TK_STUB_LIBRARY}") + get_filename_component(TK_LIBRARY_PATH ${TK_LIBRARY} PATH) + list(APPEND TCL_TK_RPATH ${TK_LIBRARY_PATH}) + list(APPEND TCL_TK_ITCL_ITK_RPATH ${TK_LIBRARY_PATH}) - get_filename_component(TK_LIBRARY_PATH ${TK_LIBRARY} PATH) - message(STATUS "TK_LIBRARY_PATH = ${TK_LIBRARY_PATH}") - if(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) - message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible") - endif(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) - list(APPEND TCL_TK_RPATH ${TK_LIBRARY_PATH}) - list(APPEND TCL_TK_ITCL_ITK_RPATH ${TK_LIBRARY_PATH}) - else(ENABLE_tk) - message(STATUS "WARNING: Because Tk is disabled must disable Itk as well") - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(ENABLE_tk) + message(STATUS "TK_LIBRARY_PATH = ${TK_LIBRARY_PATH}") + if(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) + message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible") + endif(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH}) - if(ENABLE_itk) - if(USE_INCRTCL_VERSION_4) - set(SUGGESTED_ITK_VERSION 4) - else(USE_INCRTCL_VERSION_4) - set(SUGGESTED_ITK_VERSION 3) - endif(USE_INCRTCL_VERSION_4) - if(NOT PLPLOT_ITK_VERSION) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl "puts -nonewline [package require Itk ${SUGGESTED_ITK_VERSION}]; exit") - # Refine SUGGESTED_ITK_VERSION to exact value or fail. + if(TK_WISH) + message(STATUS "Looking for wish - found") + message(STATUS "TK_WISH = ${TK_WISH}") + if(NOT PLPLOT_TK_VERSION) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckTK_VERSION.tcl "puts -nonewline [package require Tk]; exit") + # Find Tk version via wish or fail. execute_process( - COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl - RESULT_VARIABLE ITK_RC - OUTPUT_VARIABLE _plplot_itk_version + COMMAND ${TK_WISH} ${CMAKE_CURRENT_BINARY_DIR}/CheckTK_VERSION.tcl + RESULT_VARIABLE TK_RC + OUTPUT_VARIABLE _plplot_tk_version ) - if(NOT ITK_RC) + if(NOT TK_RC) + message(STATUS "Looking for Tk version with wish - found") # Store result in cached variable so it will be remembered # when cmake is re-run, but use type of STRING rather than # INTERNAL to allow users to specify the value with a - # -DPLPLOT_ITK_VERSION:STRING=<whatever> on the command line - # for those rare cases (e.g., autobuild environment without X) - # when "package require Itk" would error out due to the lack - # of X or some tclsh issue. - set(PLPLOT_ITK_VERSION ${_plplot_itk_version} - CACHE STRING "Itk version that will be used" + # -DPLPLOT_TK_VERSION:STRING=<whatever> on the command + # line for those rare cases when "package require Tk" + # would error out due to some wish issue. + set(PLPLOT_TK_VERSION ${_plplot_tk_version} + CACHE STRING "Tk version found by wish" ) - endif(NOT ITK_RC) - else(NOT PLPLOT_ITK_VERSION) - set(ITCL_RC 0) - endif(NOT PLPLOT_ITK_VERSION) + + if(PLPLOT_TCL_VERSION STREQUAL PLPLOT_TK_VERSION) + # Cross check that wish finds the same Tcl version as tclsh. + execute_process( + COMMAND ${TK_WISH} ${CMAKE_CURRENT_BINARY_DIR}/CheckTCL_VERSION.tcl + RESULT_VARIABLE TCL_RC + OUTPUT_VARIABLE _plplot_tcl_version + ) + + if(NOT TCL_RC AND _plplot_tcl_version STREQUAL PLPLOT_TCL_VERSION) + # Cross check that tclsh finds the same Tk version as wish. + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckTK_VERSION.tcl + RESULT_VARIABLE TK_RC + OUTPUT_VARIABLE _plplot_tk_version + ) + if(NOT TK_RC AND _plplot_tk_version STREQUAL PLPLOT_TK_VERSION) + message(STATUS "Tcl and Tk versions found by both tclsh and wish are identical") + # Sanity checking of Tk version consistency _if_ a Tk + # version string can be extracted from the Tk library + # name. + string(REGEX MATCH "[0-9]+[.]?[0-9]+" library_version ${TK_LIBRARY}) + if(library_version) + # If no decimal point in version insert as the second character. + if(NOT library_version MATCHES "[.]") + string(REGEX REPLACE "^([0-9])([0-9]+)$" "\\1.\\2" library_version ${library_version}) + endif(NOT library_version MATCHES "[.]") + #message(STATUS "library_version = ${library_version}") + string(LENGTH ${library_version} length_library_version) + string(SUBSTRING ${PLPLOT_TK_VERSION} 0 ${length_library_version} truncated_version) + #message(STATUS "truncated_version = ${truncated_version}") + if(NOT truncated_version STREQUAL library_version) + message(STATUS "WARNING: Tk library version = ${library_version} that is extracted from the + library name is not consistent with PLPLOT_TK_VERSION = ${PLPLOT_TK_VERSION}") + endif(NOT truncated_version STREQUAL library_version) + endif(library_version) + elseif(TK_RC) + message(STATUS "Looking for Tk version with tclsh - not found") + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + else(NOT TK_RC AND _plplot_tk_version STREQUAL PLPLOT_TK_VERSION) + message(STATUS "Tk version = ${_plplot_tk_version} found by tclsh is not consistent with + Tk version = ${PLPLOT_TK_VERSION} found by wish" + ) + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + endif(NOT TK_RC AND _plplot_tk_version STREQUAL PLPLOT_TK_VERSION) + elseif(TCL_RC) + message(STATUS "Looking for Tcl version with wish - not found") + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + else(NOT TCL_RC AND _plplot_tcl_version STREQUAL PLPLOT_TCL_VERSION) + message(STATUS "Tcl version = ${_plplot_tcl_version} found by wish is not consistent with + Tcl version = ${PLPLOT_TCL_VERSION} found by tclsh" + ) + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + endif(NOT TCL_RC AND _plplot_tcl_version STREQUAL PLPLOT_TCL_VERSION) + else(PLPLOT_TCL_VERSION STREQUAL PLPLOT_TK_VERSION) + message(STATUS "Tk version = ${PLPLOT_TK_VERSION} found by wish is not consistent with + Tcl version = ${PLPLOT_TCL_VERSION} found by tclsh" + ) + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + endif(PLPLOT_TCL_VERSION STREQUAL PLPLOT_TK_VERSION) + else(NOT TK_RC) + message(STATUS "Looking for Tk version with wish - not found") + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + endif(NOT TK_RC) + else(NOT PLPLOT_TK_VERSION) + set(TK_RC 0) + endif(NOT PLPLOT_TK_VERSION) + else(TK_WISH) + message(STATUS "Looking for wish - not found") + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + endif(TK_WISH) + elseif(ENABLE_tk AND NOT TK_FOUND) + message(STATUS "Looking for Tk - not found") + message(STATUS "WARNING: setting ENABLE_tk to OFF") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk bindings" FORCE) + endif(ENABLE_tk AND TK_FOUND) + + if(ENABLE_tk AND NOT X11_FOUND) + if(WIN32 AND NOT CYGWIN) + message(STATUS "WARNING: X11 not found, turning off Tk devices that depend on it") + set(PLD_tk OFF CACHE BOOL "Enable Tk device" FORCE) + set(PLD_tkwin OFF CACHE BOOL "Enable Tk device" FORCE) + else(WIN32 AND NOT CYGWIN) + message(STATUS "WARNING: X11 not found so disabling Tk interface code") + set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) + endif(WIN32 AND NOT CYGWIN) + endif(ENABLE_tk AND NOT X11_FOUND) + + if(NOT ENABLE_tk) + message(STATUS "WARNING: Because Tk is disabled must disable Itk as well") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(NOT ENABLE_tk) + + if(ENABLE_itk) + if(USE_INCRTCL_VERSION_4) + set(SUGGESTED_ITK_VERSION 4) + else(USE_INCRTCL_VERSION_4) + set(SUGGESTED_ITK_VERSION 3) + endif(USE_INCRTCL_VERSION_4) + if(NOT PLPLOT_ITK_VERSION) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl "puts -nonewline [package require Itk ${SUGGESTED_ITK_VERSION}]; exit") + # Refine SUGGESTED_ITK_VERSION to exact value or fail. + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_Available.tcl + RESULT_VARIABLE ITK_RC + OUTPUT_VARIABLE _plplot_itk_version + ) if(NOT ITK_RC) - message(STATUS "Looking for itk.h") - if(NOT USE_INCRTCL_VERSION_4) - # Search first for epa_build install location. - find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}/itcl${PLPLOT_ITCL_VERSION}) - endif(NOT USE_INCRTCL_VERSION_4) - find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}) + # Store result in cached variable so it will be remembered + # when cmake is re-run, but use type of STRING rather than + # INTERNAL to allow users to specify the value with a + # -DPLPLOT_ITK_VERSION:STRING=<whatever> on the command line + # for those rare cases (e.g., autobuild environment without X) + # when "package require Itk" would error out due to the lack + # of X or some tclsh issue. + set(PLPLOT_ITK_VERSION ${_plplot_itk_version} + CACHE STRING "Itk version that will be used" + ) + endif(NOT ITK_RC) + else(NOT PLPLOT_ITK_VERSION) + set(ITCL_RC 0) + endif(NOT PLPLOT_ITK_VERSION) + if(NOT ITK_RC) + message(STATUS "Looking for itk.h") + if(NOT USE_INCRTCL_VERSION_4) + # Search first for epa_build install location. + find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}/itcl${PLPLOT_ITCL_VERSION}) + endif(NOT USE_INCRTCL_VERSION_4) + find_path(ITK_INCLUDE_PATH itk.h HINTS ${TCL_INCLUDE_PATH}) - if(ITK_INCLUDE_PATH) - message(STATUS "Looking for itk.h - found") - message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") - message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") + if(ITK_INCLUDE_PATH) + message(STATUS "Looking for itk.h - found") + message(STATUS "ITK_INCLUDE_PATH = ${ITK_INCLUDE_PATH}") + message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") - message(STATUS "Checking for Itk header version consistency") - string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITK_MAJOR_VERSION "${PLPLOT_ITK_VERSION}") - string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITK_MINOR_VERSION "${PLPLOT_ITK_VERSION}") - message(STATUS "ITK_MAJOR_VERSION = ${ITK_MAJOR_VERSION}") - message(STATUS "ITK_MINOR_VERSION = ${ITK_MINOR_VERSION}") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c - "// #define RC_INVOKED to avoid sucking in lots of additional includes for + message(STATUS "Checking for Itk header version consistency") + string(REGEX REPLACE "^([0-9]*)\\.[0-9]*.*$" "\\1" ITK_MAJOR_VERSION "${PLPLOT_ITK_VERSION}") + string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" ITK_MINOR_VERSION "${PLPLOT_ITK_VERSION}") + message(STATUS "ITK_MAJOR_VERSION = ${ITK_MAJOR_VERSION}") + message(STATUS "ITK_MINOR_VERSION = ${ITK_MINOR_VERSION}") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c + "// #define RC_INVOKED to avoid sucking in lots of additional includes for // efficiency and simplicity and also to avoid the header file disaster that has long // been a problem for version 3.3 of itk.h #define RC_INVOKED 1 @@ -289,143 +445,134 @@ #endif void main(void){} " - ) - try_compile(CONSISTENT_HEADER_ITK_VERSION ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c - CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${ITK_INCLUDE_PATH} - ) - if(CONSISTENT_HEADER_ITK_VERSION) - message(STATUS "Checking for Itk header version consistency - true") - else(CONSISTENT_HEADER_ITK_VERSION) - message(STATUS "Checking for Itk header version consistency - false") - message(STATUS "WARNING: Disabling Itk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(CONSISTENT_HEADER_ITK_VERSION) - else(ITK_INCLUDE_PATH) - message(STATUS "Looking for itk.h - not found") + ) + try_compile(CONSISTENT_HEADER_ITK_VERSION ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/CheckITK_VERSION.c + CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${ITK_INCLUDE_PATH} + ) + if(CONSISTENT_HEADER_ITK_VERSION) + message(STATUS "Checking for Itk header version consistency - true") + else(CONSISTENT_HEADER_ITK_VERSION) + message(STATUS "Checking for Itk header version consistency - false") message(STATUS "WARNING: Disabling Itk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(ITK_INCLUDE_PATH) + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(CONSISTENT_HEADER_ITK_VERSION) + else(ITK_INCLUDE_PATH) + message(STATUS "Looking for itk.h - not found") + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(ITK_INCLUDE_PATH) - if(ENABLE_itk) - message(STATUS "Looking for itk library") - # Search first for epa_build install location. - find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${PLPLOT_ITK_VERSION}) - find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}) - if(ITK_LIBRARY) - message(STATUS "Looking for itk library - found") - message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") - set(HAVE_ITK ON) - get_filename_component(ITK_LIBRARY_PATH ${ITK_LIBRARY} PATH) - list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITK_LIBRARY_PATH}) + if(ENABLE_itk) + message(STATUS "Looking for itk library") + # Search first for epa_build install location. + find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}/itk${PLPLOT_ITK_VERSION}) + find_library(ITK_LIBRARY itk${PLPLOT_ITK_VERSION} HINTS ${TCL_LIBRARY_PATH}) + if(ITK_LIBRARY) + message(STATUS "Looking for itk library - found") + message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}") + set(HAVE_ITK ON) + get_filename_component(ITK_LIBRARY_PATH ${ITK_LIBRARY} PATH) + list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITK_LIBRARY_PATH}) - # Test version consistency between iwidgets, itk, and itcl. - if(NOT IWIDGETS_VERSIONS_LIST) - if(USE_INCRTCL_VERSION_4) - set(SUGGESTED_IWIDGETS_VERSION 4.1) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") + # Test version consistency between iwidgets, itk, and itcl. + if(NOT IWIDGETS_VERSIONS_LIST) + if(USE_INCRTCL_VERSION_4) + set(SUGGESTED_IWIDGETS_VERSION 4.1) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") + execute_process( + COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl + RESULT_VARIABLE IWIDGETS_RC + OUTPUT_VARIABLE _iwidgets_versions_list + ) + else(USE_INCRTCL_VERSION_4) + # Find maximum 4.0 version of iwidgets that is + # available. 4.0.1 (released in 2002) is the largest + # version of iwidgets4.0 (as opposed to the recently + # developed iwidgets4.1) I have found on the web in + # tarball form, but I have seen one reference to 4.0.2 + # which may have been publicly released somewhere + # inaccessible to my google searches or privately made + # available before all development of iwidgets4.0 + # stopped. So add 4.0.2 to the list just in case. + foreach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require -exact Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") execute_process( COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl RESULT_VARIABLE IWIDGETS_RC OUTPUT_VARIABLE _iwidgets_versions_list + ERROR_QUIET ) - else(USE_INCRTCL_VERSION_4) - # Find maximum 4.0 version of iwidgets that is - # available. 4.0.1 (released in 2002) is the largest - # version of iwidgets4.0 (as opposed to the recently - # developed iwidgets4.1) I have found on the web in - # tarball form, but I have seen one reference to 4.0.2 - # which may have been publicly released somewhere - # inaccessible to my google searches or privately made - # available before all development of iwidgets4.0 - # stopped. So add 4.0.2 to the list just in case. - foreach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl "puts -nonewline \"[package require -exact Iwidgets ${SUGGESTED_IWIDGETS_VERSION}];[package require Itk];[package require Itcl]\";exit") - execute_process( - COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_BINARY_DIR}/determine_versions.tcl - RESULT_VARIABLE IWIDGETS_RC - OUTPUT_VARIABLE _iwidgets_versions_list - ERROR_QUIET - ) - if(NOT IWIDGETS_RC) - break() - endif(NOT IWIDGETS_RC) - endforeach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) - endif(USE_INCRTCL_VERSION_4) - if(NOT IWIDGETS_RC) - # Store result in cached variable so it will be - # remembered when cmake is re-run, but use type of - # STRING rather than INTERNAL to allow users to - # specify the value with a - # -DIWIDGETS_VERSIONS_LIST:STRING=<whatever> on the - # command line for those rare cases (e.g., autobuild - # environment without X) when "package require Itk (or - # Itcl or IWidgets)" would error out due to the lack of - # X or some tclsh issue - set(IWIDGETS_VERSIONS_LIST ${_iwidgets_versions_list} - CACHE STRING "list of Iwidgets; Itk, and Itcl versions (in that order) that will be used" - ) - endif(NOT IWIDGETS_RC) - else(NOT IWIDGETS_VERSIONS_LIST) - set(IWIDGETS_RC 0) - endif(NOT IWIDGETS_VERSIONS_LIST) + if(NOT IWIDGETS_RC) + break() + endif(NOT IWIDGETS_RC) + endforeach(SUGGESTED_IWIDGETS_VERSION 4.0.2 4.0.1 4.0.0) + endif(USE_INCRTCL_VERSION_4) if(NOT IWIDGETS_RC) - message(STATUS "IWIDGETS_VERSIONS_LIST = ${IWIDGETS_VERSIONS_LIST}") - list(GET IWIDGETS_VERSIONS_LIST 0 PLPLOT_IWIDGETS_VERSION) - list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) - list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) + # Store result in cached variable so it will be + # remembered when cmake is re-run, but use type of + # STRING rather than INTERNAL to allow users to + # specify the value with a + # -DIWIDGETS_VERSIONS_LIST:STRING=<whatever> on the + # command line for those rare cases (e.g., autobuild + # environment without X) when "package require Itk (or + # Itcl or IWidgets)" would error out due to the lack of + # X or some tclsh issue + set(IWIDGETS_VERSIONS_LIST ${_iwidgets_versions_list} + CACHE STRING "list of Iwidgets; Itk, and Itcl versions (in that order) that will be used" + ) + endif(NOT IWIDGETS_RC) + else(NOT IWIDGETS_VERSIONS_LIST) + set(IWIDGETS_RC 0) + endif(NOT IWIDGETS_VERSIONS_LIST) + if(NOT IWIDGETS_RC) + message(STATUS "IWIDGETS_VERSIONS_LIST = ${IWIDGETS_VERSIONS_LIST}") + list(GET IWIDGETS_VERSIONS_LIST 0 PLPLOT_IWIDGETS_VERSION) + list(GET IWIDGETS_VERSIONS_LIST 1 CONSISTENT_ITK_VERSION) + list(GET IWIDGETS_VERSIONS_LIST 2 CONSISTENT_ITCL_VERSION) - message(STATUS "PLPLOT_IWIDGETS_VERSION = ${PLPLOT_IWIDGETS_VERSION}") - message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent") - if(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) - message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - true") - else(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) - message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") - message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") - message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") - message(STATUS "CONSISTENT_ITCL_VERSION = ${CONSISTENT_ITCL_VERSION}") - message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - false") - message(STATUS "WARNING: Consistent combination of Iwidgets, Itk, and Itcl not found so disabling Itcl and Itk") - set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) - else(NOT IWIDGETS_RC) - message(STATUS "WARNING: Iwidgets could not be found so disabling Itcl and Itk") + message(STATUS "PLPLOT_IWIDGETS_VERSION = ${PLPLOT_IWIDGETS_VERSION}") + message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent") + if(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) + message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - true") + else(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) + message(STATUS "PLPLOT_ITK_VERSION = ${PLPLOT_ITK_VERSION}") + message(STATUS "CONSISTENT_ITK_VERSION = ${CONSISTENT_ITK_VERSION}") + message(STATUS "PLPLOT_ITCL_VERSION = ${PLPLOT_ITCL_VERSION}") + message(STATUS "CONSISTENT_ITCL_VERSION = ${CONSISTENT_ITCL_VERSION}") + message(STATUS "Checking that the Iwidgets, Itk, and Itcl packages are consistent - false") + message(STATUS "WARNING: Consistent combination of Iwidgets, Itk, and Itcl not found so disabling Itcl and Itk") set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(NOT IWIDGETS_RC) - else(ITK_LIBRARY) - message(STATUS "Looking for itk library - not found") - message(STATUS "WARNING: Disabling Itk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(ITK_LIBRARY) - endif(ENABLE_itk) - else(NOT ITK_RC) - message(STATUS "Itk not available or not compatible with current Tcl shell") - message(STATUS "WARNING: Disabling Itk interface code") - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(NOT ITK_RC) - endif(ENABLE_itk) + endif(CONSISTENT_ITCL_VERSION STREQUAL PLPLOT_ITCL_VERSION AND CONSISTENT_ITK_VERSION STREQUAL PLPLOT_ITK_VERSION) + else(NOT IWIDGETS_RC) + message(STATUS "WARNING: Iwidgets could not be found so disabling Itcl and Itk") + set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(NOT IWIDGETS_RC) + else(ITK_LIBRARY) + message(STATUS "Looking for itk library - not found") + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(ITK_LIBRARY) + endif(ENABLE_itk) + else(NOT ITK_RC) + message(STATUS "Itk not available or not compatible with current Tcl shell") + message(STATUS "WARNING: Disabling Itk interface code") + set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) + endif(NOT ITK_RC) + endif(ENABLE_itk) - # ------------------------------------------------------------------------ - # figure out how to build tclIndex - # ------------------------------------------------------------------------ - set(MKTCLINDEX ${CMAKE_SOURCE_DIR}/scripts/mktclIndex) - if(ENABLE_itcl) - set(MKTCLINDEX_ARGS "-itcl") - else(ENABLE_itcl) - set(MKTCLINDEX_ARGS "-tcl") - endif(ENABLE_itcl) + # ------------------------------------------------------------------------ + # figure out how to build tclIndex + # ------------------------------------------------------------------------ + set(MKTCLINDEX ${CMAKE_SOURCE_DIR}/scripts/mktclIndex) + if(ENABLE_itcl) + set(MKTCLINDEX_ARGS "-itcl") + else(ENABLE_itcl) + set(MKTCLINDEX_ARGS "-tcl") + endif(ENABLE_itcl) - else(TCL_FOUND AND TCL_TCLSH) - message(STATUS "Tcl not found OR tclsh not found") - message(STATUS "WARNING: Disabling everything that is Tcl/Tk related") - set(ENABLE_tcl OFF CACHE BOOL "Enable Tcl bindings" FORCE) - set(ENABLE_itcl OFF CACHE BOOL "Enable Itcl interface code" FORCE) - set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE) - set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE) - endif(TCL_FOUND AND TCL_TCLSH) - filter_rpath(TCL_RPATH) if(TCL_RPATH) message(STATUS "TCL_RPATH = ${TCL_RPATH}") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |