configure: use correct cflags in compiler checks
linux-user build on fedora 11 breaks because fallocate is broken on that system if -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 are specified, which is what QEMU uses. We do have a configure check to catch this and disable fallocate, however, it turns out that default QEMU_CFLAGS/LDFLAGS were assigned in script *after* all compiler checks: so during checks we were not running compiler with same flags that we used for build later. Fix this by moving QEMU_CFLAGS to before compiler checks, and using comple_prog when checking for fallocate. This also fixes the fact that we do some compiler checks while assigning the flags, right below a comment that says "no cc tests beyond this point". Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
1062977b97
commit
be17dc90b5
41
configure
vendored
41
configure
vendored
@ -91,6 +91,26 @@ ar="${cross_prefix}${ar}"
|
|||||||
objcopy="${cross_prefix}${objcopy}"
|
objcopy="${cross_prefix}${objcopy}"
|
||||||
ld="${cross_prefix}${ld}"
|
ld="${cross_prefix}${ld}"
|
||||||
|
|
||||||
|
# default flags for all hosts
|
||||||
|
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
|
||||||
|
CFLAGS="-g $CFLAGS"
|
||||||
|
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
|
||||||
|
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
||||||
|
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
||||||
|
QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
|
||||||
|
QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
|
||||||
|
LDFLAGS="-g $LDFLAGS"
|
||||||
|
|
||||||
|
gcc_flags="-Wold-style-declaration -Wold-style-definition"
|
||||||
|
cat > $TMPC << EOF
|
||||||
|
int main(void) { }
|
||||||
|
EOF
|
||||||
|
for flag in $gcc_flags; do
|
||||||
|
if compile_prog "$QEMU_CFLAGS" "$flag" ; then
|
||||||
|
QEMU_CFLAGS="$flag $QEMU_CFLAGS"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# check that the C compiler works.
|
# check that the C compiler works.
|
||||||
cat > $TMPC <<EOF
|
cat > $TMPC <<EOF
|
||||||
int main(void) {}
|
int main(void) {}
|
||||||
@ -1596,7 +1616,7 @@ int main(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
if compile_prog "" "" ; then
|
if compile_prog "$ARCH_CFLAGS" "" ; then
|
||||||
fallocate=yes
|
fallocate=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1744,28 +1764,9 @@ 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
|
||||||
|
|
||||||
# default flags for all hosts
|
|
||||||
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
|
|
||||||
CFLAGS="-g $CFLAGS"
|
|
||||||
if test "$debug" = "no" ; then
|
if test "$debug" = "no" ; then
|
||||||
CFLAGS="-O2 $CFLAGS"
|
CFLAGS="-O2 $CFLAGS"
|
||||||
fi
|
fi
|
||||||
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
|
|
||||||
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
|
||||||
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
|
||||||
QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
|
|
||||||
QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
|
|
||||||
LDFLAGS="-g $LDFLAGS"
|
|
||||||
|
|
||||||
gcc_flags="-Wold-style-declaration -Wold-style-definition"
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
int main(void) { }
|
|
||||||
EOF
|
|
||||||
for flag in $gcc_flags; do
|
|
||||||
if compile_prog "$QEMU_CFLAGS" "$flag" ; then
|
|
||||||
QEMU_CFLAGS="$flag $QEMU_CFLAGS"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Consult white-list to determine whether to enable werror
|
# Consult white-list to determine whether to enable werror
|
||||||
# by default. Only enable by default for git builds
|
# by default. Only enable by default for git builds
|
||||||
|
Loading…
Reference in New Issue
Block a user