From ce86340403d35fd47c7294aeceb7134f978ef360 Mon Sep 17 00:00:00 2001
From: Corey Farrell <git@cfware.com>
Date: Wed, 29 Apr 2015 04:03:00 -0400
Subject: [PATCH] Build System: Prevent unneeded changes to
 asterisk/buildopts.h.

* Add AST_DEVMODE to BUILDOPTS
* Remove CFLAGS that do not effect ABI from BUILDOPTS.
* Use BUILDOPTS to generate AST_BUILDOPT_SUM.
* Remove loop that defined AST_MODULE_*

These changes ensure that only ABI effecting options are considered for
AST_BUILDOPT_SUM.  This also reduces unneeded full system rebuilds caused
by enabling or disabling one module that another is dependent on.

ASTERISK-25028 #close
Reported by: Corey Farrell

Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2
---
 build_tools/make_buildopts_h | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/build_tools/make_buildopts_h b/build_tools/make_buildopts_h
index 4f02896e41..3f7843ba6e 100755
--- a/build_tools/make_buildopts_h
+++ b/build_tools/make_buildopts_h
@@ -7,27 +7,37 @@ cat << END
  */
 
 END
+
+if ${GREP} "AST_DEVMODE" makeopts | ${GREP} -q "yes"
+then
+	echo "#define AST_DEVMODE 1"
+	BUILDOPTS="AST_DEVMODE"
+fi
+
 TMP=`${GREP} -e "^MENUSELECT_CFLAGS" menuselect.makeopts | sed 's/MENUSELECT_CFLAGS\=//g' | sed 's/-D//g'`
 for x in ${TMP}; do
 	echo "#define ${x} 1"
+	if test "${x}" = "DONT_OPTIMIZE" \
+			-o "${x}" = "BETTER_BACKTRACES" \
+			-o "${x}" = "LOTS_OF_SPANS" \
+			-o "${x}" = "BUILD_NATIVE" \
+			-o "${x}" = "AO2_DEBUG" \
+			-o "${x}" = "REBUILD_PARSERS" \
+			-o "${x}" = "RADIO_RELAX" \
+			-o "${x}" = "DEBUG_SCHEDULER" \
+			-o "${x}" = "DETECT_DEADLOCKS" \
+			-o "${x}" = "DUMP_SCHEDULER" ; then
+		# These aren't ABI affecting options, keep them out of AST_BUILDOPTS
+		continue
+	fi
 	if test "x${BUILDOPTS}" != "x" ; then
 		BUILDOPTS="${BUILDOPTS}, ${x}"
 	else
 		BUILDOPTS="${x}"
 	fi
 done
-TMP=`${GREP} -e "^MENUSELECT_BUILD_DEPS" menuselect.makeopts | sed 's/MENUSELECT_BUILD_DEPS\=//g'`
-for x in ${TMP}; do
-	x2=`echo ${x} | tr a-z A-Z`
-	echo "#define AST_MODULE_${x2} 1"
-done
-if ${GREP} "AST_DEVMODE" makeopts | ${GREP} -q "yes"
-then
-	echo "#define AST_DEVMODE 1"
-	TMP="${TMP} AST_DEVMODE"
-fi
 
-BUILDSUM=`echo ${TMP} | ${MD5} | cut -c1-32`
+BUILDSUM=`echo ${BUILDOPTS} | ${MD5} | cut -c1-32`
 
 echo "#define AST_BUILDOPT_SUM \"${BUILDSUM}\""
 echo "#define AST_BUILDOPTS \"${BUILDOPTS}\""
-- 
GitLab