diff options
-rw-r--r-- | CMakeLists.txt | 11 | ||||
-rw-r--r-- | cmake/cmake_uninstall.cmake.in | 94 |
2 files changed, 64 insertions, 41 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index cf5418b2f..b4844fd6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -369,8 +369,17 @@ foreach( MODULE_PATH ${CMAKE_MODULE_PATH} ) "${UNINSTALL_OUT}" IMMEDIATE @ONLY ) + if(WITH_CLEANUP) + message(STATUS "Remove folders during uninstall target") + add_definitions(-DREMOVE_DIRS) + set(UNINST_RMDIRS 1) + else() + message(STATUS "Folders won't be removed during uninstall target") + set(UNINST_RMDIRS 0) + endif() add_custom_target(uninstall - "${CMAKE_COMMAND}" -P "${UNINSTALL_OUT}") + "${CMAKE_COMMAND}" -DWITH_CLEANUP:BOOL=${WITH_CLEANUP} -P "${UNINSTALL_OUT}") + option(WITH_CLEANUP "Remove folders during uninstall target" OFF) break() endif( EXISTS ${UNINSTALL_IN} ) endforeach( MODULE_PATH ) diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in index 09bff1867..c780c8d7b 100644 --- a/cmake/cmake_uninstall.cmake.in +++ b/cmake/cmake_uninstall.cmake.in @@ -1,24 +1,27 @@ # 'delete_empty_folder' function function(delete_empty_folder DIR) - if(NOT EXISTS ${DIR}) - return() - endif() - - # check if folder is empty - file(GLOB RESULT "${DIR}/*") - list(LENGTH RESULT RES_LEN) - if(RES_LEN EQUAL 0) - message(STATUS "Delete empty folder ${DIR}") - #file(REMOVE_RECURSE ${DIR}) - else() - # message(STATUS "${DIR} is not empty! It won't be removed.") - # message(STATUS "FILES = ${RESULT}") - endif() + if(NOT EXISTS ${DIR}) + return() + endif() + + # check if folder is empty + file(GLOB RESULT "${DIR}/*") + list(LENGTH RESULT RES_LEN) + if(RES_LEN EQUAL 0) + if(WITH_CLEANUP) + message(STATUS "Deleting empty folder ${DIR}") + file(REMOVE_RECURSE ${DIR}) + else() + message(STATUS " ${DIR}") + endif() + else() + #message(STATUS "${DIR} is not empty! It won't be removed.") + # message(STATUS "FILES = ${RESULT}") + endif() endfunction(delete_empty_folder) - if( NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" ) - message(FATAL_ERROR "Cannot find install manifest: \"@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) @@ -26,43 +29,54 @@ string( REGEX REPLACE "\n" ";" files "${files}" ) foreach(file ${files}) - message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") - if(EXISTS "$ENV{DESTDIR}${file}") + 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 ) + 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}") + else(EXISTS "$ENV{DESTDIR}${file}") - message( STATUS "File \"$ENV{DESTDIR}${file}\" does not exist." ) + message( STATUS "File \"$ENV{DESTDIR}${file}\" does not exist." ) - endif(EXISTS "$ENV{DESTDIR}${file}") + endif(EXISTS "$ENV{DESTDIR}${file}") - - get_filename_component(FOLDER $ENV{DESTDIR}${file} DIRECTORY) - set(FOLDERS ${FOLDERS} ${FOLDER}) + get_filename_component(FOLDER $ENV{DESTDIR}${file} DIRECTORY) + set(FOLDERS ${FOLDERS} ${FOLDER}) endforeach(file) # remove empty folders message(STATUS "") -message(STATUS "Removing empty folders") +if(WITH_CLEANUP) + message(STATUS "Removing empty folders") +else() + message(STATUS "Empty folders that may be safely removed:") +endif() + +list(APPEND FOLDERS + "@INSTALL_LIB_DIR@/CMake" + "@CMAKE_INSTALL_FULL_LIBDIR@/remmina" + "@REMMINA_DATADIR@/remmina" + ) list(REMOVE_DUPLICATES FOLDERS) foreach(dir ${FOLDERS}) -# message(STATUS ${dir}) - delete_empty_folder(${dir}) -# message(STATUS "") + # message(STATUS ${dir}) + delete_empty_folder(${dir}) + # message(STATUS "") endforeach(dir) -delete_empty_folder("@INSTALL_INCLUDE_DIR@") -delete_empty_folder("@INSTALL_BIN_DIR@") -delete_empty_folder("@INSTALL_LIB_DIR@/CMake") -delete_empty_folder("@INSTALL_LIB_DIR@") +# delete_empty_folder("@INSTALL_INCLUDE_DIR@") +# delete_empty_folder("@INSTALL_BIN_DIR@") +# delete_empty_folder("@INSTALL_LIB_DIR@/CMake") +# delete_empty_folder("@INSTALL_LIB_DIR@") +# delete_empty_folder("@CMAKE_INSTALL_FULL_LIBDIR@/remmina") +# delete_empty_folder("@REMMINA_DATADIR@/remmina") message(STATUS "") |