diff --git a/.cleancount b/.cleancount
index 60d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2..b6a7d89c68e0ca66e96a9a51892cc33db66fb8a3 100644
--- a/.cleancount
+++ b/.cleancount
@@ -1 +1 @@
-15
+16
diff --git a/Makefile b/Makefile
index 3bac7dc42a36f518c8c08b04fad0ef0fbfaec385..60d836a78087857739ef1d7d12bf24d75e1f80f9 100644
--- a/Makefile
+++ b/Makefile
@@ -195,7 +195,6 @@ ifneq ($(wildcard makeopts),)
   include makeopts
 endif
 
-ASTCFLAGS+=$(MENUSELECT_CFLAGS)
 TOPDIR_CFLAGS=-include include/autoconfig.h -Iinclude
 MOD_SUBDIR_CFLAGS=-include ../include/autoconfig.h -I../include -I..
 OTHER_SUBDIR_CFLAGS=-include ../include/autoconfig.h -I../include -I..
@@ -432,7 +431,7 @@ _all: all
 	@echo " +               make install                +"  
 	@echo " +-------------------------------------------+"  
 
-all: config.status menuselect.makeopts cleantest depend asterisk subdirs
+all: cleantest config.status menuselect.makeopts depend asterisk subdirs
 
 config.status: configure
 	@CFLAGS="" ./configure
@@ -525,10 +524,17 @@ include/asterisk/version.h:
 	fi
 	@rm -f $@.tmp
 
+include/asterisk/buildopts.h: menuselect.makeopts
+	@build_tools/make_buildopts_h > $@.tmp
+	@if cmp -s $@.tmp $@ ; then echo; else \
+		mv $@.tmp $@ ; \
+	fi
+	@rm -f $@.tmp
+
 stdtime/libtime.a:
 	CFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" $(MAKE) -C stdtime libtime.a
 
-asterisk: editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
+asterisk: include/asterisk/buildopts.h editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
 	build_tools/make_build_h > include/asterisk/build.h.tmp
 	if cmp -s include/asterisk/build.h.tmp include/asterisk/build.h ; then echo ; else \
 		mv include/asterisk/build.h.tmp include/asterisk/build.h ; \
@@ -567,6 +573,7 @@ dist-clean: clean
 	rm -f menuselect.makeopts makeopts makeopts.xml
 	rm -f config.log config.status
 	rm -f include/autoconfig.h
+	rm -f include/asterisk/buildopts.h
 	$(MAKE) -C mxml clean
 	$(MAKE) -C build_tools dist-clean
 
@@ -862,7 +869,7 @@ spec:
 
 rpm: __rpm
 
-__rpm: include/asterisk/version.h spec
+__rpm: include/asterisk/version.h include/asterisk/buildopts.h spec
 	rm -rf /tmp/asterisk ; \
 	mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
 	$(MAKE) DESTDIR=/tmp/asterisk install ; \
@@ -911,10 +918,10 @@ dont-optimize: _all
 
 valgrind: dont-optimize
 
-depend: include/asterisk/version.h .depend defaults.h 
+depend: include/asterisk/version.h include/asterisk/buildopts.h .depend defaults.h 
 	@for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
 
-.depend: include/asterisk/version.h defaults.h
+.depend: include/asterisk/version.h include/asterisk/buildopts.h defaults.h
 	build_tools/mkdep $(CFLAGS) $(wildcard *.c)
 
 .tags-depend:
@@ -958,7 +965,7 @@ env:
 
 cleantest:
 	@if cmp -s .cleancount .lastclean ; then echo ; else \
-		$(MAKE) clean; cp -f .cleancount .lastclean;\
+		$(MAKE) dist-clean; cp -f .cleancount .lastclean;\
 	fi
 
 _uninstall:
diff --git a/build_tools/Makefile b/build_tools/Makefile
index d5d5df043e1abea8628701d9f427dce8329aedda..d48017fc2661ab4a50b70d66c04466d60dd77378 100644
--- a/build_tools/Makefile
+++ b/build_tools/Makefile
@@ -1,5 +1,5 @@
 MENUSELECT_OBJS=menuselect.o menuselect_curses.o
-MENUSELECT_CFLAGS=-g -c -D_GNU_SOURCE -I../ -I../include/
+MENUSELECT_CFLAGS=-g -c -D_GNU_SOURCE -DMENUSELECT -I../ -I../include/
 MENUSELECT_LIBS=../mxml/libmxml.a
 
 ifeq ($(OSARCH),SunOS)
diff --git a/build_tools/cflags.xml b/build_tools/cflags.xml
index af8077ff1997ded3f98e1accb3c339c012eb2287..fc424f60be5fabd4986b3d33bf8f00cef6cf5fc4 100644
--- a/build_tools/cflags.xml
+++ b/build_tools/cflags.xml
@@ -1,20 +1,20 @@
 	<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" force_clean_on_change="yes">
-		<member name="-DDEBUG_SCHEDULER">
+		<member name="DEBUG_SCHEDULER">
 		</member>
-		<member name="-DDEBUG_THREADS">
+		<member name="DEBUG_THREADS">
 		</member>
-		<member name="-DDETECT_DEADLOCKS">
+		<member name="DETECT_DEADLOCKS">
 		</member>
-		<member name="-DDUMP_SCHEDULER">
+		<member name="DUMP_SCHEDULER">
 		</member>
-		<member name="-DLOW_MEMORY">
+		<member name="LOW_MEMORY">
 		</member>
-		<member name="-DMALLOC_DEBUG">
+		<member name="MALLOC_DEBUG">
 		</member>
-		<member name="-DRADIO_RELAX">
+		<member name="RADIO_RELAX">
 		</member>
-		<member name="-DTRACE_FRAMES">
+		<member name="TRACE_FRAMES">
 		</member>
-		<member name="-DMTX_PROFILE">
+		<member name="MTX_PROFILE">
 		</member>
 	</category>
diff --git a/build_tools/make_buildopts_h b/build_tools/make_buildopts_h
new file mode 100755
index 0000000000000000000000000000000000000000..9ee20bc5ae81d8dc931043af70141bc5cc224775
--- /dev/null
+++ b/build_tools/make_buildopts_h
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+cat << END
+/*
+ * buildopts.h 
+ * Automatically generated
+ */
+
+END
+TMP=`grep MENUSELECT_CFLAGS menuselect.makeopts | sed s/MENUSELECT_CFLAGS\=//g`
+for x in ${TMP}; do
+     echo "#define ${x}"
+done
diff --git a/configure.ac b/configure.ac
index ba97551106d885feecdccfdabd9f9a84549b0bfc..32a37e4aae85a4c34b2ebdcdd913374b859ce4d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -111,6 +111,10 @@ AC_SUBST(PBX_OSTYPE)
 AC_GNU_SOURCE
 
 AH_TOP(
+#ifndef MENUSELECT
+#include "asterisk/buildopts.h"
+#endif
+
 #ifndef _REENTRANT
 #define _REENTRANT
 #endif
diff --git a/include/autoconfig.h.in b/include/autoconfig.h.in
index 2e71520e27161d2fc004623f790288141233d126..082755c287df4f2e63c26750205e5ca76e250938 100644
--- a/include/autoconfig.h.in
+++ b/include/autoconfig.h.in
@@ -1,5 +1,9 @@
 /* include/autoconfig.h.in.  Generated from configure.ac by autoheader.  */
 
+#ifndef MENUSELECT
+#include "asterisk/buildopts.h"
+#endif
+
 #ifndef _REENTRANT
 #define _REENTRANT
 #endif