From 44d4ed1b37e389096db3e7c6e39638e7747ce075 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Thu, 11 May 2006 09:50:41 +0000
Subject: [PATCH] change the CFLAGS controlled by menuselect to be placed in a
 header file instead of being added to the compiler commands.  This header
 file will be installed and modules built outside of the main tree will be
 able to use the same build options used to build the rest of Asterisk.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@26808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 .cleancount                  |  2 +-
 Makefile                     | 21 ++++++++++++++-------
 build_tools/Makefile         |  2 +-
 build_tools/cflags.xml       | 18 +++++++++---------
 build_tools/make_buildopts_h | 13 +++++++++++++
 configure.ac                 |  4 ++++
 include/autoconfig.h.in      |  4 ++++
 7 files changed, 46 insertions(+), 18 deletions(-)
 create mode 100755 build_tools/make_buildopts_h

diff --git a/.cleancount b/.cleancount
index 60d3b2f4a4..b6a7d89c68 100644
--- a/.cleancount
+++ b/.cleancount
@@ -1 +1 @@
-15
+16
diff --git a/Makefile b/Makefile
index 3bac7dc42a..60d836a780 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 d5d5df043e..d48017fc26 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 af8077ff19..fc424f60be 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 0000000000..9ee20bc5ae
--- /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 ba97551106..32a37e4aae 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 2e71520e27..082755c287 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
-- 
GitLab