Source: openni Version: 1.5.4.0+dfsg-5 Severity: normal Tags: ftbfs, patch, upstream User: debian-ri...@lists.debian.org Usertags: riscv64 X-Debbugs-Cc: debian-ri...@lists.debian.org
Dear openni Maintainer, The openni package has a ftbfs issue on riscv64: ``` dh binary-arch --buildsystem=makefile dh_update_autotools_config -a -O--buildsystem=makefile dh_autoreconf -a -O--buildsystem=makefile dh_auto_configure -a -O--buildsystem=makefile debian/rules override_dh_auto_build make[1]: Entering directory '/<<PKGBUILDDIR>>' cd Platform/Linux/CreateRedist && ./RedistMaker Unknown platform: riscv64 make[1]: *** [debian/rules:7: override_dh_auto_build] Error 1 make[1]: Leaving directory '/<<PKGBUILDDIR>>' make: *** [debian/rules:4: binary-arch] Error 2 ``` The patch attached is to fix the issue and I can build riscv64 package on my locally real riscv64 hardware(Unmatched board) with it. The upstream of this package doesn't look very active but I will forward this to upstream[0] Bo [0]: https://github.com/OpenNI/OpenNI/issues -- Best Regards,
--- a/Platform/Linux/Build/Common/CommonDefs.mak +++ b/Platform/Linux/Build/Common/CommonDefs.mak @@ -24,6 +24,8 @@ HOST_PLATFORM = Powerpc else ifneq (,$(findstring mips,$(MACHINE))) HOST_PLATFORM = Mips +else ifneq (,$(findstring riscv64,$(MACHINE))) + HOST_PLATFORM = Riscv64 else DUMMY:=$(error Can't determine host platform) endif --- a/Platform/Linux/CreateRedist/Redist_OpenNi.py +++ b/Platform/Linux/CreateRedist/Redist_OpenNi.py @@ -192,6 +192,8 @@ PLATFORM = "Powerpc" elif machinetype[:4] == "mips": PLATFORM = "Mips" + elif machinetype == "riscv64": + PLATFORM = "Riscv64" else: print("Unknown platform:", machinetype) finish_script(1) @@ -336,6 +338,7 @@ shutil.copytree("../../Include/Linux-AArch64", REDIST_DIR + "/Include/Linux-AArch64") shutil.copytree("../../Include/Linux-Powerpc", REDIST_DIR + "/Include/Linux-Powerpc") shutil.copytree("../../Include/Linux-Mips", REDIST_DIR + "/Include/Linux-Mips") +shutil.copytree("../../Include/Linux-Riscv64", REDIST_DIR + "/Include/Linux-Riscv64") shutil.copytree("../../Include/MacOSX", REDIST_DIR + "/Include/MacOSX") shutil.copytree("Build/Common", REDIST_DIR + "/Samples/Build/Common") --- /dev/null +++ b/Include/Linux-Riscv64/XnPlatformLinux-Riscv64.h @@ -0,0 +1,43 @@ +/**************************************************************************** +* * +* OpenNI 1.x Alpha * +* Copyright (C) 2011 PrimeSense Ltd. * +* * +* This file is part of OpenNI. * +* * +* OpenNI is free software: you can redistribute it and/or modify * +* it under the terms of the GNU Lesser General Public License as published * +* by the Free Software Foundation, either version 3 of the License, or * +* (at your option) any later version. * +* * +* OpenNI is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU Lesser General Public License for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with OpenNI. If not, see <http://www.gnu.org/licenses/>. * +* * +****************************************************************************/ +#ifndef _XN_PLATFORM_LINUX_RISCV64_H_ +#define _XN_PLATFORM_LINUX_RISCV64_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 +#undef XN_PLATFORM_ENDIAN_TYPE +#define XN_PLATFORM XN_PLATFORM_LINUX_RISCV64 +#define XN_PLATFORM_STRING "Linux-Riscv64" + +#ifdef __RISCV64EB__ +#define XN_PLATFORM_ENDIAN_TYPE XN_PLATFORM_IS_BIG_ENDIAN +#else +#define XN_PLATFORM_ENDIAN_TYPE XN_PLATFORM_IS_LITTLE_ENDIAN +#endif // __RISCV64EB__ + +#endif //_XN_PLATFORM_LINUX_RISCV64_H_ --- a/Include/XnOS.h +++ b/Include/XnOS.h @@ -44,7 +44,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_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS) +#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS || XN_PLATFORM == XN_PLATFORM_LINUX_RISCV64) #include "Linux-x86/XnOSLinux-x86.h" #elif defined(_ARC) #include "ARC/XnOSARC.h" --- a/Include/XnPlatform.h +++ b/Include/XnPlatform.h @@ -38,6 +38,7 @@ #define XN_PLATFORM_LINUX_POWERPC 10 #define XN_PLATFORM_LINUX_AARCH64 11 #define XN_PLATFORM_LINUX_MIPS 12 +#define XN_PLATFORM_LINUX_RISCV64 13 #define XN_PLATFORM_IS_LITTLE_ENDIAN 1 #define XN_PLATFORM_IS_BIG_ENDIAN 2 @@ -75,6 +76,8 @@ #include "Linux-Powerpc/XnPlatformLinux-Powerpc.h" #elif (__linux__ && __mips__) #include "Linux-Mips/XnPlatformLinux-Mips.h" +#elif (__linux__ && (__riscv && __riscv_xlen == 64)) + #include "Linux-Riscv64/XnPlatformLinux-Riscv64.h" #elif _ARC #include "ARC/XnPlatformARC.h" #elif (__APPLE__) --- a/Include/XnUSBDevice.h +++ b/Include/XnUSBDevice.h @@ -48,7 +48,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 || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS) +#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS || XN_PLATFORM == XN_PLATFORM_LINUX_RISCV64) #include <linux/usb/ch9.h> typedef struct usb_endpoint_descriptor XnUSBEndpointDescriptor; typedef struct usb_interface_descriptor XnUSBInterfaceDescriptor; --- a/Samples/NiViewer/NiViewer.cpp +++ b/Samples/NiViewer/NiViewer.cpp @@ -49,7 +49,7 @@ // -------------------------------- #include <XnCppWrapper.h> -#if (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS) +#if (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS || XN_PLATFORM == XN_PLATFORM_LINUX_RISCV64) #define UNIX #define GLX_GLXEXT_LEGACY #endif @@ -79,7 +79,7 @@ #if (XN_PLATFORM == XN_PLATFORM_WIN32) #include <conio.h> #include <direct.h> -#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS) +#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS || XN_PLATFORM == XN_PLATFORM_LINUX_RISCV64) #define _getch() getchar() #endif --- a/Source/OpenNI/XnOpenNI.cpp +++ b/Source/OpenNI/XnOpenNI.cpp @@ -7062,7 +7062,7 @@ #define XN_OPEN_NI_FILES_LOCATION "\\Data\\" #elif (CE4100) #define XN_OPEN_NI_FILES_LOCATION "/usr/etc/ni/" -#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS) +#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64 || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_LINUX_POWERPC || XN_PLATFORM == XN_PLATFORM_LINUX_MIPS || XN_PLATFORM == XN_PLATFORM_LINUX_RISCV64) #define XN_OPEN_NI_FILES_LOCATION "/var/lib/ni/" #elif (XN_PLATFORM == XN_PLATFORM_ANDROID_ARM) #define XN_OPEN_NI_FILES_LOCATION "/data/ni/" --- /dev/null +++ b/Platform/Linux/Build/Common/Platform.Riscv64 @@ -0,0 +1,12 @@ +export GLUT_SUPPORTED=1 + +ifeq "$(CFG)" "Release" + + # Optimization level, minus currently buggy optimizing methods (which break bit-exact) + CFLAGS += -O3 -fno-tree-pre -fno-strict-aliasing + + # More optimization flags + CFLAGS += -ftree-vectorize -ffast-math -funsafe-math-optimizations -fsingle-precision-constant + +endif +
signature.asc
Description: PGP signature