asterisk/build_tools/cflags.xml
George Joseph 0af6b5de62 build_system: Split COMPILE_DOUBLE from DONT_OPTIMIZE
I can't ever recall actually needing the intermediate files or the checking
that a double compile produces.  What I CAN remember is every DONT_OPTIMIZE
build needing 3 invocations of gcc instead of 1 just to do the checks and
produce those intermediate files.

Having said that, Richard pointed out that the reason for the double compile
was that there were cases in the past where a submitted patch failed to compile
because the submitter never tried it with the optimizations turned on.

To get the best of both worlds, COMPILE_DOUBLE has been split into its own
option.  If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected
BUT you can then turn it off if all you need are the debugging symbols.  This
way you have to make an informed decision about disabling COMPILE_DOUBLE.

To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature
was added to menuselect.  The <use> element can now contain an "autoselect"
attribute which will turn the used member on but not create a hard dependency.
The cflags.xml implementation for COMPILE_DOUBLE looks like this...

<member name="DONT_OPTIMIZE" displayname="Disable Optimizations ...">
	<use autoselect="yes">COMPILE_DOUBLE</use>
	<support_level>core</support_level>
</member>
<member name="COMPILE_DOUBLE" displayname="Pre-compile with ...>
	<depend>DONT_OPTIMIZE</depend>
	<support_level>core</support_level>
</member>

When DONT_OPTIMIZE is turned on, COMPILE_DOUBLE is turned on because
of the use.
When DONT_OPTIMIZE is turned off, COMPILE_DOUBLE is turned off because
of the depend.
When COMPILE_DOUBLE is turned on, DONT_OPTIMIZE is turned on because
of the depend.
When COMPILE_DOUBLE is turned off, DONT_OPTIMIZE is left as is because
it only uses COMPILE_DOUBLE, it doesn't depend on it.

I also made a few tweaks to the ncurses implementation to move things
left a bit to allow longer descriptions.

Change-Id: Id49ca930ac4b5ec4fc2d8141979ad888da7b1611
2016-03-13 15:11:39 -06:00

141 lines
6.3 KiB
XML

<category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" remove_on_change=".lastclean">
<member name="DONT_OPTIMIZE" displayname="Disable Optimizations by the Compiler">
<use autoselect="yes">COMPILE_DOUBLE</use>
<support_level>core</support_level>
</member>
<member name="COMPILE_DOUBLE" displayname="Pre-compile with optimizations to detect errors, then discard and recompile with DONT_OPTIMIZE. Creates intermediate .i files">
<depend>DONT_OPTIMIZE</depend>
<support_level>core</support_level>
</member>
<member name="DEBUG_THREADS" displayname="Enable Thread Debugging">
<support_level>core</support_level>
</member>
<member name="REF_DEBUG" displayname="Enable reference count debugging by default">
<support_level>extended</support_level>
</member>
<member name="AO2_DEBUG" displayname="Enable internal Astobj2 debugging">
<support_level>extended</support_level>
</member>
<member name="STATIC_BUILD" displayname="Build static binaries">
<support_level>extended</support_level>
</member>
<member name="LOADABLE_MODULES" displayname="Runtime module loading">
<defaultenabled>yes</defaultenabled>
<support_level>core</support_level>
</member>
<member name="DEBUG_FD_LEAKS" displayname="Enable File Descriptor Leak Detection">
<support_level>core</support_level>
</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>
<support_level>extended</support_level>
</member>
<member name="LOW_MEMORY" displayname="Optimize for Low Memory Usage">
<support_level>extended</support_level>
</member>
<member name="DISABLE_INLINE" displayname="Disable the inline API">
<!-- Added to work around GCC bug
See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816
-->
<support_level>extended</support_level>
</member>
<member name="OPTIONAL_API" displayname="Enable the optional API">
<!-- Added to manually disable the optional API, since
it's now supported on all systems.
-->
<defaultenabled>yes</defaultenabled>
<support_level>extended</support_level>
</member>
<member name="BETTER_BACKTRACES" displayname="Use libbfd (GPL) to generate better inline backtraces">
<depend>BFD</depend>
<depend>DLADDR</depend>
<defaultenabled>no</defaultenabled>
<support_level>core</support_level>
</member>
<member name="USE_HOARD_ALLOCATOR" displayname="Use the Hoard Memory Allocator instead of the default system one">
<defaultenabled>no</defaultenabled>
<depend>hoard</depend>
<support_level>extended</support_level>
</member>
<member name="LOTS_OF_SPANS" displayname="More than 32 DAHDI spans">
<support_level>core</support_level>
</member>
<member name="RADIO_RELAX" displayname="Relax DTMF for Radio Applications">
<support_level>extended</support_level>
</member>
<member name="G711_NEW_ALGORITHM" displayname="Use the NEW ulaw/alaw codecs (slower, but cleaner)">
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
</member>
<member name="G711_REDUCED_BRANCHING" displayname="New ulaw/alaw codec, reduced branching (might help it run faster in some architectures)">
<depend>G711_NEW_ALGORITHM</depend>
<support_level>extended</support_level>
</member>
<member name="TEST_CODING_TABLES" displayname="New ulaw/alaw codec, turn on table tests on init">
<depend>G711_NEW_ALGORITHM</depend>
<support_level>extended</support_level>
</member>
<member name="TEST_TANDEM_TRANSCODING" displayname="New ulaw/alaw codec, turn on transcoding tests on init">
<depend>G711_NEW_ALGORITHM</depend>
<support_level>extended</support_level>
</member>
<member name="MALLOC_DEBUG" displayname="Keep Track of Memory Allocations">
<conflict>DEBUG_CHAOS</conflict>
<support_level>core</support_level>
</member>
<member name="DEBUG_CHAOS" displayname="Randomly FAIL memory allocations or other operations">
<conflict>MALLOC_DEBUG</conflict>
<support_level>core</support_level>
</member>
<member name="ADDRESS_SANITIZER" displayname="Address Sanitizer">
<depend>HAVE_ADDRESS_SANITIZER</depend>
<support_level>extended</support_level>
<conflict>THREAD_SANITIZER</conflict>
<conflict>LEAK_SANITIZER</conflict>
<conflict>MALLOC_DEBUG</conflict>
<conflict>DEBUG_CHAOS</conflict>
</member>
<member name="THREAD_SANITIZER" displayname="Thread Sanitizer">
<depend>HAVE_THREAD_SANITIZER</depend>
<support_level>extended</support_level>
<conflict>ADDRESS_SANITIZER</conflict>
<conflict>LEAK_SANITIZER</conflict>
</member>
<member name="LEAK_SANITIZER" displayname="Leak Sanitizer">
<depend>HAVE_LEAK_SANITIZER</depend>
<support_level>extended</support_level>
<conflict>ADDRESS_SANITIZER</conflict>
<conflict>THREAD_SANITIZER</conflict>
<conflict>MALLOC_DEBUG</conflict>
<conflict>DEBUG_CHAOS</conflict>
</member>
<member name="UNDEFINED_SANITIZER" displayname="Undefined Behavior Sanitizer">
<depend>HAVE_UNDEFINED_SANITIZER</depend>
<support_level>extended</support_level>
</member>
<member name="BUSYDETECT_TONEONLY" displayname="Enable additional comparision of only the tone duration not the silence part">
<conflict>BUSYDETECT_COMPARE_TONE_AND_SILENCE</conflict>
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
</member>
<member name="BUSYDETECT_COMPARE_TONE_AND_SILENCE" displayname="Assume that tone and silence have the same duration">
<conflict>BUSYDETECT_TONEONLY</conflict>
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
</member>
<member name="BUSYDETECT_DEBUG" displayname="Enable additional busy detection debugging">
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
</member>
<member name="INTEGER_CALLERID" displayname="Use the (less accurate) integer-based method for decoding FSK tones (for embedded systems)">
<support_level>extended</support_level>
</member>
<member name="BUILD_NATIVE" displayname="Allow compiler to generate code optimized for the CPU on which the build is performed.">
<support_level>core</support_level>
<defaultenabled>yes</defaultenabled>
<depend>native_arch</depend>
</member>
</category>