Message ID | 1658097660.1149740.1671807871813@mail1.libero.it |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] ffmpeg-3.4.12 does not build (i686-w64-mingw32) | expand |
Context | Check | Description |
---|---|---|
yinshiyou/configure_loongarch64 | warning | Failed to apply patch |
andriy/configure_x86 | warning | Failed to apply patch |
On Fri, Dec 23, 2022 at 04:04:31PM +0100, Carlo Bramini wrote: > Hello, > > I tried to build ffmpeg-3.4.12, which is the last one supporting Windows XP, but it fails to compile the resource file for Windows. > Running verbose build, it prints this output on the console: > > > $ make V=1 > > i686-w64-mingw32-windres -I. -Isrc/ --preprocessor "i686-w64-mingw32-gcc -E -xc-header -DRC_INVOKED -MMD -MF libavdevice/avdeviceres.d -MT libavdevice/avdeviceres.o" -o libavdevice/avdeviceres.o /home/carlo/packages/ffmpeg/mingw64-i686-ffmpeg-3.4.12-1.noarch/src/ffmpeg-3.4.12/libavdevice/avdeviceres.rc > > /bin/sh: i686-w64-mingw32-gcc -E -xc-header -DRC_INVOKED -MMD -MF libavdevice/avdeviceres.d -MT libavdevice/avdeviceres.o: No such file or directory > > make: *** [/home/carlo/packages/ffmpeg/mingw64-i686-ffmpeg-3.4.12-1.noarch/src/ffmpeg-3.4.12/ffbuild/common.mak:86: libavdevice/avdeviceres.o] Error 1 > > I found a solution by comparing ffbuild/common.mak between this version and the latest 5.1.2, which has already fixed this bug. > So, I'm wondering if it could be possible to apply the same patch for fixing this tiny issue in the next maintenance release of 3.4.x branch, if it will happen in the future. > I attached that patch in this email for reference, if somebody can import that line from development sources. > > Sincerely, > > Carlo Bramini. > --- origsrc/ffmpeg-3.4.12/ffbuild/common.mak 2022-10-27 22:21:00.000000000 +0200 > +++ src/ffmpeg-3.4.12/ffbuild/common.mak 2022-12-23 10:46:32.733625900 +0100 > @@ -83,7 +83,7 @@ COMPILE_NVCC = $(call COMPILE,NVCC) > -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@) > > %.o: %.rc > - $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $< > + $(WINDRES) $(IFLAGS) $(foreach ARG,$(CC_DEPFLAGS),--preprocessor-arg "$(ARG)") -o $@ $< > > %.i: %.c > $(CC) $(CCFLAGS) $(CC_E) $< This is the patch, you seem talking about. commit f9626d1065c43f1d51afe66bdf988b9f33729440 Author: Martin Storsjö <martin@martin.st> Date: Sat May 15 00:42:38 2021 +0300 ffbuild: Avoid using the --preprocessor argument to windres Instead use --preprocessor-arg; in binutils 2.36, the --preprocessor flag was changed so that it no longer accepts a string containing multiple arguments, but the whole --preprocessor argument is treated as the path to the preprocessor executable (where the path can contain spaces). It's currently unclear whether this behaviour will stay or if it is going to be reverted in the future, see discussion at [1]. Just to be safe, avoid using the --preprocessor argument. Don't redeclare the full preprocessing command, but just add the $(CC_DEPFLAGS) options. Based on a patch by Kyle Schwartz. [1] https://sourceware.org/bugzilla/show_bug.cgi?id=27594 Signed-off-by: Martin Storsjö <martin@martin.st> [...]
Hello, yes, that commit seems to be the one that include the needed fix. Is it possible to import that change also into the next release of 3.4.x branch? Or do I need to open a new bug report? Sincerely, Carlo Bramini. > Il 23/12/2022 21:21 Michael Niedermayer <michael@niedermayer.cc> ha scritto: > > > On Fri, Dec 23, 2022 at 04:04:31PM +0100, Carlo Bramini wrote: > > Hello, > > > > I tried to build ffmpeg-3.4.12, which is the last one supporting Windows XP, but it fails to compile the resource file for Windows. > > Running verbose build, it prints this output on the console: > > > > > $ make V=1 > > > i686-w64-mingw32-windres -I. -Isrc/ --preprocessor "i686-w64-mingw32-gcc -E -xc-header -DRC_INVOKED -MMD -MF libavdevice/avdeviceres.d -MT libavdevice/avdeviceres.o" -o libavdevice/avdeviceres.o /home/carlo/packages/ffmpeg/mingw64-i686-ffmpeg-3.4.12-1.noarch/src/ffmpeg-3.4.12/libavdevice/avdeviceres.rc > > > /bin/sh: i686-w64-mingw32-gcc -E -xc-header -DRC_INVOKED -MMD -MF libavdevice/avdeviceres.d -MT libavdevice/avdeviceres.o: No such file or directory > > > make: *** [/home/carlo/packages/ffmpeg/mingw64-i686-ffmpeg-3.4.12-1.noarch/src/ffmpeg-3.4.12/ffbuild/common.mak:86: libavdevice/avdeviceres.o] Error 1 > > > > I found a solution by comparing ffbuild/common.mak between this version and the latest 5.1.2, which has already fixed this bug. > > So, I'm wondering if it could be possible to apply the same patch for fixing this tiny issue in the next maintenance release of 3.4.x branch, if it will happen in the future. > > I attached that patch in this email for reference, if somebody can import that line from development sources. > > > > Sincerely, > > > > Carlo Bramini. > > > --- origsrc/ffmpeg-3.4.12/ffbuild/common.mak 2022-10-27 22:21:00.000000000 +0200 > > +++ src/ffmpeg-3.4.12/ffbuild/common.mak 2022-12-23 10:46:32.733625900 +0100 > > @@ -83,7 +83,7 @@ COMPILE_NVCC = $(call COMPILE,NVCC) > > -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@) > > > > %.o: %.rc > > - $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $< > > + $(WINDRES) $(IFLAGS) $(foreach ARG,$(CC_DEPFLAGS),--preprocessor-arg "$(ARG)") -o $@ $< > > > > %.i: %.c > > $(CC) $(CCFLAGS) $(CC_E) $< > > This is the patch, you seem talking about. > > commit f9626d1065c43f1d51afe66bdf988b9f33729440 > Author: Martin Storsjö <martin@martin.st> > Date: Sat May 15 00:42:38 2021 +0300 > > ffbuild: Avoid using the --preprocessor argument to windres > > Instead use --preprocessor-arg; in binutils 2.36, the --preprocessor > flag was changed so that it no longer accepts a string containing > multiple arguments, but the whole --preprocessor argument is > treated as the path to the preprocessor executable (where the path > can contain spaces). > > It's currently unclear whether this behaviour will stay or if it > is going to be reverted in the future, see discussion at [1]. Just > to be safe, avoid using the --preprocessor argument. Don't redeclare > the full preprocessing command, but just add the $(CC_DEPFLAGS) options. > > Based on a patch by Kyle Schwartz. > > [1] https://sourceware.org/bugzilla/show_bug.cgi?id=27594 > > Signed-off-by: Martin Storsjö <martin@martin.st> > > > [...] > > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > "You are 36 times more likely to die in a bathtub than at the hands of a > terrorist. Also, you are 2.5 times more likely to become a president and > 2 times more likely to become an astronaut, than to die in a terrorist > attack." -- Thoughty2 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
--- origsrc/ffmpeg-3.4.12/ffbuild/common.mak 2022-10-27 22:21:00.000000000 +0200 +++ src/ffmpeg-3.4.12/ffbuild/common.mak 2022-12-23 10:46:32.733625900 +0100 @@ -83,7 +83,7 @@ COMPILE_NVCC = $(call COMPILE,NVCC) -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@) %.o: %.rc - $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $< + $(WINDRES) $(IFLAGS) $(foreach ARG,$(CC_DEPFLAGS),--preprocessor-arg "$(ARG)") -o $@ $< %.i: %.c $(CC) $(CCFLAGS) $(CC_E) $<