Package: freeglut
Severity: important
Tags: patch

Hi,

freeglut fails to build on GNU/kfreeBSD due to some missing checks for
this platform in the source code. Please find attached a patch to do
that. It would be nice if you could add it in the next upload.

Thanks in advance,
Aurelien

-- System Information:
Debian Release: testing/unstable
Architecture: kfreebsd-i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: GNU/kFreeBSD 5.4-1-686
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Status: in BTS
Author: aurel32

diff -u freeglut-2.4.0/debian/control freeglut-2.4.0/debian/control
--- freeglut-2.4.0/debian/control
+++ freeglut-2.4.0/debian/control
@@ -2,7 +2,7 @@
 Section: graphics
 Priority: optional
 Maintainer: Jamie Wilkinson <[EMAIL PROTECTED]>
-Build-Depends: debhelper (>= 4.0.0), libx11-dev, libxt-dev, libxext-dev, xlibmesa-gl-dev | mesag-dev | libgl-dev, libglu1-xorg-dev | xlibmesa-glu-dev | libglu-dev, automake1.8, autoconf, libtool
+Build-Depends: debhelper (>= 4.0.0), libx11-dev, libxt-dev, libxext-dev, xlibmesa-gl-dev | mesag-dev | libgl-dev, libglu1-xorg-dev | xlibmesa-glu-dev | libglu-dev, libusbhid-dev [kfreebsd-i386], automake1.8, autoconf, libtool
 Standards-Version: 3.6.1
 
 Package: freeglut3
--- freeglut-2.4.0.orig/src/Makefile.am
+++ freeglut-2.4.0/src/Makefile.am
@@ -41,7 +41,7 @@
 #
 # Additional linker flags
 #	 
[EMAIL PROTECTED]@_la_LIBADD = $(LIBM) $(X_LIBS) -lGL -lGLU -lXext -lX11 $(LIBXXF86VM)
[EMAIL PROTECTED]@_la_LIBADD = $(LIBM) $(X_LIBS) -lGL -lGLU -lXext -lX11 $(LIBXXF86VM) $(LIBUSBHID)
 [EMAIL PROTECTED]@_la_LDFLAGS = -version-info 11:0:8
 [EMAIL PROTECTED]@_la_CFLAGS = $(X_CFLAGS)
 
--- freeglut-2.4.0.orig/src/freeglut_joystick.c
+++ freeglut-2.4.0/src/freeglut_joystick.c
@@ -76,11 +76,11 @@
 #        include <fcntl.h>
 #    endif
 #    include <errno.h>
-#    if defined(__FreeBSD__) || defined(__NetBSD__)
+#    if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
 /* XXX The below hack is done until freeglut's autoconf is updated. */
 #        define HAVE_USB_JS    1
 
-#        if defined(__FreeBSD__) && __FreeBSD_version >= 500000
+#        if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && (__FreeBSD_version >= 500000 || __FreeBSD_kernel_version >= 500000)
 #            include <sys/joystick.h>
 #        else
 /*
@@ -131,7 +131,7 @@
 
 /* BSD defines from "jsBSD.cxx" around lines 42-270 */
 
-#if defined(__NetBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 
 #    ifdef HAVE_USB_JS
 #        if defined(__NetBSD__)
@@ -142,13 +142,11 @@
 #            else
 #                include <usb.h>
 #            endif
-#        elif defined(__FreeBSD__)
-#            if __FreeBSD_version < 500000
-#                include <libusbhid.h>
-#            else
-/* XXX The below hack is done until freeglut's autoconf is updated. */
-#                define HAVE_USBHID_H 1
+#        elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#            ifdef HAVE_USBHID_H
 #                include <usbhid.h>
+#            else
+#                include <libusbhid.h>
 #            endif
 #        endif
 #        include <dev/usb/usb.h>
@@ -393,7 +391,7 @@
 
 
 #if TARGET_HOST_UNIX_X11
-#   if defined(__FreeBSD__) || defined(__NetBSD__)
+#   if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
        struct os_specific_s *os;
 #   endif
 
@@ -461,7 +459,7 @@
     int status;
 #endif
 
-#if defined(__FreeBSD__) || defined(__NetBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
     int len;
 #endif
 
@@ -598,7 +596,7 @@
 #endif
 
 #if TARGET_HOST_UNIX_X11
-#    if defined(__FreeBSD__) || defined(__NetBSD__)
+#    if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
     if ( joy->os->is_analog )
     {
         int status = read ( joy->os->fd, &joy->os->ajs, sizeof(joy->os->ajs) );
@@ -656,9 +654,9 @@
                if (usage > 0 && usage < _JS_MAX_BUTTONS + 1)
                {
                    if (d)
-                       joy->os->cache_buttons |= (1 << usage - 1);
+                       joy->os->cache_buttons |= (1 << (usage - 1));
                    else
-                       joy->os->cache_buttons &= ~(1 << usage - 1);
+                       joy->os->cache_buttons &= ~(1 << (usage - 1));
                }
             }
         }
@@ -744,7 +742,7 @@
     }
 
     if ( buttons )
-#        if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#        if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
         *buttons = ( joy->js.b1 ? 1 : 0 ) | ( joy->js.b2 ? 2 : 0 );  /* XXX Should not be here -- BSD is handled earlier */
 #        else
         *buttons = joy->js.buttons;
@@ -1054,12 +1052,12 @@
     CFTypeRef topLevelElement;
 #endif
 #if TARGET_HOST_UNIX_X11
-#    if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#    if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
        char *cp;
 #    endif
 #    ifdef JS_NEW
        unsigned char u;
-#    else
+#    elif defined(__linux__)
        int counter;
 #    endif
 #endif
@@ -1285,7 +1283,7 @@
 #endif
 
 #if TARGET_HOST_UNIX_X11
-#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
     for( i = 0; i < _JS_MAX_AXES; i++ )
         joy->os->cache_axes[ i ] = 0.0f;
 
@@ -1549,7 +1547,7 @@
 #endif
 
 #if TARGET_HOST_UNIX_X11
-#    if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#    if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
     fgJoystick[ ident ]->id = ident;
     fgJoystick[ ident ]->error = GL_FALSE;
 
@@ -1619,7 +1617,7 @@
 #endif
 
 #if TARGET_HOST_UNIX_X11
-#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
             if( fgJoystick[ident]->os )
             {
                 if( ! fgJoystick[ ident ]->error )
only in patch2:
unchanged:
--- freeglut-2.4.0.orig/configure.ac
+++ freeglut-2.4.0/configure.ac
@@ -24,9 +24,13 @@
              [$X_LIBS -lXext -lX11])
 AC_SUBST([LIBXXF86VM])
 
+AC_CHECK_LIB([usbhid], [hid_init],
+             [LIBUSBHID=-lusbhid], [LIBUSBHID=])
+AC_SUBST(LIBUSBHID)
+
 # Checks for header files.
 AC_HEADER_STDC
-AC_CHECK_HEADERS([GL/gl.h GL/glu.h GL/glx.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h])
+AC_CHECK_HEADERS([GL/gl.h GL/glu.h GL/glx.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h usbhid.h libusbhid.h])
 AC_HEADER_TIME
 
 save_CFLAGS="$CFLAGS"

Reply via email to