2002/10/30 22:01:04
[org.ibex.core.git] / README
diff --git a/README b/README
index 10b4465..bca8015 100644 (file)
--- a/README
+++ b/README
@@ -12,95 +12,64 @@ presented below:
       Start here. Includes a map of all other documentation and a
       description of the directory strucure
 
-- The XWT home page [www/ or http://www.xwt.org/]
+- The XWT home page [http://www.xwt.org/]
 
-      A complete copy of all static and dynamic content for
-      www.xwt.org is in the xwt/www/ directory.
-
-- The XWT tutorial [www/html/tutorial.html_]:
+- 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 XWT reference [www/html/reference.html]
+- The XWT reference [http://www.xwt.org/reference.html]
 
       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
       behave.
 
-- Javadoc [www/html/javadoc/package-summary.html]
+- Javadoc [http://www.xwt.org/javadoc/]
 
-      The org.xwt.* packages are all documented with javadoc. If
-      you've just checked out or downloaded a fresh copy of the XWT
-      distribution, you can generate the javadoc by typing
-      "./ant www" at the root directory of the distribution. You
+      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 [www/html/javasrc/index.html]
+- Javasrc [http://www.xwt.org/javasrc]
 
       Javasrc generates a syntax-colored and hyperlinked html copy of
-      the XWT source code. To generate this documentation, type "./ant www"
-      from the root directory of the distribution.
+      the XWT source code.
 
 
 ______________________________________________________________________________
 Directory Structure
 
 /
+   AUTHORS               - people involved in developing XWT
    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
-   doc/                  - documentation
-
-   www/                  - a copy of all static and dynamic content on xwt.org
-       etc/              - configuration files
-       html/             - static content -- files ending with an underscore get
-                           prefix.html/suffix.html/tagline.html added to them
-       launch/           - code for launch.xwt.org
-       src/              - source code for servlets running on xwt.org
 
    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
-
        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
-
-
+           xwt/builtin/  - .xwt's and .png's that are essential to bootstrapping the engine
+           xwt/plat/     - platform-specific code
 
 ______________________________________________________________________________
 Build Targets
 
-To build, make sure your $JAVA_HOME points to jdk1.2 or later, and type
+        *** 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=<platform> <targetname>
 
@@ -108,31 +77,30 @@ The name of any class in org.xwt.plat is a valid <platform>; here is a
 list as of 20-Mar-2002:
 
     Win32         - Windows 95 / NT4 or later
-    Java2         - Any Java 1.2+ compliant JVM
+    Java12        - Any Java 1.2+ compliant JVM
 
 Valid <target>s are:
 
     build         - builds a binary for the selected platform
-    dist          - creates deployment materials for the selected platform in dist/
-    run           - runs the 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/
-    www           - rebuild www/html/
-    push          - push changes to the web server via ssh (RSA auth)
-
-
 
 
 ______________________________________________________________________________
 Building
 
-- If you only want to build the JVM version of XWT, delete these two
+- WARNING: Jikes 1.16 has a bug which will cause it to generate
+  corrupt .class files; you must downgrade to 1.15 in order to compile
+  XWT.
+
+- 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,
@@ -140,17 +108,19 @@ Building
 
 
 - 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
+  latest pre-release of GCC 3.3. 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
+  If the steps below fail, try adding "-D 11-Oct-2002" to the cvs
+  checkout line; 11-Oct-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's also a patch at the end of this file which can be applied to
-  the branch in order to make Throwable.printStackTrace() work.
+  There are also three patches at the end of this file which can be
+  applied to the branch -- the first fixes an inet_addr() bug on
+  Win32, the second fixes a garbage collector bug, and the third
+  enables stack traces.
 
   # create an install area
   export CLASSPATH=
@@ -162,8 +132,8 @@ Building
   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 http://telia.dl.sourceforge.net/sourceforge/mingw/MinGW-1.1.tar.gz
+  sudo tar -C $PREFIX/i686-pc-mingw32/ -xvzf 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
@@ -190,13 +160,107 @@ Building
                    --enable-gc-type=boehm \
                    --disable-shared \
                    --enable-threads=win32 \
-                   --disable-hash-synchronization \
+                   --enable-hash-synchronization \
                    --disable-interpreter \
                    --enable-sjlj-exceptions
   
   make
   sudo make install
 
+- The Linux native version can also be built with the latest
+  prerelease of gcj 3.3. 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
+
+
+______________________________________________________________________________
+Native-Code "ant"
+
+** THIS DOESN'T WORK YET **
+
+Ant takes a long time to start up, mainly because it has to load a
+JVM. If you compile ant to native code using GCJ, it will load much
+more quickly. So far, this only works on Linux.
+
+    mkdir /tmp/ant
+    cd /tmp/ant
+    jar xvf ~/xwt/lib/ant.jar
+    for A in `find * -name \*.properties -or -name \*.txt -or -name \*.mf`
+        do gcj -c --resource $A $A -o $A.o
+    done
+    CLASSPATH= gcj --main=org.apache.tools.ant.Main \
+               `find . -name \*.class -or -name \*.o` -o ant
+    mv ant ~/xwt/ant
+
+
+______________________________________________________________________________
+inet_addr patch
+
+Index: java/net/natInetAddress.cc
+===================================================================
+RCS file: /cvs/gcc/gcc/libjava/java/net/natInetAddress.cc,v
+retrieving revision 1.18.18.1
+diff -u -r1.18.18.1 natInetAddress.cc
+--- java/net/natInetAddress.cc  4 Mar 2002 20:02:19 -0000       1.18.18.1
++++ java/net/natInetAddress.cc  27 May 2002 22:54:40 -0000
+@@ -9,6 +9,7 @@
+ details.  */
+
+ #include <config.h>
++#include <platform.h>
+
+ #ifdef WIN32
+
+Index: include/win32.h
+===================================================================
+RCS file: /cvs/gcc/gcc/libjava/include/win32.h,v
+retrieving revision 1.3.8.5
+diff -u -r1.3.8.5 win32.h
+--- include/win32.h     24 Apr 2002 01:04:45 -0000      1.3.8.5
++++ include/win32.h     27 May 2002 22:54:40 -0000
+@@ -35,4 +35,8 @@
+    ARRAY and return the exact number of values stored.  */
+ extern int backtrace (void **__array, int __size);
+
++// configure cannot correctly detect inet_addr due to Win32's
++// oddball header naming scheme
++#define HAVE_INET_ADDR
++
+ #endif /* __JV_WIN32_H__ */
+
+
+
+______________________________________________________________________________
+GC patch
+
+Index: win32_threads.c
+===================================================================
+RCS file: /cvs/gcc/gcc/boehm-gc/win32_threads.c,v
+retrieving revision 1.9.2.2
+diff -u -r1.9.2.2 win32_threads.c
+--- win32_threads.c     29 Jun 2002 17:29:51 -0000      1.9.2.2
++++ win32_threads.c     2 Jul 2002 18:10:02 -0000
+@@ -134,10 +134,7 @@
+                                (LPCONTEXT)&thread_table[i].context))
+          ABORT("GetThreadContext failed");
+ #      ifdef I386
+-         if (thread_table[i].context.Esp >= (DWORD)thread_table[i].stack
+-             || thread_table[i].context.Esp < (DWORD)bottom)
+-             ABORT("Thread stack pointer out of range");
+-         GC_push_one ((word) thread_table[i].context.Edi);
++             GC_push_one ((word) thread_table[i].context.Edi);
+          GC_push_one ((word) thread_table[i].context.Esi);
+          GC_push_one ((word) thread_table[i].context.Ebp);
+          GC_push_one ((word) thread_table[i].context.Ebx);
+
 
 
 ______________________________________________________________________________
@@ -419,3 +483,8 @@ diff -u -r1.11 natThrowable.cc
 +    return (jlong)stack[i];
 +}
 +
+
+
+
+
+