From 02167e7adbf5c05b9427bd535fd63096a88b86b0 Mon Sep 17 00:00:00 2001
From: nico <nico@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Tue, 24 May 2005 05:59:17 +0000
Subject: [PATCH] Add SableVM packages

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@1048 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 openwrt/package/Config.in                     |   5 +
 openwrt/package/Makefile                      |   3 +
 openwrt/package/libffi-sable/Config.in        |  12 ++
 openwrt/package/libffi-sable/Makefile         |  84 ++++++++
 .../libffi-sable/ipkg/libffi-sable.control    |   8 +
 openwrt/package/sablevm-classpath/Config.in   |  62 ++++++
 openwrt/package/sablevm-classpath/Makefile    |  89 +++++++++
 .../sablevm-classpath/files/mini.classlist    | 180 ++++++++++++++++++
 .../ipkg/libsablevm-classpath.control         |   9 +
 .../ipkg/sablevm-classpath-full.control       |   9 +
 .../ipkg/sablevm-classpath-mini.control       |   9 +
 openwrt/package/sablevm/Config.in             |  17 ++
 openwrt/package/sablevm/Makefile              |  68 +++++++
 openwrt/package/sablevm/ipkg/sablevm.control  |   9 +
 14 files changed, 564 insertions(+)
 create mode 100644 openwrt/package/libffi-sable/Config.in
 create mode 100644 openwrt/package/libffi-sable/Makefile
 create mode 100644 openwrt/package/libffi-sable/ipkg/libffi-sable.control
 create mode 100644 openwrt/package/sablevm-classpath/Config.in
 create mode 100644 openwrt/package/sablevm-classpath/Makefile
 create mode 100644 openwrt/package/sablevm-classpath/files/mini.classlist
 create mode 100644 openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control
 create mode 100644 openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control
 create mode 100644 openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control
 create mode 100644 openwrt/package/sablevm/Config.in
 create mode 100644 openwrt/package/sablevm/Makefile
 create mode 100644 openwrt/package/sablevm/ipkg/sablevm.control

diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in
index 49c540e1a..7e81af5a7 100644
--- a/openwrt/package/Config.in
+++ b/openwrt/package/Config.in
@@ -15,6 +15,11 @@ source "package/lcd4linux/Config.in"
 source "package/microperl/Config.in"
 source "package/monit/Config.in"
 source "package/osiris/Config.in"
+menu "sablevm - a Java Virtual Machine (JVM) implementation"
+source "package/sablevm/Config.in"
+source "package/sablevm-classpath/Config.in"
+source "package/libffi-sable/Config.in"
+endmenu
 source "package/screen/Config.in"
 
 comment "Networking"
diff --git a/openwrt/package/Makefile b/openwrt/package/Makefile
index 2a2aca626..5dd8432b6 100644
--- a/openwrt/package/Makefile
+++ b/openwrt/package/Makefile
@@ -37,6 +37,7 @@ package-$(BR2_PACKAGE_L2TPD) += l2tpd
 package-$(BR2_PACKAGE_LCD4LINUX) += lcd4linux
 package-$(BR2_PACKAGE_LIBELF) += libelf
 package-$(BR2_PACKAGE_LIBEVENT) += libevent
+package-$(BR2_PACKAGE_LIBFFI_SABLE) += libffi-sable
 package-$(BR2_PACKAGE_LIBGD) += libgd
 package-$(BR2_PACKAGE_LIBNET) += libnet
 package-$(BR2_PACKAGE_LIBOSIP2) += libosip2
@@ -77,6 +78,8 @@ package-$(BR2_PACKAGE_PPTPD) += pptpd
 package-$(BR2_PACKAGE_QUAGGA) += quagga
 package-$(BR2_PACKAGE_RADVD) += radvd
 package-$(BR2_PACKAGE_ROBOCFG) += robocfg
+package-$(BR2_PACKAGE_SABLEVM) += sablevm
+package-$(BR2_PACKAGE_SABLEVM_CLASSPATH) += sablevm-classpath
 package-$(BR2_PACKAGE_SCREEN) += screen
 package-$(BR2_PACKAGE_SDK) += sdk
 package-$(BR2_PACKAGE_SER) += ser
diff --git a/openwrt/package/libffi-sable/Config.in b/openwrt/package/libffi-sable/Config.in
new file mode 100644
index 000000000..afdf2a257
--- /dev/null
+++ b/openwrt/package/libffi-sable/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBFFI_SABLE
+	tristate "libffi-sable - Foreign Function Interface library (for sablevm)"
+#	default m if CONFIG_DEVEL
+	default n
+	help
+	  The libffi library provides a portable, high level programming
+	  interface to various calling conventions. This allows a programmer to
+	  call any function specified by a call interface description at run
+	  time.  
+	  
+	  http://sources.redhat.com/libffi/
+	  
diff --git a/openwrt/package/libffi-sable/Makefile b/openwrt/package/libffi-sable/Makefile
new file mode 100644
index 000000000..a8b8ac703
--- /dev/null
+++ b/openwrt/package/libffi-sable/Makefile
@@ -0,0 +1,84 @@
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libffi-sable
+PKG_VERSION:=3325
+PKG_RELEASE:=3
+PKG_MD5SUM:=0c32eaaea0269c5fbe156fcd0be3e5bd
+
+PKG_SOURCE_URL:=http://sablevm.org/download/snapshot/2005-01-21/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_CAT:=zcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(TOPDIR)/package/rules.mk
+
+BR2_PACKAGE_LIBFFI_SABLE=m
+
+$(eval $(call PKG_template,LIBFFI_SABLE,libffi-sable,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+
+$(PKG_BUILD_DIR)/.configured:
+	(cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(strip $(TARGET_CFLAGS))" \
+		CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
+		LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
+		./configure \
+		  --target=$(GNU_TARGET_NAME) \
+		  --host=$(GNU_TARGET_NAME) \
+		  --build=$(GNU_HOST_NAME) \
+		  --program-prefix="" \
+		  --program-suffix="" \
+		  --prefix=/usr \
+		  --exec-prefix=/usr \
+		  --bindir=/usr/bin \
+		  --datadir=/usr/share \
+		  --includedir=/usr/include \
+		  --infodir=/usr/share/info \
+		  --libdir=/usr/lib \
+		  --libexecdir=/usr/lib \
+		  --localstatedir=/var \
+		  --mandir=/usr/share/man \
+		  --sbindir=/usr/sbin \
+		  --sysconfdir=/etc \
+		  $(DISABLE_LARGEFILE) \
+		  $(DISABLE_NLS) \
+		  --enable-shared \
+		  --enable-static \
+		  --disable-debug \
+	);
+	touch $@
+
+$(PKG_BUILD_DIR)/.built:
+	rm -rf $(PKG_INSTALL_DIR)
+	mkdir -p $(PKG_INSTALL_DIR)
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		DESTDIR="$(PKG_INSTALL_DIR)" \
+		all install
+	touch $@
+
+$(IPKG_LIBFFI_SABLE):
+	install -m0755 -d $(IDIR_LIBFFI_SABLE)/usr/lib
+	cp -fp $(PKG_INSTALL_DIR)/usr/lib/libffi.so.* $(IDIR_LIBFFI_SABLE)/usr/lib/
+	$(RSTRIP) $(IDIR_LIBFFI_SABLE)
+	$(IPKG_BUILD) $(IDIR_LIBFFI_SABLE) $(PACKAGE_DIR)
+
+$(STAGING_DIR)/usr/lib/libffi.so: $(PKG_BUILD_DIR)/.built
+	mkdir -p $(STAGING_DIR)/usr/include
+	cp -fp $(PKG_INSTALL_DIR)/usr/include/ffi{,target}.h $(STAGING_DIR)/usr/include/
+	mkdir -p $(STAGING_DIR)/usr/lib
+	cp -fp $(PKG_INSTALL_DIR)/usr/lib/libffi.{a,so*} $(STAGING_DIR)/usr/lib/
+	touch $@
+
+install-dev: $(STAGING_DIR)/usr/lib/libffi.so
+
+uninstall-dev:
+	rm -rf \
+		$(STAGING_DIR)/usr/include/ffi{,target}.h \
+		$(STAGING_DIR)/usr/lib/libffi.{a,so*} \
+
+compile: install-dev
+clean: uninstall-dev
diff --git a/openwrt/package/libffi-sable/ipkg/libffi-sable.control b/openwrt/package/libffi-sable/ipkg/libffi-sable.control
new file mode 100644
index 000000000..c4b20db2a
--- /dev/null
+++ b/openwrt/package/libffi-sable/ipkg/libffi-sable.control
@@ -0,0 +1,8 @@
+Package: libffi-sable
+Priority: optional
+Section: libs
+Version: [TBDL]
+Architecture: [TBDL]
+Maintainer: Nico <nthill@free.fr>
+Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/libffi-sable/
+Description: Foreign Function Interface library
diff --git a/openwrt/package/sablevm-classpath/Config.in b/openwrt/package/sablevm-classpath/Config.in
new file mode 100644
index 000000000..57adcae25
--- /dev/null
+++ b/openwrt/package/sablevm-classpath/Config.in
@@ -0,0 +1,62 @@
+config BR2_PACKAGE_SABLEVM_CLASSPATH
+	depends BR2_PACKAGE_LIBSABLEVM_CLASSPATH
+	bool
+	default n
+
+config BR2_PACKAGE_LIBSABLEVM_CLASSPATH
+	depends BR2_PACKAGE_SABLEVM
+	prompt "libsablevm-classpath - Essential native libraries for Java"
+	tristate
+#	default m if CONFIG_DEVEL
+	default n
+	select BR2_PACKAGE_SABLEVM_CLASSPATH
+	help
+	  GNU Classpath, Essential Libraries for Java, is a GNU project to create 
+	  free core class libraries for use with virtual machines and compilers for 
+	  the java programming language.
+	  
+	  This is a modified version for use with SableVM.
+	  
+	  http://www.gnu.org/software/classpath/
+	  
+	  This package contains the native shared libraries, needed by other packages.
+	  
+
+choice
+	depends BR2_PACKAGE_LIBSABLEVM_CLASSPATH
+	prompt "sablevm-classpath - Essential classes for Java"
+	tristate
+	optional
+
+config BR2_PACKAGE_SABLEVM_CLASSPATH_FULL
+	prompt "...-full: Full set"
+	tristate
+	help
+	  GNU Classpath, Essential Libraries for Java, is a GNU project to create 
+	  free core class libraries for use with virtual machines and compilers for 
+	  the java programming language.
+	  
+	  This is a modified version for use with SableVM.
+	  
+	  http://www.gnu.org/software/classpath/
+	  
+	  This package contains the full set of Java compiled classes.
+	  It will unlikely fit on your router as-is.
+	  
+config BR2_PACKAGE_SABLEVM_CLASSPATH_MINI
+	prompt "...-mini: Minimal set"
+	tristate
+	help
+	  
+	  GNU Classpath, Essential Libraries for Java, is a GNU project to create 
+	  free core class libraries for use with virtual machines and compilers for 
+	  the java programming language.
+	  
+	  This is a modified version for use with SableVM.
+	  
+	  http://www.gnu.org/software/classpath/
+	  
+	  This package contains only a minimal set of Java compiled classes, just 
+	  enough to run the famous "Hello World !" test program.
+	  
+endchoice
diff --git a/openwrt/package/sablevm-classpath/Makefile b/openwrt/package/sablevm-classpath/Makefile
new file mode 100644
index 000000000..1730ea9fd
--- /dev/null
+++ b/openwrt/package/sablevm-classpath/Makefile
@@ -0,0 +1,89 @@
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=sablevm-classpath
+PKG_VERSION:=1.11.3
+PKG_RELEASE:=1
+PKG_MD5SUM:=aea6e808c5f2e3646a60971485220bff
+
+PKG_SOURCE_URL:=http://sablevm.org/download/release/$(PKG_VERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_CAT:=zcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(TOPDIR)/package/rules.mk
+
+BR2_PACKAGE_LIBSABLEVM_CLASSPATH=m
+BR2_PACKAGE_SABLEVM_CLASSPATH_FULL=m
+BR2_PACKAGE_SABLEVM_CLASSPATH_MINI=m
+
+$(eval $(call PKG_template,LIBSABLEVM_CLASSPATH,libsablevm-classpath,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+$(eval $(call PKG_template,SABLEVM_CLASSPATH_FULL,sablevm-classpath-full,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+$(eval $(call PKG_template,SABLEVM_CLASSPATH_MINI,sablevm-classpath-mini,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+
+$(PKG_BUILD_DIR)/.configured:
+	(cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(strip $(TARGET_CFLAGS))" \
+		CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
+		LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
+		./configure \
+		  --target=$(GNU_TARGET_NAME) \
+		  --host=$(GNU_TARGET_NAME) \
+		  --build=$(GNU_HOST_NAME) \
+		  --program-prefix="" \
+		  --program-suffix="" \
+		  --prefix=/usr \
+		  --exec-prefix=/usr \
+		  --bindir=/usr/bin \
+		  --datadir=/usr/share \
+		  --includedir=/usr/include \
+		  --infodir=/usr/share/info \
+		  --libdir=/usr/lib \
+		  --libexecdir=/usr/lib \
+		  --localstatedir=/var \
+		  --mandir=/usr/share/man \
+		  --sbindir=/usr/sbin \
+		  --sysconfdir=/etc \
+		  $(DISABLE_LARGEFILE) \
+		  $(DISABLE_NLS) \
+		  --enable-shared \
+		  --disable-static \
+		  --disable-gtk-peer \
+		  --disable-gtk-cairo \
+		  --without-x \
+	);
+	touch $@
+
+$(PKG_BUILD_DIR)/.built:
+	rm -rf $(PKG_INSTALL_DIR)
+	mkdir -p $(PKG_INSTALL_DIR)
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		DESTDIR="$(PKG_INSTALL_DIR)" \
+		all install
+	cp ./files/mini.classlist $(PKG_BUILD_DIR)/lib/
+	cd $(PKG_BUILD_DIR)/lib ; fastjar -Mcf mini.jar -@ < mini.classlist
+	touch $@
+
+$(IPKG_LIBSABLEVM_CLASSPATH):
+	install -d -m0755 $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/sablevm-classpath
+	cp -fp $(PKG_INSTALL_DIR)/usr/lib/sablevm-classpath/libjava*.so $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/sablevm-classpath/
+	install -d -m0755 $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/security
+	cp -fp $(PKG_INSTALL_DIR)/usr/lib/security/classpath.security $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/security/
+	$(RSTRIP) $(IDIR_LIBSABLEVM_CLASSPATH)
+	$(IPKG_BUILD) $(IDIR_LIBSABLEVM_CLASSPATH) $(PACKAGE_DIR)
+
+$(IPKG_SABLEVM_CLASSPATH_FULL):
+	install -d -m0755 $(IDIR_SABLEVM_CLASSPATH_FULL)/usr/share/sablevm-classpath
+	cp -fp $(PKG_INSTALL_DIR)/usr/share/sablevm-classpath/{libclasspath,resources}.jar \
+		$(IDIR_SABLEVM_CLASSPATH_FULL)/usr/share/sablevm-classpath/
+	$(IPKG_BUILD) $(IDIR_SABLEVM_CLASSPATH_FULL) $(PACKAGE_DIR)
+	
+$(IPKG_SABLEVM_CLASSPATH_MINI):
+	install -d -m0755 $(IDIR_SABLEVM_CLASSPATH_MINI)/usr/share/sablevm-classpath
+	install -m0755 $(PKG_BUILD_DIR)/lib/mini.jar \
+		$(IDIR_SABLEVM_CLASSPATH_MINI)/usr/share/sablevm-classpath/libclasspath.jar
+	$(IPKG_BUILD) $(IDIR_SABLEVM_CLASSPATH_MINI) $(PACKAGE_DIR)
diff --git a/openwrt/package/sablevm-classpath/files/mini.classlist b/openwrt/package/sablevm-classpath/files/mini.classlist
new file mode 100644
index 000000000..1186d6f6f
--- /dev/null
+++ b/openwrt/package/sablevm-classpath/files/mini.classlist
@@ -0,0 +1,180 @@
+./gnu/classpath/SystemProperties.class
+./gnu/classpath/VMStackWalker.class
+./gnu/classpath/VMSystemProperties.class
+./gnu/java/io/decode/Decoder.class
+./gnu/java/io/decode/Decoder8859_1.class
+./gnu/java/io/decode/DecoderEightBitLookup.class
+./gnu/java/io/encode/Encoder.class
+./gnu/java/io/encode/Encoder8859_1.class
+./gnu/java/io/encode/EncoderEightBitLookup.class
+./gnu/java/io/EncodingManager.class
+./gnu/java/net/protocol/file/Handler.class
+./gnu/java/nio/channels/FileChannelImpl.class
+./gnu/java/security/provider/DefaultPolicy.class
+./java/io/BufferedInputStream.class
+./java/io/BufferedOutputStream.class
+./java/io/File.class
+./java/io/FileDescriptor.class
+./java/io/FileInputStream.class
+./java/io/FileOutputStream.class
+./java/io/FilePermission.class
+./java/io/FilterInputStream.class
+./java/io/FilterOutputStream.class
+./java/io/InputStream.class
+./java/io/OutputStream.class
+./java/io/OutputStreamWriter.class
+./java/io/PrintStream.class
+./java/io/PrintStream$ForwardStream.class
+./java/io/PrintWriter.class
+./java/io/Reader.class
+./java/io/Serializable.class
+./java/io/VMFile.class
+./java/io/Writer.class
+./java/lang/AbstractMethodError.class
+./java/lang/ArithmeticException.class
+./java/lang/ArrayIndexOutOfBoundsException.class
+./java/lang/ArrayStoreException.class
+./java/lang/Character.class
+./java/lang/CharSequence.class
+./java/lang/Class.class
+./java/lang/ClassCastException.class
+./java/lang/ClassCircularityError.class
+./java/lang/ClassFormatError.class
+./java/lang/ClassLoader.class
+./java/lang/ClassLoader$1.class
+./java/lang/ClassLoader$StaticData.class
+./java/lang/ClassNotFoundException.class
+./java/lang/Cloneable.class
+./java/lang/Comparable.class
+./java/lang/Error.class
+./java/lang/Exception.class
+./java/lang/ExceptionInInitializerError.class
+./java/lang/IllegalMonitorStateException.class
+./java/lang/IncompatibleClassChangeError.class
+./java/lang/IndexOutOfBoundsException.class
+./java/lang/Integer.class
+./java/lang/InternalError.class
+./java/lang/InterruptedException.class
+./java/lang/LinkageError.class
+./java/lang/Math.class
+./java/lang/NegativeArraySizeException.class
+./java/lang/NoClassDefFoundError.class
+./java/lang/NoSuchFieldError.class
+./java/lang/NoSuchFieldException.class
+./java/lang/NoSuchMethodError.class
+./java/lang/NoSuchMethodException.class
+./java/lang/NullPointerException.class
+./java/lang/Number.class
+./java/lang/Object.class
+./java/lang/OutOfMemoryError.class
+./java/lang/ref/Reference.class
+./java/lang/ref/ReferenceQueue.class
+./java/lang/ref/WeakReference.class
+./java/lang/reflect/AccessibleObject.class
+./java/lang/reflect/Constructor.class
+./java/lang/reflect/Field.class
+./java/lang/reflect/InvocationTargetException.class
+./java/lang/reflect/Member.class
+./java/lang/reflect/Method.class
+./java/lang/reflect/Modifier.class
+./java/lang/reflect/ReflectUtil.class
+./java/lang/Runnable.class
+./java/lang/Runtime.class
+./java/lang/RuntimeException.class
+./java/lang/SecurityManager.class
+./java/lang/StackTraceElement.class
+./java/lang/String.class
+./java/lang/String$CaseInsensitiveComparator.class
+./java/lang/StringBuffer.class
+./java/lang/StringCreator.class
+./java/lang/System.class
+./java/lang/Thread.class
+./java/lang/ThreadGroup.class
+./java/lang/ThreadLocal.class
+./java/lang/ThreadLocal$Key.class
+./java/lang/Throwable.class
+./java/lang/UnsatisfiedLinkError.class
+./java/lang/UnsupportedClassVersionError.class
+./java/lang/VerifyError.class
+./java/lang/VirtualMachine.class
+./java/lang/VirtualMachineError.class
+./java/lang/VMClass.class
+./java/lang/VMClassLoader.class
+./java/lang/VMObject.class
+./java/lang/VMRuntime.class
+./java/lang/VMString.class
+./java/lang/VMSystem.class
+./java/lang/VMThread.class
+./java/net/URL.class
+./java/net/URL$1.class
+./java/net/URLClassLoader.class
+./java/net/URLClassLoader$FileResource.class
+./java/net/URLClassLoader$FileURLLoader.class
+./java/net/URLClassLoader$Resource.class
+./java/net/URLClassLoader$URLLoader.class
+./java/net/URLStreamHandler.class
+./java/nio/ByteBuffer$vm.class
+./java/nio/channels/ByteChannel.class
+./java/nio/channels/Channel.class
+./java/nio/channels/FileChannel.class
+./java/nio/channels/GatheringByteChannel.class
+./java/nio/channels/InterruptibleChannel.class
+./java/nio/channels/ReadableByteChannel.class
+./java/nio/channels/ScatteringByteChannel.class
+./java/nio/channels/spi/AbstractInterruptibleChannel.class
+./java/nio/channels/WritableByteChannel.class
+./java/security/AccessControlContext.class
+./java/security/AccessController.class
+./java/security/AllPermission.class
+./java/security/AllPermission$AllPermissionCollection.class
+./java/security/CodeSource.class
+./java/security/Guard.class
+./java/security/Permission.class
+./java/security/PermissionCollection.class
+./java/security/Permissions.class
+./java/security/Permissions$PermissionsHash.class
+./java/security/Policy.class
+./java/security/Principal.class
+./java/security/PrivilegedAction.class
+./java/security/ProtectionDomain.class
+./java/security/SecureClassLoader.class
+./java/security/VMAccessController.class
+./java/util/AbstractCollection.class
+./java/util/AbstractList.class
+./java/util/AbstractMap.class
+./java/util/AbstractMap$BasicMapEntry.class
+./java/util/AbstractSequentialList.class
+./java/util/AbstractSet.class
+./java/util/ArrayList.class
+./java/util/Collection.class
+./java/util/Collections$SynchronizedCollection.class
+./java/util/Collections$SynchronizedIterator.class
+./java/util/Collections$SynchronizedSet.class
+./java/util/Comparator.class
+./java/util/Dictionary.class
+./java/util/Enumeration.class
+./java/util/HashMap.class
+./java/util/HashMap$HashEntry.class
+./java/util/HashMap$HashIterator.class
+./java/util/HashSet.class
+./java/util/Hashtable.class
+./java/util/Hashtable$3.class
+./java/util/Hashtable$HashEntry.class
+./java/util/Hashtable$HashIterator.class
+./java/util/Iterator.class
+./java/util/LinkedList.class
+./java/util/LinkedList$Entry.class
+./java/util/List.class
+./java/util/Locale.class
+./java/util/Map.class
+./java/util/Map$Entry.class
+./java/util/Properties.class
+./java/util/RandomAccess.class
+./java/util/Set.class
+./java/util/StringTokenizer.class
+./java/util/Vector.class
+./java/util/WeakHashMap.class
+./java/util/WeakHashMap$1.class
+./java/util/WeakHashMap$WeakBucket.class
+./java/util/WeakHashMap$WeakBucket$WeakEntry.class
+./java/util/WeakHashMap$WeakEntrySet.class
diff --git a/openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control b/openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control
new file mode 100644
index 000000000..562be5398
--- /dev/null
+++ b/openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control
@@ -0,0 +1,9 @@
+Package: libsablevm-classpath
+Priority: optional
+Section: libs
+Version: [TBDL]
+Architecture: [TBDL]
+Maintainer: Nico <nthill@free.fr>
+Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/sablevm-classpath/
+Description: Essential native libraries for Java
+Depends: sablevm
diff --git a/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control b/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control
new file mode 100644
index 000000000..cc2594851
--- /dev/null
+++ b/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control
@@ -0,0 +1,9 @@
+Package: sablevm-classpath-full
+Priority: optional
+Section: libs
+Version: [TBDL]
+Architecture: [TBDL]
+Maintainer: Nico <nthill@free.fr>
+Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/sablevm-classpath/
+Description: Essential classes for Java (full set)
+Depends: sablevm, libsablevm-classpath
diff --git a/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control b/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control
new file mode 100644
index 000000000..992d84d84
--- /dev/null
+++ b/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control
@@ -0,0 +1,9 @@
+Package: sablevm-classpath-mini
+Priority: optional
+Section: libs
+Version: [TBDL]
+Architecture: [TBDL]
+Maintainer: Nico <nthill@free.fr>
+Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/sablevm-classpath/
+Description: Essential classes for Java (minimal set)
+Depends: sablevm, libsablevm-classpath
diff --git a/openwrt/package/sablevm/Config.in b/openwrt/package/sablevm/Config.in
new file mode 100644
index 000000000..70cde6063
--- /dev/null
+++ b/openwrt/package/sablevm/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_SABLEVM
+	tristate "sablevm - A Java Virtual Machine (JVM) implementation"
+#	default m if CONFIG_DEVEL
+	default n
+	select BR2_PACKAGE_LIBFFI_SABLE
+	select BR2_PACKAGE_LIBLTDL
+	select BR2_PACKAGE_LIBPOPT
+	select BR2_PACKAGE_ZLIB
+	help
+	  SableVM is a robust, extremely portable, efficient, and specifications-
+	  -compliant Java virtual machine that aims to be easy to maintain and to 
+	  extend. It features a state-of-the-art and efficient interpreter engine. 
+	  Its source code is very accessible and easy to understand. It also has 
+	  many robustness features that have been the object of careful design.  
+	  
+	  http://sablevm.org/
+	  
diff --git a/openwrt/package/sablevm/Makefile b/openwrt/package/sablevm/Makefile
new file mode 100644
index 000000000..66cb819c5
--- /dev/null
+++ b/openwrt/package/sablevm/Makefile
@@ -0,0 +1,68 @@
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=sablevm
+PKG_VERSION:=1.11.3
+PKG_RELEASE:=1
+PKG_MD5SUM:=aea6e808c5f2e3646a60971485220bff
+
+PKG_SOURCE_URL:=http://sablevm.org/download/release/$(PKG_VERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_CAT:=zcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(TOPDIR)/package/rules.mk
+
+BR2_PACKAGE_SABLEVM=m
+
+$(eval $(call PKG_template,SABLEVM,sablevm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+
+$(PKG_BUILD_DIR)/.configured:
+	(cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(strip $(TARGET_CFLAGS))" \
+		CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
+		LDFLAGS="-L$(STAGING_DIR)/usr/lib -lffi -lltdl -lpopt -lz" \
+		./configure \
+		  --target=$(GNU_TARGET_NAME) \
+		  --host=$(GNU_TARGET_NAME) \
+		  --build=$(GNU_HOST_NAME) \
+		  --program-prefix="" \
+		  --program-suffix="" \
+		  --prefix=/usr \
+		  --exec-prefix=/usr \
+		  --bindir=/usr/bin \
+		  --datadir=/usr/share \
+		  --includedir=/usr/include \
+		  --infodir=/usr/share/info \
+		  --libdir=/usr/lib \
+		  --libexecdir=/usr/lib \
+		  --localstatedir=/var \
+		  --mandir=/usr/share/man \
+		  --sbindir=/usr/sbin \
+		  --sysconfdir=/etc \
+		  $(DISABLE_LARGEFILE) \
+		  $(DISABLE_NLS) \
+		  --enable-shared \
+		  --disable-static \
+	);
+	touch $@
+
+$(PKG_BUILD_DIR)/.built:
+	rm -rf $(PKG_INSTALL_DIR)
+	mkdir -p $(PKG_INSTALL_DIR)
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		DESTDIR="$(PKG_INSTALL_DIR)" \
+		all install
+	touch $@
+
+$(IPKG_SABLEVM):
+	install -m0755 -d $(IDIR_SABLEVM)/usr/bin
+	cp -fp $(PKG_INSTALL_DIR)/usr/bin/{java-,}sablevm $(IDIR_SABLEVM)/usr/bin/
+	install -m0755 -d $(IDIR_SABLEVM)/usr/lib
+	cp -fp $(PKG_INSTALL_DIR)/usr/lib/libsablevm-*.so $(IDIR_SABLEVM)/usr/lib/
+	$(RSTRIP) $(IDIR_SABLEVM)
+	$(IPKG_BUILD) $(IDIR_SABLEVM) $(PACKAGE_DIR)
diff --git a/openwrt/package/sablevm/ipkg/sablevm.control b/openwrt/package/sablevm/ipkg/sablevm.control
new file mode 100644
index 000000000..92f12c271
--- /dev/null
+++ b/openwrt/package/sablevm/ipkg/sablevm.control
@@ -0,0 +1,9 @@
+Package: sablevm
+Priority: optional
+Section: misc
+Version: [TBDL]
+Architecture: [TBDL]
+Maintainer: Nico <nthill@free.fr>
+Source: http://nthill.free.fr/openwrt/sources/sablevm/
+Description: A Java Virtual Machine (JVM) implementation
+Depends: libffi-sable, libltdl, libpopt, zlib
-- 
2.20.1