summaryrefslogtreecommitdiff
path: root/Modules/FindCABLE.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2001-09-17 14:16:20 -0400
committerBrad King <brad.king@kitware.com>2001-09-17 14:16:20 -0400
commit0598697998b6a1c76ef8f5ea71c65021aab4cbfc (patch)
treeed3a1ec84be129d8729ab98887c659354e25e0e0 /Modules/FindCABLE.cmake
parent53dd41451d4cd5f945867ed7a0b1e3015b130aff (diff)
downloadcmake-0598697998b6a1c76ef8f5ea71c65021aab4cbfc.tar.gz
ENH: Added find support for looking at Cable's build directory if the user sets the CABLE_BUILD_DIR cache entry.
Diffstat (limited to 'Modules/FindCABLE.cmake')
-rw-r--r--Modules/FindCABLE.cmake79
1 files changed, 56 insertions, 23 deletions
diff --git a/Modules/FindCABLE.cmake b/Modules/FindCABLE.cmake
index 7d93b810fa..a2da0dbaaa 100644
--- a/Modules/FindCABLE.cmake
+++ b/Modules/FindCABLE.cmake
@@ -11,28 +11,61 @@
# an include directory.
#
-# Use some tricks to find the cable executable relative to somewhere
-# in the system search path. CMake will collapse the relative paths
-# automatically.
-FIND_PROGRAM(CABLE
- NAMES cable
- ../share/Cable/bin/cable
- ../Cable/bin/cable
- PATHS /usr/share/Cable/bin
- /usr/local/share/Cable/bin
- "C:/Program Files/Cable/bin"
-)
+IF(NOT CABLE)
+ FIND_PATH(CABLE_BUILD_DIR cable.README.txt)
+ENDIF(NOT CABLE)
-# Get the path where the executable sits, but without the executable
-# name on it.
-GET_FILENAME_COMPONENT(CABLE_ROOT_BIN ${CABLE} PATH)
+IF(CABLE_BUILD_DIR)
+ LOAD_CACHE(${CABLE_BUILD_DIR}
+ EXCLUDE
+ BUILD_SHARED_LIBS
+ LIBRARY_OUTPUT_PATH
+ EXECUTABLE_OUTPUT_PATH
+ MAKECOMMAND
+ INCLUDE_INTERNALS
+ CABLE_LIBRARY_OUTPUT_PATH
+ CABLE_EXECUTABLE_OUTPUT_PATH)
+
+ IF(CABLE_LIBRARY_OUTPUT_PATH)
+ FIND_LIBRARY(CABLE_TCL_LIBRARY NAMES WrapTclFacility PATHS
+ ${CABLE_LIBRARY_OUTPUT_PATH})
+ ELSE(CABLE_LIBRARY_OUTPUT_PATH)
+ FIND_LIBRARY(CABLE_TCL_LIBRARY NAMES WrapTclFacility PATHS
+ ${CABLE_BINARY_DIR}/WrapTclFacility)
+ ENDIF(CABLE_LIBRARY_OUTPUT_PATH)
+
+ IF(CABLE_EXECUTABLE_OUTPUT_PATH)
+ FIND_PROGRAM(CABLE NAMES cable PATHS ${CABLE_EXECUTABLE_OUTPUT_PATH})
+ ELSE(CABLE_EXECUTABLE_OUTPUT_PATH)
+ FIND_PROGRAM(CABLE NAMES cable PATHS ${CABLE_BINARY_DIR}/Executables)
+ ENDIF(CABLE_EXECUTABLE_OUTPUT_PATH)
+
+ SET(CABLE_INCLUDE_DIR ${CABLE_SOURCE_DIR}
+ CACHE STRING "Include path for Cable headers.")
+ELSE(CABLE_BUILD_DIR)
+ # Use some tricks to find the cable executable relative to somewhere
+ # in the system search path. CMake will collapse the relative paths
+ # automatically.
+ FIND_PROGRAM(CABLE
+ NAMES cable
+ ../share/Cable/bin/cable
+ ../Cable/bin/cable
+ PATHS /usr/share/Cable/bin
+ /usr/local/share/Cable/bin
+ "C:/Program Files/Cable/bin"
+ )
-# Find the cable include directory in a path relative to the cable
-# executable.
-FIND_PATH(CABLE_INCLUDE_DIR WrapTclFacility/wrapCalls.h
- ${CABLE_ROOT_BIN}/../include)
-
-# Find the WrapTclFacility library in a path relative to the cable
-# executable.
-FIND_LIBRARY(CABLE_TCL_LIBRARY NAMES WrapTclFacility PATHS
- ${CABLE_ROOT_BIN}/../lib)
+ # Get the path where the executable sits, but without the executable
+ # name on it.
+ GET_FILENAME_COMPONENT(CABLE_ROOT_BIN ${CABLE} PATH)
+
+ # Find the cable include directory in a path relative to the cable
+ # executable.
+ FIND_PATH(CABLE_INCLUDE_DIR WrapTclFacility/wrapCalls.h
+ ${CABLE_ROOT_BIN}/../include)
+
+ # Find the WrapTclFacility library in a path relative to the cable
+ # executable.
+ FIND_LIBRARY(CABLE_TCL_LIBRARY NAMES WrapTclFacility PATHS
+ ${CABLE_ROOT_BIN}/../lib)
+ENDIF(CABLE_BUILD_DIR)