File: PostInstall.cmake.in

package info (click to toggle)
volview 3.4-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 25,204 kB
  • sloc: cpp: 132,585; ansic: 11,612; tcl: 236; sh: 64; makefile: 25; xml: 8
file content (76 lines) | stat: -rw-r--r-- 3,593 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
##=========================================================================
## 
##   Copyright (c) Kitware, Inc.
##   All rights reserved.
##   See Copyright.txt or http://www.kitware.com/VolViewCopyright.htm for details.
## 
##      This software is distributed WITHOUT ANY WARRANTY; without even
##      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
##      PURPOSE.  See the above copyright notice for more information.
## 
##=========================================================================
# Set the install prefix
  IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
    SET(CMAKE_INSTALL_PREFIX "/usr/local")
  ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
  STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
  
# Find all the dylibs under the ./lib hierarchy and link them back into the ./lib 
# directory for ease of manipulation. 
  set(CMDLINE "find" )
  EXECUTE_PROCESS(COMMAND ${CMDLINE} . -iname *.dylib -exec ln -s {} \; -print
     WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/lib"
     OUTPUT_VARIABLE RESULT_STREAM 
     ERROR_VARIABLE ERROR_STREAM)

# Set up the correct name for the tcl/tk libraries based on all the settings previously 
# defined.  We need to do this to match what was generated with the build settings.
  SET(TclTk_MAJOR_MINOR_VERSION 
    "@TclTk_MAJOR_VERSION@.@TclTk_MINOR_VERSION@")

  SET(TclTk_LIBRARY_SUFX "")
  IF(CMAKE_BUILD_TYPE MATCHES Debug)
    SET(TclTk_BUILD_DEBUG 1)
    IF(TclTk_MAJOR_VERSION EQUAL 8 AND TclTk_MINOR_VERSION LESS 5)
      SET(TclTk_LIBRARY_SUFX "g")
    ENDIF(TclTk_MAJOR_VERSION EQUAL 8 AND TclTk_MINOR_VERSION LESS 5)
  ELSE(CMAKE_BUILD_TYPE MATCHES Debug)
    SET(TclTk_BUILD_DEBUG 0)
  ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)

  SET(TclTk_LIBRARY_EXT ".dylib")
  SET(TCL_RELOCATION_NAME @CMAKE_INSTALL_NAME_DIR@/libtcl${TclTk_MAJOR_MINOR_VERSION}${TclTk_LIBRARY_SUFX}${TclTk_LIBRARY_EXT})
  SET(TK_RELOCATION_NAME @CMAKE_INSTALL_NAME_DIR@/libtk${TclTk_MAJOR_MINOR_VERSION}${TclTk_LIBRARY_SUFX}${TclTk_LIBRARY_EXT})

# Now go through the executables and Tcl/Tk libraries and fix up the Tcl/Tk locations.
  FILE (GLOB TCL_LIBRARIES_RAW "${CMAKE_INSTALL_PREFIX}/lib/*.dylib" "${CMAKE_INSTALL_PREFIX}/bin/*")
  FOREACH(FILENAME IN LISTS TCL_LIBRARIES_RAW)
    EXECUTE_PROCESS (COMMAND @CMAKE_INSTALL_NAME_TOOL@
      -change @TCL_LIBRARY@ ${TCL_RELOCATION_NAME}
      ${FILENAME})
    EXECUTE_PROCESS (COMMAND @CMAKE_INSTALL_NAME_TOOL@
      -change @TK_LIBRARY@ ${TK_RELOCATION_NAME}
      ${FILENAME})
  ENDFOREACH(FILENAME)

# At this point, everything appears to be fixed up except for the plugins.  We have a full set of the
# libraries that the plugins are built against in TCL_LIBRARIES_RAW, so lets go through and build the
# command line for the install_name_tool.
  FILE (GLOB LIBRARIES_RAW "${CMAKE_INSTALL_PREFIX}/lib/*.dylib")

# At this point, all that is left is to go through the plugins directory and change all the references
# by changing the command line.
  FILE (GLOB PLUGIN_LIBRARIES_RAW "${CMAKE_INSTALL_PREFIX}/bin/Plugins/*.so")
  FOREACH(FILENAME IN LISTS PLUGIN_LIBRARIES_RAW)
    FOREACH(FILENAME_CHANGE IN LISTS LIBRARIES_RAW)
      GET_FILENAME_COMPONENT (FILENAME_BASE ${FILENAME_CHANGE} NAME)
      SET (FILENAME_BUILD_LOCATION @CMAKE_BINARY_DIR@/bin/${FILENAME_BASE})
  
      SET (FILENAME_RELOCATION @CMAKE_INSTALL_NAME_DIR@/${FILENAME_BASE})
      EXECUTE_PROCESS (COMMAND @CMAKE_INSTALL_NAME_TOOL@
        -change ${FILENAME_BUILD_LOCATION} ${FILENAME_RELOCATION}
        ${FILENAME}
        )
    ENDFOREACH(FILENAME_CHANGE)
  ENDFOREACH(FILENAME)