diff --git a/.gitignore b/.gitignore
index 4b19213cc2987aa8f874d1ae0ae6861cc151ce36..0281e107cf7dffbcb13725e43d5617dc001b16da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,3 +31,6 @@ menuselect-tree
 *.pyc
 *.gcno
 *.gcda
+latex
+doxygen.log
+
diff --git a/Makefile b/Makefile
index 3252f7682867fda4dbddd7fda1ad91f5593f552c..17a25514d4cce791e690fbea1dd1ed275bb39738 100644
--- a/Makefile
+++ b/Makefile
@@ -429,6 +429,8 @@ _clean:
 	rm -f doc/core-en_US.xml
 	rm -f doc/full-en_US.xml
 	rm -f doc/rest-api/*.wiki
+	rm -f doxygen.log
+	rm -rf latex
 	rm -f rest-api-templates/*.pyc
 	@$(MAKE) -C menuselect clean
 	cp -f .cleancount .lastclean
@@ -445,6 +447,7 @@ distclean: $(SUBDIRS_DIST_CLEAN) _clean
 	rm -f include/asterisk/autoconfig.h
 	rm -f include/asterisk/buildopts.h
 	rm -rf doc/api
+	rm -f doc/asterisk-ng-doxygen
 	rm -f build_tools/menuselect-deps
 
 datafiles: _all doc/core-en_US.xml
@@ -763,7 +766,8 @@ webvmail:
 	@echo " +-------------------------------------------+"
 
 progdocs:
-	# Note, Makefile conditionals must not be tabbed out. Wasted hours with that.
+# Note, Makefile conditionals must not be tabbed out. Wasted hours with that.
+	@cp doc/asterisk-ng-doxygen.in doc/asterisk-ng-doxygen
 ifeq ($(DOXYGEN),:)
 	@echo "Doxygen is not installed.  Please install and re-run the configuration script."
 else
@@ -771,20 +775,20 @@ ifeq ($(DOT),:)
 	@echo "DOT is not installed. Doxygen will not produce any diagrams. Please install and re-run the configuration script."
 else
 	# Enable DOT
-	@echo "HAVE_DOT = YES" >> contrib/asterisk-ng-doxygen
+	@echo "HAVE_DOT = YES" >> doc/asterisk-ng-doxygen
 endif
 	# Set Doxygen PROJECT_NUMBER variable
 ifneq ($(ASTERISKVERSION),UNKNOWN__and_probably_unsupported)
-	@echo "PROJECT_NUMBER = $(ASTERISKVERSION)" >> contrib/asterisk-ng-doxygen
+	@echo "PROJECT_NUMBER = $(ASTERISKVERSION)" >> doc/asterisk-ng-doxygen
 else
 	echo "Asterisk Version is unknown, not configuring Doxygen PROJECT_NUMBER."
 endif
-	# Validate Doxygen Configuration
-	@doxygen -u contrib/asterisk-ng-doxygen
+	# Validate and auto-update local copy
+	@doxygen -u doc/asterisk-ng-doxygen
 	# Run Doxygen
-	@doxygen contrib/asterisk-ng-doxygen
+	@doxygen doc/asterisk-ng-doxygen
 	# Remove configuration backup file
-	@rm -f contrib/asterisk-ng-doxygen.bak
+	@rm -f doc/asterisk-ng-doxygen.bak
 endif
 
 install-logrotate:
diff --git a/doc/.gitignore b/doc/.gitignore
index e098ec027f2dcc7c6c46b2d56a1137d8aeee1cd3..3461c58c5e4f3241ba6efb6f3f5fcb86f564f15a 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1,2 +1,4 @@
 core-en_US.xml
-rest-api
\ No newline at end of file
+rest-api
+api
+asterisk-ng-doxygen
diff --git a/contrib/asterisk-ng-doxygen b/doc/asterisk-ng-doxygen.in
similarity index 100%
rename from contrib/asterisk-ng-doxygen
rename to doc/asterisk-ng-doxygen.in