[gstreamer-bugs] [Bug 520160] New: [win32] autotools-based compilation with native compiler/linker

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Mon Mar 3 11:43:51 PST 2008


If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=520160

  GStreamer | gstreamer (core) | Ver: HEAD CVS
           Summary: [win32] autotools-based compilation with native
                    compiler/linker
           Product: GStreamer
           Version: HEAD CVS
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: bilboed at bilboed.com
         QAContact: gstreamer-bugs at lists.sourceforge.net
     GNOME version: Unspecified
   GNOME milestone: Unspecified


The current win32 build system for GStreamer doesn't allow you to configure
gstreamer to one's needs (ex : use the binary registry, or disable some
features) since it doesn't use autotools/configure to build  it.

After a few days of banging my head at it, it IS possible to build gstreamer on
win32 using autotools AND the native compiler/linker (cl.exe, link.exe), under
cygwin/mingw32 and producing native binaries (usable outside of
cygwin/mingw32/msys)... but is not trivial.

This bug-report is to aggregate all issues with the buildchain and find
solutions to those issues.

This bug is NOT about bugs in the code but about the build process, separate
bugs will be open regarding bugs in the code when using native compiler.

What doesn't work:
(1) libtool is confused about how to handle this toolchain (cygwin + native
compiler/linker):
 ** It doesn't know how to convert "-L/some/path/ -lalib" to
"c:/windowsy/some/path/libalib.lib" when linking, it currently converts it to
"/usr/bin/libalib.dll" (wrong path, wrong extension)
 ** It doesn't know how to convert .la dependencies into the location to the
proper .lib for the linker (used for example in libs/ and plugins/ for linking
against locally built libgstreamer/libgstbase).
 ** It doesn't know how to created a .def file for the linker (needed for
exporting the symbols) using the list of symbols to export contained in .exp.
 ** It doesn't know

(2) ar is broken when it comes to handling archives not in the current
directory, which means using libgstparse.la when linking gst/libgstreamer
doesn't work

(3) In order to produce debug builds, you need to add "-Zi" to both the CFLAGS
and linker parameter

(4) In order to produce portable binaries/libraries that don't depend against a
specific version of the CRT, you need to add the following flag to compiler and
linker:
 ** -MT (for non-debug builds)
 ** -MTd (for debug builds)

CFLAGS needed to compile the code:
* -DYY_NO_UNISTD_H : needed for libgstparse
* -D_CRT_SECURE_NO_WARNINGS : CRT has new "more secured" versions of several
basic functions, with this flag it will allow gstreamer to be built with the
common versions (more info here :
http://msdn2.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx)
* -DWIN32 -DHAVE_WIN32 -D_WINDOWS : Needed for gstreamer dependencies include
files.


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=520160.




More information about the Gstreamer-bugs mailing list