Message ID | 20241003134026.544919-1-dev@lynne.ee |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/5] configure: drop yasm support | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On 03/10/2024 15:40, Lynne wrote: > We started defauling to nasm 8 years ago. > We are still compatible with yasm 0.8.0, released in 2009. **15 years ago**. > The time has more than come to remove support for it. > > Maintaining compatibility started cutting into writing new code long ago. > We still can't have 2-argument instructions, preprocessor booleans, and all > AVX2 code must still be wrapped in ifdefs. Newly added code often breaks this. > --- > Changelog | 1 + > configure | 20 ++------------------ > doc/developer.texi | 2 +- > doc/optimization.txt | 4 ++-- > doc/platform.texi | 4 ++-- > 5 files changed, 8 insertions(+), 23 deletions(-) > > diff --git a/Changelog b/Changelog > index b82b948074..7963e093dd 100644 > --- a/Changelog > +++ b/Changelog > @@ -2,6 +2,7 @@ Entries are sorted chronologically from oldest to youngest within each release, > releases are sorted from youngest to oldest. > > version <next>: > +- yasm support dropped, users need to use nasm > > version 7.1: > - Raw Captions with Time (RCWT) closed caption demuxer > diff --git a/configure b/configure > index 0247ea08d6..79ce2ba083 100755 > --- a/configure > +++ b/configure > @@ -4415,16 +4415,6 @@ for opt do > test $action = enable && warn_if_gets_disabled $list > $action $list > ;; > - --enable-yasm|--disable-yasm) > - warn "The ${opt} option is only provided for compatibility and will be\n"\ > - "removed in the future. Use --enable-x86asm / --disable-x86asm instead." > - test $opt = --enable-yasm && x86asm=yes || x86asm=no > - ;; > - --yasmexe=*) > - warn "The --yasmexe option is only provided for compatibility and will be\n"\ > - "removed in the future. Use --x86asmexe instead." > - x86asmexe="$optval" > - ;; > --enable-?*|--disable-?*) > eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') > if is_in $option $COMPONENT_LIST; then > @@ -6449,22 +6439,16 @@ EOF > x86asm_debug="-g -F dwarf" > X86ASMDEP= > X86ASM_DEPFLAGS='-MD $(@:.o=.d)' > - elif test_cmd $x86asmexe_probe --version; then > - x86asmexe=$x86asmexe_probe > - x86asm_type=yasm > - x86asm_debug="-g dwarf2" > - X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)' > - X86ASM_DEPFLAGS= > fi > check_x86asm x86asm "movbe ecx, [5]" > } > > if ! disabled_any asm mmx x86asm; then > disable x86asm > - for program in $x86asmexe nasm yasm; do > + for program in $x86asmexe nasm; do > probe_x86asm $program && break > done > - disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build." > + disabled x86asm && die "nasm not found or too old. Use --disable-x86asm for a crippled build." > X86ASMFLAGS="-f $objformat" > test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX" > case "$objformat" in > diff --git a/doc/developer.texi b/doc/developer.texi > index 41b21938ef..16e8f9d6e4 100644 > --- a/doc/developer.texi > +++ b/doc/developer.texi > @@ -825,7 +825,7 @@ filters, bitstream filters, parsers. If its not possible to do that, add > an explanation why to your patchset, its ok to not test if theres a reason. > > @item > -If you added YASM code please check that things still work with --disable-yasm. > +If you added NASM code please check that things still work with --disable-nasm. > > @item > Test your code with valgrind and or Address Sanitizer to ensure it's free > diff --git a/doc/optimization.txt b/doc/optimization.txt > index 3ed29fe38c..40480e4fa9 100644 > --- a/doc/optimization.txt > +++ b/doc/optimization.txt > @@ -188,7 +188,7 @@ Code that depends on data in registries being untouched, should be written as > a single __asm__() statement. Ideally, a single function contains only one > __asm__() block. > > -Use external asm (nasm/yasm) or inline asm (__asm__()), do not use intrinsics. > +Use external asm (nasm) or inline asm (__asm__()), do not use intrinsics. > The latter requires a good optimizing compiler which gcc is not. > > When debugging a x86 external asm compilation issue, if lost in the macro > @@ -199,7 +199,7 @@ actual lines causing issues. > Inline asm vs. external asm > --------------------------- > Both inline asm (__asm__("..") in a .c file, handled by a compiler such as gcc) > -and external asm (.s or .asm files, handled by an assembler such as nasm/yasm) > +and external asm (.s or .asm files, handled by an assembler such as nasm) > are accepted in FFmpeg. Which one to use differs per specific case. > > - if your code is intended to be inlined in a C function, inline asm is always > diff --git a/doc/platform.texi b/doc/platform.texi > index 764911d230..d9ee436a9f 100644 > --- a/doc/platform.texi > +++ b/doc/platform.texi > @@ -158,7 +158,7 @@ You will need the following prerequisites: > To set up a proper environment in MSYS2, you need to run @code{msys_shell.bat} from > the Visual Studio or Intel Compiler command prompt. > > -Place @code{yasm.exe} somewhere in your @code{PATH}. > +Place @code{nasm.exe} somewhere in your @code{PATH}. > > Next, make sure any other headers and libs you want to use, such as zlib, are > located in a spot that the compiler can see. Do so by modifying the @code{LIB} > @@ -301,7 +301,7 @@ These library packages are only available from > @uref{http://sourceware.org/cygwinports/, Cygwin Ports}: > > @example > -yasm, libSDL-devel, libgsm-devel, libmp3lame-devel, > +libSDL-devel, libgsm-devel, libmp3lame-devel, > speex-devel, libtheora-devel, libxvidcore-devel > @end example > Pushed. Better late than never, but we can now clean up some old assembly. Partially, at least, since ARCH_X86_64 and HAVE_AVX2_EXTERNAL checks often go hand in hand. Don't look at me, I don't want 32-bit support dropped, not after all the effort it took to write code with only 8 registers.
diff --git a/Changelog b/Changelog index b82b948074..7963e093dd 100644 --- a/Changelog +++ b/Changelog @@ -2,6 +2,7 @@ Entries are sorted chronologically from oldest to youngest within each release, releases are sorted from youngest to oldest. version <next>: +- yasm support dropped, users need to use nasm version 7.1: - Raw Captions with Time (RCWT) closed caption demuxer diff --git a/configure b/configure index 0247ea08d6..79ce2ba083 100755 --- a/configure +++ b/configure @@ -4415,16 +4415,6 @@ for opt do test $action = enable && warn_if_gets_disabled $list $action $list ;; - --enable-yasm|--disable-yasm) - warn "The ${opt} option is only provided for compatibility and will be\n"\ - "removed in the future. Use --enable-x86asm / --disable-x86asm instead." - test $opt = --enable-yasm && x86asm=yes || x86asm=no - ;; - --yasmexe=*) - warn "The --yasmexe option is only provided for compatibility and will be\n"\ - "removed in the future. Use --x86asmexe instead." - x86asmexe="$optval" - ;; --enable-?*|--disable-?*) eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') if is_in $option $COMPONENT_LIST; then @@ -6449,22 +6439,16 @@ EOF x86asm_debug="-g -F dwarf" X86ASMDEP= X86ASM_DEPFLAGS='-MD $(@:.o=.d)' - elif test_cmd $x86asmexe_probe --version; then - x86asmexe=$x86asmexe_probe - x86asm_type=yasm - x86asm_debug="-g dwarf2" - X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)' - X86ASM_DEPFLAGS= fi check_x86asm x86asm "movbe ecx, [5]" } if ! disabled_any asm mmx x86asm; then disable x86asm - for program in $x86asmexe nasm yasm; do + for program in $x86asmexe nasm; do probe_x86asm $program && break done - disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build." + disabled x86asm && die "nasm not found or too old. Use --disable-x86asm for a crippled build." X86ASMFLAGS="-f $objformat" test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX" case "$objformat" in diff --git a/doc/developer.texi b/doc/developer.texi index 41b21938ef..16e8f9d6e4 100644 --- a/doc/developer.texi +++ b/doc/developer.texi @@ -825,7 +825,7 @@ filters, bitstream filters, parsers. If its not possible to do that, add an explanation why to your patchset, its ok to not test if theres a reason. @item -If you added YASM code please check that things still work with --disable-yasm. +If you added NASM code please check that things still work with --disable-nasm. @item Test your code with valgrind and or Address Sanitizer to ensure it's free diff --git a/doc/optimization.txt b/doc/optimization.txt index 3ed29fe38c..40480e4fa9 100644 --- a/doc/optimization.txt +++ b/doc/optimization.txt @@ -188,7 +188,7 @@ Code that depends on data in registries being untouched, should be written as a single __asm__() statement. Ideally, a single function contains only one __asm__() block. -Use external asm (nasm/yasm) or inline asm (__asm__()), do not use intrinsics. +Use external asm (nasm) or inline asm (__asm__()), do not use intrinsics. The latter requires a good optimizing compiler which gcc is not. When debugging a x86 external asm compilation issue, if lost in the macro @@ -199,7 +199,7 @@ actual lines causing issues. Inline asm vs. external asm --------------------------- Both inline asm (__asm__("..") in a .c file, handled by a compiler such as gcc) -and external asm (.s or .asm files, handled by an assembler such as nasm/yasm) +and external asm (.s or .asm files, handled by an assembler such as nasm) are accepted in FFmpeg. Which one to use differs per specific case. - if your code is intended to be inlined in a C function, inline asm is always diff --git a/doc/platform.texi b/doc/platform.texi index 764911d230..d9ee436a9f 100644 --- a/doc/platform.texi +++ b/doc/platform.texi @@ -158,7 +158,7 @@ You will need the following prerequisites: To set up a proper environment in MSYS2, you need to run @code{msys_shell.bat} from the Visual Studio or Intel Compiler command prompt. -Place @code{yasm.exe} somewhere in your @code{PATH}. +Place @code{nasm.exe} somewhere in your @code{PATH}. Next, make sure any other headers and libs you want to use, such as zlib, are located in a spot that the compiler can see. Do so by modifying the @code{LIB} @@ -301,7 +301,7 @@ These library packages are only available from @uref{http://sourceware.org/cygwinports/, Cygwin Ports}: @example -yasm, libSDL-devel, libgsm-devel, libmp3lame-devel, +libSDL-devel, libgsm-devel, libmp3lame-devel, speex-devel, libtheora-devel, libxvidcore-devel @end example