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.

Aaron
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to