Change build system so we can easily switch between libusb and libusbx.

This commit is contained in:
Klaus Reimer 2013-04-15 20:03:41 +02:00
parent c6d25b259f
commit 3adde706ee
10 changed files with 46 additions and 22 deletions

View File

@ -2,33 +2,45 @@ cd "$(dirname $0)"
SRCDIR="$(pwd)/.."
TMPDIR="$SRCDIR/tmp"
DOWNLOADS="$SRCDIR/downloads"
LIBUSBX_VERSION="1.0.14"
LIBUSBX_ARCHIVE="libusbx-$LIBUSBX_VERSION.tar.bz2"
LIBUSBX_FILE="$DOWNLOADS/$LIBUSBX_ARCHIVE"
LIBUSBX_URL="http://downloads.sf.net/project/libusbx/releases/$LIBUSBX_VERSION/source/$LIBUSBX_ARCHIVE"
LIBUSB="libusbx"
LIBUSB_VERSION="1.0.16"
LIBUSB_RC="-rc6"
LIBUSBX_VERSION="1.0.15"
LIBUSBX_RC="-rc3"
build()
{
if [ "$LIBUSB" = "libusbx" ]
then
LIBUSB_NAME="libusbx-$LIBUSBX_VERSION$LIBUSBX_RC"
LIBUSB_ARCHIVE="$LIBUSB_NAME.tar.bz2"
LIBUSB_URL="http://downloads.sf.net/project/libusbx/releases/$LIBUSBX_VERSION/source/$LIBUSB_ARCHIVE"
else
LIBUSB_NAME="libusb-$LIBUSB_VERSION$LIBUSB_RC"
LIBUSB_ARCHIVE="$LIBUSB_NAME.tar.bz2"
LIBUSB_URL="http://downloads.sf.net/project/libusb/libusb-1.0/libusb-$LIBUSB_VERSION$LIBUSB_RC/$LIBUSB_ARCHIVE"
fi
DISTDIR="$SRCDIR/../resources/de/ailis/usb4java/libusb/$OS-$ARCH"
# Clean up
rm -rf "$TMPDIR"
rm -rf "$DISTDIR"
# Download libusbx if necessary
# Download libusb if necessary
mkdir -p "$DOWNLOADS"
if [ ! -e "$LIBUSBX_FILE" ]
if [ ! -e "$DOWNLOADS/$LIBUSB_ARCHIVE" ]
then
curl -L -o "$LIBUSBX_FILE" "$LIBUSBX_URL"
curl -L -o "$DOWNLOADS/$LIBUSB_ARCHIVE" "$LIBUSB_URL"
fi
# Unpack and compile libusbx
# Unpack and compile libusb
mkdir -p "$TMPDIR"
cd "$TMPDIR"
tar xfj "$DOWNLOADS/$LIBUSBX_ARCHIVE"
cd "libusbx-$LIBUSBX_VERSION"
CFLAGS="$CFLAGS $LIBUSBX_CFLAGS" \
./configure --prefix="$TMPDIR" --host="$HOST" --with-pic $LIBUSBX_CONFIG
tar xfj "$DOWNLOADS/$LIBUSB_ARCHIVE"
cd "$LIBUSB_NAME"
CFLAGS="$CFLAGS $LIBUSB_CFLAGS" \
./configure --prefix="$TMPDIR" --host="$HOST" --with-pic $LIBUSB_CONFIG
make
make install-strip

View File

@ -10,7 +10,7 @@ OS="linux"
ARCH="x86_64"
HOST="$ARCH-$OS-gnu"
CFLAGS="-m64"
LIBUSBX_CONFIG="--disable-shared"
LIBUSB_CONFIG="--disable-shared"
USB4JAVA_LIBS="-lrt"
build

View File

@ -1,6 +1,6 @@
AC_PREREQ([2.61])
AC_INIT([libusb4java], [1.0.0], [k@ailis.de])
AM_INIT_AUTOMAKE(foreign -Wall -Werror)
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/usb4java.h])
@ -9,11 +9,11 @@ AC_LANG_C
AC_PROG_CC
AM_PROG_LIBTOOL
AC_CHECK_JAVA
AC_CHECK_SIZEOF(void *)
PKG_CHECK_MODULES(LIBUSB, libusb-1.0)
AC_CHECK_SIZEOF([void *])
PKG_CHECK_MODULES([LIBUSB], [libusb-1.0])
AC_CONFIG_FILES(
AC_CONFIG_FILES([
Makefile
src/Makefile
)
])
AC_OUTPUT

View File

@ -128,7 +128,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortNumber)
)
{
NOT_NULL(env, device, return 0);
return libusb_get_port_number(unwrapDevice(env, device));
#if defined(LIBUSBX_API_VERSION)
return libusb_get_port_number(unwrapDevice(env, device));
#else
return 0;
#endif
}
/**
@ -143,8 +147,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath)
NOT_NULL(env, path, return 0);
jsize size = (*env)->GetArrayLength(env, path);
unsigned char buffer[size];
int result = libusb_get_port_path(unwrapContext(env, context),
unwrapDevice(env, device), buffer, size);
#if defined(LIBUSBX_API_VERSION)
int result = libusb_get_port_path(unwrapContext(env, context),
unwrapDevice(env, device), buffer, size);
#else
int result = 0;
#endif
if (result > 0) (*env)->SetByteArrayRegion(env, path, 0, result, (jbyte *) buffer);
return result;
}
@ -158,7 +166,11 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getParent)
)
{
NOT_NULL(env, device, return NULL);
return wrapDevice(env, libusb_get_parent(unwrapDevice(env, device)));
#if defined(LIBUSBX_API_VERSION)
return wrapDevice(env, libusb_get_parent(unwrapDevice(env, device)));
#else
return NULL;
#endif
}
/**