diff options
author | Philip Balister <philip@balister.org> | 2007-08-08 23:08:40 +0000 |
---|---|---|
committer | Philip Balister <philip@balister.org> | 2007-08-08 23:08:40 +0000 |
commit | 2834b0db4e4bad2956bf51638d1d3f4e7b48f25c (patch) | |
tree | d129788e0b39e34a4fc77d41d617a6fd7dda69af | |
parent | 8546864754d38a632194f52d15a554c33728a554 (diff) | |
parent | 1c512d6f768199951cc7e0b97576761a0700776e (diff) |
merge of '036e2e71bb09d2efdeab9165b6946b947e4316b2'
and '73523d2b53ed38a63f46fcb966b7de6091c0c9d5'
24 files changed, 1040 insertions, 12 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass index 45a0282265..1294e41c65 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -82,6 +82,9 @@ def base_dep_prepend(d): if bb.data.getVar('PN', d, True) == "shasum-native": deps = "" + # INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not + # we need that built is the responsibility of the patch function / class, not + # the application. if not bb.data.getVar('INHIBIT_DEFAULT_DEPS', d): if (bb.data.getVar('HOST_SYS', d, 1) != bb.data.getVar('BUILD_SYS', d, 1)): @@ -272,8 +275,12 @@ oe_libinstall() { # If such file doesn't exist, try to cut version suffix if [ ! -f "$lafile" ]; then - libname=`echo "$libname" | sed 's/-[0-9.]*$//'` - lafile=$libname.la + libname1=`echo "$libname" | sed 's/-[0-9.]*$//'` + lafile1=$libname.la + if [ -f "$lafile1" ]; then + libname=$libname1 + lafile=$lafile1 + fi fi if [ -f "$lafile" ]; then @@ -807,6 +814,7 @@ def base_after_parse(d): pn = bb.data.getVar('PN', d, 1) + # OBSOLETE in bitbake 1.7.4 srcdate = bb.data.getVar('SRCDATE_%s' % pn, d, 1) if srcdate != None: @@ -816,9 +824,15 @@ def base_after_parse(d): if use_nls != None: bb.data.setVar('USE_NLS', use_nls, d) - # Make sure MACHINE *isn't* exported + # Make sure MACHINE isn't exported + # (breaks binutils at least) bb.data.delVarFlag('MACHINE', 'export', d) bb.data.setVarFlag('MACHINE', 'unexport', 1, d) + + # Make sure DISTRO isn't exported + # (breaks sysvinit at least) + bb.data.delVarFlag('DISTRO', 'export', d) + bb.data.setVarFlag('DISTRO', 'unexport', 1, d) # Git packages should DEPEND on git-native srcuri = bb.data.getVar('SRC_URI', d, 1) @@ -826,7 +840,6 @@ def base_after_parse(d): depends = bb.data.getVarFlag('do_fetch', 'depends', d) or "" depends = depends + " git-native:do_populate_staging" bb.data.setVarFlag('do_fetch', 'depends', depends, d) - mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1) old_arch = bb.data.getVar('PACKAGE_ARCH', d, 1) diff --git a/classes/gtk-icon-cache.bbclass b/classes/gtk-icon-cache.bbclass index 855a72a2f7..b86562890a 100644 --- a/classes/gtk-icon-cache.bbclass +++ b/classes/gtk-icon-cache.bbclass @@ -1,6 +1,8 @@ FILES_${PN} += "${datadir}/icons/hicolor" -RDEPENDS += " hicolor-icon-theme " +RDEPENDS += "hicolor-icon-theme" +# This could run on the host as icon cache files are architecture independent, +# but there is no gtk-update-icon-cache built natively. gtk-icon-cache_postinst() { if [ "x$D" != "x" ]; then exit 1 diff --git a/conf/bitbake.conf b/conf/bitbake.conf index 19910d32e7..3b60983bcc 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -110,23 +110,33 @@ RPROVIDES = "" PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev ${PN}-locale" FILES = "" + FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \ ${sysconfdir} ${sharedstatedir} ${localstatedir} \ /bin/* /sbin/* /lib/*.so* ${datadir}/${PN} ${libdir}/${PN}/* \ ${datadir}/pixmaps ${datadir}/applications \ ${datadir}/idl ${datadir}/omf ${datadir}/sounds \ ${libdir}/bonobo/servers" -SECTION_${PN}-doc = "doc" + FILES_${PN}-doc = "${docdir} ${mandir} ${infodir} ${datadir}/gtk-doc \ ${datadir}/gnome/help" -SECTION_${PN}-dev = "devel" +SECTION_${PN}-doc = "doc" + FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \ ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig \ /lib/*.a /lib/*.o ${datadir}/aclocal" -FILES_${PN}-locale = "${datadir}/locale" +SECTION_${PN}-dev = "devel" +ALLOW_EMPTY_${PN}-dev = "1" +RDEPENDS_${PN}-dev = "${@['', '${PN} (>= ${PV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}" + FILES_${PN}-dbg = "${bindir}/.debug ${sbindir}/.debug ${libexecdir}/.debug ${libdir}/.debug \ /bin/.debug /sbin/.debug /lib/.debug ${libdir}/${PN}/.debug \ ${libdir}/matchbox-panel/.debug" +SECTION_${PN}-dbg = "devel" +ALLOW_EMPTY_${PN}-dbg = "1" +RRECOMMENDS_${PN}-dbg = "${@['', '${PN} (>= ${PV})'][packaged(bb.data.getVar('PN', d, 1), d) == True]}" + +FILES_${PN}-locale = "${datadir}/locale" # File manifest @@ -414,7 +424,8 @@ SLOT = "0" # Other -export PKG_CONFIG_PATH = "${STAGING_LIBDIR}/pkgconfig" +export PKG_CONFIG_DIR = "${STAGING_LIBDIR}/pkgconfig" +export PKG_CONFIG_PATH = "${PKG_CONFIG_DIR}" export PKG_CONFIG_DISABLE_UNINSTALLED = "yes" export QMAKE_MKSPEC_PATH = "${STAGING_DIR}/${BUILD_SYS}/share/qmake" diff --git a/packages/autoconf/autoconf-native_2.61.bb b/packages/autoconf/autoconf-native_2.61.bb index 3efa04bdd2..e992de97b7 100644 --- a/packages/autoconf/autoconf-native_2.61.bb +++ b/packages/autoconf/autoconf-native_2.61.bb @@ -9,9 +9,8 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/autoconf-${PV}" inherit native # -# without it build break: +# without it the build breaks: # | make[1]: *** No rule to make target `../bin/autom4te', needed by `autoconf.in'. Stop. # PARALLEL_MAKE = "" -DEFAULT_PREFERENCE = "-1" diff --git a/packages/autoconf/autoconf_2.61.bb b/packages/autoconf/autoconf_2.61.bb index 1fad7ef7cb..525e8d0f92 100644 --- a/packages/autoconf/autoconf_2.61.bb +++ b/packages/autoconf/autoconf_2.61.bb @@ -13,4 +13,3 @@ SRC_URI += "file://autoreconf-include.patch;patch=1 \ file://config-site.patch;patch=1 \ ${@['file://path_prog_fixes.patch;patch=1', ''][bb.data.inherits_class('native', d)]}" -DEFAULT_PREFERENCE = "-1" diff --git a/packages/cacao/.mtn2git_empty b/packages/cacao/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/cacao/.mtn2git_empty diff --git a/packages/cacao/cacao-cldc_0.98.bb b/packages/cacao/cacao-cldc_0.98.bb new file mode 100644 index 0000000000..f7797206de --- /dev/null +++ b/packages/cacao/cacao-cldc_0.98.bb @@ -0,0 +1,35 @@ + +require cacao.inc + +SRC_URI +="file://midpath.patch;patch=1 \ + file://offsets_make.patch;patch=1 \ + file://classpath_var.patch;patch=1 \ + file://libmath.patch;patch=1 \ + file://arm_mmap.patch;patch=1 \ + " +SRC_URI_append_arm = "file://offset.h_arm.patch;patch=1" + +DEPENDS = "cacaoh-cldc-native ecj-native classpath-minimal-native virtual/cldc-api-1.1 libtool zlib" +RDEPENDS = "virtual/cldc-api-1.1" +RPROVIDES = "virtual/java" + +EXTRA_OECONF += "--with-classpath-libdir=${STAGING_LIBDIR}/classpath-minimal \ + --with-classpath-includedir=${STAGING_INCDIR}/classpath-minimal \ + --enable-jni \ + --enable-java=cldc1.1 \ + --with-classpath=cldc1.1 \ + --with-classpath-classes=${STAGING_LIBDIR}/java/cldc1.1.jar \ + --with-target-classpath-classes=${libdir}/java/cldc1.1.jar \ + --with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh \ + --disable-libjvm \ + " + +PACKAGES = "${PN} ${PN}-doc ${PN}-dbg" + +FILES_${PN} = "${bindir}/cacao" +FILES_${PN}-doc = "${datadir}/man" +FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/.debug/lib*.so*" + +ALTERNATIVE_NAME = "java" +ALTERNATIVE_PATH = "${bindir}/cacao" +ALTERNATIVE_PRIORITY = "10" diff --git a/packages/cacao/cacao.inc b/packages/cacao/cacao.inc new file mode 100644 index 0000000000..1f783b8238 --- /dev/null +++ b/packages/cacao/cacao.inc @@ -0,0 +1,15 @@ +DESCRIPTION = "cacao is a Java Virtual Machine, which uses GNU Classpath as default Java core library" +HOMEPAGE = "http://www.cacaojvm.org/" +LICENSE = "GPL" +PRIORITY = "optional" +SECTION = "interpreters" + +inherit autotools + +SRC_URI = "http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-0.98/cacao-${PV}.tar.bz2;md5sum=8b8907c8b925761c9410bcadb9705346" + +S = "${WORKDIR}/cacao-${PV}" + +EXTRA_OECONF = "--disable-debug \ + ${@['','--enable-softfloat'][bb.data.getVar('TARGET_FPU',d,1) == 'soft']} \ + " diff --git a/packages/cacao/cacaoh-cldc-native_0.98.bb b/packages/cacao/cacaoh-cldc-native_0.98.bb new file mode 100644 index 0000000000..e24225a042 --- /dev/null +++ b/packages/cacao/cacaoh-cldc-native_0.98.bb @@ -0,0 +1,16 @@ + +require cacao.inc + +DEPENDS = "ecj-native classpath-minimal-native virtual/cldc-api-1.1 libtool-native zlib-native" + +inherit native + +EXTRA_OECONF += "--with-classpath-includedir=${STAGING_INCDIR}/classpath-minimal \ + --enable-jni \ + --enable-java=cldc1.1 \ + --with-classpath=cldc1.1 \ + --with-classpath-classes=${STAGING_LIBDIR}/java/cldc1.1.jar \ + " +do_stage() { + install -m 0755 src/cacaoh/.libs/cacaoh ${STAGING_BINDIR}/ +} diff --git a/packages/cacao/files/.mtn2git_empty b/packages/cacao/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/cacao/files/.mtn2git_empty diff --git a/packages/cacao/files/arm_mmap.patch b/packages/cacao/files/arm_mmap.patch new file mode 100644 index 0000000000..e34c7b7802 --- /dev/null +++ b/packages/cacao/files/arm_mmap.patch @@ -0,0 +1,21 @@ +--- cacao-0.98/src/vm/exceptions.c 2007/06/27 09:04:17 8146 ++++ cacao-0.98/src/vm/exceptions.c 2007/07/02 14:07:24 8175 +@@ -92,6 +92,10 @@ + + bool exceptions_init(void) + { ++#if !(defined(__ARM__) && defined(__LINUX__)) ++ /* On arm-linux the first memory page can't be mmap'ed, as it ++ contains the exception vectors. */ ++ + int pagesize; + + /* mmap a memory page at address 0x0, so our hardware-exceptions +@@ -100,6 +104,7 @@ + pagesize = getpagesize(); + + (void) memory_mmap_anon(NULL, pagesize, PROT_NONE, MAP_PRIVATE | MAP_FIXED); ++#endif + + /* check if we get into trouble with our hardware-exceptions */ + diff --git a/packages/cacao/files/classpath_var.patch b/packages/cacao/files/classpath_var.patch new file mode 100644 index 0000000000..a2a69f9d1c --- /dev/null +++ b/packages/cacao/files/classpath_var.patch @@ -0,0 +1,66 @@ +Index: cacao-0.98/configure.ac +=================================================================== +--- cacao-0.98.orig/configure.ac 2007-06-06 11:24:23.000000000 +0200 ++++ cacao-0.98/configure.ac 2007-07-18 23:26:43.000000000 +0200 +@@ -842,6 +842,7 @@ + AC_CHECK_WITH_CLASSPATH + AC_CHECK_WITH_CLASSPATH_PREFIX + AC_CHECK_WITH_CLASSPATH_CLASSES ++AC_CHECK_WITH_TARGET_CLASSPATH_CLASSES + AC_CHECK_WITH_CLASSPATH_LIBDIR + AC_CHECK_WITH_CLASSPATH_INCLUDEDIR + +Index: cacao-0.98/src/vm/vm.c +=================================================================== +--- cacao-0.98.orig/src/vm/vm.c 2007-06-05 09:44:38.000000000 +0200 ++++ cacao-0.98/src/vm/vm.c 2007-07-18 23:26:43.000000000 +0200 +@@ -621,7 +621,7 @@ + #if defined(WITH_CLASSPATH_GNU) + puts(" java.boot.class.path : "CACAO_VM_ZIP":"CLASSPATH_CLASSES""); + #else +- puts(" java.boot.class.path : "CLASSPATH_CLASSES""); ++ puts(" java.boot.class.path : "TARGET_CLASSPATH_CLASSES""); + #endif + puts(" gnu.classpath.boot.library.path: "CLASSPATH_LIBDIR"/classpath\n"); + +@@ -873,7 +873,7 @@ + strlen(CACAO_VM_ZIP) + + strlen(":") + + # endif +- strlen(CLASSPATH_CLASSES) + ++ strlen(TARGET_CLASSPATH_CLASSES) + + strlen("0"); + + _Jv_bootclasspath = MNEW(char, len); +@@ -881,7 +881,7 @@ + strcat(_Jv_bootclasspath, CACAO_VM_ZIP); + strcat(_Jv_bootclasspath, ":"); + # endif +- strcat(_Jv_bootclasspath, CLASSPATH_CLASSES); ++ strcat(_Jv_bootclasspath, TARGET_CLASSPATH_CLASSES); + #endif + } + +Index: cacao-0.98/m4/classpath.m4 +=================================================================== +--- cacao-0.98.orig/m4/classpath.m4 2007-04-23 22:06:07.000000000 +0200 ++++ cacao-0.98/m4/classpath.m4 2007-07-18 23:38:06.000000000 +0200 +@@ -82,6 +82,18 @@ + AC_SUBST(CLASSPATH_CLASSES) + ]) + ++dnl where are Java core library classes installed on the target ++ ++AC_DEFUN([AC_CHECK_WITH_TARGET_CLASSPATH_CLASSES],[ ++AC_MSG_CHECKING(where Java core library classes are installed on the target) ++AC_ARG_WITH([target-classpath-classes], ++ [AS_HELP_STRING(--with-target-classpath-classes=<path>,path to Java core library classes (includes the name of the file and may be flat) [[default=/usr/local/classpath/share/classpath/glibj.zip]])], ++ [TARGET_CLASSPATH_CLASSES=${withval}], ++ [TARGET_CLASSPATH_CLASSES=${CLASSPATH_PREFIX}/share/classpath/glibj.zip]) ++AC_MSG_RESULT(${TARGET_CLASSPATH_CLASSES}) ++AC_DEFINE_UNQUOTED([TARGET_CLASSPATH_CLASSES], "${TARGET_CLASSPATH_CLASSES}", [Java core library classes on the target]) ++AC_SUBST(TARGET_CLASSPATH_CLASSES) ++]) + + dnl where are Java core library native libraries installed + diff --git a/packages/cacao/files/libmath.patch b/packages/cacao/files/libmath.patch new file mode 100644 index 0000000000..f8a4e837e2 --- /dev/null +++ b/packages/cacao/files/libmath.patch @@ -0,0 +1,53 @@ +Index: cacao-0.98/configure.ac +=================================================================== +--- cacao-0.98.orig/configure.ac 2007-07-21 12:11:47.000000000 +0200 ++++ cacao-0.98/configure.ac 2007-07-21 13:36:40.000000000 +0200 +@@ -234,6 +234,48 @@ + AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t])) + AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t])) + ++dnl The idea of this solutions comes from bochs-project configure.in ++dnl ++dnl Add the -lm library if math functions cannot be used without it. ++dnl This check is important on cygwin because of the bizarre way that they ++dnl have organized functions into libraries. On cygwin, both libc.a and ++dnl libm.a are symbolic links to a single lib libcygwin.a. This means that ++dnl 1) linking with -lm is not necessary, and ++dnl 2) linking with -lm is dangerous if the order of libraries is wrong ++dnl In particular, if you compile any program with -mno-cygwin and link with ++dnl -lm, it will crash instantly when it is run. This happens because the ++dnl linker incorrectly links the Cygwin libm.a (==libcygwin.a), which replaces ++dnl the ___main function instead of allowing it to be defined by ++dnl /usr/lib/mingw/libmingw32.a as it should be. ++dnl ++dnl On MacOS X, this test will find that -lm is unnecessary and leave it out. ++dnl ++dnl With uClibc and without libjvm cacao needs to be linked with -lm because of ++dnl the function scalbn ++dnl ++dnl Just check this math functions. If it is found without ++dnl -lm, then we must not need -lm. ++have_scalbn=0 ++AC_CHECK_FUNCS(scalbn, have_scalbn=1) ++AC_MSG_CHECKING(if math functions link without -lm) ++if test "$have_scalbn" = 1; then ++ AC_MSG_RESULT(yes) ++else ++ AC_MSG_RESULT(no) ++ LIBS="$LIBS -lm" ++ # use different functions to bypass configure caching ++ have_scalbl=0 ++ AC_CHECK_FUNCS(scalbl, have_scalbl=1) ++ AC_MSG_CHECKING(if math functions link with -lm) ++ if test "$have_scalbl" = 1; then ++ AC_MSG_RESULT(yes) ++ else ++ AC_MSG_RESULT(no) ++ # not sure we should warn the user, crash, etc. ++ # expect link failure ++ fi ++fi ++ + dnl Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST + AC_C_INLINE diff --git a/packages/cacao/files/midpath.patch b/packages/cacao/files/midpath.patch new file mode 100644 index 0000000000..b905f774af --- /dev/null +++ b/packages/cacao/files/midpath.patch @@ -0,0 +1,372 @@ +Index: cacao-0.98/src/native/vm/cldc1.1/com_sun_cldc_io_ResourceInputStream.c +=================================================================== +--- cacao-0.98.orig/src/native/vm/cldc1.1/com_sun_cldc_io_ResourceInputStream.c 2007-05-16 10:06:15.000000000 +0200 ++++ cacao-0.98/src/native/vm/cldc1.1/com_sun_cldc_io_ResourceInputStream.c 2007-07-22 00:15:55.000000000 +0200 +@@ -26,25 +26,53 @@ + + */ + ++#include <sys/stat.h> ++#include <stdlib.h> + + #include "config.h" +-#include "vm/types.h" ++ ++#include "arch.h" ++#include "mm/memory.h" + + #include "native/jni.h" + #include "native/native.h" + + #include "native/include/java_lang_Object.h" + #include "native/include/java_lang_String.h" +- ++#include "native/include/java_lang_Integer.h" + #include "native/include/com_sun_cldc_io_ResourceInputStream.h" ++#include "native/include/com_sun_cldchi_jvm_FileDescriptor.h" + ++#include "vm/types.h" ++#include "vm/builtin.h" + #include "vm/vm.h" /* REMOVE ME: temporarily */ ++#include "vm/exceptions.h" ++#include "vm/initialize.h" ++#include "vm/stringlocal.h" ++#include "vm/properties.h" ++ ++#include "vmcore/class.h" ++#include "vmcore/classcache.h" ++#include "vmcore/linker.h" ++#include "vmcore/loader.h" ++#include "vmcore/options.h" ++#include "vmcore/statistics.h" ++#include "vmcore/suck.h" ++#include "vmcore/zip.h" ++ ++#include "toolbox/list.h" ++#include "toolbox/logging.h" ++#include "toolbox/util.h" + + + /* native methods implemented by this file ************************************/ + + static JNINativeMethod methods[] = { + { "open", "(Ljava/lang/String;)Ljava/lang/Object;", (void *) (ptrint) &Java_com_sun_cldc_io_ResourceInputStream_open }, ++ { "bytesRemain", "(Ljava/lang/Object;)I", (void *) (ptrint) &Java_com_sun_cldc_io_ResourceInputStream_bytesRemain }, ++ { "readByte", "(Ljava/lang/Object;)I", (void *) (ptrint) &Java_com_sun_cldc_io_ResourceInputStream_readByte }, ++ { "readBytes", "(Ljava/lang/Object;[BII)I", (void *) (ptrint) &Java_com_sun_cldc_io_ResourceInputStream_readBytes }, ++ { "clone", "(Ljava/lang/Object;)Ljava/lang/Object;", (void *) (ptrint) &Java_com_sun_cldc_io_ResourceInputStream_clone }, + }; + + /* _Jv_com_sun_cldc_io_ResourceInputStream_init ******************************** +@@ -68,13 +96,209 @@ + * Method: open + * Signature: (Ljava/lang/String;)Ljava/lang/Object; + */ +-JNIEXPORT java_lang_Object* JNICALL Java_com_sun_cldc_io_ResourceInputStream_open(JNIEnv *env, jclass clazz, java_lang_String *name) ++JNIEXPORT struct java_lang_Object* JNICALL Java_com_sun_cldc_io_ResourceInputStream_open(JNIEnv *env, jclass clazz, java_lang_String *name) + { +- vm_abort("Java_com_sun_cldc_io_ResourceInputStream_open: IMPLEMENT ME!"); ++ ++ list_classpath_entry *lce; ++ char *filename; ++ s4 filenamelen; ++ char *path; ++ FILE *classfile; ++ /*struct stat statBuffer; ++ int bufferSize = -1;*/ ++ utf *uname; ++ /*java_lang_Integer *fhandler;*/ ++ com_sun_cldchi_jvm_FileDescriptor *fileDescriptor; ++ classinfo *ci; ++ ++ ++ /* get the classname as char string (do it here for the warning at ++ the end of the function) */ ++ ++ uname = javastring_toutf((java_objectheader *)name, false); ++ filenamelen = utf_bytes(uname) + strlen("0"); ++ filename = MNEW(char, filenamelen); ++ utf_copy(filename, uname); ++ classfile = NULL; ++ ++ ++ /* walk through all classpath entries */ ++ ++ for (lce = list_first(list_classpath_entries); lce != NULL; ++ lce = list_next(list_classpath_entries, lce)) { ++ ++ path = MNEW(char, lce->pathlen + filenamelen); ++ strcpy(path, lce->path); ++ strcat(path, filename); ++ ++ classfile = fopen(path, "r"); ++ ++ MFREE(path, char, lce->pathlen + filenamelen); ++ ++ if (classfile) { /* file exists */ ++ break; ++ } ++ } ++ ++ MFREE(filename, char, filenamelen); ++ ++ if (classfile) { ++ ci = load_class_bootstrap(utf_new_char("com/sun/cldchi/jvm/FileDescriptor")); ++ fileDescriptor = (com_sun_cldchi_jvm_FileDescriptor *) native_new_and_init(ci); ++ fileDescriptor->handle = (int) classfile; ++ fileDescriptor->valid = (int) 0; ++ return (java_lang_Object*) fileDescriptor; ++ } else { ++ return NULL; ++ } ++ ++} ++ ++ ++/* ++ * Class: com_sun_cldc_io_ResourceInputStream ++ * Method: bytesRemain ++ * Signature: (Ljava/lang/Object;)I ++ */ ++JNIEXPORT s4 JNICALL Java_com_sun_cldc_io_ResourceInputStream_bytesRemain(JNIEnv *env, jclass clazz, struct java_lang_Object* jobj) { ++ ++ com_sun_cldchi_jvm_FileDescriptor *fileDescriptor; ++ struct stat statBuffer; ++ FILE *file; ++ int fd; ++ int position; ++ int hposition; ++ ++ fileDescriptor = (com_sun_cldchi_jvm_FileDescriptor *) jobj; ++ file = (FILE *)fileDescriptor->handle; ++ ++ /* Change access position if needed */ ++ hposition = fileDescriptor->valid; ++ position = ftell(file); ++ if (position != hposition) { ++ fseek(file, hposition, SEEK_SET); ++ } ++ ++ fd = fileno(file); ++ if (fstat(fd, &statBuffer) != -1) { ++ return (statBuffer.st_size - hposition); ++ } else { ++ /* TODO Throw an IOException */ ++ return 0; ++ } + +- return NULL; + } + ++/* ++ * Class: com_sun_cldc_io_ResourceInputStream ++ * Method: readByte ++ * Signature: (Ljava/lang/Object;)I ++ */ ++JNIEXPORT s4 JNICALL Java_com_sun_cldc_io_ResourceInputStream_readByte(JNIEnv *env, jclass clazz, struct java_lang_Object* jobj) { ++ ++ com_sun_cldchi_jvm_FileDescriptor *fileDescriptor; ++ int readBytes = -1; ++ char byte; ++ FILE * file; ++ int position; ++ int hposition; ++ ++ fileDescriptor = (com_sun_cldchi_jvm_FileDescriptor *) jobj; ++ file = (FILE *)fileDescriptor->handle; ++ ++ /* Change access position if needed */ ++ hposition = fileDescriptor->valid; ++ position = ftell(file); ++ if (position != hposition) { ++ fseek(file, hposition, SEEK_SET); ++ } ++ ++ readBytes = fread(&byte, 1, 1, file); ++ ++ /* Check if EOF or an error occurred */ ++ if (readBytes != 1) { ++ if (feof(file)) { ++ return -1; ++ } else if (ferror(file)) { ++ /* TODO: throw an IOException */ ++ } ++ } ++ ++ /* Update access position */ ++ fileDescriptor->valid = ftell(file); ++ ++ return (byte & 0xFF); ++ ++} ++ ++/* ++ * Class: com_sun_cldc_io_ResourceInputStream ++ * Method: readBytes ++ * Signature: (Ljava/lang/Object;[BII)I ++ */ ++JNIEXPORT s4 JNICALL Java_com_sun_cldc_io_ResourceInputStream_readBytes(JNIEnv *env, jclass clazz, struct java_lang_Object* jobj, java_bytearray* byteArray, s4 off, s4 len) { ++ ++ com_sun_cldchi_jvm_FileDescriptor *fileDescriptor; ++ int readBytes = -1; ++ FILE * file; ++ int position; ++ int hposition; ++ void *buf; ++ ++ /* get pointer to the buffer */ ++ buf = &(byteArray->data[off]); ++ ++ fileDescriptor = (com_sun_cldchi_jvm_FileDescriptor *) jobj; ++ file = (FILE *)fileDescriptor->handle; ++ ++ /* Change access position if needed */ ++ hposition = fileDescriptor->valid; ++ position = ftell(file); ++ if (position != hposition) { ++ fseek(file, hposition, SEEK_SET); ++ } ++ ++ readBytes = fread(buf, 1, len, file); ++ ++ /* Check if EOF or an error occurred */ ++ if (readBytes != len) { ++ if ((readBytes == 0) && feof(file)) { ++ return -1; ++ } else if (ferror(file)) { ++ /* TODO: throw an IOException */ ++ } ++ } ++ ++ /* Update access position */ ++ fileDescriptor->valid = ftell(file); ++ ++ return readBytes; ++} ++ ++/* ++ * Class: com_sun_cldc_io_ResourceInputStream ++ * Method: clone ++ * Signature: (Ljava/lang/Object;)Ljava/lang/Object; ++ */ ++JNIEXPORT struct java_lang_Object* JNICALL Java_com_sun_cldc_io_ResourceInputStream_clone(JNIEnv *env, jclass clazz, struct java_lang_Object* jobj) { ++ ++ classinfo *ci; ++ com_sun_cldchi_jvm_FileDescriptor *srcFileDescriptor; ++ com_sun_cldchi_jvm_FileDescriptor *dstFileDescriptor; ++ ++ srcFileDescriptor = (com_sun_cldchi_jvm_FileDescriptor *) jobj; ++ ++ ci = load_class_bootstrap(utf_new_char("com/sun/cldchi/jvm/FileDescriptor")); ++ dstFileDescriptor = (com_sun_cldchi_jvm_FileDescriptor *) native_new_and_init(ci); ++ dstFileDescriptor->handle = srcFileDescriptor->handle; ++ dstFileDescriptor->valid = srcFileDescriptor->valid; ++ ++ return (java_lang_Object*) dstFileDescriptor; ++ ++} ++ ++ ++ + + /* + * These are local overrides for various environment variables in Emacs. +Index: cacao-0.98/src/native/vm/cldc1.1/Makefile.am +=================================================================== +--- cacao-0.98.orig/src/native/vm/cldc1.1/Makefile.am 2007-04-02 13:23:24.000000000 +0200 ++++ cacao-0.98/src/native/vm/cldc1.1/Makefile.am 2007-07-22 00:15:55.000000000 +0200 +@@ -38,6 +38,7 @@ + com_sun_cldc_io_j2me_socket_Protocol.c \ + com_sun_cldchi_io_ConsoleOutputStream.c \ + com_sun_cldchi_jvm_JVM.c \ ++ com_sun_cldchi_jvm_FileDescriptor.c \ + java_lang_Class.c \ + java_lang_Double.c \ + java_lang_Float.c \ +Index: cacao-0.98/src/native/include/Makefile.am +=================================================================== +--- cacao-0.98.orig/src/native/include/Makefile.am 2007-05-23 20:15:07.000000000 +0200 ++++ cacao-0.98/src/native/include/Makefile.am 2007-07-22 00:15:55.000000000 +0200 +@@ -74,6 +74,7 @@ + com_sun_cldc_io_j2me_socket_Protocol.h \ + com_sun_cldchi_io_ConsoleOutputStream.h \ + com_sun_cldchi_jvm_JVM.h \ ++ com_sun_cldchi_jvm_FileDescriptor.h \ + java_lang_Math.h \ + java_lang_Runtime.h \ + java_lang_System.h +Index: cacao-0.98/src/native/vm/cldc1.1/com_sun_cldchi_jvm_FileDescriptor.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cacao-0.98/src/native/vm/cldc1.1/com_sun_cldchi_jvm_FileDescriptor.c 2007-07-22 00:18:01.000000000 +0200 +@@ -0,0 +1,70 @@ ++/* src/native/vm/cldc1.1/com_sun_cldchi_jvm_FileDescriptor.c ++ ++ Copyright (C) 2006, 2007 R. Grafl, A. Krall, C. Kruegel, C. Oates, ++ R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner, ++ C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger, ++ Institut f. Computersprachen - TU Wien ++ ++ This file is part of CACAO. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2, or (at ++ your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++ 02110-1301, USA. ++ ++ $Id: java_lang_VMRuntime.c 5900 2006-11-04 17:30:44Z michi $ ++ ++*/ ++ ++#include "config.h" ++ ++#include <stdio.h> ++ ++#include "vm/types.h" ++ ++#include "native/jni.h" ++#include "native/native.h" ++ ++#include "native/include/com_sun_cldchi_jvm_FileDescriptor.h" ++ ++/* native methods implemented by this file ************************************/ ++ ++static JNINativeMethod methods[] = { ++ { "finalize", "()V", (void *) (ptrint) &Java_com_sun_cldchi_jvm_FileDescriptor_finalize }, ++}; ++ ++/* _Jv_com_sun_cldchi_jvm_FileDescriptor_init ****************************** ++ ++ Register native functions. ++ ++*******************************************************************************/ ++ ++void _Jv_com_sun_cldchi_jvm_FileDescriptor_init(void) ++{ ++ utf *u; ++ ++ u = utf_new_char("com/sun/cldchi/jvm/FileDescriptor"); ++ ++ native_method_register(u, methods, NATIVE_METHODS_COUNT); ++} ++ ++/* ++ * Class: com/sun/cldchi/jvm/FileDescriptor ++ * Method: finalize ++ * Signature: ()V ++ */ ++JNIEXPORT void JNICALL Java_com_sun_cldchi_jvm_FileDescriptor_finalize(JNIEnv *env, struct com_sun_cldchi_jvm_FileDescriptor* this) { ++ /* printf("close\n"); */ ++ fclose((FILE *)this->handle); ++ ++} diff --git a/packages/cacao/files/offset.h_arm.patch b/packages/cacao/files/offset.h_arm.patch new file mode 100644 index 0000000000..7011527540 --- /dev/null +++ b/packages/cacao/files/offset.h_arm.patch @@ -0,0 +1,35 @@ +Index: cacao-0.98/src/vm/jit/arm/offsets.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cacao-0.98/src/vm/jit/arm/offsets.h 2007-07-17 23:35:56.000000000 +0200 +@@ -0,0 +1,30 @@ ++/* This file is machine generated, don't edit it! */ ++ ++/* define some sizeof()'s */ ++ ++#define sizevmarg 16 ++ ++ ++/* define some offsets */ ++ ++#define offobjvftbl 0 ++ ++ ++/* vftbl_t */ ++ ++#define offbaseval 20 ++#define offdiffval 24 ++ ++ ++/* classinfo */ ++ ++#define offclassvftbl 124 ++ ++ ++#define offvmargtype 0 ++#define offvmargdata 8 ++ ++ ++#define offcast_super_baseval 0 ++#define offcast_super_diffval 4 ++#define offcast_sub_baseval 8 diff --git a/packages/cacao/files/offsets_make.patch b/packages/cacao/files/offsets_make.patch new file mode 100644 index 0000000000..d6f9dbef3a --- /dev/null +++ b/packages/cacao/files/offsets_make.patch @@ -0,0 +1,25 @@ +Index: cacao-0.98/src/vm/jit/arm/Makefile.am +=================================================================== +--- cacao-0.98.orig/src/vm/jit/arm/Makefile.am 2007-04-02 13:23:22.000000000 +0200 ++++ cacao-0.98/src/vm/jit/arm/Makefile.am 2007-07-17 23:26:33.000000000 +0200 +@@ -40,10 +40,6 @@ + AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir) -I$(top_builddir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) + +-BUILT_SOURCES = offsets.h +- +-CLEANFILES = offsets.h +- + noinst_HEADERS = \ + arch.h \ + machine-instr.h \ +@@ -72,9 +68,6 @@ + + $(srcdir)/asmpart.S: $(top_builddir)/config.h offsets.h + +-offsets.h: $(top_builddir)/src/vm/jit/tools/genoffsets $(top_builddir)/config.h +- $(top_builddir)/src/vm/jit/tools/genoffsets > offsets.h +- + + ## Local variables: + ## mode: Makefile diff --git a/packages/midpath/.mtn2git_empty b/packages/midpath/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/midpath/.mtn2git_empty diff --git a/packages/midpath/midpath-alsa_svn.bb b/packages/midpath/midpath-alsa_svn.bb new file mode 100644 index 0000000000..7d230f3cd0 --- /dev/null +++ b/packages/midpath/midpath-alsa_svn.bb @@ -0,0 +1,42 @@ + +require midpath_${PV}.bb + +DEPENDS += "alsa-lib" +RDEPENDS = "alsa-lib" + +do_configure() { + cd ${S}/native/alsa + sed -i -e "s|\-I/usr/include/classpath|\-I${STAGING_INCDIR}/classpath-minimal|" Makefile + cd ${S}/resources-embedded/com/sun/midp/configuration + sed -i -e "s|sound.backend:NULL|sound.backend:ALSA|" configuration.cfg +} + +do_compile() { + +mkdir -p ${S}/dist + +# Build native code + +# Build the ALSA native part +cd ${S}/native/alsa +make || exit 1 +cp *.so ${S}/dist + +} + +do_install() { + install -d ${D}${libdir} + install -m 0644 dist/libmidpathalsa.so ${D}${libdir} + install -d ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration + install -m 0644 resources-embedded/com/sun/midp/configuration/configuration.cfg ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration/ +} + +do_stage() { + : +} + +PACKAGES = "${PN}" + +FILES_${PN} = "${libdir}/libmidpathalsa.so \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \ + " diff --git a/packages/midpath/midpath-cldc-x11_svn.bb b/packages/midpath/midpath-cldc-x11_svn.bb new file mode 100644 index 0000000000..1aac20265b --- /dev/null +++ b/packages/midpath/midpath-cldc-x11_svn.bb @@ -0,0 +1,43 @@ + +require midpath_${PV}.bb + +DEPENDS += "virtual/libx11 virtual/cldc-api-1.1" +RDEPENDS = "libx11" + +CLDC_PATH = ${STAGING_LIBDIR}/java/cldc1.1.jar + +do_configure() { + + cd ${S}/resources-embedded/com/sun/midp/configuration + sed -i -e "s|ui.backend:AWT|ui.backend:X11|" configuration.cfg + +} + +do_compile() { + +mkdir -p ${S}/dist + +# Build Escher X11 library +cd ${S}/external/escher-cldc/core +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${CLDC_PATH} -sourcepath ${S}/external/escher-cldc/core -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${CLDC_PATH} -source 1.3 -target 1.1" JAR_FILE="escher-x11-cldc.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/external/escher-cldc/core/escher-x11-cldc.jar ${S}/dist + +} + +do_install() { + install -d ${D}${libdir} + install -m 0644 dist/escher-x11-cldc.jar ${D}${libdir} + install -d ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration + install -m 0644 resources-embedded/com/sun/midp/configuration/configuration.cfg ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration/ +} + +do_stage() { + : +} + +PACKAGES = "${PN}" + +FILES_${PN} = "${libdir}/java/escher-x11-cldc.jar \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \ + " diff --git a/packages/midpath/midpath-gtk_svn.bb b/packages/midpath/midpath-gtk_svn.bb new file mode 100644 index 0000000000..3ee0d40f3d --- /dev/null +++ b/packages/midpath/midpath-gtk_svn.bb @@ -0,0 +1,43 @@ + +require midpath_${PV}.bb + +DEPENDS += "gtk+" +RDEPENDS = "gtk+" + +do_configure() { + + cd ${S}/resources-embedded/com/sun/midp/configuration + sed -i -e "s|ui.backend:AWT|ui.backend:GTK|" configuration.cfg + + cd ${S}/native/gtk + sed -i -e "s|\-I/usr/include/classpath|\-I${STAGING_INCDIR}/classpath-minimal|" Makefile + +} + +do_compile() { + +mkdir -p ${S}/dist + +# Build the GTK native part +cd ${S}/native/gtk +make || exit 1 +cp *.so ${S}/dist + +} + +do_install() { + install -d ${D}${libdir} + install -m 0644 dist/libmidpathgtk.so ${D}${libdir} + install -d ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration + install -m 0644 resources-embedded/com/sun/midp/configuration/configuration.cfg ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration/ +} + +do_stage() { + : +} + +PACKAGES = "${PN}" + +FILES_${PN} = "${libdir}/libmidpathgtk.so \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \ + " diff --git a/packages/midpath/midpath-native_svn.bb b/packages/midpath/midpath-native_svn.bb new file mode 100644 index 0000000000..199facdeb1 --- /dev/null +++ b/packages/midpath/midpath-native_svn.bb @@ -0,0 +1,34 @@ + +inherit native + +require midpath_${PV}.bb + +DEPENDS = "ecj-native fastjar-native classpath-minimal-native" +PROVIDES = "virtual/cldc-api-1.1" + +PACKAGES = " " + + +do_configure() { + : +} + +do_compile() { +mkdir -p ${S}/dist + +# Build CLDC1.1 +# Build base classes +cd ${S}/external/cldc1.1/src +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath . -source 1.3 -target 1.1" || exit 1 +make install JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath . -source 1.3 -target 1.1" CLASS_DIR=${S}/external/cldc1.1/classes || exit 1 +# Build CLDC extra classes for MIDP2 +cd ${S}/src/cldc-glue +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/external/cldc1.1/classes -sourcepath ${S}/src/cldc-glue -source 1.3 -target 1.1" +make install JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/external/cldc1.1/classes -source 1.3 -target 1.1" CLASS_DIR=${S}/external/cldc1.1/classes +# Make a jar +fastjar cvf ${S}/dist/cldc1.1.jar -C ${S}/external/cldc1.1/classes . +} + +do_install() { + : +} diff --git a/packages/midpath/midpath-qt3x11_svn.bb b/packages/midpath/midpath-qt3x11_svn.bb new file mode 100644 index 0000000000..30e855a636 --- /dev/null +++ b/packages/midpath/midpath-qt3x11_svn.bb @@ -0,0 +1,48 @@ + +require midpath_${PV}.bb + +DEPENDS += "qt-mt" +RDEPENDS = "qt-mt" +RCONFILCTS = "midpath-qte" + +inherit qt3x11 + +do_configure() { + + cd ${S}/resources-embedded/com/sun/midp/configuration + sed -i -e "s|ui.backend:AWT|ui.backend:QT|" configuration.cfg + + cd ${S}/native/qt + sed -i -e "s|\-I/usr/include/classpath|\-I${STAGING_INCDIR}/classpath-minimal|" \ + -e "s|\`pkg\-config \-\-cflags qt\-mt\`|\-I${QTDIR}/include/ -DQT_THREAD_SUPPORT|" \ + -e "s|\`pkg\-config \-\-libs qt\-mt\`|\-L${QTDIR}/lib \-lqt-mt -lsupc++|" \ + Makefile +} + +do_compile() { + +mkdir -p ${S}/dist + +# Build the QT native part +cd ${S}/native/qt +make || exit 1 +cp *.so ${S}/dist + +} + +do_install() { + install -d ${D}${libdir} + install -m 0644 dist/libmidpathqt.so ${D}${libdir} + install -d ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration + install -m 0644 resources-embedded/com/sun/midp/configuration/configuration.cfg ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration/ +} + +do_stage() { + : +} + +PACKAGES = "${PN}" + +FILES_${PN} = "${libdir}/libmidpathqt.so \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \ + " diff --git a/packages/midpath/midpath-qte_svn.bb b/packages/midpath/midpath-qte_svn.bb new file mode 100644 index 0000000000..478883e559 --- /dev/null +++ b/packages/midpath/midpath-qte_svn.bb @@ -0,0 +1,46 @@ + +require midpath_${PV}.bb + +DEPENDS += "qte-mt" +RDEPENDS = "qte-mt" +RCONFLICTS = "midpath-qt3x11" + +do_configure() { + + cd ${S}/resources-embedded/com/sun/midp/configuration + sed -i -e "s|ui.backend:AWT|ui.backend:QT|" configuration.cfg + + cd ${S}/native/qt + sed -i -e "s|\-I/usr/include/classpath|\-I${STAGING_INCDIR}/classpath-minimal -DQWS|" \ + -e "s|\`pkg\-config \-\-cflags qt\-mt\`|\-I${QTDIR}/include/ -DQWS -DQT_THREAD_SUPPORT|" \ + -e "s|\`pkg\-config \-\-libs qt\-mt\`|\-L${QTDIR}/lib \-lqte-mt -lsupc++|" \ + Makefile +} + +do_compile() { + +mkdir -p ${S}/dist + +# Build the QT native part +cd ${S}/native/qt +make || exit 1 +cp *.so ${S}/dist + +} + +do_install() { + install -d ${D}${libdir} + install -m 0644 dist/libmidpathqt.so ${D}${libdir} + install -d ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration + install -m 0644 resources-embedded/com/sun/midp/configuration/configuration.cfg ${D}${libdir}/java/resources-embedded/com/sun/midp/configuration/ +} + +do_stage() { + : +} + +PACKAGES = "${PN}" + +FILES_${PN} = "${libdir}/libmidpathqt.so \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg \ + " diff --git a/packages/midpath/midpath_svn.bb b/packages/midpath/midpath_svn.bb new file mode 100644 index 0000000000..0de15a3d15 --- /dev/null +++ b/packages/midpath/midpath_svn.bb @@ -0,0 +1,110 @@ +DESCRIPTION = "MIDPath is a Java library which provides a MIDP2 implementation" +HOMEPAGE = "http://midpath.thenesis.org/" +LICENSE = "GPL" +PRIORITY = "optional" +SECTION = "interpreters" + +SRC_URI = "svn://midpath.svn.sourceforge.net/svnroot/midpath;module=trunk;proto=https" + +S = "${WORKDIR}/trunk" + +DEPENDS = "ecj-native fastjar-native classpath-minimal" +RPROVIDES_midpath-cldc = "virtual/cldc-api-1.1" + +JAVAC_CMD=${STAGING_BINDIR_NATIVE}/ecj + +GNU_CLASSPATH_PATH=${STAGING_LIBDIR}/java/classpath-minimal/glibj.zip + +do_compile() { + +mkdir -p ${S}/dist + +# Build CLDC1.1 +# Build base classes +cd ${S}/external/cldc1.1/src +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath . -source 1.3 -target 1.1" || exit 1 +make install JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath . -source 1.3 -target 1.1" CLASS_DIR=${S}/external/cldc1.1/classes || exit 1 +# Build CLDC extra classes for MIDP2 +cd ${S}/src/cldc-glue +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/external/cldc1.1/classes -sourcepath ${S}/src/cldc-glue -source 1.3 -target 1.1" +make install JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/external/cldc1.1/classes -source 1.3 -target 1.1" CLASS_DIR=${S}/external/cldc1.1/classes +# Make a jar +fastjar cvf ${S}/dist/cldc1.1.jar -C ${S}/external/cldc1.1/classes . + +CLDC_PATH=${S}/dist/cldc1.1.jar + +# Build SDLJava for CLDC +cd ${S}/external/sdljava-cldc +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH:${GNU_CLASSPATH_PATH} -sourcepath ${S}/external/sdljava-cldc -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH:${GNU_CLASSPATH_PATH} -source 1.3 -target 1.1" JAR_FILE="sdljava-cldc.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/external/sdljava-cldc/sdljava-cldc.jar ${S}/dist + +# Build Escher X11 library +cd ${S}/external/escher-cldc/core +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH -sourcepath ${S}/external/escher-cldc/core -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH -source 1.3 -target 1.1" JAR_FILE="escher-x11-cldc.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/external/escher-cldc/core/escher-x11-cldc.jar ${S}/dist + +# Build MP3 library +cd ${S}/external/jlayerme-cldc/src +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH -sourcepath ${S}/external/jlayerme-cldc/src -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH -source 1.3 -target 1.1" JAR_FILE="jlayerme-cldc.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/external/jlayerme-cldc/src/jlayerme-cldc.jar ${S}/dist + +# Build OGG library +cd ${S}/external/jorbis-cldc/src +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH -sourcepath ${S}/external/jorbis-cldc/src -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH -source 1.3 -target 1.1" JAR_FILE="jorbis-cldc.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/external/jorbis-cldc/src/jorbis-cldc.jar ${S}/dist + +# Build Bluetooth library +cd ${S}/external/javabluetooth/src +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${GNU_CLASSPATH_PATH}:$CLDC_PATH:${S}/lib/RXTXcomm.jar -sourcepath ${S}/external/javabluetooth/src -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${GNU_CLASSPATH_PATH}:$CLDC_PATH:${S}/lib/RXTXcomm.jar -source 1.3 -target 1.1" JAR_FILE="jsr82-bluetooth.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/external/javabluetooth/src/jsr82-bluetooth.jar ${S}/dist + +# Build MIDPath +cd ${S}/src/core +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH:${GNU_CLASSPATH_PATH}:${S}/dist/sdljava-cldc.jar:${S}/dist/escher-x11-cldc.jar:${S}/dist/jlayerme-cldc.jar:${S}/dist/jorbis-cldc.jar:${S}/dist/jsr82-bluetooth.jar:${S}/lib/kxml2-2.3.0.jar:${S}/lib/swt.jar -sourcepath ${S}/src/core -source 1.3 -target 1.1" || exit 1 +make install JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath $CLDC_PATH:${GNU_CLASSPATH_PATH}:${S}/dist/sdljava-cldc.jar:${S}/dist/escher-x11-cldc.jar:${S}/dist/jlayerme-cldc.jar:${S}/dist/jorbis-cldc.jar:${S}/dist/jsr82-bluetooth.jar:${S}/lib/kxml2-2.3.0.jar:${S}/lib/swt.jar -source 1.3 -target 1.1" CLASS_DIR=${S}/src/core/classes || exit 1 +# Compile JVM.java separately as it can't be compiled against cldc.jar +ecj -bootclasspath ${GNU_CLASSPATH_PATH} -source 1.3 -target 1.1 -d ${S}/src/core/classes com/sun/cldchi/jvm/JVM.java +jar cvf ${S}/dist/midpath.jar -C ${S}/src/core/classes . + +cd ${S}/tests +make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/dist/midpath.jar:$CLDC_PATH -sourcepath ${S}/tests -source 1.3 -target 1.1" || exit 1 +make jar JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/dist/midpath.jar:$CLDC_PATH -source 1.3 -target 1.1" JAR_FILE="midpath-tests.jar" JAR_FLAGS="cvf" || exit 1 +cp ${S}/tests/midpath-tests.jar ${S}/dist + +# Add other required libraries to the dist directory +cp ${S}/lib/kxml2-2.3.0.jar ${S}/dist +} + +do_install() { + install -d ${D}${libdir}/java + install -m 0644 dist/*.jar ${D}${libdir}/java + install -d ${D}${libdir}/java/resources-embedded + cp -rf resources-embedded/* ${D}${libdir}/java/resources-embedded/ + rm -rf ${D}${libdir}/java/resources-embedded/.svn +} + +do_stage() { + install -d ${STAGING_LIBDIR}/java + install -m 0644 dist/cldc1.1.jar ${STAGING_LIBDIR}/java +} + +PACKAGES = "${PN} ${PN}-cldc" + +FILES_${PN} = "${libdir}/java/midpath.jar \ + ${libdir}/java/midpath-tests.jar \ + ${libdir}/java/kxml2-2.3.0.jar \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/ \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/chameleon/ \ + ${libdir}/java/resources-embedded/com/sun/midp/configuration/l10n/ \ + ${libdir}/java/resources-embedded/com/sun/midp/chameleon/skins/resources/images/ \ + + ${libdir}/java/resources-embedded/org/thenesis/midpath/font/bdf/ \ + " +FILES_${PN}-cldc = "${libdir}/java/cldc1.1.jar" + +CONFFILES_${PN} = "${libdir}/java/resources-embedded/com/sun/midp/configuration/configuration.cfg" |