summaryrefslogtreecommitdiff
path: root/graphics/asymptote/LspCpp/support/cmake/distclean.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/LspCpp/support/cmake/distclean.cmake')
-rw-r--r--graphics/asymptote/LspCpp/support/cmake/distclean.cmake80
1 files changed, 80 insertions, 0 deletions
diff --git a/graphics/asymptote/LspCpp/support/cmake/distclean.cmake b/graphics/asymptote/LspCpp/support/cmake/distclean.cmake
new file mode 100644
index 0000000000..8e814a170c
--- /dev/null
+++ b/graphics/asymptote/LspCpp/support/cmake/distclean.cmake
@@ -0,0 +1,80 @@
+# This CMake script will delete build directories and files to bring the
+# package back to it's distribution state
+
+# We want to start from the top of the source dir, so if we are in build
+# we want to start one directory up
+GET_FILENAME_COMPONENT(BASEDIR ${CMAKE_SOURCE_DIR} NAME)
+IF(${BASEDIR} STREQUAL "build")
+ SET(TOPDIR "${CMAKE_SOURCE_DIR}/..")
+ELSE()
+ SET(TOPDIR "${CMAKE_SOURCE_DIR}")
+ENDIF()
+
+MACRO(GET_PARENT_DIRECTORIES search_string return_list grandparents)
+ FILE(GLOB_RECURSE new_list ${search_string})
+ SET(dir_list "")
+ FOREACH(file_path ${new_list})
+ GET_FILENAME_COMPONENT(dir_path ${file_path} PATH)
+ # Remove an extra directory component to return grandparent
+ IF(${grandparents})
+ # Tack on a fake extension to trick CMake into removing a second
+ # path component
+ SET(dir_path "${dir_path}.tmp")
+ GET_FILENAME_COMPONENT(dir_path ${dir_path} PATH)
+ ENDIF(${grandparents})
+ SET(dir_list ${dir_list} ${dir_path})
+ ENDFOREACH()
+ LIST(REMOVE_DUPLICATES dir_list)
+ SET(${return_list} ${dir_list})
+ENDMACRO()
+
+# Find directories and files that we will want to remove
+FILE(GLOB EGGS "${TOPDIR}/*.egg-info" "${TOPDIR}/python/*.egg-info")
+FILE(GLOB PYCACHE "${TOPDIR}/python/npspec/tests/__pycache__")
+FILE(GLOB_RECURSE PYC "${TOPDIR}/*.pyc")
+FILE(GLOB_RECURSE CBP "${TOPDIR}/*.cbp")
+FILE(GLOB PYBUILDTEMP "${TOPDIR}/build/temp*")
+FILE(GLOB PYBUILDLIB "${TOPDIR}/build/lib*")
+FILE(GLOB PYBUILDBDIST "${TOPDIR}/build/bdist*")
+FILE(GLOB_RECURSE CMAKECACHE "${TOPDIR}/*CMakeCache.txt")
+FILE(GLOB_RECURSE CMAKEINSTALL "${TOPDIR}/*cmake_install.cmake")
+FILE(GLOB_RECURSE MAKEFILE "${TOPDIR}/*Makefile")
+FILE(GLOB_RECURSE CMAKETESTFILES "${TOPDIR}/*CTestTestfile.cmake")
+FILE(GLOB TOPDIRECTORIES "${TOPDIR}/lib"
+ "${TOPDIR}/dist"
+ "${TOPDIR}/test"
+)
+# CMake has trouble finding directories recursively, so locate these
+# files and then save the parent directory of the files
+GET_PARENT_DIRECTORIES(Makefile.cmake CMAKEFILES 0)
+GET_PARENT_DIRECTORIES(LastTest.log CMAKETESTING 1)
+
+# Place these files and directories into a list
+SET(DEL ${TOPDIRECTORIES}
+ ${EGGS}
+ ${PYCACHE}
+ ${PYC}
+ ${CBP}
+ ${PYBUILDTEMP}
+ ${PYBUILDLIB}
+ ${PYBUILDBDIST}
+ ${CMAKECACHE}
+ ${CMAKEINSTALL}
+ ${MAKEFILE}
+ ${CMAKEFILES}
+ ${CMAKETESTING}
+ ${CMAKETESTFILES}
+)
+
+# If we are not in the build dir, delete that as well
+IF(NOT (${BASEDIR} STREQUAL "build"))
+ FILE(GLOB BUILD "${TOPDIR}/build")
+ SET(DEL ${DEL} ${BUILD})
+ENDIF()
+
+# Loop over the directories and delete each one
+FOREACH(D ${DEL})
+ IF(EXISTS ${D})
+ FILE(REMOVE_RECURSE ${D})
+ ENDIF()
+ENDFOREACH()