summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openwrt/package/Config.in5
-rw-r--r--openwrt/package/Makefile3
-rw-r--r--openwrt/package/libffi-sable/Config.in12
-rw-r--r--openwrt/package/libffi-sable/Makefile84
-rw-r--r--openwrt/package/libffi-sable/ipkg/libffi-sable.control8
-rw-r--r--openwrt/package/sablevm-classpath/Config.in62
-rw-r--r--openwrt/package/sablevm-classpath/Makefile89
-rw-r--r--openwrt/package/sablevm-classpath/files/mini.classlist180
-rw-r--r--openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control9
-rw-r--r--openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control9
-rw-r--r--openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control9
-rw-r--r--openwrt/package/sablevm/Config.in17
-rw-r--r--openwrt/package/sablevm/Makefile68
-rw-r--r--openwrt/package/sablevm/ipkg/sablevm.control9
14 files changed, 564 insertions, 0 deletions
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