| # SPDX-License-Identifier: Apache-2.0 |
| |
| # NB: This could be dangerous to execute. |
| |
| macro(print_usage) |
| message(" |
| usage: cmake -DBINARY_DIR=<build-path> -DSOURCE_DIR=<source-path> |
| -P ${CMAKE_SCRIPT_MODE_FILE} |
| |
| mandatory arguments: |
| -DBINARY_DIR=<build-path>: Absolute path to the build directory to pristine |
| -DSOURCE_DIR=<source-path>: Absolute path to the source directory used when |
| creating <build-path> |
| ") |
| # Making the usage itself a fatal error messes up the formatting when printing. |
| message(FATAL_ERROR "") |
| endmacro() |
| |
| if(NOT DEFINED BINARY_DIR OR NOT DEFINED SOURCE_DIR) |
| print_usage() |
| endif() |
| |
| if(NOT IS_ABSOLUTE ${BINARY_DIR} OR NOT IS_ABSOLUTE ${SOURCE_DIR}) |
| print_usage() |
| endif() |
| |
| get_filename_component(BINARY_DIR ${BINARY_DIR} REALPATH) |
| get_filename_component(SOURCE_DIR ${SOURCE_DIR} REALPATH) |
| |
| string(FIND ${SOURCE_DIR} ${BINARY_DIR} INDEX) |
| if(NOT INDEX EQUAL -1) |
| message(FATAL_ERROR "Refusing to run pristine in in-source build folder.") |
| endif() |
| |
| file(GLOB build_dir_contents ${BINARY_DIR}/*) |
| foreach(file ${build_dir_contents}) |
| if (EXISTS ${file}) |
| file(REMOVE_RECURSE ${file}) |
| endif() |
| endforeach(file) |