From 726bbbf7c62f63d43294cb4bb698849f37abfc6d Mon Sep 17 00:00:00 2001 From: David Schleef Date: Wed, 14 Apr 2004 01:38:27 +0000 Subject: [PATCH] configure.ac: Disable various code when compiling for MinGW. Original commit message from CVS: * configure.ac: Disable various code when compiling for MinGW. * gst/elements/Makefile.am: * gst/elements/gstelements.c: * gst/elements/gstfdsrc.c: (gst_fdsrc_get): * gst/elements/gstfilesrc.c: (gst_filesrc_init), (gst_filesrc_get): * gst/registries/gstxmlregistry.c: (make_dir): --- ChangeLog | 9 +++++++++ configure.ac | 9 +++++++++ gst/elements/Makefile.am | 12 +++++++++++- gst/elements/gstelements.c | 2 ++ gst/elements/gstfdsrc.c | 5 +++++ gst/elements/gstfilesrc.c | 2 ++ gst/registries/gstxmlregistry.c | 10 +++++++--- plugins/elements/Makefile.am | 12 +++++++++++- plugins/elements/gstelements.c | 2 ++ plugins/elements/gstfdsrc.c | 5 +++++ plugins/elements/gstfilesrc.c | 2 ++ 11 files changed, 65 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8141982..d86e18e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2004-04-13 David Schleef + * configure.ac: Disable various code when compiling for MinGW. + * gst/elements/Makefile.am: + * gst/elements/gstelements.c: + * gst/elements/gstfdsrc.c: (gst_fdsrc_get): + * gst/elements/gstfilesrc.c: (gst_filesrc_init), (gst_filesrc_get): + * gst/registries/gstxmlregistry.c: (make_dir): + +2004-04-13 David Schleef + * gst/Makefile.am: * gst/gstcpu.c: (gst_cpuid_i386): Convert asm source into inline assembly. diff --git a/configure.ac b/configure.ac index f25db12..bd3fc92 100644 --- a/configure.ac +++ b/configure.ac @@ -233,6 +233,15 @@ if test "x$GST_CVS" = "xyes"; then AS_COMPILER_FLAG(-fno-common,GST_INT_CFLAGS="$GST_INT_CFLAGS -fno-common",) fi +dnl HAVE_WIN32 currently means "disable POSIXisms". +case "$host" in + *-*-mingw*) + AC_DEFINE_UNQUOTED(HAVE_WIN32, 1, [Defined if compiling for Windows]) + ;; + *) + ;; +esac + dnl Check for essential libraries first: dnl ==================================== diff --git a/gst/elements/Makefile.am b/gst/elements/Makefile.am index bdab0ec..ffb4078 100644 --- a/gst/elements/Makefile.am +++ b/gst/elements/Makefile.am @@ -8,6 +8,16 @@ plugindir = $(libdir)/gstreamer-@GST_MAJORMINOR@ plugin_LTLIBRARIES = libgstelements.la +# FIXME: +# Disable multifilesrc on Windows, cause it uses mmap excessively +# and I don't feel like fixing it yet. See also the disablement +# in gstelements.c. +if AS_LIBTOOL_WIN32 +multifilesrc = +else +multifilesrc = gstmultifilesrc.c +endif + libgstelements_la_DEPENDENCIES = ../libgstreamer-@GST_MAJORMINOR@.la libgstelements_la_SOURCES = \ gstaggregator.c \ @@ -21,7 +31,7 @@ libgstelements_la_SOURCES = \ gstfdsrc.c \ gstidentity.c \ gstmd5sink.c \ - gstmultifilesrc.c \ + $(multifilesrc) \ gstpipefilter.c \ gstshaper.c \ gststatistics.c \ diff --git a/gst/elements/gstelements.c b/gst/elements/gstelements.c index 8c9af2f..60f351f 100644 --- a/gst/elements/gstelements.c +++ b/gst/elements/gstelements.c @@ -65,7 +65,9 @@ static struct _elements_entry _elements[] = { {"filesink", GST_RANK_NONE, gst_filesink_get_type}, {"identity", GST_RANK_NONE, gst_identity_get_type}, {"md5sink", GST_RANK_NONE, gst_md5sink_get_type}, +#ifndef HAVE_WIN32 {"multifilesrc", GST_RANK_NONE, gst_multifilesrc_get_type}, +#endif {"pipefilter", GST_RANK_NONE, gst_pipefilter_get_type}, {"shaper", GST_RANK_NONE, gst_shaper_get_type}, {"statistics", GST_RANK_NONE, gst_statistics_get_type}, diff --git a/gst/elements/gstfdsrc.c b/gst/elements/gstfdsrc.c index 529b97b..ff884f5 100644 --- a/gst/elements/gstfdsrc.c +++ b/gst/elements/gstfdsrc.c @@ -185,15 +185,19 @@ gst_fdsrc_get (GstPad * pad) GstFdSrc *src; GstBuffer *buf; glong readbytes; + +#ifndef HAVE_WIN32 fd_set readfds; struct timeval t, *tp = &t; gint retval; +#endif src = GST_FDSRC (gst_pad_get_parent (pad)); /* create the buffer */ buf = gst_buffer_new_and_alloc (src->blocksize); +#ifndef HAVE_WIN32 FD_ZERO (&readfds); FD_SET (src->fd, &readfds); @@ -216,6 +220,7 @@ gst_fdsrc_get (GstPad * pad) gst_element_set_eos (GST_ELEMENT (src)); return GST_DATA (gst_event_new (GST_EVENT_EOS)); } +#endif do { readbytes = read (src->fd, GST_BUFFER_DATA (buf), src->blocksize); diff --git a/gst/elements/gstfilesrc.c b/gst/elements/gstfilesrc.c index 4ee66f1..eac08fa 100644 --- a/gst/elements/gstfilesrc.c +++ b/gst/elements/gstfilesrc.c @@ -230,7 +230,9 @@ gst_filesrc_init (GstFileSrc * src) gst_pad_set_formats_function (src->srcpad, gst_filesrc_get_formats); gst_element_add_pad (GST_ELEMENT (src), src->srcpad); +#ifdef HAVE_MMAP src->pagesize = getpagesize (); +#endif src->filename = NULL; src->fd = 0; diff --git a/gst/registries/gstxmlregistry.c b/gst/registries/gstxmlregistry.c index d7dd9ec..d08bc4e 100644 --- a/gst/registries/gstxmlregistry.c +++ b/gst/registries/gstxmlregistry.c @@ -301,7 +301,7 @@ get_time (const char *path, gboolean * is_dir) } /* same as 0755 */ -#define dirmode \ +#define DIRMODE \ (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) static gboolean @@ -316,15 +316,19 @@ make_dir (gchar * filename) dirname = g_strndup (filename, strrchr (filename, '/') - filename); if (stat (dirname, &dirstat) == -1 && errno == ENOENT) { - if (mkdir (dirname, dirmode) != 0) { +#ifndef HAVE_WIN32 + if (mkdir (dirname, DIRMODE) != 0) { if (make_dir (dirname) != TRUE) { g_free (dirname); return FALSE; } else { - if (mkdir (dirname, dirmode) != 0) + if (mkdir (dirname, DIRMODE) != 0) return FALSE; } } +#else + return FALSE; +#endif } g_free (dirname); diff --git a/plugins/elements/Makefile.am b/plugins/elements/Makefile.am index bdab0ec..ffb4078 100644 --- a/plugins/elements/Makefile.am +++ b/plugins/elements/Makefile.am @@ -8,6 +8,16 @@ plugindir = $(libdir)/gstreamer-@GST_MAJORMINOR@ plugin_LTLIBRARIES = libgstelements.la +# FIXME: +# Disable multifilesrc on Windows, cause it uses mmap excessively +# and I don't feel like fixing it yet. See also the disablement +# in gstelements.c. +if AS_LIBTOOL_WIN32 +multifilesrc = +else +multifilesrc = gstmultifilesrc.c +endif + libgstelements_la_DEPENDENCIES = ../libgstreamer-@GST_MAJORMINOR@.la libgstelements_la_SOURCES = \ gstaggregator.c \ @@ -21,7 +31,7 @@ libgstelements_la_SOURCES = \ gstfdsrc.c \ gstidentity.c \ gstmd5sink.c \ - gstmultifilesrc.c \ + $(multifilesrc) \ gstpipefilter.c \ gstshaper.c \ gststatistics.c \ diff --git a/plugins/elements/gstelements.c b/plugins/elements/gstelements.c index 8c9af2f..60f351f 100644 --- a/plugins/elements/gstelements.c +++ b/plugins/elements/gstelements.c @@ -65,7 +65,9 @@ static struct _elements_entry _elements[] = { {"filesink", GST_RANK_NONE, gst_filesink_get_type}, {"identity", GST_RANK_NONE, gst_identity_get_type}, {"md5sink", GST_RANK_NONE, gst_md5sink_get_type}, +#ifndef HAVE_WIN32 {"multifilesrc", GST_RANK_NONE, gst_multifilesrc_get_type}, +#endif {"pipefilter", GST_RANK_NONE, gst_pipefilter_get_type}, {"shaper", GST_RANK_NONE, gst_shaper_get_type}, {"statistics", GST_RANK_NONE, gst_statistics_get_type}, diff --git a/plugins/elements/gstfdsrc.c b/plugins/elements/gstfdsrc.c index 529b97b..ff884f5 100644 --- a/plugins/elements/gstfdsrc.c +++ b/plugins/elements/gstfdsrc.c @@ -185,15 +185,19 @@ gst_fdsrc_get (GstPad * pad) GstFdSrc *src; GstBuffer *buf; glong readbytes; + +#ifndef HAVE_WIN32 fd_set readfds; struct timeval t, *tp = &t; gint retval; +#endif src = GST_FDSRC (gst_pad_get_parent (pad)); /* create the buffer */ buf = gst_buffer_new_and_alloc (src->blocksize); +#ifndef HAVE_WIN32 FD_ZERO (&readfds); FD_SET (src->fd, &readfds); @@ -216,6 +220,7 @@ gst_fdsrc_get (GstPad * pad) gst_element_set_eos (GST_ELEMENT (src)); return GST_DATA (gst_event_new (GST_EVENT_EOS)); } +#endif do { readbytes = read (src->fd, GST_BUFFER_DATA (buf), src->blocksize); diff --git a/plugins/elements/gstfilesrc.c b/plugins/elements/gstfilesrc.c index 4ee66f1..eac08fa 100644 --- a/plugins/elements/gstfilesrc.c +++ b/plugins/elements/gstfilesrc.c @@ -230,7 +230,9 @@ gst_filesrc_init (GstFileSrc * src) gst_pad_set_formats_function (src->srcpad, gst_filesrc_get_formats); gst_element_add_pad (GST_ELEMENT (src), src->srcpad); +#ifdef HAVE_MMAP src->pagesize = getpagesize (); +#endif src->filename = NULL; src->fd = 0; -- 2.7.4