Add JNI target (not built by default)

This commit is contained in:
Chris Cannam
2014-05-03 13:28:58 +01:00
parent 24c9507170
commit 7966b86250
3 changed files with 33 additions and 5 deletions

View File

@@ -6,6 +6,10 @@ CXXFLAGS := -DHAVE_LIBSAMPLERATE -DHAVE_FFTW3 -DFFTW_DOUBLE_ONLY -DNO_THREAD_CHE
CFLAGS := @CFLAGS@ $(OPTFLAGS)
LDFLAGS := @LDFLAGS@ -lpthread $(LDFLAGS)
JNI_CXXFLAGS := -I$(JAVA_HOME)/include
JAVAC := $(JAVA_HOME)/bin/javac
JAR := $(JAVA_HOME)/bin/jar
LIBRARY_LIBS := @SRC_LIBS@ @FFTW_LIBS@
PROGRAM_LIBS := @SNDFILE_LIBS@ $(LIBRARY_LIBS)
VAMP_PLUGIN_LIBS := @Vamp_LIBS@ $(LIBRARY_LIBS)
@@ -23,6 +27,8 @@ INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf
INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig
LIBNAME := librubberband
JNINAME := librubberband-jni
JARNAME := rubberband.jar
DYNAMIC_EXTENSION := .so
DYNAMIC_FULL_VERSION := 2.1.0
@@ -34,6 +40,8 @@ LADSPA_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,--version-script=ladspa/ladspa-plu
PROGRAM_TARGET := bin/rubberband
STATIC_TARGET := lib/$(LIBNAME).a
DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION)
JNI_TARGET := lib/$(JNINAME)$(DYNAMIC_EXTENSION)
JAR_TARGET := lib/$(JARNAME)
VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION)
LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION)
@@ -42,6 +50,7 @@ all: bin lib $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET)
static: $(STATIC_TARGET)
dynamic: $(DYNAMIC_TARGET)
library: $(STATIC_TARGET) $(DYNAMIC_TARGET)
jni: $(JNI_TARGET) $(JAR_TARGET)
program: $(PROGRAM_TARGET)
vamp: $(VAMP_TARGET)
ladspa: $(LADSPA_TARGET)
@@ -96,6 +105,12 @@ LIBRARY_SOURCES := \
src/StretcherChannelData.cpp \
src/StretcherImpl.cpp
JNI_SOURCE := \
src/jni/RubberBandStretcherJNI.cpp
JAVA_SOURCE := \
com/breakfastquay/rubberband/RubberBandStretcher.java
PROGRAM_SOURCES := \
main/main.cpp
@@ -115,7 +130,8 @@ LADSPA_SOURCES := \
LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o)
LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o)
JNI_OBJECT := $(JNI_SOURCE:.cpp=.o)
JAVA_OBJECT := $(JAVA_SOURCE:.java=.class)
PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o)
VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o)
LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o)
@@ -129,6 +145,16 @@ $(STATIC_TARGET): $(LIBRARY_OBJECTS)
$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS)
$(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS)
$(JNI_OBJECT): $(JNI_SOURCE)
$(CXX) -c $(JNI_CXXFLAGS) $(CXXFLAGS) $^ -o $@
$(JNI_TARGET): $(LIBRARY_OBJECTS) $(JNI_OBJECT)
$(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS)
$(JAR_TARGET): $(JAVA_SOURCE)
$(JAVAC) $^
$(JAR) cvf $@ $(JAVA_OBJECT)
$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS)
$(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS)
@@ -153,9 +179,11 @@ install: all
cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION)
ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
cp $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR)
cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR)
cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR)
@@ -165,10 +193,10 @@ install: all
> $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc
clean:
rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS)
rm -f $(LIBRARY_OBJECTS) $(JNI_OBJECT) $(JAVA_OBJECT) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS)
distclean: clean
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(JNI_TARGET) $(JAR_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
depend:
makedepend -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)

View File

@@ -5,7 +5,7 @@ Rubber Band
An audio time-stretching and pitch-shifting library and utility program.
Written by Chris Cannam, chris.cannam@breakfastquay.com.
Copyright 2007-2012 Particular Programs Ltd.
Copyright 2007-2014 Particular Programs Ltd.
Rubber Band is a library and utility program that permits changing the
tempo and pitch of an audio recording independently of one another.

View File

@@ -103,7 +103,7 @@ public class RubberBandStretcher
public static final int PercussiveOptions = 0x00102000;
static {
System.loadLibrary("rubberband");
System.loadLibrary("rubberband-jni");
}
};