changeset 1:3e30c3b2d6da

Add install/uninstall rules
author Louis Opter <louis@dotcloud.com>
date Thu, 30 Dec 2010 18:48:34 +0100
parents 6ce4443e7545
children ba9d8601d5f9
files CMakeLists.txt CMakeScripts/cmake_uninstall.cmake.in
diffstat 2 files changed, 51 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Wed Dec 29 23:28:14 2010 +0100
+++ b/CMakeLists.txt	Thu Dec 30 18:48:34 2010 +0100
@@ -1,7 +1,21 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 
+# Global definitions ###########################################################
+
 PROJECT(LIBLXCSTATS C)
 
+SET(CPACK_PACKAGE_VERSION_MAJOR "0")
+SET(CPACK_PACKAGE_VERSION_MINOR "0")
+SET(CPACK_PACKAGE_VERSION_PATCH "1")
+SET(LIBLXCSTATS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+
+MESSAGE(STATUS "CMake Version: ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}")
+MESSAGE(STATUS "liblxcstats Version: ${LIBLXCSTATS_VERSION}")
+MESSAGE(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
+MESSAGE(STATUS "System: ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}")
+MESSAGE(STATUS "Install Prefix: ${CMAKE_INSTALL_PREFIX}")
+MESSAGE(STATUS "Source Directory: ${LIBLXCSTATS_SOURCE_DIR}")
+
 ENABLE_TESTING()
 
 IF (CMAKE_COMPILER_IS_GNUCC)
@@ -14,6 +28,8 @@
     MESSAGE(SEND_ERROR "The liblxcstats is Linux specific.")
 ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux")
 
+# Build rules ##################################################################
+
 SET(SRC
     compat/strlcpy.c
     compat/strlcat.c
@@ -29,5 +45,20 @@
 
 TARGET_LINK_LIBRARIES(lxcstats probes)
 
+# Install/Uninstall rules ######################################################
+
+INSTALL(TARGETS lxcstats LIBRARY DESTINATION lib)
+
+CONFIGURE_FILE("${LIBLXCSTATS_SOURCE_DIR}/CMakeScripts/cmake_uninstall.cmake.in"
+               "${LIBLXCSTATS_BINARY_DIR}/cmake_uninstall.cmake"
+               IMMEDIATE @ONLY
+              )
+
+ADD_CUSTOM_TARGET(uninstall
+                  "${CMAKE_COMMAND}" -P "${LIBLXCSTATS_BINARY_DIR}/cmake_uninstall.cmake"
+                 )
+
+# Subdirectories ###############################################################
+
 ADD_SUBDIRECTORY(tests)
 ADD_SUBDIRECTORY(probes)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CMakeScripts/cmake_uninstall.cmake.in	Thu Dec 30 18:48:34 2010 +0100
@@ -0,0 +1,20 @@
+IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+    MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
+ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+STRING(REGEX REPLACE "\n" ";" files "${files}")
+FOREACH(file ${files})
+    MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
+    IF(EXISTS "$ENV{DESTDIR}${file}")
+        EXEC_PROGRAM("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+                     OUTPUT_VARIABLE rm_out
+                     RETURN_VALUE rm_retval
+                    )
+        IF(NOT "${rm_retval}" STREQUAL 0)
+            MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
+        ENDIF(NOT "${rm_retval}" STREQUAL 0)
+    ELSE(EXISTS "$ENV{DESTDIR}${file}")
+        MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
+    ENDIF(EXISTS "$ENV{DESTDIR}${file}")
+ENDFOREACH(file)