2004-04-13 David Schleef <ds@schleef.org>
+ * configure.ac: Changes to remove POSIXisms (mmap in this case)
+ and to build DLLs on Windows.
+ * gst/Makefile.am:
+ * gst/elements/gstfilesrc.c: (gst_filesrc_get),
+ (gst_filesrc_open_file):
+ * gst/schedulers/Makefile.am:
+
+2004-04-13 David Schleef <ds@schleef.org>
+
* gst/gstcaps.c: (gst_caps_structure_fixate_field_nearest_int),
(gst_caps_structure_fixate_field_nearest_double): Fix bug in
fixating lists.
AC_MSG_RESULT(no)
])
+dnl check for mmap
+AC_FUNC_MMAP()
+if test "$ac_cv_func_mmap_fixed_mapped" = "yes" ; then
+ GST_DISABLE_OMEGA_COTHREADS=no
+else
+ GST_DISABLE_OMEGA_COTHREADS=yes
+fi
+dnl for future --disabling, maybe. Right now, it depends on HAVE_MMAP
+AM_CONDITIONAL(GST_DISABLE_OMEGA_COTHREADS, test "x$GST_DISABLE_OMEGA_COTHREADS" = "xyes")
+
dnl check for makecontext and define HAVE_MAKECONTEXT if we have it
AC_CHECK_MCSC()
if test "$ac_cv_check_mcsc" = "yes"; then
fi
AM_CONDITIONAL(GST_GCOV_ENABLED, test x$enable_gcov = xyes)
+dnl Check for some compiler flags that optimize our code.
+dnl Only enable this for CVS builds for now
+if test "x$GST_CVS" = "xyes"; then
+ AS_COMPILER_FLAG(-fno-common,GST_INT_CFLAGS="$GST_INT_CFLAGS -fno-common",)
+fi
dnl Check for essential libraries first:
dnl ====================================
AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
-GST_PLUGIN_LDFLAGS="-module -avoid-version"
+GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex [_]*\(gst_\|Gst\|GST_\).*"
AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
lib_LTLIBRARIES = libgstreamer-@GST_MAJORMINOR@.la
+AS_LIBTOOL_LIB = libgstreamer-@GST_MAJORMINOR@
+if GST_DISABLE_OMEGA_COTHREADS
+noinst_LTLIBRARIES =
+else
noinst_LTLIBRARIES = libcothreads.la
+endif
if HAVE_CPU_I386
GSTARCH_SRCS = gstcpuid_i386.s
$(built_header_make) \
$(built_source_make)
# CLEANFILES is for files generated by make
-CLEANFILES = $(built_header_make) $(built_source_make)
+CLEANFILES = $(built_header_make) $(built_source_make) $(as_dll_cleanfiles)
# DISTCLEANFILES is for files generated by configure
DISTCLEANFILES = $(built_header_configure)
libgstreamer_@GST_MAJORMINOR@_la_LIBADD = \
$(LIBGST_LIBS) $(GST_PARSE_LIBADD) $(GST_REGISTRY_LIBADD) $(VALGRIND_LIBS)
libgstreamer_@GST_MAJORMINOR@_la_LDFLAGS = \
- @GST_LT_LDFLAGS@ -version-info @GST_LIBVERSION@
-
+ @GST_LT_LDFLAGS@ -version-info @GST_LIBVERSION@ \
+ -export-symbols-regex [_]*\(gst_\|Gst\|GST_\).* \
+ $(as_libtool_LDFLAGS)
libgstreamer_@GST_MAJORMINOR@includedir = $(includedir)/gstreamer-@GST_MAJORMINOR@/gst
gstarch.h \
cothreads.h
-# the compiler shoots cothreads.c in the head at -O6
+if GST_DISABLE_OMEGA_COTHREADS
+#libcothreads_la_SOURCES =
+#libcothreads_la_CFLAGS =
+else
libcothreads_la_SOURCES = cothreads.c
libcothreads_la_CFLAGS = $(libgstreamer_@GST_MAJORMINOR@_la_CFLAGS)
+endif
gstmarshal.h: gstmarshal.list
--vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \
$^ > gstenumtypes.c
-EXTRA_DIST = ROADMAP
+noinst_DATA = $(as_libtool_noinst_DATA_files)
+
+EXTRA_DIST = ROADMAP $(as_libtool_EXTRA_DIST)
+
+install-data-local: as-libtool-install-data-local
+
+uninstall-local: as-libtool-uninstall-local
+
+include $(top_srcdir)/common/as-libtool.mak
+
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
+#ifdef HAVE_MMAP
#include <sys/mman.h>
+#endif
#include <errno.h>
#include <string.h>
}
}
+#ifdef HAVE_MMAP
static void
gst_filesrc_free_parent_mmap (GstBuffer * buf)
{
GST_BUFFER_DATA (buf) = NULL;
}
+#endif
+#ifdef HAVE_MMAP
static GstBuffer *
gst_filesrc_map_region (GstFileSrc * src, off_t offset, size_t size)
{
return buf;
}
+#endif
+#ifdef HAVE_MMAP
static GstBuffer *
gst_filesrc_map_small_region (GstFileSrc * src, off_t offset, size_t size)
{
return gst_filesrc_map_region (src, offset, size);
}
+#endif
+#ifdef HAVE_MMAP
/**
* gst_filesrc_get_mmap:
* @pad: #GstPad to push a buffer from
src->curoffset += GST_BUFFER_SIZE (buf);
return buf;
}
+#endif
static GstBuffer *
gst_filesrc_get_read (GstFileSrc * src)
return GST_DATA (gst_event_new (GST_EVENT_EOS));
}
}
-
+#ifdef HAVE_MMAP
if (src->using_mmap) {
return GST_DATA (gst_filesrc_get_mmap (src));
} else {
return GST_DATA (gst_filesrc_get_read (src));
}
+#else
+ return GST_DATA (gst_filesrc_get_read (src));
+#endif
}
/* TRUE if the filesize of the file was updated */
/* find the file length */
src->filelen = stat_results.st_size;
+ src->using_mmap = FALSE;
+#ifdef HAVE_MMAP
/* allocate the first mmap'd region */
src->mapbuf = gst_filesrc_map_region (src, 0, src->mapsize);
- if (src->mapbuf == NULL) {
- src->using_mmap = FALSE;
- } else {
+ if (src->mapbuf != NULL) {
src->using_mmap = TRUE;
}
+#endif
+
src->curoffset = 0;
plugindir = $(libdir)/gstreamer-@GST_MAJORMINOR@
-plugin_LTLIBRARIES = \
+if GST_DISABLE_OMEGA_COTHREADS
+omegaschedulers =
+else
+omegaschedulers = \
libgstbasicomegascheduler.la \
+ libgstentryomegascheduler.la \
+ libgstoptomegascheduler.la
+endif
+
+plugin_LTLIBRARIES = \
+ $(omegaschedulers) \
libgstbasicgthreadscheduler.la \
libgstentrygthreadscheduler.la \
- libgstentryomegascheduler.la \
libgstoptscheduler.la \
- libgstoptomegascheduler.la \
libgstoptgthreadscheduler.la
+if GST_DISABLE_OMEGA_COTHREADS
+else
libgstbasicomegascheduler_la_SOURCES = gstbasicscheduler.c
libgstbasicomegascheduler_la_CFLAGS = $(GST_CFLAGS) -D_COTHREADS_OMEGA
libgstbasicomegascheduler_la_LIBADD = ../libcothreads.la
libgstbasicomegascheduler_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+endif
libgstbasicgthreadscheduler_la_SOURCES = gstbasicscheduler.c
libgstbasicgthreadscheduler_la_CFLAGS = $(GST_CFLAGS) -D_COTHREADS_GTHREAD
libgstentrygthreadscheduler_la_CFLAGS = $(GST_CFLAGS) -D_COTHREADS_GTHREAD
libgstentrygthreadscheduler_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+if GST_DISABLE_OMEGA_COTHREADS
+else
libgstentryomegascheduler_la_SOURCES = entryscheduler.c
libgstentryomegascheduler_la_CFLAGS = $(GST_CFLAGS) -D_COTHREADS_OMEGA
libgstentryomegascheduler_la_LIBADD = ../libcothreads.la
libgstentryomegascheduler_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+endif
libgstoptscheduler_la_SOURCES = gstoptimalscheduler.c
libgstoptscheduler_la_CFLAGS = $(GST_CFLAGS)
libgstoptscheduler_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+if GST_DISABLE_OMEGA_COTHREADS
+else
libgstoptomegascheduler_la_SOURCES = gstoptimalscheduler.c
libgstoptomegascheduler_la_CFLAGS = $(GST_CFLAGS) -D_COTHREADS_OMEGA -DUSE_COTHREADS
libgstoptomegascheduler_la_LIBADD = ../libcothreads.la
libgstoptomegascheduler_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+endif
libgstoptgthreadscheduler_la_SOURCES = gstoptimalscheduler.c
libgstoptgthreadscheduler_la_CFLAGS = $(GST_CFLAGS) -D_COTHREADS_GTHREAD -DUSE_COTHREADS
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
+#ifdef HAVE_MMAP
#include <sys/mman.h>
+#endif
#include <errno.h>
#include <string.h>
}
}
+#ifdef HAVE_MMAP
static void
gst_filesrc_free_parent_mmap (GstBuffer * buf)
{
GST_BUFFER_DATA (buf) = NULL;
}
+#endif
+#ifdef HAVE_MMAP
static GstBuffer *
gst_filesrc_map_region (GstFileSrc * src, off_t offset, size_t size)
{
return buf;
}
+#endif
+#ifdef HAVE_MMAP
static GstBuffer *
gst_filesrc_map_small_region (GstFileSrc * src, off_t offset, size_t size)
{
return gst_filesrc_map_region (src, offset, size);
}
+#endif
+#ifdef HAVE_MMAP
/**
* gst_filesrc_get_mmap:
* @pad: #GstPad to push a buffer from
src->curoffset += GST_BUFFER_SIZE (buf);
return buf;
}
+#endif
static GstBuffer *
gst_filesrc_get_read (GstFileSrc * src)
return GST_DATA (gst_event_new (GST_EVENT_EOS));
}
}
-
+#ifdef HAVE_MMAP
if (src->using_mmap) {
return GST_DATA (gst_filesrc_get_mmap (src));
} else {
return GST_DATA (gst_filesrc_get_read (src));
}
+#else
+ return GST_DATA (gst_filesrc_get_read (src));
+#endif
}
/* TRUE if the filesize of the file was updated */
/* find the file length */
src->filelen = stat_results.st_size;
+ src->using_mmap = FALSE;
+#ifdef HAVE_MMAP
/* allocate the first mmap'd region */
src->mapbuf = gst_filesrc_map_region (src, 0, src->mapsize);
- if (src->mapbuf == NULL) {
- src->using_mmap = FALSE;
- } else {
+ if (src->mapbuf != NULL) {
src->using_mmap = TRUE;
}
+#endif
+
src->curoffset = 0;