Home | History | Annotate | Download | only in cmake
      1 # Ceres Solver - A fast non-linear least squares minimizer
      2 # Copyright 2012 Google Inc. All rights reserved.
      3 # http://code.google.com/p/ceres-solver/
      4 #
      5 # Redistribution and use in source and binary forms, with or without
      6 # modification, are permitted provided that the following conditions are met:
      7 #
      8 # * Redistributions of source code must retain the above copyright notice,
      9 #   this list of conditions and the following disclaimer.
     10 # * Redistributions in binary form must reproduce the above copyright notice,
     11 #   this list of conditions and the following disclaimer in the documentation
     12 #   and/or other materials provided with the distribution.
     13 # * Neither the name of Google Inc. nor the names of its contributors may be
     14 #   used to endorse or promote products derived from this software without
     15 #   specific prior written permission.
     16 #
     17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     18 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     20 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     21 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     24 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     25 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     26 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     27 # POSSIBILITY OF SUCH DAMAGE.
     28 #
     29 # Author: arnaudgelas (a] gmail.com (Arnaud Gelas)
     30 #         alexs.mac (a] gmail.com (Alex Stewart)
     31 
     32 IF (COMMAND cmake_policy)
     33   # Ignore empty elements in LIST() commands.
     34   CMAKE_POLICY(SET CMP0007 OLD)
     35 ENDIF (COMMAND cmake_policy)
     36 
     37 IF (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
     38   MESSAGE(FATAL_ERROR "Cannot find install manifest: "
     39                       "\"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
     40 ENDIF (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
     41 
     42 FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" INSTALL_MANIFEST)
     43 STRING(REGEX REPLACE "\n" ";" INSTALL_MANIFEST "${INSTALL_MANIFEST}")
     44 LIST(REVERSE INSTALL_MANIFEST)
     45 
     46 FOREACH (INSTALLED_FILE ${INSTALL_MANIFEST})
     47   # Save the root ceres include install directory, e.g. /usr/local/include/ceres
     48   # so that we can remove it at the end.
     49   IF (NOT CERES_INCLUDE_INSTALL_ROOT)
     50     GET_FILENAME_COMPONENT(FILE_NAME ${INSTALLED_FILE} NAME)
     51     IF (FILE_NAME STREQUAL ceres.h)
     52       # Ensure that the directory is nested as we expect, as we are going to
     53       # remove it, and we do not want to remove files pertaining to anyone else.
     54       GET_FILENAME_COMPONENT(PARENT_DIR ${INSTALLED_FILE} PATH)
     55       GET_FILENAME_COMPONENT(PARENT_DIR_NAME ${PARENT_DIR} NAME)
     56       IF (PARENT_DIR_NAME STREQUAL ceres AND IS_DIRECTORY ${PARENT_DIR})
     57         SET(CERES_INCLUDE_INSTALL_ROOT ${PARENT_DIR})
     58       ENDIF (PARENT_DIR_NAME STREQUAL ceres AND IS_DIRECTORY ${PARENT_DIR})
     59     ENDIF (FILE_NAME STREQUAL ceres.h)
     60   ENDIF (NOT CERES_INCLUDE_INSTALL_ROOT)
     61 
     62   MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${INSTALLED_FILE}\"")
     63   IF (EXISTS "$ENV{DESTDIR}${INSTALLED_FILE}")
     64     EXECUTE_PROCESS(COMMAND @CMAKE_COMMAND@
     65                     -E remove "$ENV{DESTDIR}${INSTALLED_FILE}"
     66                     OUTPUT_VARIABLE RM_OUT
     67                     RESULT_VARIABLE RM_RETVAL)
     68     IF (NOT ${RM_RETVAL} EQUAL 0)
     69       MESSAGE(FATAL_ERROR
     70               "Problem when removing \"$ENV{DESTDIR}${INSTALLED_FILE}\"")
     71     ENDIF (NOT ${RM_RETVAL} EQUAL 0)
     72   ELSE (EXISTS "$ENV{DESTDIR}${INSTALLED_FILE}")
     73     MESSAGE(STATUS "File \"$ENV{DESTDIR}${INSTALLED_FILE}\" does not exist.")
     74   ENDIF (EXISTS "$ENV{DESTDIR}${INSTALLED_FILE}")
     75 ENDFOREACH(INSTALLED_FILE)
     76 
     77 # Removing Ceres include install directory.
     78 IF (CERES_INCLUDE_INSTALL_ROOT AND
     79     EXISTS ${CERES_INCLUDE_INSTALL_ROOT})
     80   MESSAGE(STATUS "Removing Ceres include install directory: "
     81                  "\"$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT}\"")
     82   EXECUTE_PROCESS(COMMAND @CMAKE_COMMAND@
     83                   -E remove_directory
     84                   "$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT}"
     85                   OUTPUT_VARIABLE RM_OUT
     86                   RESULT_VARIABLE RM_RETVAL)
     87   IF (NOT ${RM_RETVAL} EQUAL 0)
     88     MESSAGE(FATAL_ERROR
     89       "Failed to remove: \"$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT\"")
     90   ENDIF (NOT ${RM_RETVAL} EQUAL 0)
     91 ELSE (CERES_INCLUDE_INSTALL_ROOT AND
     92     EXISTS ${CERES_INCLUDE_INSTALL_ROOT})
     93   MESSAGE(FATAL_ERROR "Failed to find Ceres installed include directory "
     94                       "(e.g. /usr/local/include/ceres), candidate: "
     95                       "\"$ENV{DESTDIR}${CERES_INCLUDE_INSTALL_ROOT}\"")
     96 ENDIF (CERES_INCLUDE_INSTALL_ROOT AND
     97   EXISTS ${CERES_INCLUDE_INSTALL_ROOT})
     98