Package: openni2
Version: 2.2.0.33+dfsg-4
Severity: wishlist
Tags: patch
User: debian-...@lists.debian.org
Usertag: arm64

Currently openni2 builds only for armhf and x86. With the attached
patch, a generic Linux plaform is defined. This should work with any
reasonable Linux architecture. I've tested builds on arm64.

Riku
diff -urN openni2-2.2.0.33+dfsg.old/Include/Linux-generic/OniPlatformLinux-generic.h openni2-2.2.0.33+dfsg/Include/Linux-generic/OniPlatformLinux-generic.h
--- openni2-2.2.0.33+dfsg.old/Include/Linux-generic/OniPlatformLinux-generic.h	1970-01-01 02:00:00.000000000 +0200
+++ openni2-2.2.0.33+dfsg/Include/Linux-generic/OniPlatformLinux-generic.h	2015-10-06 15:58:43.000000000 +0300
@@ -0,0 +1,36 @@
+/*****************************************************************************
+*                                                                            *
+*  OpenNI 2.x Alpha                                                          *
+*  Copyright (C) 2012 PrimeSense Ltd.                                        *
+*                                                                            *
+*  This file is part of OpenNI.                                              *
+*                                                                            *
+*  Licensed under the Apache License, Version 2.0 (the "License");           *
+*  you may not use this file except in compliance with the License.          *
+*  You may obtain a copy of the License at                                   *
+*                                                                            *
+*      http://www.apache.org/licenses/LICENSE-2.0                            *
+*                                                                            *
+*  Unless required by applicable law or agreed to in writing, software       *
+*  distributed under the License is distributed on an "AS IS" BASIS,         *
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  *
+*  See the License for the specific language governing permissions and       *
+*  limitations under the License.                                            *
+*                                                                            *
+*****************************************************************************/
+#ifndef _ONI_PLATFORM_LINUX_GENERIC_H_
+#define _ONI_PLATFORM_LINUX_GENERIC_H_
+
+// Start with Linux-x86, and override what's different
+#include "../Linux-x86/OniPlatformLinux-x86.h"
+
+//---------------------------------------------------------------------------
+// Platform Basic Definition
+//---------------------------------------------------------------------------
+#undef ONI_PLATFORM
+#undef ONI_PLATFORM_STRING
+#define ONI_PLATFORM ONI_PLATFORM_LINUX_GENERIC
+#define ONI_PLATFORM_STRING "Linux-generic"
+
+#endif //_ONI_PLATFORM_LINUX_GENERIC_H_
+
diff -urN openni2-2.2.0.33+dfsg.old/Include/OniPlatform.h openni2-2.2.0.33+dfsg/Include/OniPlatform.h
--- openni2-2.2.0.33+dfsg.old/Include/OniPlatform.h	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/Include/OniPlatform.h	2015-10-06 16:00:13.000000000 +0300
@@ -27,6 +27,7 @@
 #define ONI_PLATFORM_LINUX_ARM 3
 #define ONI_PLATFORM_MACOSX 4
 #define ONI_PLATFORM_ANDROID_ARM 5
+#define ONI_PLATFORM_LINUX_GENERIC 6
 
 #if (defined _WIN32)
 #	ifndef RC_INVOKED
@@ -41,6 +42,8 @@
 #	include "Linux-x86/OniPlatformLinux-x86.h"
 #elif (__linux__ && __arm__)
 #	include "Linux-Arm/OniPlatformLinux-Arm.h"
+#elif (__linux__)
+#	include "Linux-generic/OniPlatformLinux-generic.h"
 #elif _ARC
 #	include "ARC/OniPlaformARC.h"
 #elif (__APPLE__)
diff -urN openni2-2.2.0.33+dfsg.old/Source/Drivers/PS1080/Sensor/XnDeviceSensorInit.h openni2-2.2.0.33+dfsg/Source/Drivers/PS1080/Sensor/XnDeviceSensorInit.h
--- openni2-2.2.0.33+dfsg.old/Source/Drivers/PS1080/Sensor/XnDeviceSensorInit.h	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/Source/Drivers/PS1080/Sensor/XnDeviceSensorInit.h	2015-10-06 16:03:01.000000000 +0300
@@ -57,7 +57,7 @@
 
 	#define XN_SENSOR_USB_MISC_BUFFER_SIZE	0x1000
 	#define XN_SENSOR_USB_MISC_BUFFERS		1
-#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
+#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM_LINUX_GENERIC)
 	#define XN_SENSOR_USB_IMAGE_BUFFER_SIZE_MULTIPLIER_ISO				32
 	#define XN_SENSOR_USB_IMAGE_BUFFER_SIZE_MULTIPLIER_BULK				40
 	#define XN_SENSOR_USB_IMAGE_BUFFER_SIZE_MULTIPLIER_LOWBAND_ISO		16
diff -urN openni2-2.2.0.33+dfsg.old/Source/Drivers/PSLink/LinkProtoLib/XnClientUSBInDataEndpoint.cpp openni2-2.2.0.33+dfsg/Source/Drivers/PSLink/LinkProtoLib/XnClientUSBInDataEndpoint.cpp
--- openni2-2.2.0.33+dfsg.old/Source/Drivers/PSLink/LinkProtoLib/XnClientUSBInDataEndpoint.cpp	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/Source/Drivers/PSLink/LinkProtoLib/XnClientUSBInDataEndpoint.cpp	2015-10-06 16:06:15.000000000 +0300
@@ -16,7 +16,7 @@
 	const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_BUFFER_NUM_PACKETS_BULK = 120;
 	const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_NUM_BUFFERS_BULK = 8;
 	const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_TIMEOUT_BULK = 1000;
-#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
+#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM_LINUX_GENERIC )
 	const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_BUFFER_NUM_PACKETS_ISO = 32;
 	const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_NUM_BUFFERS_ISO = 16;
 	const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_TIMEOUT_ISO = 100;
diff -urN openni2-2.2.0.33+dfsg.old/Source/Drivers/PSLink/PS1200Device.cpp openni2-2.2.0.33+dfsg/Source/Drivers/PSLink/PS1200Device.cpp
--- openni2-2.2.0.33+dfsg.old/Source/Drivers/PSLink/PS1200Device.cpp	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/Source/Drivers/PSLink/PS1200Device.cpp	2015-10-06 16:04:19.000000000 +0300
@@ -43,7 +43,7 @@
 	// On all platforms other than Windows, prefer BULK
 	nRetVal = SetUsbAltInterface(0);
 	XN_IS_STATUS_OK_LOG_ERROR("Switch to ISO", nRetVal);
-#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
+#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM_LINUX_GENERIC)
 	// On all platforms other than Windows, prefer BULK
 	nRetVal = SetUsbAltInterface(1);
 	XN_IS_STATUS_OK_LOG_ERROR("Switch to BULK", nRetVal);
diff -urN openni2-2.2.0.33+dfsg.old/Source/Tools/NiViewer/NiViewer.cpp openni2-2.2.0.33+dfsg/Source/Tools/NiViewer/NiViewer.cpp
--- openni2-2.2.0.33+dfsg.old/Source/Tools/NiViewer/NiViewer.cpp	2015-10-06 16:52:52.000000000 +0300
+++ openni2-2.2.0.33+dfsg/Source/Tools/NiViewer/NiViewer.cpp	2015-10-06 16:08:39.000000000 +0300
@@ -89,7 +89,8 @@
 #if (ONI_PLATFORM == ONI_PLATFORM_WIN32)
 	#include <conio.h>
 	#include <direct.h>	
-#elif (ONI_PLATFORM == ONI_PLATFORM_LINUX_X86 || ONI_PLATFORM == ONI_PLATFORM_LINUX_ARM || ONI_PLATFORM == ONI_PLATFORM_MACOSX)
+#elif (ONI_PLATFORM == ONI_PLATFORM_LINUX_X86 || ONI_PLATFORM == ONI_PLATFORM_LINUX_ARM \
+    || ONI_PLATFORM == ONI_PLATFORM_MACOSX ||ONI_PLATFORM == ONI_PLATFORM_LINUX_GENERIC)
 	#define _getch() getchar()
 #endif
 
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/BuildSystem/CommonDefs.mak openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/BuildSystem/CommonDefs.mak
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/BuildSystem/CommonDefs.mak	2015-10-06 16:52:52.000000000 +0300
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/BuildSystem/CommonDefs.mak	2015-10-05 16:29:38.000000000 +0300
@@ -21,7 +21,7 @@
 else ifneq (,$(findstring arm,$(MACHINE)))
 	HOST_PLATFORM = Arm
 else
-	DUMMY:=$(error Can't determine host platform)
+	HOST_PLATFORM = generic
 endif
 
 # now check if this is a cross-compilation or not
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/BuildSystem/Platform.generic openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/BuildSystem/Platform.generic
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/BuildSystem/Platform.generic	1970-01-01 02:00:00.000000000 +0200
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/BuildSystem/Platform.generic	2015-10-05 15:18:40.000000000 +0300
@@ -0,0 +1,4 @@
+# some defaults
+export GLUT_SUPPORTED=1
+FLAGS += -O3 -fno-strict-aliasing
+
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/Linux-generic/XnPlatformLinux-generic.h openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/Linux-generic/XnPlatformLinux-generic.h
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/Linux-generic/XnPlatformLinux-generic.h	1970-01-01 02:00:00.000000000 +0200
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/Linux-generic/XnPlatformLinux-generic.h	2015-10-05 15:22:50.000000000 +0300
@@ -0,0 +1,36 @@
+/*****************************************************************************
+*                                                                            *
+*  PrimeSense PSCommon Library                                               *
+*  Copyright (C) 2012 PrimeSense Ltd.                                        *
+*                                                                            *
+*  This file is part of PSCommon.                                            *
+*                                                                            *
+*  Licensed under the Apache License, Version 2.0 (the "License");           *
+*  you may not use this file except in compliance with the License.          *
+*  You may obtain a copy of the License at                                   *
+*                                                                            *
+*      http://www.apache.org/licenses/LICENSE-2.0                            *
+*                                                                            *
+*  Unless required by applicable law or agreed to in writing, software       *
+*  distributed under the License is distributed on an "AS IS" BASIS,         *
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  *
+*  See the License for the specific language governing permissions and       *
+*  limitations under the License.                                            *
+*                                                                            *
+*****************************************************************************/
+#ifndef _XN_PLATFORM_LINUX_GENERIC_H_
+#define _XN_PLATFORM_LINUX_GENERIC_H_
+
+// Start with Linux-x86, and override what's different
+#include "../Linux-x86/XnPlatformLinux-x86.h"
+
+//---------------------------------------------------------------------------
+// Platform Basic Definition
+//---------------------------------------------------------------------------
+#undef XN_PLATFORM
+#undef XN_PLATFORM_STRING
+#define XN_PLATFORM XN_PLATFORM_LINUX_GENERIC
+#define XN_PLATFORM_STRING "Linux-generic"
+
+#endif //_XN_PLATFORM_LINUX_GENERIC_H_
+
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/XnOS.h openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/XnOS.h
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/XnOS.h	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/XnOS.h	2015-10-05 15:41:15.000000000 +0300
@@ -43,7 +43,7 @@
 //---------------------------------------------------------------------------
 #if (XN_PLATFORM == XN_PLATFORM_WIN32)
 	#include "Win32/XnOSWin32.h"
-#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
+#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_GENERIC)
 	#include "Linux-x86/XnOSLinux-x86.h"
 #elif (XN_PLATFORM == XN_PLATFORM_MACOSX)
         #include "MacOSX/XnOSMacOSX.h"
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/XnPlatform.h openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/XnPlatform.h
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/XnPlatform.h	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/XnPlatform.h	2015-10-06 15:47:56.000000000 +0300
@@ -31,6 +31,7 @@
 #define XN_PLATFORM_LINUX_ARM 7
 #define XN_PLATFORM_MACOSX 8
 #define XN_PLATFORM_ANDROID_ARM 9
+#define XN_PLATFORM_LINUX_GENERIC 10
 
 #define XN_PLATFORM_IS_LITTLE_ENDIAN 1
 #define XN_PLATFORM_IS_BIG_ENDIAN    2
@@ -53,6 +54,8 @@
 #include "Linux-x86/XnPlatformLinux-x86.h"
 #elif (__linux__ && __arm__)
 #include "Linux-Arm/XnPlatformLinux-Arm.h"
+#elif (__linux__) 
+#include "Linux-generic/XnPlatformLinux-generic.h"
 #elif _ARC
 #include "ARC/XnPlaformARC.h"
 #elif (__APPLE__)
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/XnUSBDevice.h openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/XnUSBDevice.h
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Include/XnUSBDevice.h	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Include/XnUSBDevice.h	2015-10-05 15:42:37.000000000 +0300
@@ -47,7 +47,7 @@
 	#define USB_DT_DEVICE_SIZE 0
 	#define USB_DT_DEVICE 0
 
-#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM)
+#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_GENERIC)
 	#include <linux/usb/ch9.h>
 	typedef struct usb_endpoint_descriptor XnUSBEndpointDescriptor;
 	typedef struct usb_interface_descriptor XnUSBInterfaceDescriptor;
diff -urN openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Source/Linux/XnLinuxUSB.cpp openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Source/Linux/XnLinuxUSB.cpp
--- openni2-2.2.0.33+dfsg.old/ThirdParty/PSCommon/XnLib/Source/Linux/XnLinuxUSB.cpp	2013-11-12 16:12:23.000000000 +0200
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/XnLib/Source/Linux/XnLinuxUSB.cpp	2015-10-05 15:43:24.000000000 +0300
@@ -36,7 +36,7 @@
 #include <XnOSCpp.h>
 #include <XnList.h>
 
-#if (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM)
+#if (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_GENERIC)
 #include <libudev.h>
 #define XN_USE_UDEV
 #endif

Reply via email to