L. E. Segovia: > Hi all, > > This is a patch to fix building FFmpeg without having DCE enabled. > This was previously attempted by Andreas Rheinhardt in commit > 40e6575aa3eed64cd32bf28c00ae57edc5acb25a. However, this is not remotely > enough for MSVC; one can quickly check for this by configuring the build > without any optimizations, and then overriding OPTFLAGS with /Od: >
You seem to misunderstand the goal of 40e6575aa3eed64cd32bf28c00ae57edc5acb25a: It was not meant for --disable-optimizations builds; it was instead meant for full LTO builds (with optimizations enabled), where MSVC wanted to take a look at arch-specific code that was not available although it was under a "if (0)". Builds without asm or where components have been disabled (which can easily lead to linking failures if your compiler does not perform DCE) are not considered "full" builds in the preceding sentence. (I actually do not even know whether it has achieved said aim.) > ../configure --disable-asm --disable-optimizations --optflags=-Od > --enable-shared --disable-static --toolchain=msvc > > Issuing make should yield the first of many LNK2019 errors: > > LD libavformat/avformat-59.dll > Creating library libavformat/avformat.lib and object > libavformat/avformat.exp > rtmpproto.o : error LNK2019: unresolved external symbol > ff_rtmpe_gen_pub_key referenced in function rtmp_handshake > rtmpproto.o : error LNK2019: unresolved external symbol > ff_rtmpe_compute_secret_key referenced in function rtmp_handshake > rtmpproto.o : error LNK2019: unresolved external symbol > ff_rtmpe_encrypt_sig referenced in function rtmp_handshake > rtmpproto.o : error LNK2019: unresolved external symbol > ff_rtmpe_update_keystream referenced in function rtmp_handshake > libavformat\avformat-59.dll : fatal error LNK1120: 4 unresolved externals > make: *** [/c/Users/Amalia/Desktop/ffmpeg/ffbuild/library.mak:119: > libavformat/avformat-59.dll] Error 96 > > The proposed patchset comprehensively converts all instances of ARCH_FOO, > CONFIG_FOO, INLINE_FOO and EXTERNAL_FOO to the equivalent preprocessor > guards. > You are not converting all of them; you seem to only convert those that caused linker errors in your build (which is fine by me). E.g. mpegvideo_enc.c is full of CONFIG checks that would lead to linker errors in case DCE is disabled if some of the components whose existence is checked are actually disabled. > L. E. Segovia (4): > all: Replace if (ARCH_FOO) checks by #if ARCH_FOO, part 2 > all: Replace if (CONFIG_FOO) checks by #if CONFIG_FOO > all: Guard if (INLINE*) checks with #if HAVE_INLINE_ASM > all: Guard if (EXTERNAL*) checks with #if HAVE_X86ASM > > fftools/ffprobe.c | 22 +- > fftools/opt_common.c | 18 +- > libavcodec/x86/aacencdsp_init.c | 2 + > libavcodec/x86/aacpsdsp_init.c | 2 + > libavcodec/x86/ac3dsp_init.c | 4 + > libavcodec/x86/audiodsp_init.c | 2 + > libavcodec/x86/bswapdsp_init.c | 2 + > libavcodec/x86/cavsdsp.c | 2 + > libavcodec/x86/celt_pvq_init.c | 2 + > libavcodec/x86/cfhddsp_init.c | 2 + > libavcodec/x86/cfhdencdsp_init.c | 2 + > libavcodec/x86/dcadsp_init.c | 4 + > libavcodec/x86/dct_init.c | 2 + > libavcodec/x86/dnxhdenc_init.c | 2 + > libavcodec/x86/exrdsp_init.c | 2 + > libavcodec/x86/fdctdsp_init.c | 2 + > libavcodec/x86/fft_init.c | 2 + > libavcodec/x86/flacdsp_init.c | 8 +- > libavcodec/x86/g722dsp_init.c | 2 + > libavcodec/x86/h263dsp_init.c | 2 + > libavcodec/x86/h264_intrapred_init.c | 2 + > libavcodec/x86/h264chroma_init.c | 2 + > libavcodec/x86/hevcdsp_init.c | 465 +++++++++++---------- > libavcodec/x86/hpeldsp_init.c | 2 + > libavcodec/x86/hpeldsp_vp3_init.c | 2 + > libavcodec/x86/huffyuvdsp_init.c | 2 + > libavcodec/x86/huffyuvencdsp_init.c | 2 + > libavcodec/x86/idctdsp_init.c | 11 +- > libavcodec/x86/jpeg2000dsp_init.c | 2 + > libavcodec/x86/lossless_videodsp_init.c | 2 + > libavcodec/x86/lossless_videoencdsp_init.c | 2 + > libavcodec/x86/mdct15_init.c | 2 + > libavcodec/x86/me_cmp_init.c | 2 + > libavcodec/x86/mlpdsp_init.c | 8 +- > libavcodec/x86/mpegvideoencdsp_init.c | 2 + > libavcodec/x86/opusdsp_init.c | 2 + > libavcodec/x86/pixblockdsp_init.c | 2 + > libavcodec/x86/pngdsp_init.c | 2 + > libavcodec/x86/proresdsp_init.c | 2 + > libavcodec/x86/rv34dsp_init.c | 2 + > libavcodec/x86/sbcdsp_init.c | 2 + > libavcodec/x86/sbrdsp_init.c | 2 + > libavcodec/x86/svq1enc_init.c | 2 + > libavcodec/x86/utvideodsp_init.c | 2 + > libavcodec/x86/v210enc_init.c | 2 + > libavcodec/x86/vc1dsp_init.c | 6 +- > libavcodec/x86/vorbisdsp_init.c | 2 + > libavcodec/x86/vp3dsp_init.c | 2 + > libavcodec/x86/vp6dsp_init.c | 2 + > libavfilter/x86/af_afir_init.c | 2 + > libavfilter/x86/af_anlmdn_init.c | 2 + > libavfilter/x86/af_volume_init.c | 2 + > libavfilter/x86/avf_showcqt_init.c | 2 + > libavfilter/x86/colorspacedsp_init.c | 6 +- > libavfilter/x86/vf_atadenoise_init.c | 8 +- > libavfilter/x86/vf_blend_init.c | 2 + > libavfilter/x86/vf_bwdif_init.c | 2 + > libavfilter/x86/vf_convolution_init.c | 2 + > libavfilter/x86/vf_framerate_init.c | 2 + > libavfilter/x86/vf_fspp_init.c | 2 + > libavfilter/x86/vf_gblur_init.c | 2 + > libavfilter/x86/vf_hflip_init.c | 2 + > libavfilter/x86/vf_limiter_init.c | 2 + > libavfilter/x86/vf_maskedclamp_init.c | 2 + > libavfilter/x86/vf_maskedmerge_init.c | 2 + > libavfilter/x86/vf_overlay_init.c | 2 + > libavfilter/x86/vf_pp7_init.c | 2 + > libavfilter/x86/vf_psnr_init.c | 2 + > libavfilter/x86/vf_removegrain_init.c | 2 + > libavfilter/x86/vf_ssim_init.c | 8 +- > libavfilter/x86/vf_stereo3d_init.c | 2 + > libavfilter/x86/vf_threshold_init.c | 2 + > libavfilter/x86/vf_tinterlace_init.c | 2 + > libavfilter/x86/vf_transpose_init.c | 2 + > libavfilter/x86/vf_v360_init.c | 2 + > libavfilter/x86/vf_w3fdif_init.c | 6 +- > libavfilter/x86/vf_yadif_init.c | 2 + > libavformat/rtmpproto.c | 24 +- > libavutil/x86/fixed_dsp_init.c | 2 + > libavutil/x86/float_dsp_init.c | 2 + > libavutil/x86/imgutils_init.c | 2 + > libavutil/x86/lls_init.c | 2 + > libavutil/x86/pixelutils_init.c | 2 + > libswresample/x86/audio_convert_init.c | 2 + > libswresample/x86/resample_init.c | 6 + > libswscale/x86/rgb2rgb.c | 2 + > libswscale/x86/swscale.c | 2 + > 87 files changed, 493 insertions(+), 255 deletions(-) > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".