81 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | # =========================================================================== | ||
|  | #  https://www.gnu.org/software/autoconf-archive/ax_add_fortify_source.html | ||
|  | # =========================================================================== | ||
|  | # | ||
|  | # SYNOPSIS | ||
|  | # | ||
|  | #   AX_ADD_FORTIFY_SOURCE | ||
|  | # | ||
|  | # DESCRIPTION | ||
|  | # | ||
|  | #   Check whether -D_FORTIFY_SOURCE=2 can be added to CPPFLAGS without macro | ||
|  | #   redefinition warnings, other cpp warnings or linker. Some distributions | ||
|  | #   (such as Gentoo Linux) enable _FORTIFY_SOURCE globally in their | ||
|  | #   compilers, leading to unnecessary warnings in the form of | ||
|  | # | ||
|  | #     <command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror] | ||
|  | #     <built-in>: note: this is the location of the previous definition | ||
|  | # | ||
|  | #   which is a problem if -Werror is enabled. This macro checks whether | ||
|  | #   _FORTIFY_SOURCE is already defined, and if not, adds -D_FORTIFY_SOURCE=2 | ||
|  | #   to CPPFLAGS. | ||
|  | # | ||
|  | #   Newer mingw-w64 msys2 package comes with a bug in | ||
|  | #   headers-git-7.0.0.5546.d200317d-1. It broke -D_FORTIFY_SOURCE support, | ||
|  | #   and would need -lssp or -fstack-protector.  See | ||
|  | #   https://github.com/msys2/MINGW-packages/issues/5803. Try to actually | ||
|  | #   link it. | ||
|  | # | ||
|  | # LICENSE | ||
|  | # | ||
|  | #   Copyright (c) 2017 David Seifert <soap@gentoo.org> | ||
|  | #   Copyright (c) 2019 Reini Urban <rurban@cpan.org> | ||
|  | # | ||
|  | #   Copying and distribution of this file, with or without modification, are | ||
|  | #   permitted in any medium without royalty provided the copyright notice | ||
|  | #   and this notice are preserved.  This file is offered as-is, without any | ||
|  | #   warranty. | ||
|  | 
 | ||
|  | #serial 4 | ||
|  | 
 | ||
|  | AC_DEFUN([AX_ADD_FORTIFY_SOURCE],[ | ||
|  |     ac_save_cflags=$CFLAGS | ||
|  |     ac_cwerror_flag=yes | ||
|  |     AX_CHECK_COMPILE_FLAG([-Werror],[CFLAGS="$CFLAGS -Werror"]) | ||
|  |     AC_MSG_CHECKING([whether to add -D_FORTIFY_SOURCE=2 to CPPFLAGS]) | ||
|  |     AC_LINK_IFELSE([ | ||
|  |         AC_LANG_PROGRAM([], | ||
|  |             [[ | ||
|  |                 #ifndef _FORTIFY_SOURCE | ||
|  |                     return 0; | ||
|  |                 #else | ||
|  |                     this_is_an_error; | ||
|  |                 #endif | ||
|  |             ]] | ||
|  |         )], | ||
|  |         AC_LINK_IFELSE([ | ||
|  |             AC_LANG_SOURCE([[ | ||
|  |                 #define _FORTIFY_SOURCE 2 | ||
|  |                 #include <string.h> | ||
|  |                 int main() { | ||
|  |                     char *s = " "; | ||
|  |                     strcpy(s, "x"); | ||
|  |                     return strlen(s)-1; | ||
|  |                 } | ||
|  |               ]] | ||
|  |             )], | ||
|  |             [ | ||
|  |               AC_MSG_RESULT([yes]) | ||
|  |               CFLAGS=$ac_save_cflags | ||
|  |               CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" | ||
|  |             ], [ | ||
|  |               AC_MSG_RESULT([no]) | ||
|  |               CFLAGS=$ac_save_cflags | ||
|  |             ], | ||
|  |         ), | ||
|  |         [ | ||
|  |           AC_MSG_RESULT([no]) | ||
|  |           CFLAGS=$ac_save_cflags | ||
|  |         ]) | ||
|  | ]) |