[FFmpeg-devel] [PATCH 13/13] configure: Use a separate config_components.h header for $ALL_COMPONENTS

Martin Storsjö martin at martin.st
Thu Feb 24 23:35:05 EET 2022


On Thu, 24 Feb 2022, Michael Niedermayer wrote:

> On Wed, Feb 23, 2022 at 04:29:51PM +0200, Martin Storsjö wrote:
>> This avoids unnecessary rebuilds of most source files if only the
>> list of enabled components has changed, but not the other properties
>> of the build, set in config.h.
>> ---
>>  configure                          | 17 +++++++++++++++--
>>  fftools/ffplay.c                   |  1 +
>>  libavcodec/8svx.c                  |  1 +
>>  libavcodec/a64multienc.c           |  1 +
>>  libavcodec/aac_ac3_parser.c        |  1 +
>>  libavcodec/aactab.c                |  1 +
>>  libavcodec/aarch64/h264cmc_neon.S  |  1 +
>>  libavcodec/ac3_parser.c            |  1 +
>>  libavcodec/ac3dec.c                |  1 +
>>  libavcodec/ac3enc.c                |  1 +
>>  libavcodec/ac3enc_template.c       |  1 +
>>  libavcodec/adpcm.c                 |  1 +
>>  libavcodec/adpcmenc.c              |  1 +
>>  libavcodec/allcodecs.c             |  1 +
>>  libavcodec/aptxdec.c               |  1 +
>>  libavcodec/aptxenc.c               |  1 +
>>  libavcodec/arm/flacdsp_init_arm.c  |  1 +
>>  libavcodec/arm/h264cmc_neon.S      |  1 +
>>  libavcodec/assdec.c                |  1 +
>>  libavcodec/assenc.c                |  1 +
>>  libavcodec/asvdec.c                |  1 +
>>  libavcodec/asvenc.c                |  1 +
>>  libavcodec/audiotoolboxdec.c       |  1 +
>>  libavcodec/av1dec.c                |  1 +
>>  libavcodec/binkaudio.c             |  1 +
>>  libavcodec/bintext.c               |  1 +
>>  libavcodec/bsf.c                   |  1 +
>>  libavcodec/cyuv.c                  |  1 +
>>  libavcodec/flashsv.c               |  1 +
>>  libavcodec/g726.c                  |  1 +
>>  libavcodec/gsmdec.c                |  1 +
>>  libavcodec/h263dec.c               |  1 +
>>  libavcodec/h264_slice.c            |  1 +
>>  libavcodec/h264dec.c               |  2 ++
>>  libavcodec/hevcdec.c               |  1 +
>>  libavcodec/huffyuvdec.c            |  1 +
>>  libavcodec/huffyuvenc.c            |  1 +
>>  libavcodec/idctdsp.c               |  1 +
>>  libavcodec/iff.c                   |  1 +
>>  libavcodec/imc.c                   |  1 +
>>  libavcodec/ituh263dec.c            |  1 +
>>  libavcodec/ituh263enc.c            |  1 +
>>  libavcodec/lcldec.c                |  1 +
>>  libavcodec/libgsmdec.c             |  1 +
>>  libavcodec/libgsmenc.c             |  1 +
>>  libavcodec/libopencore-amr.c       |  1 +
>>  libavcodec/libvpx.c                |  1 +
>>  libavcodec/libvpxdec.c             |  1 +
>>  libavcodec/libvpxenc.c             |  1 +
>>  libavcodec/libx264.c               |  1 +
>>  libavcodec/me_cmp.c                |  1 +
>>  libavcodec/metasound_data.c        |  1 +
>>  libavcodec/mjpegdec.c              |  1 +
>>  libavcodec/mjpegenc.c              |  1 +
>>  libavcodec/mlpdec.c                |  1 +
>>  libavcodec/mlpenc.c                |  1 +
>>  libavcodec/mpeg12dec.c             |  1 +
>>  libavcodec/mpeg12enc.c             |  1 +
>>  libavcodec/mpeg4videodec.c         |  1 +
>>  libavcodec/mpegaudiodec_fixed.c    |  1 +
>>  libavcodec/mpegaudiodec_float.c    |  1 +
>>  libavcodec/mpegvideo.c             |  1 +
>>  libavcodec/mpegvideo_enc.c         |  1 +
>>  libavcodec/mpegvideo_motion.c      |  1 +
>>  libavcodec/msmpeg4.c               |  1 +
>>  libavcodec/msmpeg4dec.c            |  1 +
>>  libavcodec/mvcdec.c                |  1 +
>>  libavcodec/options.c               |  1 +
>>  libavcodec/opus_pvq.c              |  1 +
>>  libavcodec/pcm.c                   |  1 +
>>  libavcodec/pngdec.c                |  1 +
>>  libavcodec/pnmdec.c                |  1 +
>>  libavcodec/pnmenc.c                |  1 +
>>  libavcodec/proresdec2.c            |  1 +
>>  libavcodec/qpeldsp.c               |  1 +
>>  libavcodec/r210dec.c               |  1 +
>>  libavcodec/r210enc.c               |  1 +
>>  libavcodec/rv34_parser.c           |  1 +
>>  libavcodec/sonic.c                 |  1 +
>>  libavcodec/sp5xdec.c               |  1 +
>>  libavcodec/speedhq.c               |  1 +
>>  libavcodec/speedhqenc.c            |  1 +
>>  libavcodec/srtdec.c                |  1 +
>>  libavcodec/srtenc.c                |  1 +
>>  libavcodec/textdec.c               |  1 +
>>  libavcodec/v408dec.c               |  1 +
>>  libavcodec/v408enc.c               |  1 +
>>  libavcodec/vc1dec.c                |  1 +
>>  libavcodec/vc1dsp.c                |  1 +
>>  libavcodec/videotoolbox.c          |  1 +
>>  libavcodec/vorbis_parser.c         |  1 +
>>  libavcodec/vp3.c                   |  1 +
>>  libavcodec/vp56dsp.c               |  1 +
>>  libavcodec/vp8.c                   |  1 +
>>  libavcodec/vp8dsp.c                |  1 +
>>  libavcodec/vp9.c                   |  1 +
>>  libavcodec/wmadec.c                |  1 +
>>  libavcodec/wmaenc.c                |  1 +
>>  libavcodec/x86/flacdsp_init.c      |  1 +
>>  libavcodec/x86/hpeldsp_init.c      |  1 +
>>  libavfilter/aeval.c                |  1 +
>>  libavfilter/af_afade.c             |  1 +
>>  libavfilter/af_agate.c             |  1 +
>>  libavfilter/af_biquads.c           |  1 +
>>  libavfilter/af_sidechaincompress.c |  1 +
>>  libavfilter/avf_showspectrum.c     |  1 +
>>  libavfilter/avf_showwaves.c        |  1 +
>>  libavfilter/f_bench.c              |  1 +
>>  libavfilter/f_cue.c                |  1 +
>>  libavfilter/f_drawgraph.c          |  1 +
>>  libavfilter/f_graphmonitor.c       |  1 +
>>  libavfilter/f_interleave.c         |  1 +
>>  libavfilter/f_latency.c            |  1 +
>>  libavfilter/f_loop.c               |  1 +
>>  libavfilter/f_metadata.c           |  1 +
>>  libavfilter/f_perms.c              |  1 +
>>  libavfilter/f_realtime.c           |  1 +
>>  libavfilter/f_reverse.c            |  1 +
>>  libavfilter/f_segment.c            |  1 +
>>  libavfilter/f_select.c             |  1 +
>>  libavfilter/f_sendcmd.c            |  1 +
>>  libavfilter/f_sidedata.c           |  1 +
>>  libavfilter/lut3d.h                |  1 +
>>  libavfilter/setpts.c               |  1 +
>>  libavfilter/settb.c                |  1 +
>>  libavfilter/src_movie.c            |  1 +
>>  libavfilter/trim.c                 |  1 +
>>  libavfilter/vf_aspect.c            |  1 +
>>  libavfilter/vf_blend.c             |  1 +
>>  libavfilter/vf_colorconstancy.c    |  1 +
>>  libavfilter/vf_colorkey.c          |  1 +
>>  libavfilter/vf_convolution.c       |  1 +
>>  libavfilter/vf_convolve.c          |  1 +
>>  libavfilter/vf_drawbox.c           |  1 +
>>  libavfilter/vf_extractplanes.c     |  1 +
>>  libavfilter/vf_format.c            |  1 +
>>  libavfilter/vf_histogram.c         |  1 +
>>  libavfilter/vf_identity.c          |  1 +
>>  libavfilter/vf_lut.c               |  1 +
>>  libavfilter/vf_lut2.c              |  1 +
>>  libavfilter/vf_mix.c               |  1 +
>>  libavfilter/vf_neighbor.c          |  1 +
>>  libavfilter/vf_premultiply.c       |  1 +
>>  libavfilter/vf_setparams.c         |  1 +
>>  libavfilter/vf_stack.c             |  1 +
>>  libavfilter/vf_xmedian.c           |  1 +
>>  libavfilter/vsrc_testsrc.c         |  1 +
>>  libavformat/ac3dec.c               |  1 +
>>  libavformat/alp.c                  |  1 +
>>  libavformat/amr.c                  |  1 +
>>  libavformat/apm.c                  |  1 +
>>  libavformat/aptxdec.c              |  1 +
>>  libavformat/argo_asf.c             |  1 +
>>  libavformat/argo_cvg.c             |  1 +
>>  libavformat/asfenc.c               |  1 +
>>  libavformat/au.c                   |  1 +
>>  libavformat/av1dec.c               |  1 +
>>  libavformat/avidec.c               |  1 +
>>  libavformat/avienc.c               |  1 +
>>  libavformat/bintext.c              |  1 +
>>  libavformat/bit.c                  |  1 +
>>  libavformat/codec2.c               |  1 +
>>  libavformat/concat.c               |  1 +
>>  libavformat/dashenc.c              |  1 +
>>  libavformat/demux.c                |  1 +
>>  libavformat/file.c                 |  1 +
>>  libavformat/format.c               |  1 +
>>  libavformat/g726.c                 |  1 +
>>  libavformat/gopher.c               |  1 +
>>  libavformat/hashenc.c              |  1 +
>>  libavformat/hls.c                  |  1 +
>>  libavformat/hlsenc.c               |  1 +
>>  libavformat/http.c                 |  1 +
>>  libavformat/ilbc.c                 |  1 +
>>  libavformat/img2dec.c              |  1 +
>>  libavformat/img2enc.c              |  1 +
>>  libavformat/kvag.c                 |  1 +
>>  libavformat/matroskadec.c          |  1 +
>>  libavformat/matroskaenc.c          |  1 +
>>  libavformat/mj2kdec.c              |  1 +
>>  libavformat/mlpdec.c               |  1 +
>>  libavformat/mmf.c                  |  1 +
>>  libavformat/mov.c                  |  1 +
>>  libavformat/movenc.c               |  1 +
>>  libavformat/mpeg.c                 |  1 +
>>  libavformat/mpegenc.c              |  1 +
>>  libavformat/mpegts.c               |  1 +
>>  libavformat/network.c              |  1 +
>>  libavformat/oggenc.c               |  1 +
>>  libavformat/pcmdec.c               |  1 +
>>  libavformat/pcmenc.c               |  1 +
>>  libavformat/rawdec.c               |  1 +
>>  libavformat/rawenc.c               |  1 +
>>  libavformat/rawvideodec.c          |  1 +
>>  libavformat/riff.c                 |  1 +
>>  libavformat/rtmpproto.c            |  1 +
>>  libavformat/rtsp.c                 |  1 +
>>  libavformat/rtspdec.c              |  1 +
>>  libavformat/sdp.c                  |  1 +
>>  libavformat/segment.c              |  1 +
>>  libavformat/swfenc.c               |  1 +
>>  libavformat/voc.c                  |  1 +
>>  libavformat/wavdec.c               |  1 +
>>  libavformat/wavenc.c               |  1 +
>>  204 files changed, 219 insertions(+), 2 deletions(-)
>
> breaks build on mingw64 here
>
> libavcodec/libavcodec.a(h264dec.o):h264dec.c:(.rdata+0x570): undefined reference to `ff_h264_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(h264dec.o):h264dec.c:(.rdata+0x590): undefined reference to `ff_h264_d3d11va_hwaccel'
> libavcodec/libavcodec.a(h264dec.o):h264dec.c:(.rdata+0x5b0): undefined reference to `ff_h264_dxva2_hwaccel'
> libavcodec/libavcodec.a(hevcdec.o):hevcdec.c:(.rdata+0xab0): undefined reference to `ff_hevc_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(hevcdec.o):hevcdec.c:(.rdata+0xad0): undefined reference to `ff_hevc_d3d11va_hwaccel'
> libavcodec/libavcodec.a(hevcdec.o):hevcdec.c:(.rdata+0xaf0): undefined reference to `ff_hevc_dxva2_hwaccel'
> libavcodec/libavcodec.a(mpeg12dec.o):mpeg12dec.c:(.rdata+0xc10): undefined reference to `ff_mpeg2_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(mpeg12dec.o):mpeg12dec.c:(.rdata+0xc30): undefined reference to `ff_mpeg2_d3d11va_hwaccel'
> libavcodec/libavcodec.a(mpeg12dec.o):mpeg12dec.c:(.rdata+0xc50): undefined reference to `ff_mpeg2_dxva2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x710): undefined reference to `ff_wmv3_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x730): undefined reference to `ff_wmv3_d3d11va_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x750): undefined reference to `ff_wmv3_dxva2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x890): undefined reference to `ff_vc1_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x8b0): undefined reference to `ff_vc1_d3d11va_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x8d0): undefined reference to `ff_vc1_dxva2_hwaccel'
> libavcodec/libavcodec.a(vp9.o):vp9.c:(.rdata+0x630): undefined reference to `ff_vp9_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(vp9.o):vp9.c:(.rdata+0x650): undefined reference to `ff_vp9_d3d11va_hwaccel'
> libavcodec/libavcodec.a(vp9.o):vp9.c:(.rdata+0x670): undefined reference to `ff_vp9_dxva2_hwaccel'
> libavcodec/libavcodec.a(h264dec.o):h264dec.c:(.rdata+0x570): undefined reference to `ff_h264_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(h264dec.o):h264dec.c:(.rdata+0x590): undefined reference to `ff_h264_d3d11va_hwaccel'
> libavcodec/libavcodec.a(h264dec.o):h264dec.c:(.rdata+0x5b0): undefined reference to `ff_h264_dxva2_hwaccel'
> libavcodec/libavcodec.a(hevcdec.o):hevcdec.c:(.rdata+0xab0): undefined reference to `ff_hevc_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(hevcdec.o):hevcdec.c:(.rdata+0xad0): undefined reference to `ff_hevc_d3d11va_hwaccel'
> libavcodec/libavcodec.a(hevcdec.o):hevcdec.c:(.rdata+0xaf0): undefined reference to `ff_hevc_dxva2_hwaccel'
> libavcodec/libavcodec.a(mpeg12dec.o):mpeg12dec.c:(.rdata+0xc10): undefined reference to `ff_mpeg2_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(mpeg12dec.o):mpeg12dec.c:(.rdata+0xc30): undefined reference to `ff_mpeg2_d3d11va_hwaccel'
> libavcodec/libavcodec.a(mpeg12dec.o):mpeg12dec.c:(.rdata+0xc50): undefined reference to `ff_mpeg2_dxva2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x710): undefined reference to `ff_wmv3_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x730): undefined reference to `ff_wmv3_d3d11va_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x750): undefined reference to `ff_wmv3_dxva2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x890): undefined reference to `ff_vc1_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x8b0): undefined reference to `ff_vc1_d3d11va_hwaccel'
> libavcodec/libavcodec.a(vc1dec.o):vc1dec.c:(.rdata+0x8d0): undefined reference to `ff_vc1_dxva2_hwaccel'
> libavcodec/libavcodec.a(vp9.o):vp9.c:(.rdata+0x630): undefined reference to `ff_vp9_d3d11va2_hwaccel'
> libavcodec/libavcodec.a(vp9.o):vp9.c:(.rdata+0x650): undefined reference to `ff_vp9_d3d11va_hwaccel'
> libavcodec/libavcodec.a(vp9.o):vp9.c:(.rdata+0x670): undefined reference to `ff_vp9_dxva2_hwaccel'
> collect2: error: ld returned 1 exit status
> collect2: error: ld returned 1 exit status
> Makefile:127: recipe for target 'ffprobe_g.exe' failed
> make: *** [ffprobe_g.exe] Error 1
> make: *** Waiting for unfinished jobs....
> Makefile:127: recipe for target 'ffmpeg_g.exe' failed
> make: *** [ffmpeg_g.exe] Error 1

Thanks - I also ran into this one later and have it fixed locally.

// Martin


More information about the ffmpeg-devel mailing list