build: Use more secure flags
This commit is contained in:
		
							parent
							
								
									df36f88e88
								
							
						
					
					
						commit
						6706b23a0b
					
				
					 3 changed files with 146 additions and 0 deletions
				
			
		|  | @ -579,6 +579,9 @@ dnl ********************************************************************* | |||
| CC_CHECK_FLAGS_APPEND([CFLAGS], [CFLAGS], [ \ | ||||
| 	-pipe \ | ||||
| 	-funsigned-char \ | ||||
| 	-fstack-protector-strong \ | ||||
| 	-fPIE \ | ||||
| 	-fPIC \ | ||||
| 	-Wall \ | ||||
| 	-Wextra \ | ||||
| 	-Wstrict-prototypes \ | ||||
|  | @ -596,6 +599,12 @@ CC_CHECK_FLAGS_APPEND([CFLAGS], [CFLAGS], [ \ | |||
| 	-Werror=pointer-arith \ | ||||
| ]) | ||||
| 
 | ||||
| AX_APPEND_LINK_FLAGS([ \ | ||||
| 	-pie \ | ||||
| 	-Wl,-z,relro \ | ||||
| 	-Wl,-z,now \ | ||||
| ]) | ||||
| 
 | ||||
| dnl ********************************************************************* | ||||
| dnl ** FUNCTIONS/LIBS/CFLAGS ******************************************** | ||||
| dnl ********************************************************************* | ||||
|  |  | |||
							
								
								
									
										63
									
								
								m4/ax_append_link_flags.m4
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								m4/ax_append_link_flags.m4
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,63 @@ | |||
| # =========================================================================== | ||||
| #   http://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html | ||||
| # =========================================================================== | ||||
| # | ||||
| # SYNOPSIS | ||||
| # | ||||
| #   AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS]) | ||||
| # | ||||
| # DESCRIPTION | ||||
| # | ||||
| #   For every FLAG1, FLAG2 it is checked whether the linker works with the | ||||
| #   flag.  If it does, the flag is added FLAGS-VARIABLE | ||||
| # | ||||
| #   If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is | ||||
| #   used. During the check the flag is always added to the linker's flags. | ||||
| # | ||||
| #   If EXTRA-FLAGS is defined, it is added to the linker's default flags | ||||
| #   when the check is done.  The check is thus made with the flags: "LDFLAGS | ||||
| #   EXTRA-FLAGS FLAG".  This can for example be used to force the linker to | ||||
| #   issue an error when a bad flag is given. | ||||
| # | ||||
| #   NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG. | ||||
| #   Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS. | ||||
| # | ||||
| # LICENSE | ||||
| # | ||||
| #   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com> | ||||
| # | ||||
| #   This program is free software: you can redistribute it and/or modify it | ||||
| #   under the terms of the GNU General Public License as published by the | ||||
| #   Free Software Foundation, either version 3 of the License, or (at your | ||||
| #   option) any later version. | ||||
| # | ||||
| #   This program is distributed in the hope that it will be useful, but | ||||
| #   WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | ||||
| #   Public License for more details. | ||||
| # | ||||
| #   You should have received a copy of the GNU General Public License along | ||||
| #   with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| #   As a special exception, the respective Autoconf Macro's copyright owner | ||||
| #   gives unlimited permission to copy, distribute and modify the configure | ||||
| #   scripts that are the output of Autoconf when processing the Macro. You | ||||
| #   need not follow the terms of the GNU General Public License when using | ||||
| #   or distributing such scripts, even though portions of the text of the | ||||
| #   Macro appear in them. The GNU General Public License (GPL) does govern | ||||
| #   all other use of the material that constitutes the Autoconf Macro. | ||||
| # | ||||
| #   This special exception to the GPL applies to versions of the Autoconf | ||||
| #   Macro released by the Autoconf Archive. When you make and distribute a | ||||
| #   modified version of the Autoconf Macro, you may extend this special | ||||
| #   exception to the GPL to apply to your modified version as well. | ||||
| 
 | ||||
| #serial 4 | ||||
| 
 | ||||
| AC_DEFUN([AX_APPEND_LINK_FLAGS], | ||||
| [AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) | ||||
| AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) | ||||
| for flag in $1; do | ||||
|   AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3]) | ||||
| done | ||||
| ])dnl AX_APPEND_LINK_FLAGS | ||||
							
								
								
									
										74
									
								
								m4/ax_check_link_flag.m4
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								m4/ax_check_link_flag.m4
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,74 @@ | |||
| # =========================================================================== | ||||
| #    http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html | ||||
| # =========================================================================== | ||||
| # | ||||
| # SYNOPSIS | ||||
| # | ||||
| #   AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) | ||||
| # | ||||
| # DESCRIPTION | ||||
| # | ||||
| #   Check whether the given FLAG works with the linker or gives an error. | ||||
| #   (Warnings, however, are ignored) | ||||
| # | ||||
| #   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on | ||||
| #   success/failure. | ||||
| # | ||||
| #   If EXTRA-FLAGS is defined, it is added to the linker's default flags | ||||
| #   when the check is done.  The check is thus made with the flags: "LDFLAGS | ||||
| #   EXTRA-FLAGS FLAG".  This can for example be used to force the linker to | ||||
| #   issue an error when a bad flag is given. | ||||
| # | ||||
| #   INPUT gives an alternative input source to AC_LINK_IFELSE. | ||||
| # | ||||
| #   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this | ||||
| #   macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. | ||||
| # | ||||
| # LICENSE | ||||
| # | ||||
| #   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> | ||||
| #   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com> | ||||
| # | ||||
| #   This program is free software: you can redistribute it and/or modify it | ||||
| #   under the terms of the GNU General Public License as published by the | ||||
| #   Free Software Foundation, either version 3 of the License, or (at your | ||||
| #   option) any later version. | ||||
| # | ||||
| #   This program is distributed in the hope that it will be useful, but | ||||
| #   WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | ||||
| #   Public License for more details. | ||||
| # | ||||
| #   You should have received a copy of the GNU General Public License along | ||||
| #   with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| #   As a special exception, the respective Autoconf Macro's copyright owner | ||||
| #   gives unlimited permission to copy, distribute and modify the configure | ||||
| #   scripts that are the output of Autoconf when processing the Macro. You | ||||
| #   need not follow the terms of the GNU General Public License when using | ||||
| #   or distributing such scripts, even though portions of the text of the | ||||
| #   Macro appear in them. The GNU General Public License (GPL) does govern | ||||
| #   all other use of the material that constitutes the Autoconf Macro. | ||||
| # | ||||
| #   This special exception to the GPL applies to versions of the Autoconf | ||||
| #   Macro released by the Autoconf Archive. When you make and distribute a | ||||
| #   modified version of the Autoconf Macro, you may extend this special | ||||
| #   exception to the GPL to apply to your modified version as well. | ||||
| 
 | ||||
| #serial 4 | ||||
| 
 | ||||
| AC_DEFUN([AX_CHECK_LINK_FLAG], | ||||
| [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF | ||||
| AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl | ||||
| AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ | ||||
|   ax_check_save_flags=$LDFLAGS | ||||
|   LDFLAGS="$LDFLAGS $4 $1" | ||||
|   AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], | ||||
|     [AS_VAR_SET(CACHEVAR,[yes])], | ||||
|     [AS_VAR_SET(CACHEVAR,[no])]) | ||||
|   LDFLAGS=$ax_check_save_flags]) | ||||
| AS_VAR_IF(CACHEVAR,yes, | ||||
|   [m4_default([$2], :)], | ||||
|   [m4_default([$3], :)]) | ||||
| AS_VAR_POPDEF([CACHEVAR])dnl | ||||
| ])dnl AX_CHECK_LINK_FLAGS | ||||
		Loading…
	
	Add table
		
		Reference in a new issue