diff options
Diffstat (limited to 'lib/ffts/java')
| -rw-r--r-- | lib/ffts/java/Makefile.am | 33 | ||||
| -rw-r--r-- | lib/ffts/java/Makefile.in | 681 | ||||
| -rw-r--r-- | lib/ffts/java/jni/ffts_jni.c | 233 | 
3 files changed, 947 insertions, 0 deletions
| diff --git a/lib/ffts/java/Makefile.am b/lib/ffts/java/Makefile.am new file mode 100644 index 0000000..83ff5d8 --- /dev/null +++ b/lib/ffts/java/Makefile.am @@ -0,0 +1,33 @@ + +# TODO: the ax_prog_javah thing doesn't work so this +# requires javah in the path + +if ENABLE_JNI +JAVA_SRC=$(shell find $(srcdir)/src -name '*.java') + +BUILT_SOURCES = nz_ac_waikato_ffts_FFTS.h + +all: ffts.jar + +classes ffts.jar: $(JAVA_SRC) +	-rm -rf classes +	mkdir classes +	$(JAVAC) -d classes -sourcepath src $(JAVA_SRC) +	$(JAR) -cf ffts.jar -C classes . + +lib_LTLIBRARIES = libffts_jni.la +libffts_jni_la_SOURCES = jni/ffts_jni.c +nodist_include_HEADERS = nz_ac_waikato_ffts_FFTS.h +libffts_jni_la_LIBADD = $(top_builddir)/src/libffts.la +libffts_jni_la_CFLAGS = @JNI_CPPFLAGS@ $(AM_CFLAGS) -I$(top_srcdir)/include +libffts_jni_la_LDFLAGS = -shared + +pkgdata_DATA = ffts.jar + +nz_ac_waikato_ffts_FFTS.h: classes +	javah -cp $< nz.ac.waikato.ffts.FFTS + +CLEANFILES=ffts.jar nz_ac_waikato_ffts_FFTS.h +clean-local: +	-rm -rf classes +endif diff --git a/lib/ffts/java/Makefile.in b/lib/ffts/java/Makefile.in new file mode 100644 index 0000000..45d41c4 --- /dev/null +++ b/lib/ffts/java/Makefile.in @@ -0,0 +1,681 @@ +# Makefile.in generated by automake 1.12.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2012 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# TODO: the ax_prog_javah thing doesn't work so this +# requires javah in the path + + + +VPATH = @srcdir@ +am__make_dryrun = \ +  { \ +    am__dry=no; \ +    case $$MAKEFLAGS in \ +      *\\[\ \	]*) \ +        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \ +          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ +      *) \ +        for am__flg in $$MAKEFLAGS; do \ +          case $$am__flg in \ +            *=*|--*) ;; \ +            *n*) am__dry=yes; break;; \ +          esac; \ +        done;; \ +    esac; \ +    test $$am__dry = yes; \ +  } +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = java +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +	$(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_classpath.m4 \ +	$(top_srcdir)/m4/ax_check_java_home.m4 \ +	$(top_srcdir)/m4/ax_java_options.m4 \ +	$(top_srcdir)/m4/ax_jni_include_dir.m4 \ +	$(top_srcdir)/m4/ax_prog_jar.m4 \ +	$(top_srcdir)/m4/ax_prog_javac.m4 \ +	$(top_srcdir)/m4/ax_prog_javac_works.m4 \ +	$(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +	$(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ +    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +    *) f=$$p;; \ +  esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ +  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ +  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ +  for p in $$list; do echo "$$p $$p"; done | \ +  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ +  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ +    if (++n[$$2] == $(am__install_max)) \ +      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ +    END { for (dir in files) print dir, files[dir] }' +am__base_list = \ +  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ +  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ +  test -z "$$files" \ +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ +         $(am__cd) "$$dir" && rm -f $$files; }; \ +  } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" \ +	"$(DESTDIR)$(includedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +@ENABLE_JNI_TRUE@libffts_jni_la_DEPENDENCIES =  \ +@ENABLE_JNI_TRUE@	$(top_builddir)/src/libffts.la +am__libffts_jni_la_SOURCES_DIST = jni/ffts_jni.c +@ENABLE_JNI_TRUE@am_libffts_jni_la_OBJECTS =  \ +@ENABLE_JNI_TRUE@	libffts_jni_la-ffts_jni.lo +libffts_jni_la_OBJECTS = $(am_libffts_jni_la_OBJECTS) +libffts_jni_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ +	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libffts_jni_la_CFLAGS) \ +	$(CFLAGS) $(libffts_jni_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_JNI_TRUE@am_libffts_jni_la_rpath = -rpath $(libdir) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ +	$(LDFLAGS) -o $@ +SOURCES = $(libffts_jni_la_SOURCES) +DIST_SOURCES = $(am__libffts_jni_la_SOURCES_DIST) +am__can_run_installinfo = \ +  case $$AM_UPDATE_INFO_DIR in \ +    n|no|NO) false;; \ +    *) (install-info --version) >/dev/null 2>&1;; \ +  esac +DATA = $(pkgdata_DATA) +HEADERS = $(nodist_include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVACFLAGS = @JAVACFLAGS@ +JAVAFLAGS = @JAVAFLAGS@ +JAVAPREFIX = @JAVAPREFIX@ +JAVA_PATH_NAME = @JAVA_PATH_NAME@ +JNI_CPPFLAGS = @JNI_CPPFLAGS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_ACJNI_JAVAC = @_ACJNI_JAVAC@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +@ENABLE_JNI_TRUE@JAVA_SRC = $(shell find $(srcdir)/src -name '*.java') +@ENABLE_JNI_TRUE@BUILT_SOURCES = nz_ac_waikato_ffts_FFTS.h +@ENABLE_JNI_TRUE@lib_LTLIBRARIES = libffts_jni.la +@ENABLE_JNI_TRUE@libffts_jni_la_SOURCES = jni/ffts_jni.c +@ENABLE_JNI_TRUE@nodist_include_HEADERS = nz_ac_waikato_ffts_FFTS.h +@ENABLE_JNI_TRUE@libffts_jni_la_LIBADD = $(top_builddir)/src/libffts.la +@ENABLE_JNI_TRUE@libffts_jni_la_CFLAGS = @JNI_CPPFLAGS@ $(AM_CFLAGS) -I$(top_srcdir)/include +@ENABLE_JNI_TRUE@libffts_jni_la_LDFLAGS = -shared +@ENABLE_JNI_TRUE@pkgdata_DATA = ffts.jar +@ENABLE_JNI_TRUE@CLEANFILES = ffts.jar nz_ac_waikato_ffts_FFTS.h +all: $(BUILT_SOURCES) +	$(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps) +	@for dep in $?; do \ +	  case '$(am__configure_deps)' in \ +	    *$$dep*) \ +	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ +	        && { if test -f $@; then exit 0; else break; fi; }; \ +	      exit 1;; \ +	  esac; \ +	done; \ +	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/Makefile'; \ +	$(am__cd) $(top_srcdir) && \ +	  $(AUTOMAKE) --gnu java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +	@case '$?' in \ +	  *config.status*) \ +	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +	  *) \ +	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +	esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure:  $(am__configure_deps) +	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4):  $(am__aclocal_m4_deps) +	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) +	@$(NORMAL_INSTALL) +	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ +	list2=; for p in $$list; do \ +	  if test -f $$p; then \ +	    list2="$$list2 $$p"; \ +	  else :; fi; \ +	done; \ +	test -z "$$list2" || { \ +	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ +	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ +	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ +	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ +	} + +uninstall-libLTLIBRARIES: +	@$(NORMAL_UNINSTALL) +	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ +	for p in $$list; do \ +	  $(am__strip_dir) \ +	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ +	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ +	done + +clean-libLTLIBRARIES: +	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) +	@list='$(lib_LTLIBRARIES)'; \ +	locs=`for p in $$list; do echo $$p; done | \ +	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ +	      sort -u`; \ +	test -z "$$locs" || { \ +	  echo rm -f $${locs}; \ +	  rm -f $${locs}; \ +	} +libffts_jni.la: $(libffts_jni_la_OBJECTS) $(libffts_jni_la_DEPENDENCIES) $(EXTRA_libffts_jni_la_DEPENDENCIES)  +	$(libffts_jni_la_LINK) $(am_libffts_jni_la_rpath) $(libffts_jni_la_OBJECTS) $(libffts_jni_la_LIBADD) $(LIBS) + +mostlyclean-compile: +	-rm -f *.$(OBJEXT) + +distclean-compile: +	-rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffts_jni_la-ffts_jni.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@	$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $< + +libffts_jni_la-ffts_jni.lo: jni/ffts_jni.c +@am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffts_jni_la_CFLAGS) $(CFLAGS) -MT libffts_jni_la-ffts_jni.lo -MD -MP -MF $(DEPDIR)/libffts_jni_la-ffts_jni.Tpo -c -o libffts_jni_la-ffts_jni.lo `test -f 'jni/ffts_jni.c' || echo '$(srcdir)/'`jni/ffts_jni.c +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libffts_jni_la-ffts_jni.Tpo $(DEPDIR)/libffts_jni_la-ffts_jni.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='jni/ffts_jni.c' object='libffts_jni_la-ffts_jni.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffts_jni_la_CFLAGS) $(CFLAGS) -c -o libffts_jni_la-ffts_jni.lo `test -f 'jni/ffts_jni.c' || echo '$(srcdir)/'`jni/ffts_jni.c + +mostlyclean-libtool: +	-rm -f *.lo + +clean-libtool: +	-rm -rf .libs _libs +install-pkgdataDATA: $(pkgdata_DATA) +	@$(NORMAL_INSTALL) +	@list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ +	if test -n "$$list"; then \ +	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ +	  $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ +	fi; \ +	for p in $$list; do \ +	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +	  echo "$$d$$p"; \ +	done | $(am__base_list) | \ +	while read files; do \ +	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ +	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ +	done + +uninstall-pkgdataDATA: +	@$(NORMAL_UNINSTALL) +	@list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ +	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ +	dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) +install-nodist_includeHEADERS: $(nodist_include_HEADERS) +	@$(NORMAL_INSTALL) +	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ +	if test -n "$$list"; then \ +	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ +	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ +	fi; \ +	for p in $$list; do \ +	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +	  echo "$$d$$p"; \ +	done | $(am__base_list) | \ +	while read files; do \ +	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ +	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ +	done + +uninstall-nodist_includeHEADERS: +	@$(NORMAL_UNINSTALL) +	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ +	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ +	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +	unique=`for i in $$list; do \ +	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +	  done | \ +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ +	      END { if (nonempty) { for (i in files) print i; }; }'`; \ +	mkid -fID $$unique +tags: TAGS + +TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \ +		$(TAGS_FILES) $(LISP) +	set x; \ +	here=`pwd`; \ +	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \ +	unique=`for i in $$list; do \ +	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +	  done | \ +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ +	      END { if (nonempty) { for (i in files) print i; }; }'`; \ +	shift; \ +	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ +	  test -n "$$unique" || unique=$$empty_fix; \ +	  if test $$# -gt 0; then \ +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +	      "$$@" $$unique; \ +	  else \ +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +	      $$unique; \ +	  fi; \ +	fi +ctags: CTAGS +CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \ +		$(TAGS_FILES) $(LISP) +	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \ +	unique=`for i in $$list; do \ +	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +	  done | \ +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ +	      END { if (nonempty) { for (i in files) print i; }; }'`; \ +	test -z "$(CTAGS_ARGS)$$unique" \ +	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +	     $$unique + +GTAGS: +	here=`$(am__cd) $(top_builddir) && pwd` \ +	  && $(am__cd) $(top_srcdir) \ +	  && gtags -i $(GTAGS_ARGS) "$$here" + +cscopelist:  $(HEADERS) $(SOURCES) $(LISP) +	list='$(SOURCES) $(HEADERS) $(LISP)'; \ +	case "$(srcdir)" in \ +	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ +	  *) sdir=$(subdir)/$(srcdir) ;; \ +	esac; \ +	for i in $$list; do \ +	  if test -f "$$i"; then \ +	    echo "$(subdir)/$$i"; \ +	  else \ +	    echo "$$sdir/$$i"; \ +	  fi; \ +	done >> $(top_builddir)/cscope.files + +distclean-tags: +	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) +	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ +	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ +	list='$(DISTFILES)'; \ +	  dist_files=`for file in $$list; do echo $$file; done | \ +	  sed -e "s|^$$srcdirstrip/||;t" \ +	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ +	case $$dist_files in \ +	  */*) $(MKDIR_P) `echo "$$dist_files" | \ +			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ +			   sort -u` ;; \ +	esac; \ +	for file in $$dist_files; do \ +	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +	  if test -d $$d/$$file; then \ +	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ +	    if test -d "$(distdir)/$$file"; then \ +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ +	    fi; \ +	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ +	    fi; \ +	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ +	  else \ +	    test -f "$(distdir)/$$file" \ +	    || cp -p $$d/$$file "$(distdir)/$$file" \ +	    || exit 1; \ +	  fi; \ +	done +check-am: all-am +check: $(BUILT_SOURCES) +	$(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) +installdirs: +	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(includedir)"; do \ +	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \ +	done +install: $(BUILT_SOURCES) +	$(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am +	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: +	if test -z '$(STRIP)'; then \ +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +	      install; \ +	else \ +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ +	fi +mostlyclean-generic: + +clean-generic: +	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: +	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: +	@echo "This command is intended for maintainers to use" +	@echo "it deletes files that may require special tools to rebuild." +	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +@ENABLE_JNI_FALSE@clean-local: +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ +	mostlyclean-am + +distclean: distclean-am +	-rm -rf ./$(DEPDIR) +	-rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ +	distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-nodist_includeHEADERS install-pkgdataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am +	-rm -rf ./$(DEPDIR) +	-rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ +	mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS \ +	uninstall-pkgdataDATA + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +	clean-libLTLIBRARIES clean-libtool clean-local cscopelist \ +	ctags distclean distclean-compile distclean-generic \ +	distclean-libtool distclean-tags distdir dvi dvi-am html \ +	html-am info info-am install install-am install-data \ +	install-data-am install-dvi install-dvi-am install-exec \ +	install-exec-am install-html install-html-am install-info \ +	install-info-am install-libLTLIBRARIES install-man \ +	install-nodist_includeHEADERS install-pdf install-pdf-am \ +	install-pkgdataDATA install-ps install-ps-am install-strip \ +	installcheck installcheck-am installdirs maintainer-clean \ +	maintainer-clean-generic mostlyclean mostlyclean-compile \ +	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +	tags uninstall uninstall-am uninstall-libLTLIBRARIES \ +	uninstall-nodist_includeHEADERS uninstall-pkgdataDATA + + +@ENABLE_JNI_TRUE@all: ffts.jar + +@ENABLE_JNI_TRUE@classes ffts.jar: $(JAVA_SRC) +@ENABLE_JNI_TRUE@	-rm -rf classes +@ENABLE_JNI_TRUE@	mkdir classes +@ENABLE_JNI_TRUE@	$(JAVAC) -d classes -sourcepath src $(JAVA_SRC) +@ENABLE_JNI_TRUE@	$(JAR) -cf ffts.jar -C classes . + +@ENABLE_JNI_TRUE@nz_ac_waikato_ffts_FFTS.h: classes +@ENABLE_JNI_TRUE@	javah -cp $< nz.ac.waikato.ffts.FFTS +@ENABLE_JNI_TRUE@clean-local: +@ENABLE_JNI_TRUE@	-rm -rf classes + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ffts/java/jni/ffts_jni.c b/lib/ffts/java/jni/ffts_jni.c new file mode 100644 index 0000000..41fdf76 --- /dev/null +++ b/lib/ffts/java/jni/ffts_jni.c @@ -0,0 +1,233 @@ +/* + * This file is part of FFTS -- The Fastest Fourier Transform in the South + * + * Copyright (c) 2013, Michael Zucchi <notzed@gmail.com> + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + *   * Redistributions of source code must retain the above copyright + *     notice, this list of conditions and the following disclaimer. + *   * Redistributions in binary form must reproduce the above copyright + *     notice, this list of conditions and the following disclaimer in the + *     documentation and/or other materials provided with the distribution. + *   * Neither the name of the organization nor the + *     names of its contributors may be used to endorse or promote products + *     derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include <ffts.h> +#include <alloca.h> + +// Bit of a hack for android, as we can't build the *.h without +// the classes ... but we can't build the project without the jni. +#ifdef ANDROID +#include <jni.h> +#else +#include "nz_ac_waikato_ffts_FFTS.h" +#endif + +// TODO: feature tests instead +#ifdef HAVE_SSE +#define NEEDS_ALIGNED +#endif + +#ifdef NEEDS_ALIGNED +#define ALIGN_MASK 15 + +static void * +xmemalign(size_t align, size_t size) { +#if defined(HAVE_DECL_POSIX_MEMALIGN) +	void *r; + +	if (posix_memalign(&r, align, size) != 0) +		return NULL; +	return r;	 +#elif defined(HAVE_DECL_MEMALIGN) +	return memalign(align, size); +#else +#error "Require an aligning malloc" +#endif +} +#endif + +static void +throwOutOfMemoryError(JNIEnv *env, const char *msg) { +	jclass jc = (*env)->FindClass(env, "java/lang/OutOfMemoryError"); + +	if (jc) +		(*env)->ThrowNew(env, jc, msg); +} + +JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_complex_11d +(JNIEnv *env, jclass jc, jint N, jint sign) { +	ffts_plan_t *plan; + +	plan = ffts_init_1d(N, sign); +	if (!plan) +		throwOutOfMemoryError(env, NULL); + +	return (jlong)plan; +} + +JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_complex_12d +(JNIEnv *env, jclass jc, jint N1, jint N2, jint sign) { +	ffts_plan_t *plan; + +	plan = ffts_init_2d(N1, N2, sign); +	if (!plan) +		throwOutOfMemoryError(env, NULL); + +	return (jlong)plan; +} + +JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_complex_1nd +(JNIEnv *env, jclass jc, jintArray jNs, jint sign) { +	ffts_plan_t *plan; +	int n = (*env)->GetArrayLength(env, jNs); +	int *cNs; +	size_t *Ns; +	int i; + +	// Needs to convert java int array to size_t array +	// Get the int elements and conver to C type +	Ns = alloca(sizeof(*Ns) * n); +	cNs = alloca(sizeof(int) * n); +	(*env)->GetIntArrayRegion(env, jNs, 0, n, cNs); +	for (i=0;i<n;i++) +		Ns[i] = cNs[i]; + +	plan = ffts_init_nd(n, Ns, sign); +	if (!plan) +		throwOutOfMemoryError(env, NULL); + +	return (jlong)plan; +} + +JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_real_11d +(JNIEnv *env, jclass jc, jint N, jint sign) { +	ffts_plan_t *plan; + +	plan = ffts_init_1d_real(N, sign); +	if (!plan) +		throwOutOfMemoryError(env, NULL); + +	return (jlong)plan; +} + +JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_real_12d +(JNIEnv *env, jclass jc, jint N1, jint N2, jint sign) { +	ffts_plan_t *plan; + +	plan = ffts_init_2d_real(N1, N2, sign); +	if (!plan) +		throwOutOfMemoryError(env, NULL); + +	return (jlong)plan; +} + +JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_real_1nd +(JNIEnv *env, jclass jc, jintArray jNs, jint sign) { +	ffts_plan_t *plan; +	int n = (*env)->GetArrayLength(env, jNs); +	int *cNs; +	size_t *Ns; +	int i; + +	// Needs to convert java int array to size_t array +	// Get the int elements and conver to C type +	Ns = alloca(sizeof(*Ns) * n); +	cNs = alloca(sizeof(int) * n); +	(*env)->GetIntArrayRegion(env, jNs, 0, n, cNs); +	for (i=0;i<n;i++) +		Ns[i] = cNs[i]; + +	plan = ffts_init_nd_real(n, Ns, sign); +	if (!plan) +		throwOutOfMemoryError(env, NULL); + +	return (jlong)plan; +} + +JNIEXPORT void JNICALL Java_nz_ac_waikato_ffts_FFTS_execute__JJ_3FI_3FI +(JNIEnv *env, jclass jc, jlong p, jlong size, jfloatArray jsrc, jint soff, jfloatArray jdst, jint doff) { +	ffts_plan_t *plan = (ffts_plan_t *)p; + +	// TODO: check performance on android/arm +#ifdef NEEDS_ALIGNED +	// On oracle jvm this is faster than GetFloatArrayElements() +	void *src, *dst; + +	src = xmemalign(64, size * 4); +	if (!src) { +		throwOutOfMemoryError(env, NULL); +		return; +	} +	dst = xmemalign(64, size * 4); +	if (!dst) { +		free(src); +		throwOutOfMemoryError(env, NULL); +		return; +	} + +	(*env)->GetFloatArrayRegion(env, jsrc, 0, size, src + soff); +	ffts_execute(plan, src, dst); +	(*env)->SetFloatArrayRegion(env, jdst, 0, size, dst + doff); + +	free(dst); +	free(src); +#else +	// This is the fastest with oracle jvm, but doesn't work with sse ... +	void *src = (*env)->GetPrimitiveArrayCritical(env, jsrc, NULL); +	void *dst = (*env)->GetPrimitiveArrayCritical(env, jdst, NULL); + +	ffts_execute(plan, src + soff, dst + doff); + +	(*env)->ReleasePrimitiveArrayCritical(env, jdst, dst, 0); +	(*env)->ReleasePrimitiveArrayCritical(env, jsrc, src, 0); +#endif + +#if 0 +	// This is the slowest +	void *src = (*env)->GetFloatArrayElements(env, jsrc, NULL); +	void *dst = (*env)->GetFloatArrayElements(env, jdst, NULL); + +	ffts_execute(plan, src + soff, dst + doff); + +	(*env)->ReleaseFloatArrayElements(env, jdst, dst, 0); +	(*env)->ReleaseFloatArrayElements(env, jsrc, src, 0); +#endif +} + +JNIEXPORT void JNICALL Java_nz_ac_waikato_ffts_FFTS_execute__JJLjava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2 +(JNIEnv *env, jclass jc, jlong p, jlong size, jobject jsrc, jobject jdst) { +	ffts_plan_t *plan = (ffts_plan_t *)p; +	void *src = (*env)->GetDirectBufferAddress(env, jsrc); +	void *dst = (*env)->GetDirectBufferAddress(env, jdst); + +	// Bounds checking etc is in java side. + +	ffts_execute(plan, src, dst); +} + +JNIEXPORT void JNICALL Java_nz_ac_waikato_ffts_FFTS_free +(JNIEnv *env, jclass jc, jlong p) { +	ffts_plan_t *plan = (ffts_plan_t *)p; + +	ffts_free(plan); +} | 
