Thankfully I already redundantly edited this file myself before to
account for updates in the source, and backed this up to another
location just in case the shell script breaks my build files,
which it did!
Upstream can now code generate the rtcd interface files directly from the aom_config.h header, so we no longer have to generate an intermediate file by running lint_config.sh. This also means we can remove the code for creating a temporary directory.
This changes generate_sources_mozbuild.sh to call generate_sources_mozbuild.py to generate sources.mozbuild and config files and removes the parts of the script that are no longer necessary.
This revision of libaom has some conflicts with our vendor script
and build system. A number of new .asm files have the same basename
as .c files, which our build system cannot handle.
To work around this, I manually renamed the conflicting
files in the filesystem and sources.mozbuild.
Also add av1_convolve_scale_sse4.c to sources.mozbuild manually.
This is needed by the build but for some reason isn't picked up
by generate_sources_mozbuild.sh.
aom_dsp_rtcd_defs.pl checks only whether this key is present in the config, not whether it is set to true or not. Our script sets CONFIG_FOO=no for disabled options, while the upstream build system omits them, resulting in extra symbol declarations the build will never define.
Work around this by stripping the offending disabled config key if it is disabled.
This is a port of the libvpx scripts, themselves a port of Chromium's scripts to generate an external build description using hooks in the upstream configure and make scripts. The libaom library is a fork of libvpx so we can use a similar approach.
The upstream source is located in $(topsrc_dir)/third_party/aom but the build description and any patches are under the media directory with the other codecs, similar to how zlib works. Config files and headers generated by the upstream build system are also under $(topsrc_dir)/media/libaom/.