New JNI library (Now including libusbx 1.0.14) and also added 32 bit

linux lib
This commit is contained in:
Klaus Reimer 2013-04-13 19:16:44 +02:00
parent 0f0292eda9
commit f347f4770d
8 changed files with 83 additions and 31 deletions

1
src/main/c/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/downloads

View File

@ -12,27 +12,49 @@
# library.
set -e
cd $(dirname $0)/..
cd "$(dirname $0)/.."
OS=linux
ARCH=x86
TMPDIR=$(pwd)/tmp
DISTDIR=$(pwd)/../resources/de/ailis/usb4java/jni/${OS}-${ARCH}
OS="linux"
ARCH="x86"
LIBUSBX_VERSION="1.0.14"
LIBUSBX_ARCHIVE="libusbx-$LIBUSBX_VERSION.tar.bz2"
TMPDIR="$(pwd)/tmp"
DOWNLOADS="$(pwd)/downloads"
DISTDIR="$(pwd)/../resources/de/ailis/usb4java/libusb/${OS}-${ARCH}"
# Clean up
rm -rf $TMPDIR
rm -rf $DISTDIR
rm -rf "$TMPDIR"
rm -rf "$DISTDIR"
# Build autoconf stuff if needed
# Download libusbx if necessary
mkdir -p "$DOWNLOADS"
if [ ! -e "$DOWNLOADS/$LIBUSBX_ARCHIVE" ]
then
wget -O "$DOWNLOADS/$LIBUSBX_ARCHIVE" "http://downloads.sourceforge.net/project/libusbx/releases/$LIBUSBX_VERSION/source/$LIBUSBX_ARCHIVE"
fi
# Unpack and compile libusbx
mkdir -p "$TMPDIR"
cd "$TMPDIR"
tar xfj "$DOWNLOADS/$LIBUSBX_ARCHIVE"
cd "libusbx-$LIBUSBX_VERSION"
CFLAGS="-m32" ./configure "--prefix=$TMPDIR" --disable-shared --with-pic
make
make install
# Build autoconf stuff of usb4java if needed
cd "$TMPDIR/.."
if [ ! -e configure ]
then
make -f Makefile.scm
fi
# Build libusb4java
./configure --prefix=/ CFLAGS="-m32"
make clean install-strip DESTDIR=$TMPDIR
mkdir -p $DISTDIR
cp -faL $TMPDIR/lib/libusb4java.so $DISTDIR/
chmod -x $DISTDIR/libusb4java.so
PKG_CONFIG_PATH="$TMPDIR/lib/pkgconfig" CFLAGS="-m32" ./configure --prefix=/
make clean install-strip DESTDIR="$TMPDIR"
mkdir -p "$DISTDIR"
cp -faL "$TMPDIR/lib/libusb4java.so" "$DISTDIR/"
chmod -x "$DISTDIR/libusb4java.so"
# Cleanup
rm -rf $TMPDIR

View File

@ -1,31 +1,60 @@
#!/bin/sh
#
# Builds libusb4java for 64 bit linux.
# Must be executed on 64 bit linux machine and must have libusb-1.0-0-dev
# installed.
# Builds libusb4java for 32 bit linux.
#
# If running on 32 bit linux you just need libusb-1.0-0-dev.
#
# If running on 64 bit linux you need ia32-libs-dev and libc6-dev-i386
# or gcc-multilib and libusb-1.0-0:i386 or something like that on newer
# systems. Depending on your multilib installation it may be required to
# create a manual symlink libusb.so in /lib/i386-linux-gnu or otherwise
# compilation will fail because the compiler can't find the 32 bit
# library.
set -e
cd $(dirname $0)/..
cd "$(dirname $0)/.."
OS=linux
ARCH=x86_64
TMPDIR=$(pwd)/tmp
DISTDIR=$(pwd)/../resources/de/ailis/usb4java/libusb/${OS}-${ARCH}
OS="linux"
ARCH="x86_64"
LIBUSBX_VERSION="1.0.14"
LIBUSBX_ARCHIVE="libusbx-$LIBUSBX_VERSION.tar.bz2"
TMPDIR="$(pwd)/tmp"
DOWNLOADS="$(pwd)/downloads"
DISTDIR="$(pwd)/../resources/de/ailis/usb4java/libusb/${OS}-${ARCH}"
# Clean up
rm -rf $TMPDIR
rm -rf $DISTDIR/libusb4java.so
rm -rf "$TMPDIR"
rm -rf "$DISTDIR"
# Build autoconf stuff if needed
# Download libusbx if necessary
mkdir -p "$DOWNLOADS"
if [ ! -e "$DOWNLOADS/$LIBUSBX_ARCHIVE" ]
then
wget -O "$DOWNLOADS/$LIBUSBX_ARCHIVE" "http://downloads.sourceforge.net/project/libusbx/releases/$LIBUSBX_VERSION/source/$LIBUSBX_ARCHIVE"
fi
# Unpack and compile libusbx
mkdir -p "$TMPDIR"
cd "$TMPDIR"
tar xfj "$DOWNLOADS/$LIBUSBX_ARCHIVE"
cd "libusbx-$LIBUSBX_VERSION"
./configure "--prefix=$TMPDIR" --disable-shared --with-pic
make
make install
# Build autoconf stuff of usb4java if needed
cd "$TMPDIR/.."
if [ ! -e configure ]
then
make -f Makefile.scm
fi
# Build libusb4java
./configure --prefix=/ CFLAGS="-m64"
make clean install-strip DESTDIR=$TMPDIR
mkdir -p $DISTDIR
cp -faL $TMPDIR/lib/libusb4java.so $DISTDIR/
chmod -x $DISTDIR/libusb4java.so
PKG_CONFIG_PATH="$TMPDIR/lib/pkgconfig" ./configure --prefix=/
make clean install-strip DESTDIR="$TMPDIR"
mkdir -p "$DISTDIR"
cp -faL "$TMPDIR/lib/libusb4java.so" "$DISTDIR/"
chmod -x "$DISTDIR/libusb4java.so"
# Cleanup
rm -rf $TMPDIR

View File

@ -1,6 +1,6 @@
lib_LTLIBRARIES = libusb4java.la
libusb4java_la_CFLAGS = -Wall -Werror $(LIBUSB_CFLAGS)
libusb4java_la_LIBADD = $(LIBUSB_LIBS)
libusb4java_la_LIBADD = $(LIBUSB_LIBS) -lrt
libusb4java_la_LDFLAGS = -version-info 1:0:0 -no-undefined
EXTRA_DIST = *.h
libusb4java_la_SOURCES = \

View File

@ -191,7 +191,7 @@ public final class Loader
private static String getExtraLibName()
{
final String os = getOS();
if (os.equals(OS_LINUX)) return "libusb-1.0." + EXT_SO;
if (os.equals(OS_LINUX)) return null;
if (os.equals(OS_WINDOWS)) return "libusb0." + EXT_DLL;
if (os.equals(OS_MACOSX)) return "libusb." + EXT_DYLIB;
return null;