mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	
		
			
	
	
		
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | dnl check RAII requirements | ||
|  | dnl | ||
|  | dnl gcc / llvm-gcc: -fnested-functions | ||
|  | dnl clang : -fblocks / -fblocks and -lBlocksRuntime" | ||
|  | AC_DEFUN([AST_CHECK_RAII], [ | ||
|  | 	AC_MSG_CHECKING([for RAII support]) | ||
|  | 	AST_C_COMPILER_FAMILY="" | ||
|  | 	AC_LINK_IFELSE( | ||
|  | 		[AC_LANG_PROGRAM([], [ | ||
|  | 			int main() { | ||
|  | 				#if defined(__clang__) | ||
|  | 				choke | ||
|  | 				#endif | ||
|  | 				return 0; | ||
|  | 			} | ||
|  | 			]) | ||
|  | 		],[ | ||
|  | 			dnl Nested functions required for RAII implementation | ||
|  | 			AC_MSG_CHECKING(for gcc -fnested-functions) | ||
|  | 			AC_COMPILE_IFELSE( | ||
|  | 				dnl Prototype needed due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36774 | ||
|  | 				[ | ||
|  | 					AC_LANG_PROGRAM([], [auto void foo(void); void foo(void) {}]) | ||
|  | 				],[ | ||
|  | 					AST_NESTED_FUNCTIONS="" | ||
|  | 					AC_MSG_RESULT(no) | ||
|  | 				],[ | ||
|  | 					AST_NESTED_FUNCTIONS="-fnested-functions" | ||
|  | 					AC_MSG_RESULT(yes) | ||
|  | 				] | ||
|  | 			) | ||
|  | 			AC_SUBST(AST_NESTED_FUNCTIONS) | ||
|  | 			AST_C_COMPILER_FAMILY="gcc" | ||
|  | 		],[ | ||
|  | 			AC_MSG_CHECKING(for clang -fblocks) | ||
|  | 			if test "`echo "int main(){return ^{return 42;}();}" | ${CC} -o /dev/null -fblocks -x c - 2>&1`" = ""; then | ||
|  | 				AST_CLANG_BLOCKS_LIBS="" | ||
|  | 				AST_CLANG_BLOCKS="-Wno-unknown-warning-option -fblocks" | ||
|  | 				AC_MSG_RESULT(yes) | ||
|  | 			elif test "`echo "int main(){return ^{return 42;}();}" | ${CC} -o /dev/null -fblocks -x c -lBlocksRuntime - 2>&1`" = ""; then | ||
|  | 				AST_CLANG_BLOCKS_LIBS="-lBlocksRuntime" | ||
|  | 				AST_CLANG_BLOCKS="-fblocks" | ||
|  | 				AC_MSG_RESULT(yes) | ||
|  | 			else | ||
|  | 				AC_MSG_ERROR([BlocksRuntime is required for clang, please install libblocksruntime]) | ||
|  | 			fi | ||
|  | 			AC_SUBST(AST_CLANG_BLOCKS_LIBS) | ||
|  | 			AC_SUBST(AST_CLANG_BLOCKS) | ||
|  | 			AST_C_COMPILER_FAMILY="clang" | ||
|  | 		] | ||
|  | 	) | ||
|  | 	if test -z "${AST_C_COMPILER_FAMILY}"; then | ||
|  | 		AC_MSG_ERROR([Compiler ${CC} not supported. Mminimum required gcc-4.3 / llvm-gcc-4.3 / clang-3.3 + libblocksruntime-dev]) | ||
|  | 	fi | ||
|  | 	AC_SUBST(AST_C_COMPILER_FAMILY) | ||
|  | ]) |