mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-29 23:39:35 +00:00 
			
		
		
		
	Since DETECT_DEADLOCKS is now split from DEBUG_THREADS, it must always be included in buildopts.h instead of only when ADD_CFLAGS_TO_BUILDOPTS_H is defined. A SEGV will result otherwise. Resolves: #719
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| GREP=${GREP:-grep}
 | |
| MD5=${MD5:-md5sum}
 | |
| 
 | |
| cat << END
 | |
| /*
 | |
|  * buildopts.h
 | |
|  * Automatically generated
 | |
|  */
 | |
| 
 | |
| END
 | |
| 
 | |
| if ${GREP} "AST_DEVMODE" makeopts | ${GREP} -q "yes"
 | |
| then
 | |
| 	echo "#define AST_DEVMODE 1"
 | |
| 	# AST_DEVMODE is no longer an API/ABI affecting option so it no longer
 | |
| 	# gets added to BUILDOPTS.
 | |
| fi
 | |
| 
 | |
| ADD_CFLAGS_TO_BUILDOPTS=false
 | |
| MENUSELECT_CFLAGS=$(${GREP} -e "^MENUSELECT_CFLAGS" menuselect.makeopts)
 | |
| echo "$MENUSELECT_CFLAGS" | grep -q -e "ADD_CFLAGS_TO_BUILDOPTS_H" && ADD_CFLAGS_TO_BUILDOPTS=true
 | |
| 
 | |
| # Clean up MENUSELECT_CFLAGS by removing the "MENUSELECT_CFLAGS="
 | |
| # at the front, the "ADD_CFLAGS_TO_BUILDOPTS_H" flag, and any "-D"
 | |
| # entries.
 | |
| MENUSELECT_CFLAGS=$( echo "$MENUSELECT_CFLAGS" | \
 | |
| 	sed -r -e "s/(MENUSELECT_CFLAGS=|ADD_CFLAGS_TO_BUILDOPTS_H|-D)//g")
 | |
| 
 | |
| # This is a list of flags that don't affect the ABI.
 | |
| # "ADD_CFLAGS_TO_BUILDOPTS_H" is NOT set, we'll filter these
 | |
| # out of the buildopts.h file.
 | |
| #
 | |
| # These used to always be filtered out but if they're not in
 | |
| # buildopts.h, many IDEs will show them as undefined and mark
 | |
| # any code blocks enabled by them as disabled.
 | |
| #
 | |
| # The original reasoning for removing them was that trivial
 | |
| # changes to the buildopts.h file will cause ccache to
 | |
| # invalidate any source files that use it and increase the
 | |
| # compile time.  It's not such a huge deal these days but
 | |
| # to preserve backwards behavior the default is still to
 | |
| # remove them.
 | |
| # 
 | |
| # The ABI-breaking flags are always included in buildopts.h.
 | |
| 
 | |
| # This variable is used by sed so it needs to be a valid
 | |
| # regex which will be surrounded by parens.]
 | |
| FILTER_OUT="\
 | |
| AO2_DEBUG|BETTER_BACKTRACES|BUILD_NATIVE|\
 | |
| COMPILE_DOUBLE|DEBUG_CHAOS|DEBUG_SCHEDULER|\
 | |
| DONT_OPTIMIZE|DUMP_SCHEDULER|\
 | |
| LOTS_OF_SPANS|MALLOC_DEBUG|RADIO_RELAX|\
 | |
| REBUILD_PARSERS|REF_DEBUG|USE_HOARD_ALLOCATOR"
 | |
| 
 | |
| # Create buildopts.h
 | |
| 
 | |
| INCLUDE_CFLAGS="$MENUSELECT_CFLAGS"
 | |
| # Do the filter-out if needed.
 | |
| if ! $ADD_CFLAGS_TO_BUILDOPTS ; then
 | |
| 	INCLUDE_CFLAGS=$( echo "$MENUSELECT_CFLAGS" | \
 | |
| 		sed -r -e "s/(${FILTER_OUT})//g")
 | |
| fi
 | |
| 
 | |
| # Output the defines.
 | |
| for x in ${INCLUDE_CFLAGS}; do
 | |
| 	echo "#define ${x} 1"
 | |
| done
 | |
| 
 | |
| # We NEVER include the non-ABI-breaking flags in the
 | |
| # BUILDOPTS or use them to calculate the checksum so
 | |
| # we always filter out any that may exist.
 | |
| # After the filter-out, we also need to convert the
 | |
| # possibly-multi-spaced MENUSELECT_CFLAGS to a nice
 | |
| # comma-separated list.
 | |
| # I.E.
 | |
| #  Remove leading spaces.
 | |
| #  Convert consecutive interior spaces to a single space.
 | |
| #  Remove trailing spaces.
 | |
| #  Convert the now-single-spaces in the interior to ", ".
 | |
| BUILDOPTS=$( echo "$MENUSELECT_CFLAGS" | \
 | |
| 	sed -r -e "s/(${FILTER_OUT}|LOW_MEMORY)//g" -e "s/^\s+//g;s/\s+/ /g;s/\s+$//g;s/\s/, /g" )
 | |
| 
 | |
| # Calculate the checksum on only the ABI-breaking flags.
 | |
| BUILDSUM=$(echo "${BUILDOPTS}" | ${MD5} | cut -c1-32)
 | |
| 
 | |
| echo "#define AST_BUILDOPT_SUM \"${BUILDSUM}\""
 | |
| echo "#define AST_BUILDOPTS \"${BUILDOPTS}\""
 | |
| 
 | |
| # However, it'd be nice to see the non-ABI-breaking flags
 | |
| # when you do a "core show settings" so we create a separate
 | |
| # define for them.
 | |
| BUILDOPTS_ALL=$( echo "$MENUSELECT_CFLAGS" | \
 | |
| 	sed -r -e "s/^\s+//g;s/\s+/ /g;s/\s+$//g;s/\s/, /g" )
 | |
| echo "#define AST_BUILDOPTS_ALL \"${BUILDOPTS_ALL}\""
 |