configure: Check if struct fsxattr is available from linux header
Fixes build failure with --enable-xfsctl and
new linux headers (>=4.5) and older xfsprogs(<4.5):
In file included from /usr/include/xfs/xfs.h:38:0,
                 from /var/tmp/portage/app-emulation/qemu-2.5.0-r1/work/qemu-2.5.0/block/raw-posix.c:97:
/usr/include/xfs/xfs_fs.h:42:8: error: redefinition of ‘struct fsxattr’
 struct fsxattr {
        ^
In file included from /var/tmp/portage/app-emulation/qemu-2.5.0-r1/work/qemu-2.5.0/block/raw-posix.c:60:0:
/usr/include/linux/fs.h:155:8: note: originally defined here
 struct fsxattr {
This is really a bug in the system headers, but we can work around it
by defining HAVE_FSXATTR in the QEMU headers if linux/fs.h provides
the struct, so that xfs_fs.h doesn't try to define it as well.
CC: qemu-trivial@nongnu.org
CC: Markus Armbruster <armbru@redhat.com>
CC: Peter Maydell <peter.maydell@linaro.org>
CC: Stefan Weil <sw@weilnetz.de>
Tested-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
[PMM: adjusted commit message, comments]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
			
			
This commit is contained in:
		
							parent
							
								
									20b0f5fef6
								
							
						
					
					
						commit
						277abf15a6
					
				
							
								
								
									
										23
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -4493,6 +4493,21 @@ if test "$fortify_source" != "no"; then
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##########################################
 | 
				
			||||||
 | 
					# check if struct fsxattr is available via linux/fs.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					have_fsxattr=no
 | 
				
			||||||
 | 
					cat > $TMPC << EOF
 | 
				
			||||||
 | 
					#include <linux/fs.h>
 | 
				
			||||||
 | 
					struct fsxattr foo;
 | 
				
			||||||
 | 
					int main(void) {
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					if compile_prog "" "" ; then
 | 
				
			||||||
 | 
					    have_fsxattr=yes
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##########################################
 | 
					##########################################
 | 
				
			||||||
# End of CC checks
 | 
					# End of CC checks
 | 
				
			||||||
# After here, no more $cc or $ld runs
 | 
					# After here, no more $cc or $ld runs
 | 
				
			||||||
@ -5160,6 +5175,14 @@ fi
 | 
				
			|||||||
if test "$have_ifaddrs_h" = "yes" ; then
 | 
					if test "$have_ifaddrs_h" = "yes" ; then
 | 
				
			||||||
    echo "HAVE_IFADDRS_H=y" >> $config_host_mak
 | 
					    echo "HAVE_IFADDRS_H=y" >> $config_host_mak
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Work around a system header bug with some kernel/XFS header
 | 
				
			||||||
 | 
					# versions where they both try to define 'struct fsxattr':
 | 
				
			||||||
 | 
					# xfs headers will not try to redefine structs from linux headers
 | 
				
			||||||
 | 
					# if this macro is set.
 | 
				
			||||||
 | 
					if test "$have_fsxattr" = "yes" ; then
 | 
				
			||||||
 | 
					    echo "HAVE_FSXATTR=y" >> $config_host_mak
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
if test "$vte" = "yes" ; then
 | 
					if test "$vte" = "yes" ; then
 | 
				
			||||||
  echo "CONFIG_VTE=y" >> $config_host_mak
 | 
					  echo "CONFIG_VTE=y" >> $config_host_mak
 | 
				
			||||||
  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
 | 
					  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user