diff --git a/dev-libs/hidapi/hidapi-20160919.recipe b/dev-libs/hidapi/hidapi-20160919.recipe new file mode 100644 index 00000000000..3991dbe5230 --- /dev/null +++ b/dev-libs/hidapi/hidapi-20160919.recipe @@ -0,0 +1,82 @@ +SUMMARY="Library for Interfacing with HID-Class devices" +DESCRIPTION="HIDAPI is a library working with multiple platforms for + interfacing with HID-Class devices through USB and Bluetooth. (On Haiku, it only works with USB). " +HOMEPAGE="http://www.signal11.us/oss/hidapi/" +COPYRIGHT="2010 Alan Ott + 2011 Signal 11 Software" +LICENSE="BSD (3-clause) + GNU GPL v3" +REVISION="1" +srcGitRev="a6a622ffb680c55da0de787ff93b80280498330f" +SOURCE_URI="https://github.com/signal11/hidapi/archive/$srcGitRev.tar.gz" +CHECKSUM_SHA256="d94e39be127ab6ac6a2bbdf6d321d6492b1cdc6cc5c00b6901228eb6923e81a6" +SOURCE_DIR="hidapi-$srcGitRev" +PATCHES="hidapi-$portVersion.patchset" + +ARCHITECTURES="!x86_gcc2 x86 x86_64" +SECONDARY_ARCHITECTURES="x86" + +PROVIDES=" + hidapi$secondaryArchSuffix = $portVersion + lib:libhidapi$secondaryArchSuffix = 0.0.0 compat >= 0 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libusb_1.0$secondaryArchSuffix + " + +PROVIDES_devel=" + hidapi${secondaryArchSuffix}_devel = $portVersion + devel:libhidapi$secondaryArchSuffix = 0.0.0 compat >= 0 + " +REQUIRES_devel=" + hidapi$secondaryArchSuffix == $portVersion base + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libusb_1.0$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:aclocal + cmd:autoconf + cmd:automake + cmd:gcc$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:libtoolize$secondaryArchSuffix + cmd:make + cmd:pkg_config$secondaryArchSuffix + " + +BUILD() +{ + + ./bootstrap + + runConfigure ./configure \ + --disable-dependency-tracking \ + --with-gnu-ld + + make $jobArgs +} + +INSTALL() +{ + make install + + rm $libDir/libhidapi.la + + prepareInstalledDevelLib libhidapi + fixPkgconfig + + packageEntries devel \ + $developDir +} + +TEST() +{ + make hidtest + + cd hidtest/.libs + LIBRARY_PATH=$sourceDir/libusb/.libs:$LIBRARY_PATH ./hidtest || true +} diff --git a/dev-libs/hidapi/patches/hidapi-20160919.patchset b/dev-libs/hidapi/patches/hidapi-20160919.patchset new file mode 100644 index 00000000000..aba79c6a095 --- /dev/null +++ b/dev-libs/hidapi/patches/hidapi-20160919.patchset @@ -0,0 +1,223 @@ +From 0e6ebfe2cee9ea675ebc175fb95830cc1ecf5ef8 Mon Sep 17 00:00:00 2001 +From: CodeforEvolution +Date: Mon, 26 Dec 2016 16:59:41 +0000 +Subject: Changes to Build System for Haiku + + +diff --git a/Makefile.am b/Makefile.am +index 196c991..48e522d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -31,6 +31,10 @@ if OS_KFREEBSD + SUBDIRS += libusb + endif + ++if OS_HAIKU ++SUBDIRS += libusb ++endif ++ + if OS_WINDOWS + SUBDIRS += windows + endif +diff --git a/configure.ac b/configure.ac +index c6747f9..dd5249a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -107,6 +107,18 @@ case $host in + AC_CHECK_LIB([usb], [libusb_init], [LIBS_LIBUSB_PRIVATE="${LIBS_LIBUSB_PRIVATE} -lusb"], [hidapi_lib_error libusb]) + echo libs_priv: $LIBS_LIBUSB_PRIVATE + ;; ++*-*-haiku) ++ AC_MSG_RESULT([ (Haiku back-end)]) ++ AC_DEFINE(OS_HAIKU, 1, [Haiku implementation]) ++ AC_SUBST(OS_HAIKU) ++ backend="libusb" ++ os="haiku" ++ threads="pthreads" ++ ++ PKG_CHECK_MODULES([libusb], [libusb-1.0 >= 1.0.9], true, [hidapi_lib_error libusb-1.0]) ++ LIBS_LIBUSB_PRIVATE+=" $libusb_LIBS" ++ CFLAGS_LIBUSB+=" $libusb_CFLAGS" ++ ;; + *-mingw*) + AC_MSG_RESULT([ (Windows back-end, using MinGW)]) + backend="windows" +@@ -213,6 +225,7 @@ AM_CONDITIONAL(OS_LINUX, test "x$os" = xlinux) + AM_CONDITIONAL(OS_DARWIN, test "x$os" = xdarwin) + AM_CONDITIONAL(OS_FREEBSD, test "x$os" = xfreebsd) + AM_CONDITIONAL(OS_KFREEBSD, test "x$os" = xkfreebsd) ++AM_CONDITIONAL(OS_HAIKU, test "x$os" = xhaiku) + AM_CONDITIONAL(OS_WINDOWS, test "x$os" = xwindows) + + AC_CONFIG_HEADERS([config.h]) +diff --git a/libusb/Makefile-manual b/libusb/Makefile-manual +index c0fe868..0acf707 100644 +--- a/libusb/Makefile-manual ++++ b/libusb/Makefile-manual +@@ -10,6 +10,10 @@ ifeq ($(OS), FreeBSD) + FILE=Makefile.freebsd + endif + ++ifeq ($(OS), Haiku) ++ FILE=Makefile.haiku ++endif ++ + ifeq ($(FILE), ) + all: + $(error Your platform ${OS} is not supported by hidapi/libusb at this time.) +diff --git a/libusb/Makefile.am b/libusb/Makefile.am +index 13c9d35..1da06bc 100644 +--- a/libusb/Makefile.am ++++ b/libusb/Makefile.am +@@ -21,6 +21,13 @@ libhidapi_la_LDFLAGS = $(LTLDFLAGS) + libhidapi_la_LIBADD = $(LIBS_LIBUSB) + endif + ++if OS_HAIKU ++lib_LTLIBRARIES = libhidapi.la ++libhidapi_la_SOURCES = hid.c ++libhidapi_la_LDFLAGS = $(LTLDFLAGS) ++libhidapi_la_LIBADD = $(LIBS_LIBUSB) ++endif ++ + hdrdir = $(includedir)/hidapi + hdr_HEADERS = $(top_srcdir)/hidapi/hidapi.h + +diff --git a/libusb/Makefile.haiku b/libusb/Makefile.haiku +new file mode 100644 +index 0000000..6ddd172 +--- /dev/null ++++ b/libusb/Makefile.haiku +@@ -0,0 +1,46 @@ ++########################################### ++# Simple Makefile for HIDAPI test program ++# ++# Alan Ott ++# Signal 11 Software ++# 2010-06-01 ++########################################### ++ ++all: hidtest libs ++ ++libs: libhidapi.so ++ ++CC ?= cc ++CFLAGS ?= -Wall -g -fPIC ++ ++CXX ?= c++ ++CXXFLAGS ?= -Wall -g ++ ++COBJS = hid.o ++CPPOBJS = ../hidtest/hidtest.o ++OBJS = $(COBJS) $(CPPOBJS) ++INCLUDES = -I../hidapi -I$(shell finddir B_SYSTEM_HEADERS_DIRECTORY) ++LDFLAGS = -L$(shell finddir B_SYSTEM_LIB_DIRECTORY) ++LIBS = -lusb-1.0 ++ ++ ++# Console Test Program ++hidtest: $(OBJS) ++ $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) ++ ++# Shared Libs ++libhidapi.so: $(COBJS) ++ $(CC) $(LDFLAGS) -shared -Wl,-soname,$@.0 $^ -o $@ $(LIBS) ++ ++# Objects ++$(COBJS): %.o: %.c ++ $(CC) $(CFLAGS) -c $(INCLUDES) $< -o $@ ++ ++$(CPPOBJS): %.o: %.cpp ++ $(CXX) $(CXXFLAGS) -c $(INCLUDES) $< -o $@ ++ ++ ++clean: ++ rm -f $(OBJS) hidtest libhidapi.so ../hidtest/hidtest.o ++ ++.PHONY: clean libs +-- +2.2.2 + + +From 106ec32de206ec49fb0441e55690d7ff3cd24b9c Mon Sep 17 00:00:00 2001 +From: CodeforEvolution +Date: Mon, 26 Dec 2016 17:14:58 +0000 +Subject: Changes in source for no iconv/pthread barriers + + +diff --git a/libusb/hid.c b/libusb/hid.c +index 3c6d877..c6ad012 100644 +--- a/libusb/hid.c ++++ b/libusb/hid.c +@@ -45,15 +45,15 @@ + + /* GNU / LibUSB */ + #include +-#ifndef __ANDROID__ ++#if !defined(__ANDROID__) || !defined(__HAIKU__) + #include + #endif + + #include "hidapi.h" + +-#ifdef __ANDROID__ ++#if defined(__ANDROID__) || defined(__HAIKU__) + +-/* Barrier implementation because Android/Bionic don't have pthread_barrier. ++/* Barrier implementation because Android/Bionic/Haiku don't have pthread_barrier. + This implementation came from Brent Priddy and was posted on + StackOverflow. It is used with his permission. */ + typedef int pthread_barrierattr_t; +@@ -390,7 +390,7 @@ static wchar_t *get_usb_string(libusb_device_handle *dev, uint8_t idx) + int len; + wchar_t *str = NULL; + +-#ifndef __ANDROID__ /* we don't use iconv on Android */ ++#if !defined(__ANDROID__) || !defined(__HAIKU__) /* we don't use iconv on Android/Haiku */ + wchar_t wbuf[256]; + /* iconv variables */ + iconv_t ic; +@@ -420,7 +420,7 @@ static wchar_t *get_usb_string(libusb_device_handle *dev, uint8_t idx) + if (len < 0) + return NULL; + +-#ifdef __ANDROID__ ++#if defined(__ANDROID__) || defined(__HAIKU__) + + /* Bionic does not have iconv support nor wcsdup() function, so it + has to be done manually. The following code will only work for +-- +2.2.2 + + +From 3de18a772eebbddd93e0fa356d6c738b0718f011 Mon Sep 17 00:00:00 2001 +From: CodeforEvolution +Date: Mon, 26 Dec 2016 18:09:26 +0000 +Subject: Fix Change in Source + + +diff --git a/libusb/hid.c b/libusb/hid.c +index c6ad012..f11d4d5 100644 +--- a/libusb/hid.c ++++ b/libusb/hid.c +@@ -45,7 +45,7 @@ + + /* GNU / LibUSB */ + #include +-#if !defined(__ANDROID__) || !defined(__HAIKU__) ++#if !defined(__ANDROID__) && !defined(__HAIKU__) + #include + #endif + +@@ -390,7 +390,7 @@ static wchar_t *get_usb_string(libusb_device_handle *dev, uint8_t idx) + int len; + wchar_t *str = NULL; + +-#if !defined(__ANDROID__) || !defined(__HAIKU__) /* we don't use iconv on Android/Haiku */ ++#if !defined(__ANDROID__) && !defined(__HAIKU__) /* we don't use iconv on Android/Haiku */ + wchar_t wbuf[256]; + /* iconv variables */ + iconv_t ic; +-- +2.2.2 +