# Copyright (c) Advanced Micro Devices, Inc. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # Run the pre-removal script to stop daemon, remove udev rules, systemd service symlink, and cron job. set(_prerm "$ENV{DESTDIR}@CMAKE_INSTALL_DATADIR@/@AMDCUID@/amdcuid_prerm.sh") if(EXISTS "${_prerm}") message(STATUS "Running pre-removal script: ${_prerm}") execute_process(COMMAND sh "${_prerm}" RESULT_VARIABLE _prerm_result) if(NOT _prerm_result EQUAL 0) message( WARNING "Pre-removal script exited with code ${_prerm_result}. " "Continuing with file removal anyway." ) endif() else() message( STATUS "Pre-removal script not found (${_prerm}); skipping daemon teardown." ) endif() # Remove all files tracked by cmake --install via install_manifest.txt if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") message( FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt\n" "Run 'cmake --install' before attempting to uninstall." ) endif() file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") foreach(file ${files}) message(STATUS "Uninstalling: $ENV{DESTDIR}${file}") if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") execute_process( COMMAND "@CMAKE_COMMAND@" -E remove "$ENV{DESTDIR}${file}" OUTPUT_VARIABLE rm_out RESULT_VARIABLE rm_result ) if(NOT rm_result EQUAL 0) message(FATAL_ERROR "Failed to remove: $ENV{DESTDIR}${file}") endif() else() message(STATUS "File not found, skipping: $ENV{DESTDIR}${file}") endif() endforeach() # --------------------------------------------------------------------------- # Remove amdcuid-specific directories left behind after file removal. # Only directories whose names are amdcuid-specific are listed here, so # shared directories like bin/ and lib/ are never touched. # Subdirectories are listed before parents so each rmdir call finds them empty. # --------------------------------------------------------------------------- set(_amdcuid_dirs "$ENV{DESTDIR}@CMAKE_INSTALL_DATADIR@/@AMDCUID@/config" "$ENV{DESTDIR}@CMAKE_INSTALL_DATADIR@/@AMDCUID@" "$ENV{DESTDIR}@CMAKE_INSTALL_LIBEXECDIR@/@AMDCUID@" ) foreach(_dir ${_amdcuid_dirs}) if(IS_DIRECTORY "${_dir}") file(GLOB _dir_contents "${_dir}/*") if(_dir_contents) message(STATUS "Directory not empty, skipping: ${_dir}") else() message(STATUS "Removing directory: ${_dir}") file(REMOVE_RECURSE "${_dir}") endif() endif() endforeach()