Makefile: Add cleanall-symlink target

This target looks for symbolic links in the coreboot directory,
excluding the 3rdparty and crossgcc directories, which both typically
have numerous symbolic links, and deletes anything that is found.

All possible links are verified as symbolic links before being removed.

Any removed links show where they were linked from in case they need to
be restored.

Signed-off-by: Martin Roth <gaumless@gmail.com>
Change-Id: I8a56e7c628701e4a0471833443b08ab2bcceb27e
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83123
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-by: Eric Lai <ericllai@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/Makefile b/Makefile
index f7be19c..60570a0 100644
--- a/Makefile
+++ b/Makefile
@@ -524,6 +524,16 @@
 	for link in $$EXISTING_SYMLINKS; do \
 		echo -e "\tUNLINK $$link"; \
 		rm "$$link"; \
+
+cleanall-symlink:
+	echo "Deleting all symbolic links in the coreboot tree (excluding 3rdparty & crossgcc)"; \
+	EXISTING_SYMLINKS="$$(find $(top) -type l | grep -v "3rdparty\|crossgcc" )"; \
+	for link in $${EXISTING_SYMLINKS}; do \
+		if [ -L "$${link}" ]; then \
+			REALDIR="$$(realpath "$${link}")"; \
+			echo "  UNLINK $${link} (linked from $${REALDIR})"; \
+			rm "$${link}"; \
+		fi; \
 	done
 
 clean-for-update:
@@ -553,4 +563,5 @@
 	rm -f abuild*.xml junit.xml* util/lint/junit.xml
 
 .PHONY: $(PHONY) clean clean-for-update clean-cscope cscope distclean sphinx sphinx-lint
-.PHONY: ctags-project cscope-project clean-ctags symlink clean-symlink
+.PHONY: ctags-project cscope-project clean-ctags
+.PHONY: symlink clean-symlink cleanall-symlink