[gtk+] broadway backend: allow building on OpenBSD



commit be9d1e0b3ba969c71db6e1b00be505bea425908b
Author: Antoine Jacoutot <ajacoutot gnome org>
Date:   Fri Apr 18 00:59:45 2014 +0200

    broadway backend: allow building on OpenBSD
    
    On OpenBSD shm_open(3) is part of libc and there is not librt, so add an
    according check.
    Check if we have posix_fallocate before using it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=728272

 configure.ac                      |    5 +++++
 gdk/broadway/Makefile.am          |    6 ++++--
 gdk/broadway/gdkbroadway-server.c |    2 ++
 3 files changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 462bcca..12544a3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -397,6 +397,11 @@ else
 fi
 AC_SUBST(DISABLE_ON_QUARTZ)
 
+AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""])
+AC_SUBST(SHM_LIBS)
+
+AC_CHECK_FUNCS(posix_fallocate)
+
 if test "x$enable_broadway_backend" = xyes; then
   GDK_BACKENDS="$GDK_BACKENDS broadway"
   cairo_backends="$cairo_backends cairo"
diff --git a/gdk/broadway/Makefile.am b/gdk/broadway/Makefile.am
index af1fa97..0f190b3 100644
--- a/gdk/broadway/Makefile.am
+++ b/gdk/broadway/Makefile.am
@@ -1,5 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 include $(top_srcdir)/Makefile.decl
+NULL =
 
 libgdkincludedir = $(includedir)/gtk-3.0/gdk
 libgdkbroadwayincludedir = $(includedir)/gtk-3.0/gdk/broadway
@@ -75,7 +76,8 @@ libgdk_broadway_la_SOURCES =          \
 
 if OS_UNIX
 libgdk_broadway_la_LIBADD = \
-       -lrt
+       $(SHM_LIBS)         \
+       $(NULL)
 endif
 
 broadwayd_SOURCES = \
@@ -91,7 +93,7 @@ broadwayd_SOURCES = \
 if OS_WIN32
 broadwayd_LDADD = $(GDK_DEP_LIBS) -lws2_32
 else
-broadwayd_LDADD = $(GDK_DEP_LIBS) -lrt
+broadwayd_LDADD = $(GDK_DEP_LIBS) @SHM_LIBS@
 endif
 
 MAINTAINERCLEANFILES = $(broadway_built_sources)
diff --git a/gdk/broadway/gdkbroadway-server.c b/gdk/broadway/gdkbroadway-server.c
index 55ab58b..dfbb19d 100644
--- a/gdk/broadway/gdkbroadway-server.c
+++ b/gdk/broadway/gdkbroadway-server.c
@@ -540,12 +540,14 @@ map_named_shm (char *name, gsize size)
   res = ftruncate (fd, size);
   g_assert (res != -1);
 
+#ifdef HAVE_POSIX_FALLOCATE
   res = posix_fallocate (fd, 0, size);
   if (res != 0)
     {
       shm_unlink (name);
       g_error ("Not enough shared memory for window surface");
     }
+#endif
   
   ptr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]