On Thu, Apr 13, 2017 at 10:09 PM, Aaron Levinson <alevi...@aracnet.com> wrote: > On 4/13/2017 3:55 AM, Hendrik Leppkes wrote: >> >> On Thu, Apr 13, 2017 at 12:39 PM, Aaron Levinson <alevi...@aracnet.com> >> wrote: >>> >>> On 4/13/2017 12:36 AM, Hendrik Leppkes wrote: >>> diff --git a/configure b/configure >>> index a383bf2..9a06437 100755 >>> --- a/configure >>> +++ b/configure >>> @@ -4843,8 +4843,6 @@ case $target_os in >>> else >>> target_os=mingw32 >>> fi >>> - decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 >>> -loleaut32" >>> - decklink_indev_extralibs="$decklink_indev_extralibs -lole32 >>> -loleaut32" >>> LIBTARGET=i386 >>> if enabled x86_64; then >>> LIBTARGET="i386:x86-64" >>> @@ -5946,6 +5944,19 @@ if ! disabled sdl2; then >>> fi >>> enabled sdl2 && enable sdl && add_cflags $sdl2_cflags && add_extralibs >>> $sdl2_libs >>> >>> +if enabled decklink; then >>> + case $target_os in >>> + mingw32*|mingw64*) >>> + decklink_outdev_extralibs="$decklink_outdev_extralibs >>> -lole32 -loleaut32" >>> + decklink_indev_extralibs="$decklink_indev_extralibs -lole32 >>> -loleaut32" >>> + ;; >>> + win32|win64) >>> + decklink_outdev_extralibs="-lole32 -loleaut32" >>> + decklink_indev_extralibs="-lole32 -loleaut32" >>> + ;; >>> + esac >>> +fi >>> + >> >> >> Whats in the extralibs before this block that you need to clear out in >> the msvc case? >> Maybe that part should just be set conditionally so we can unify this, >> and don't set something we need to strip out again after. >> >> - Hendrik > > > decklink_outdev_extralibs and decklink_indev_extralibs are declared as > follows earlier in configure: > > decklink_indev_extralibs="-lstdc++" > decklink_outdev_extralibs="-lstdc++" > > This is done in the standard section where > <library>_<indev|outdev>_<extralibs|deps> can be found. > > libstdc++ is needed when building the Decklink source files with gcc/g++ > because of, at a minimum, the use of STL in one of the .cpp files. > > For builds targeting Windows, -lole32 and -loleaut32 are also needed because > of the use of COM. So, that explains why -lole32 and -loleaut32 are added > for both mingw and Windows. > > Finally, when building with the Microsoft compiler (cl.exe), libstdc++ is > not needed and actually can't be found. The C/C++ run-time is included by > default in some form when building with cl.exe unless the -nodefaultlib > linker option is used. So, that explains why it replaces the extralibs > variables with just -lole32 and -loleaut32 for Windows builds. Note that > win32 to specified as the target_os when an msvc build is done, and it may > be the only case when target_os is set to win32 unless the user manually > sets it as an option when invoking configure. > > -lole32 and -loleaut32 is likely relevant for both cygwin and the Intel > compiler, but it should be a simple matter to add those later if anyone uses > those for building. The elimination of -lstdc++ may also be relevant for > the Intel compiler but probably only when using the Intel compiler on > Windows. > > Anyway, I don't think an approach that moves -lstdc++ into the above if > block is any better or worse than the patch in its current form, and the > patch in its current form results in fewer changes to configure than a patch > that moves -lstdc++ around. >
You could add -lstdc++ to the msvc flag filter (ie. msvc_common_flags), since its never needed, and may be added by more things in the future, that would solve all of those neatly. - Hendrik _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel