X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=blobdiff_plain;f=README;h=095be9967fbb649c4fe0e5be5923eebc5b91e951;hp=bb741d540e1cf65fa95e5cba10e492b2452ab9f8;hb=c8598d51fe71ce77d466c02b6fa264617be9335b;hpb=5aee5c01bd04c6f563fd1f4eac1e8cbebdff2731 diff --git a/README b/README index bb741d5..095be99 100644 --- a/README +++ b/README @@ -1,423 +1,104 @@ ============================================================================== -XWT README +Ibex README +Test + ______________________________________________________________________________ Documentation -If you're new to XWT, you should read the documentation in the order +If you're new to Ibex, you should read the documentation in the order presented below: - README [this file] - + Start here. Includes a map of all other documentation and a description of the directory strucure -- The XWT home page [http://www.xwt.org/] - -- The XWT tutorial [http://www.xwt.org/tutorial.html] - - Gentle introduction to what XWT is, and how to write - .xwt's. Good for anybody who wants to write XWT applications. +- The Ibex home page [http://www.ibex.org/] + +- The Ibex tutorials [http://www.ibex.org/tutorials.html] -- The XWT reference [http://www.xwt.org/reference.html] + Gentle introduction to what Ibex is, and how to write + .ibex's. Good for anybody who wants to write Ibex applications. - Precise, technical spec of exactly how XWT works. Assumes - familiarity with XWT (ie, you've read the tutorial). This is the - authoritative source for how an XWT engine should +- The Ibex reference [http://www.ibex.org/reference.html] + + Precise, technical spec of exactly how Ibex works. Assumes + familiarity with Ibex (ie, you've read the tutorial). This is the + authoritative source for how an Ibex engine should behave. -- Javadoc [http://www.xwt.org/javadoc/] - - The org.xwt.* packages are all documented with javadoc. You - should start by reading the package summary for org.xwt.Main, - and work your way around from there. - -- Javasrc [http://www.xwt.org/javasrc] - - Javasrc generates a syntax-colored and hyperlinked html copy of - the XWT source code. - ______________________________________________________________________________ Directory Structure -/ - README - this file - COPYING - copyright information for all files in this distro - TM - trademark information for XWT - ant - a unix shell script to launch ant - bin/ - all binary stuff generated by ant builds - build.xml - ANT build file - - lib/ - any third-party binary stuff needed during the build process - javago - a copy of the javago post-compilation bytecode inliner - ant.jar - the Jakarta project's ANT build tool, including Sun's XML parser - netscape.jar - minimal set of classes required for compiling against Netcape's Applet interfaces - msjvm.jar - minimal set of classes required for compiling against Microsoft's Applet interfaces - signtool - the Netscape Object Signing tool, for signing applets - signcode.exe - the Microsoft ActiveX Signing tool, for signing ActiveX controls - guidgen.exe - the Microsoft GUID generator, for generating OLE clsid's - cabarc.exe - the Microsoft CAB file generator, for creating .cab archives - javasrc.jar - javasrc, a tool for generating hyperlinked, syntax-colored html from java code - - src/ - all java source files and xwt sources go here - jazz/ - jazzlib, which XWT currently uses since libgcj's java.util.zip.* is broken - +/ + AUTHORS - people involved in developing Ibex + README - this file + COPYING - copyright information for all files in this distro + CHANGES - the changelot + TM - trademark information for Ibex + Makefile - build file for gcc 3.3 + next.build - the build id of the next build to be generated + + build/ - anything generated by the build process winds up here + h/ - header files generated by gcjh + java/ - auto-generated .java source files + class/ - java .class files + xwar/ - generated xwars (mainly builtin.xwar) + mips/ - mips binaries (interpreted on all platforms) + JVM/ - java Jar archives + Linux/ - Linux binaries + Win32/ - Win32 binaries + Darwin/ - Darwin binaries + Solaris/ - Solaris binaries + + Makefile.upstream - build/download/install instructions for upstream packages + upstream/ - download, build, and install area for upstream packages + install/ - this is the --prefix for all configure invocations + gcc-3.3/ - build/download area for gcc + jpeg-6b/ - build/download area for libjpeg + freetype-2.1.4/ - build/download area for freetype + newlib-1.11.0/ - build/download area for newlib + darwin-linker/ - build/download area for a hacked version of Apple's binutils + + lib/ - any third-party binary stuff needed during the build process + javago - a copy of the javago post-compilation bytecode inliner + jump.jar - the jump2 bytecode-to-palmos translator + libgcj-minimal.jar - a tiny portion of libgcj.jar; allows java->bytecode compilation without gcj + + src/ - all java source files and ibex sources go here + edu/stanford/ejalbr - source code for BrowserLauncher + gnu/regexp/ - source code for the GNU regexp library for Java org/ - bouncycastle/ - the BouncyCastle Crypto Library - gimp/tigert/ - some icons used in XWT Mail, by Tigert Labs - mozilla/ - a copy of Rhino, the Mozilla JavaScript interpreter - - xwt/ - the source code for the XWT engine - demo/ - the XWT widget sampler - chess/ - XWT Chess - fonts/ - some XWF fonts - mail/ - XWT Mail - plat/ - platform abstraction classes for XWT - tasks/ - source code for some ANT tasks used in the XWT build process - themes/ - some XWT themes - util/ - some helper classes - - xwt/standard/ - the XWT standard library - + bouncycastle/ - the BouncyCastle Crypto Library + ibex/ + translators/ - .ibex's and .png's that are essential to bootstrapping the engine + plat/ - platform-specific code + util/ - misc utilities + js/ - the Ibex JavaScript Interpreter + mips/ - the Ibex MIPS interpreter/recompiler + builtin/ - content for the core builtin resource ______________________________________________________________________________ -Build Targets - - *** XWT now requires JDK 1.4 or later to build *** - -To build, make sure your $JAVA_HOME points to jdk1.4 or later, and type - - ./ant -Dplat= - -The name of any class in org.xwt.plat is a valid ; here is a -list as of 20-Mar-2002: - - Win32 - Windows 95 / NT4 or later - Java2 - Any Java 1.2+ compliant JVM - -Valid s are: - - build - builds a binary for the selected platform - -The following targets do not require that you specify a platform: - - compile - compiles all .java's to .class'es - clean - empties bin/ and compiled binaries in dist/ - - -______________________________________________________________________________ -Building - -- If you only want to build the JVM version of XWT, delete these three - files: - - xwt/src/org/xwt/plat/Win32.java - xwt/src/org/xwt/plat/POSIX.java - xwt/src/org/xwt/plat/GCJ.java - - This will allow XWT to build correctly *without* gcc 3.1. Otherwise, - you must compile and install gcc 3.1. - - -- The Win32 native version of XWT can ONLY be built with the very - latest pre-release of GCC 3.1. You can follow the steps below to - create a cross-compiler from linux to Win32. - - If the steps below fail, try adding "-D 20-Mar-2002" to the cvs - checkout line; 20-Mar-2002 was the last date on which the compiler - was known to work. Please don't do this unless you have attempted - without it, however, since it puts additional strain on the gcc cvs - server. - - There are also three patches at the end of this file which can be - applied to the branch -- the first fixes a bug related to - GetFullPathName, the second disables Win32 file locking (so you can - view XWT's log files while it is running), and the third makes - Throwable.printStackTrace() work. - - # create an install area - export CLASSPATH= - export PREFIX=/usr/local/gcc - export CC=/usr/bin/gcc - - sudo rm -rf $PREFIX - export PATH=$PATH:$PREFIX/bin - sudo mkdir $PREFIX - sudo mkdir $PREFIX/i686-pc-mingw32/ - - wget http://prdownloads.sourceforge.net/mingw/MinGW-1.1.tar.gz - sudo tar -C $PREFIX/i686-pc-mingw32/ -xvzf ~/mingw-gcj/MinGW-1.1.tar.gz - - wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.11.2.tar.gz - tar xzvf binutils-2.11.2.tar.gz - cd binutils-2.11.2 - ./configure --target=i686-pc-mingw32 --prefix=$PREFIX - make - sudo make install - cd .. - - cvs -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/gcc co -rgcc-3_1-branch gcc - mkdir bin - cd bin - ../gcc/configure \ - --prefix=$PREFIX \ - --target=i686-pc-mingw32 \ - --host=i686-pc-linux-gnu \ - --enable-languages=c,c++,java \ - --disable-nls \ - --with-as=$PREFIX/i686-pc-mingw32/bin/as \ - --with-ld=$PREFIX/i686-pc-mingw32/bin/ld \ - --with-gnu-ld \ - --with-gnu-as \ - --enable-libgcj \ - --enable-gc-type=boehm \ - --disable-shared \ - --enable-threads=win32 \ - --disable-hash-synchronization \ - --disable-interpreter \ - --enable-sjlj-exceptions - - make - sudo make install - -- The Linux native version is still experimental. You should configure - your compiler with: - - ../gcc/configure \ - --prefix=$PREFIX \ - --enable-languages=c,c++,java \ - --disable-nls \ - --enable-libgcj \ - --enable-threads=posix \ - --enable-hash-synchronization \ - --enable-static \ - --disable-interpreter - - -______________________________________________________________________________ -Throwable.printStackTrace() patch - -Index: Class.h -=================================================================== -RCS file: /cvs/gcc/gcc/libjava/java/lang/Class.h,v -retrieving revision 1.43 -diff -u -r1.43 Class.h ---- Class.h 21 Dec 2001 19:47:50 -0000 1.43 -+++ Class.h 24 Apr 2002 03:06:14 -0000 -@@ -308,6 +308,7 @@ - friend void _Jv_LayoutVTableMethods (jclass klass); - friend void _Jv_SetVTableEntries (jclass, _Jv_VTable *); - friend void _Jv_MakeVTable (jclass); -+ friend JArray* _Jv_GetAllMethods(); - - // Return array class corresponding to element type KLASS, creating it if - // necessary. -Index: ClassLoader.java -=================================================================== -RCS file: /cvs/gcc/gcc/libjava/java/lang/ClassLoader.java,v -retrieving revision 1.16 -diff -u -r1.16 ClassLoader.java ---- ClassLoader.java 7 Dec 2001 23:34:12 -0000 1.16 -+++ ClassLoader.java 24 Apr 2002 03:06:14 -0000 -@@ -577,4 +577,8 @@ - // Default to returning null. Derived classes implement this. - return null; - } -+ -+ static native java.lang.reflect.Method[] getAllMethods(); -+ static native long[] getAllMethodAddrs(); -+ - } -Index: Throwable.java -=================================================================== -RCS file: /cvs/gcc/gcc/libjava/java/lang/Throwable.java,v -retrieving revision 1.10 -diff -u -r1.10 Throwable.java ---- Throwable.java 24 Feb 2001 03:52:49 -0000 1.10 -+++ Throwable.java 24 Apr 2002 03:06:14 -0000 -@@ -123,21 +123,64 @@ - printStackTrace (writer); - } - -+ private native static long longFromStackTraceBytes(byte[] stackTrace, int i); -+ - public void printStackTrace (PrintWriter wr) - { -- try -- { -- CPlusPlusDemangler cPlusPlusFilter = new CPlusPlusDemangler (wr); -- PrintWriter writer = new PrintWriter (cPlusPlusFilter); -- printRawStackTrace (writer); -- writer.close (); -- if (cPlusPlusFilter.written == 0) // The demangler has failed... -- printRawStackTrace (wr); -+ try -+ { -+ CPlusPlusDemangler cPlusPlusFilter = new CPlusPlusDemangler (wr); -+ PrintWriter writer = new PrintWriter (cPlusPlusFilter); -+ printRawStackTrace (writer); -+ writer.close (); -+ if (cPlusPlusFilter.written > 0) return; -+ } -+ catch (Exception e1) -+ { -+ } -+ -+ wr.println(toString()); -+ if (stackTrace == null) { -+ wr.flush(); -+ return; - } -- catch (Exception e1) -- { -- printRawStackTrace (wr); -+ -+ long[] allAddrs = ClassLoader.getAllMethodAddrs(); -+ java.lang.reflect.Method[] meths = ClassLoader.getAllMethods(); -+ -+ // FIXME: assumes little endian -+ for(int i=0; i - #include - #include -+#include -+ -+#include -+#include - - // FIXME: remove these. - #define CloneableClass java::lang::Cloneable::class$ -@@ -347,6 +351,50 @@ - static jclass loaded_classes[HASH_LEN]; - - // This is the root of a linked list of classes -+ -+JArray* -+java::lang::ClassLoader::getAllMethods() -+{ -+ return _Jv_GetAllMethods(); -+} -+ -+JArray* -+java::lang::ClassLoader::getAllMethodAddrs() -+{ -+ JArray* arr = _Jv_GetAllMethods(); -+ java::lang::reflect::Method** el = (java::lang::reflect::Method**)elements(arr); -+ JArray* ret = JvNewLongArray(arr->length); -+ jlong* retel = (jlong*)elements(ret); -+ for(int i=0; ilength; i++) -+ retel[i] = (jlong)((unsigned int)(_Jv_FromReflectedMethod (el[i])->ncode)); -+ return ret; -+} -+ -+JArray* -+_Jv_GetAllMethods() -+{ -+ int numMethods = 0; -+ -+ for(int i=0; inext) -+ numMethods += c->getDeclaredMethods()->length; -+ -+ JArray* ret = -+ (JArray*) -+ JvNewObjectArray(numMethods, &java::lang::reflect::Method::class$, NULL); -+ -+ java::lang::reflect::Method** el = (java::lang::reflect::Method**)elements(ret); -+ -+ for(int i=0; inext) { -+ JArray* methods = c->getDeclaredMethods(); -+ jint len = methods->length; -+ java::lang::reflect::Method** meths = (java::lang::reflect::Method**)elements(methods); -+ for(int j=0; j - - #include -+#include - - #ifdef HAVE_EXECINFO_H - #include -@@ -102,3 +103,18 @@ - #endif /* HAVE_BACKTRACE */ - wr->flush (); - } -+ -+// Returns the i^th call address in the stackTrace member, or 0 if i -+// is beyond the end of the trace. This has to be done in C++ because -+// the addresses in stackTrace are the same width as the platform's -+// pointers (which is unknown to Java code), and stackTrace is a -+// byte[] using the platform's endianness (which is unknown to Java -+// code). -+jlong -+java::lang::Throwable::longFromStackTraceBytes(jbyteArray stackArr, jint i) -+{ -+ if (i * sizeof(void*) > stackArr->length) return 0; -+ unsigned int* stack = (unsigned int*)elements(stackArr); -+ return (jlong)stack[i]; -+} -+ - - - - +Build Requirements + +There are pre-built, digitally signed binaries on http://dist.ibex.org/ +for every supported platform. Please consider using those unless +you're absolutely certain you need to go through the trouble of trying +to get Ibex to build. + +Requirements: + - jdk 1.3+ + - the standard set of POSIX utilities (wc, grep, find, make, etc) + +Build Targets: + - compile: compiles all .java files into build/class/ + - JVM: Any true Java JVM (ie not GCJ) + - Win32: Win95 OSR2 or later + - Linux: Linux 2.2 or later + - Darwin: Any Darwin-based OS (Mac OS X, OpenDarwin) + - Solaris: Solaris 2.7+ + - clean: always run this after doing a 'cvs update'