[FFmpeg-devel] [PATCH] configure: Correct detection of pre-processor defines for configure _LISTS.
Matt Oliver
protogonoi at gmail.com
Sat Apr 22 14:11:04 EEST 2017
On 22 April 2017 at 21:09, Matt Oliver <protogonoi at gmail.com> wrote:
> Currently the find_things configure function will scan a code file (e.g.
> allfilters.c) and then create a list of pre-processor values to be added
> to configure.
> Unfortunately the way it currently does it is incorrect with what the
> original c code expects. For example the following exists in
> allfilters.c:
> REGISTER_FILTER(FREI0R, frei0r_src, vsrc);
>
> where REGISTER_FILTER is defined as:
> #define REGISTER_FILTER(X, x, y)
> {
> extern AVFilter ff_##y##_##x;
> if (CONFIG_##X##_FILTER)
> avfilter_register(&ff_##y##_##x);
> }
>
> In c code this will check a configuration pre-processor define called
> CONFIG_FREI0R_FILTER and then register the filter if currently set.
>
> The issue arises in that configure currently looks for REGISTER_FILTER
> but when found it will use the second parameter in the macro to create
> the configuration option. So it will actually return that the
> pre-processor define is CONFIG_FREI0R_SRC_FILTER and not
> CONFIG_FREI0R_FILTER as the source code actually expects.
>
> This patch changes the behaviour to match what the c code expects by
> using the first parameter in the macro to create configure values. Since
> the first parameter is in upper case it needs to be converted to lower
> case to be usable within configure (this may be why currently the
> incorrect - although lower case 2nd parameter is currently used).
> ---
> configure | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index e6fe05a6ee..346dbc660b 100755
> --- a/configure
> +++ b/configure
> @@ -3366,7 +3366,7 @@ find_things(){
> thing=$1
> pattern=$2
> file=$source_path/$3
> - sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p"
> "$file"
> + sed -n "s/^[^#]*$pattern.*(\([^,]*\), *\([^,]*\)\(,.*\)*).*/\1_$thing/p"
> "$file" | tr '[:upper:]' '[:lower:]'
> }
>
> ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
> --
> 2.11.0.windows.3
>
Currently there are also some differences in what the makefiles expect for
the few options that have different values for the first and second macro
parameters. I can change these but i just wanted to get feedback as to
whether this is considered correct first.
More information about the ffmpeg-devel
mailing list