[FFmpeg-devel] [PATCH 2/2] When checking for compiler or linker flags, check if warnings are reported.
Måns Rullgård
mans
Thu Oct 2 16:24:16 CEST 2008
Diego 'Flameeyes' Petten? wrote:
> Not all compilers and linkres fail with error when an option they
> don't support is used during compilation or linking. For instance, the
> Sun Studio and the Intel compiler suites, only issue warnings for
> those cases.
>
> Also, even GCC only issues warnings when a flag that cannot be used
> with a given language (like -fvisibility-inlines-hidden used with the
> C frontend).
>
> With this patch, the checks for both compiler and linker flags will
> ensure that no warning is issued that might show the compiler or
> linker doesn't support the flag being tested. This will avoid adding
> further warnings during build.
>
> Further changes: when identifying the Intel C Compiler, further flags
> were added to disable the warnings issued by the unsupported flags;
> since this check disallows those from being added in the CFLAGS
> variable in the first place, remove them, so that actually unsupported
> flags used but not checked for will issue a warning.
>
> Known possible issue: it expects the user to know its compiler and not
> forcing through --extra-cflags or --extra-ldflags options that are not
> supported, otherwise all the cflags/ldflags checks will fail. Doesn't
> look too bad.
> ---
>
> configure | 37 +++++++++++++++++++++++++++----------
> 1 files changed, 27 insertions(+), 10 deletions(-)
>
> diff --git a/configure b/configure
> index 349464e..8ead633 100755
> --- a/configure
> +++ b/configure
> @@ -226,7 +226,7 @@ Include the log file "$logfile" produced by configure as
> this will help
> solving the problem.
> EOF
> fi
> - rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
> + rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH $TMPLOG $TMPRES
> exit 1
> }
>
> @@ -423,7 +423,9 @@ add_extralibs(){
>
> check_cmd(){
> log "$@"
> - "$@" >> $logfile 2>&1
> + rm -f $TMPRES
> + ( "$@" 2>&1 && touch $TMPRES; ) | tee $TMPLOG >> $logfile
> + test -f $TMPRES
> }
I still don't like this. I have half an idea that I'll test later. I'm
tied up offline stuff the rest of this week, so a gentle reminder when I
next show up on IRC would be in order.
> check_cc(){
> @@ -471,16 +473,34 @@ check_ld(){
>
> check_cflags(){
> log check_cflags "$@"
> - check_cc "$@" <<EOF && add_cflags "$@"
> + check_cc "$@" <<EOF || return 1
> int x;
> EOF
> +
> + grep -qi "warning" $TMPLOG && return 1
> + grep -qi "illegal option" $TMPLOG && return 1
> + grep -qi "unknown option" $TMPLOG && return 1
> + grep -qi "ignoring option" $TMPLOG && return 1
> + grep -qi "unrecognized" $TMPLOG && return 1
> +
> + add_cflags "$@"
> + return 0
> }
>
> check_ldflags(){
> log check_ldflags "$@"
> - check_ld "$@" <<EOF && add_ldflags "$@"
> + check_ld "$@" <<EOF || return 1
> int main(void){ return 0; }
> EOF
> +
> + grep -qi "warning" $TMPLOG && return 1
> + grep -qi "illegal option" $TMPLOG && return 1
> + grep -qi "unknown option" $TMPLOG && return 1
> + grep -qi "ignoring option" $TMPLOG && return 1
> + grep -qi "unrecognized" $TMPLOG && return 1
> +
> + add_ldflags "$@"
> + return 0
> }
Either I've become cross-eyed, or that's duplicated code.
> check_header(){
> @@ -1132,6 +1152,8 @@ TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
> TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
> TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
> TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
> +TMPLOG="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.log"
> +TMPRES="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.res"
>
> check_cflags -fasm
> check_cflags -std=c99
> @@ -1891,12 +1913,7 @@ if $cc --version | grep -q Intel; then
> check_cflags -w1
> # -wd: Disable following warnings
> # 144, 167, 556: -Wno-pointer-sign
> - # 10006: ignoring unknown option -fno-signed-zeros
> - # 10156: ignoring option '-W'; no argument required
> - check_cflags -wd144,167,556,10006,10156
> - # 11030: Warning unknown option --as-needed
> - # 10156: ignoring option '-export'; no argument required
> - check_ldflags -wd10156,11030
> + check_cflags -wd144,167,556
> # Allow to compile with optimizations
> check_ldflags -march=$cpu
> fi
This should arguably be done separately.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list