From 22b144cef40901f6a1dc68d4a8480ffe4337c617 Mon Sep 17 00:00:00 2001
From: Tilghman Lesher <tilghman@meg.abyt.es>
Date: Tue, 16 Feb 2010 00:52:45 +0000
Subject: [PATCH] Change the blanket rules to delete .lastclean on all CFLAGS
 menuselect targets to be more particular.

This change builds upon the recent change to menuselect to add 'touch_on_change'
as an attribute of both categories and members.  This should allow only the most
invasive defines to cause a complete rebuild, while defines which only affect a
subset of modules will only cause a rebuild of that smaller set.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@246789 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_voicemail.c           |  2 +-
 build_tools/cflags-devmode.xml | 22 +++++++++----------
 build_tools/cflags.xml         | 40 +++++++++++++++++-----------------
 channels/chan_usbradio.c       |  6 ++---
 main/strings.c                 |  4 ++--
 5 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 15335fd098..1ddc36ce7a 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -42,7 +42,7 @@
  ***/
 
 /*** MAKEOPTS
-<category name="MENUSELECT_OPTS_app_voicemail" displayname="Voicemail Build Options" positive_output="yes" remove_on_change="apps/app_voicemail.o apps/app_voicemail.so apps/app_directory.o apps/app_directory.so">
+<category name="MENUSELECT_OPTS_app_voicemail" displayname="Voicemail Build Options" positive_output="yes" touch_on_change="apps/app_voicemail.c apps/app_directory.c">
 	<member name="FILE_STORAGE" displayname="Storage of Voicemail using filesystem">
 		<conflict>ODBC_STORAGE</conflict>
 		<conflict>IMAP_STORAGE</conflict>
diff --git a/build_tools/cflags-devmode.xml b/build_tools/cflags-devmode.xml
index 37f7a4d4f4..1c64e025b1 100644
--- a/build_tools/cflags-devmode.xml
+++ b/build_tools/cflags-devmode.xml
@@ -1,26 +1,24 @@
 	<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags - Development">
-		<member name="MTX_PROFILE" displayname="Enable Code Profiling Using TSC Counters">
+		<member name="MTX_PROFILE" displayname="Enable Code Profiling Using TSC Counters" remove_on_change=".lastclean">
 		</member>
-		<member name="DEBUG_SCHEDULER" displayname="Enable Scheduler Debugging Output">
+		<member name="DEBUG_SCHEDULER" displayname="Enable Scheduler Debugging Output" touch_on_change="main/sched.c">
 		</member>
-		<member name="DEBUG_THREADLOCALS" displayname="Enable Thread-Local-Storage Debugging">
+		<member name="DEBUG_THREADLOCALS" displayname="Enable Thread-Local-Storage Debugging" touch_on_change="include/asterisk/strings.h">
 		</member>
-		<member name="DETECT_DEADLOCKS" displayname="Detect Deadlocks">
+		<member name="DETECT_DEADLOCKS" displayname="Detect Deadlocks" touch_on_change="include/asterisk/lock.h utils/extconf.c">
 			<depend>DEBUG_THREADS</depend>
 		</member>
-		<member name="DUMP_SCHEDULER" displayname="Dump Scheduler Contents for Debugging">
+		<member name="DUMP_SCHEDULER" displayname="Dump Scheduler Contents for Debugging" touch_on_change="main/sched.c">
 		</member>
-		<member name="TRACE_FRAMES" displayname="Trace Frame Allocations">
+		<member name="DO_CRASH" displayname="Crash on fatal errors" touch_on_change="include/asterisk/utils.h">
 		</member>
-		<member name="DO_CRASH" displayname="Crash on fatal errors">
+		<member name="THREAD_CRASH" displayname="Crash on mutex errors" touch_on_change="include/asterisk/lock.h utils/extconf.c">
 		</member>
-		<member name="THREAD_CRASH" displayname="Crash on mutex errors">
+		<member name="CHANNEL_TRACE" displayname="Enable CHANNEL(trace) function" touch_on_change="include/asterisk/channel.h">
 		</member>
-		<member name="CHANNEL_TRACE" displayname="Enable CHANNEL(trace) function">
+		<member name="SKINNY_DEVMODE" displayname="Enable Skinny Dev Mode" touch_on_change="channels/chan_skinny.c">
 		</member>
-		<member name="SKINNY_DEVMODE" displayname="Enable Skinny Dev Mode">
-		</member>
-		<member name="TEST_FRAMEWORK" displayname="Enable Test Framework API">
+		<member name="TEST_FRAMEWORK" displayname="Enable Test Framework API" touch_on_change="include/asterisk/test.h">
 		</member>
 
 	</category>
diff --git a/build_tools/cflags.xml b/build_tools/cflags.xml
index 189820db10..75d512dc13 100644
--- a/build_tools/cflags.xml
+++ b/build_tools/cflags.xml
@@ -1,57 +1,57 @@
-	<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" remove_on_change=".lastclean">
-		<member name="DONT_OPTIMIZE" displayname="Disable Optimizations by the Compiler">
+	<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes">
+		<member name="DONT_OPTIMIZE" displayname="Disable Optimizations by the Compiler" remove_on_change=".lastclean">
 		</member>
-		<member name="DEBUG_THREADS" displayname="Enable Thread Debugging">
+		<member name="DEBUG_THREADS" displayname="Enable Thread Debugging" touch_on_change="include/asterisk/lock.h include/asterisk/astobj2.h">
 		</member>
-		<member name="STATIC_BUILD" displayname="Build static binaries">
+		<member name="STATIC_BUILD" displayname="Build static binaries" remove_on_change=".lastclean">
 		</member>
-		<member name="LOADABLE_MODULES" displayname="Runtime module loading">
+		<member name="LOADABLE_MODULES" displayname="Runtime module loading" remove_on_change=".lastclean">
 			<defaultenabled>yes</defaultenabled>
 		</member>
-		<member name="DEBUG_FD_LEAKS" displayname="Enable File Descriptor Leak Detection">
+		<member name="DEBUG_FD_LEAKS" displayname="Enable File Descriptor Leak Detection" remove_on_change=".lastclean">
 		</member>
 		<member name="REBUILD_PARSERS" displayname="Rebuild AEL and expression parsers from bison/flex source files">
 			<depend>bison</depend>
 			<depend>flex</depend>
 			<defaultenabled>no</defaultenabled>
 		</member>
-		<member name="LOW_MEMORY" displayname="Optimize for Low Memory Usage">
+		<member name="LOW_MEMORY" displayname="Optimize for Low Memory Usage" remove_on_change=".lastclean">
 		</member>
-		<member name="USE_HOARD_ALLOCATOR" displayname="Use the Hoard Memory Allocator instead of the default system one">
+		<member name="USE_HOARD_ALLOCATOR" displayname="Use the Hoard Memory Allocator instead of the default system one" remove_on_change=".lastclean">
 			<defaultenabled>no</defaultenabled>
 			<depend>hoard</depend>
 		</member>
-		<member name="LOTS_OF_SPANS" displayname="More than 32 DAHDI spans">
+		<member name="LOTS_OF_SPANS" displayname="More than 32 DAHDI spans" touch_on_change="channels/chan_dahdi.c">
 		</member>
-		<member name="RADIO_RELAX" displayname="Relax DTMF for Radio Applications">
+		<member name="RADIO_RELAX" displayname="Relax DTMF for Radio Applications" touch_on_change="main/dsp.c">
 		</member>
-		<member name="G711_NEW_ALGORITHM" displayname="Use the NEW ulaw/alaw codecs (slower, but cleaner)">
+		<member name="G711_NEW_ALGORITHM" displayname="Use the NEW ulaw/alaw codecs (slower, but cleaner)" touch_on_change="include/asterisk/alaw.h include/asterisk/ulaw.h">
 			<defaultenabled>no</defaultenabled>
 		</member>
-		<member name="G711_REDUCED_BRANCHING" displayname="New ulaw/alaw codec, reduced branching (might help it run faster in some architectures)">
+		<member name="G711_REDUCED_BRANCHING" displayname="New ulaw/alaw codec, reduced branching (might help it run faster in some architectures)" touch_on_change="include/asterisk/alaw.h include/asterisk/ulaw.h">
 			<depend>G711_NEW_ALGORITHM</depend>
 		</member>
-		<member name="TEST_CODING_TABLES" displayname="New ulaw/alaw codec, turn on table tests on init">
+		<member name="TEST_CODING_TABLES" displayname="New ulaw/alaw codec, turn on table tests on init" touch_on_change="main/ulaw.c main/alaw.c">
 			<depend>G711_NEW_ALGORITHM</depend>
 		</member>
-		<member name="TEST_TANDEM_TRANSCODING" displayname="New ulaw/alaw codec, turn on transcoding tests on init">
+		<member name="TEST_TANDEM_TRANSCODING" displayname="New ulaw/alaw codec, turn on transcoding tests on init" touch_on_change="main/ulaw.c main/alaw.c">
 			<depend>G711_NEW_ALGORITHM</depend>
 		</member>
-		<member name="MALLOC_DEBUG" displayname="Keep Track of Memory Allocations">
+		<member name="MALLOC_DEBUG" displayname="Keep Track of Memory Allocations" remove_on_change=".lastclean">
 		</member>
-		<member name="BUSYDETECT_TONEONLY" displayname="Enable additional comparision of only the tone duration not the silence part">
+		<member name="BUSYDETECT_TONEONLY" displayname="Enable additional comparison of only the tone duration not the silence part" touch_on_change="main/dsp.c channels/chan_dahdi.c">
 			<conflict>BUSYDETECT_COMPARE_TONE_AND_SILENCE</conflict>
 			<defaultenabled>no</defaultenabled>
 		</member>
-		<member name="BUSYDETECT_COMPARE_TONE_AND_SILENCE" displayname="Assume that tone and silence have the same duration">
+		<member name="BUSYDETECT_COMPARE_TONE_AND_SILENCE" displayname="Assume that tone and silence have the same duration" touch_on_change="main/dsp.c channels/chan_dahdi.c">
 			<conflict>BUSYDETECT_TONEONLY</conflict>
 			<defaultenabled>no</defaultenabled>
 		</member>
-		<member name="BUSYDETECT_DEBUG" displayname="Enable additional busy detection debugging">
+		<member name="BUSYDETECT_DEBUG" displayname="Enable additional busy detection debugging" touch_on_change="main/dsp.c channels/chan_dahdi.c">
 			<defaultenabled>no</defaultenabled>
 		</member>
-		<member name="IAX_OLD_FIND" displayname="Use the old, slow method of searching for IAX callnos">
+		<member name="IAX_OLD_FIND" displayname="Use the old, slow method of searching for IAX callnos" touch_on_change="channels/chan_iax2.c">
 		</member>
-		<member name="INTEGER_CALLERID" displayname="Use the (less accurate) integer-based method for decoding FSK tones (for embedded systems)">
+		<member name="INTEGER_CALLERID" displayname="Use the (less accurate) integer-based method for decoding FSK tones (for embedded systems)" touch_on_change="include/asterisk/fskmodem.h">
 		</member>
 	</category>
diff --git a/channels/chan_usbradio.c b/channels/chan_usbradio.c
index af6db7e480..dad7fc91f7 100644
--- a/channels/chan_usbradio.c
+++ b/channels/chan_usbradio.c
@@ -40,12 +40,12 @@
  ***/
 
 /*** MAKEOPTS
-<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" remove_on_change=".lastclean">
-	<member name="RADIO_RTX" displayname="Build RTX/DTX Radio Programming">
+<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes">
+	<member name="RADIO_RTX" displayname="Build RTX/DTX Radio Programming" touch_on_change="channels/chan_usbradio.c channels/xpmr/xpmr.h">
 		<defaultenabled>no</defaultenabled>
 		<depend>chan_usbradio</depend>
 	</member>
-	<member name="RADIO_XPMRX" displayname="Build Experimental Radio Protocols">
+	<member name="RADIO_XPMRX" displayname="Build Experimental Radio Protocols" touch_on_change="channels/chan_usbradio.c">
 		<defaultenabled>no</defaultenabled>
 		<depend>chan_usbradio</depend>
 	</member>
diff --git a/main/strings.c b/main/strings.c
index 0cc360c4ed..fdd6bcaa80 100644
--- a/main/strings.c
+++ b/main/strings.c
@@ -24,8 +24,8 @@
  */
 
 /*** MAKEOPTS
-<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" remove_on_change=".lastclean">
-	<member name="DEBUG_OPAQUE" displayname="Change ast_str internals to detect improper usage">
+<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes">
+	<member name="DEBUG_OPAQUE" displayname="Change ast_str internals to detect improper usage" touch_on_change="include/asterisk/strings.h">
 		<defaultenabled>yes</defaultenabled>
 	</member>
 </category>
-- 
GitLab