Hides unexported symbols

Mark all non static internal functions with visibility hidden on
ELF platform. Declare some internal symbols that were meant to have
static linkage as such. On win32 the hidden visibility is no op since
it is the default behavior.

Signed-off-by: Nicolas Bourdaud <nicolas.bourdaud@gmail.com>
Remove libusb.h include from libfreenect.h

typedef freenect_usb_context as void, as it is already for win32. That way,
we drop the need to have a properly installed developpement files of libusb
when we don't use it directly. This fix also partly the problem of
discrepancy between the include paths of libusb on freebsd and libusb-1.0

Signed-off-by: Nicolas Bourdaud <nicolas.bourdaud@gmail.com>
Fix cmake libusb search and fix libusb include

Adjust cmake test for libusb library so that the compatible libusb for
freebsd can be found.  Since freebsd's libusb header are located in a
different place from libusb-1.0, the includes in the source code must be
adjusted using #include <libusb.h>.  Actually those new include statements
are those that libusb-1.0 really expects to be used (see libusb-1.0.pc
cflags to verify this). With this commit, libfreenect is buildable on
freebsd.

Signed-off-by: Nicolas Bourdaud <nicolas.bourdaud@gmail.com>
Fix build on Windows after changing includes from <libusb-1.0/libusb.h> to <libusb.h>

Also obtain struct timeval from the winsock headers.

Signed-off-by: Drew Fisher <drew.m.fisher@gmail.com>
Use unions to perform safe type-punning.

Signed-off-by: Drew Fisher <drew.m.fisher@gmail.com>
Make fakenect work on Windows.

We needed platform-specific functions for mkdir(), timers, and we need to open
files in binary mode for compatibility.

Signed-off-by: Drew Fisher <drew.m.fisher@gmail.com>
examples: call freenect_shutdown() on exit

This is mostly useful when using tools like valgrind, which may report
possibly lost memory even if the operating systems is going to get it
back anyway on the actual process exit.

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
freenect: avoid leaking the context when fnusb_init() fails

Maybe this is more a theoretical issue than an actual one, I am not sure
in which case fnusb_init() —and hence libusb_init()— is supposed to
fail, but let's handle that once I noticed it.

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
freenect: initialize the 'transferred' variable used in bulk transfers

This is in order to make the printouts in the error path of the callers
of fnusb_bulk() show a saner value when libusb does not touch the
variable (i.e. when a transfer fails).

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
Search for threading lib on any platform in c_sync

Threading library is necessary for all platform when compiling c_sync
wrapper. Moving the search fix the missing library on Linux.

Signed-off-by: Nicolas Bourdaud <nicolas.bourdaud@gmail.com>
Add missing math lib to fakenect

Fix the missing dependency of fakenect on the math lib and remove the
unecessary one of record. On the way centralizes definition of MATH_LIB
since several wrappers and examples uses it.

Signed-off-by: Nicolas Bourdaud <nicolas.bourdaud@gmail.com>
windows: libusb-win32 renamed their header; change the include accordingly

In libusb-win32 1.2.5.0, the developers changed their header from usb.h to
lusb0_usb.h to avoid a name conflict with the WDK usb.h header, which
apparently causes issues with MinGW-w64.

Signed-off-by: Drew Fisher <drew.m.fisher@gmail.com>