From b3d195f0188758a14875a5a2f270e4fd190a679f Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 17 Apr 2018 00:15:38 +0200 Subject: sync with upstream --- cmake/scripts/common/Uninstall.cmake | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'cmake/scripts/common/Uninstall.cmake') diff --git a/cmake/scripts/common/Uninstall.cmake b/cmake/scripts/common/Uninstall.cmake index 5660e19..5753857 100644 --- a/cmake/scripts/common/Uninstall.cmake +++ b/cmake/scripts/common/Uninstall.cmake @@ -1,9 +1,40 @@ +macro(remove_empty_dirs) + list(REMOVE_DUPLICATES DIRECTORIES) + unset(PDIRECTORIES) + foreach(dir IN LISTS DIRECTORIES) + if(EXISTS $ENV{DESTDIR}${dir}) + file(GLOB _res $ENV{DESTDIR}${dir}/*) + list(LENGTH _res _len) + if(_len EQUAL 0 AND EXISTS $ENV{DESTDIR}${dir}) + message(STATUS "Removing empty dir: ${dir}") + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove_directory $ENV{DESTDIR}${dir} + OUTPUT_VARIABLE rm_out + RESULT_VARIABLE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Failed to remove directory: $ENV{DESTDIR}${dir}") + endif() + get_filename_component(_pdir $ENV{DESTDIR}${dir} DIRECTORY) + list(APPEND PDIRECTORIES ${_pdir}) + endif() + endif() + endforeach() + list(LENGTH PDIRECTORIES _plen) + if(_plen GREATER 0) + set(DIRECTORIES ${PDIRECTORIES}) + remove_empty_dirs() + endif() +endmacro() + # Uninstall target set(MANIFEST ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt) if(EXISTS ${MANIFEST}) file(STRINGS ${MANIFEST} files) foreach(file IN LISTS files) if(EXISTS $ENV{DESTDIR}${file}) + get_filename_component(_dir $ENV{DESTDIR}${file} DIRECTORY) + list(APPEND DIRECTORIES $ENV{DESTDIR}${_dir}) message(STATUS "Uninstalling: ${file}") execute_process( COMMAND ${CMAKE_COMMAND} -E remove $ENV{DESTDIR}${file} @@ -17,6 +48,11 @@ if(EXISTS ${MANIFEST}) message(STATUS "File does not exist: $ENV{DESTDIR}${file}") endif() endforeach(file) + + # delete empty dirs + if(DIRECTORIES) + remove_empty_dirs() + endif() else() message(STATUS "Cannot find install manifest: '${MANIFEST}'") endif() -- cgit v1.2.3