Mercurial > hg > xemacs-beta
annotate README @ 2367:ecf1ebac70d8
[xemacs-hg @ 2004-11-04 23:05:23 by ben]
commit mega-patch
configure.in: Turn off -Winline and -Wchar-subscripts.
Use the right set of cflags when compiling modules.
Rewrite ldap configuration to separate the inclusion of lber
(needed in recent Cygwin) from the basic checks for the
needed libraries.
add a function for MAKE_JUNK_C; initially code was added to
generate xemacs.def using this, but it will need to be rewritten.
add an rm -f for junk.c to avoid weird Cygwin bug with cp -f onto
an existing file.
Sort list of auto-detected functions and eliminate unused checks for
stpcpy, setlocale and getwd.
Add autodetection of Cygwin scanf problems
BETA: Rewrite section on configure to indicate what flags are important
and what not.
digest-doc.c, make-dump-id.c, profile.c, sorted-doc.c: Add proper decls for main().
make-msgfile.c: Document that this is old junk.
Move proposal to text.c.
make-msgfile.lex: Move proposal to text.c.
make-mswin-unicode.pl: Convert error-generating code so that the entire message will
be seen as a single unrecognized token.
mule/mule-ccl.el: Update docs.
lispref/mule.texi: Update CCL docs.
ldap/eldap.c: Mule-ize.
Use EXTERNAL_LIST_LOOP_2 instead of deleted EXTERNAL_LIST_LOOP.
* XEmacs 21.5.18 "chestnut" is released.
---------------------------------------------------------------
MULE-RELATED WORK:
---------------------------------------------------------------
---------------------------
byte-char conversion
---------------------------
buffer.c, buffer.h, insdel.c, text.c: Port FSF algorithm for byte-char conversion, replacing broken
previous version. Track the char position of the gap. Add
functions to do char-byte conversion downwards as well as upwards.
Move comments about algorithm workings to internals manual.
---------------------------
work on types
---------------------------
alloc.c, console-x-impl.h, dump-data.c, dump-data.h, dumper.c, dialog-msw.c, dired-msw.c, doc.c, editfns.c, esd.c, event-gtk.h, event-msw.c, events.c, file-coding.c, file-coding.h, fns.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-shared.c, glyphs-x.c, glyphs.c, glyphs.h, gui.c, hpplay.c, imgproc.c, intl-win32.c, lrecord.h, lstream.c, keymap.c, lisp.h, libsst.c, linuxplay.c, miscplay.c, miscplay.h, mule-coding.c, nas.c, nt.c, ntheap.c, ntplay.c, objects-msw.c, objects-tty.c, objects-x.c, print.c, process-nt.c, process.c, redisplay.h, select-common.h, select-gtk.c, select-x.c, sgiplay.c, sound.c, sound.h, sunplay.c, sysfile.h, sysdep.c, syswindows.h, text.c, unexnt.c, win32.c, xgccache.c: Further work on types. This creates a full set of types for all
the basic semantics of `char' that I have so far identified, so that
its semantics can always be identified for the purposes of proper
Mule-safe code, and the raw use of `char' always avoided.
(1) More type renaming, for consistency of naming.
Char_ASCII -> Ascbyte
UChar_ASCII -> UAscbyte
Char_Binary -> CBinbyte
UChar_Binary -> Binbyte
SChar_Binary -> SBinbyte
(2) Introduce Rawbyte, CRawbyte, Boolbyte, Chbyte, UChbyte, and
Bitbyte and use them.
(3) New types Itext, Wexttext and Textcount for separating out
the concepts of bytes and textual units (different under UTF-16
and UTF-32, which are potential internal encodings).
(4) qxestr*_c -> qxestr*_ascii.
lisp.h: New; goes with other qxe() functions. #### Maybe goes in a
different section.
lisp.h: Group generic int-type defs together with EMACS_INT defs.
lisp.h: * lisp.h (WEXTTEXT_IS_WIDE)
New defns.
lisp.h: New type to replace places where int occurs as a boolean.
It's signed because occasionally people may want to use -1 as
an error value, and because unsigned ints are viral -- see comments
in the internals manual against using them.
dynarr.c: int -> Bytecount.
---------------------------
Mule-izing
---------------------------
device-x.c: Partially Mule-ize.
dumper.c, dumper.h: Mule-ize. Use Rawbyte. Use stderr_out not printf. Use wext_*().
sysdep.c, syswindows.h, text.c: New Wexttext API for manipulation of external text that may be
Unicode (e.g. startup code under Windows).
emacs.c: Mule-ize. Properly deal with argv in external encoding.
Use wext_*() and Wexttext. Use Rawbyte.
#if 0 some old junk on SCO that is unlikely to be correct.
Rewrite allocation code in run-temacs.
emacs.c, symsinit.h, win32.c: Rename win32 init function and call it even earlier, to
initialize mswindows_9x_p even earlier, for use in startup code
(XEUNICODE_P).
process.c: Use _wenviron not environ under Windows, to get Unicode environment
variables.
event-Xt.c: Mule-ize drag-n-drop related stuff.
dragdrop.c, dragdrop.h, frame-x.c: Mule-ize.
text.h: Add some more stand-in defines for particular kinds of conversion;
use in Mule-ization work in frame-x.c etc.
---------------------------
Freshening
---------------------------
intl-auto-encap-win32.c, intl-auto-encap-win32.h: Regenerate.
---------------------------
Unicode-work
---------------------------
intl-win32.c, syswindows.h: Factor out common options to MultiByteToWideChar and
WideCharToMultiByte. Add convert_unicode_to_multibyte_malloc()
and convert_unicode_to_multibyte_dynarr() and use. Add stuff for
alloca() conversion of multibyte/unicode.
alloc.c: Use dfc_external_data_len() in case of unicode coding system.
alloc.c, mule-charset.c: Don't zero out and reinit charset Unicode tables. This fucks up
dump-time loading. Anyway, either we load them at dump time or
run time, never both.
unicode.c: Dump the blank tables as well.
---------------------------------------------------------------
DOCUMENTATION, MOSTLY MULE-RELATED:
---------------------------------------------------------------
EmacsFrame.c, emodules.c, event-Xt.c, fileio.c, input-method-xlib.c, mule-wnnfns.c, redisplay-gtk.c, redisplay-tty.c, redisplay-x.c, regex.c, sysdep.c: Add comment about Mule work needed.
text.h: Add more documentation describing why DFC routines were not written
to return their value. Add some other DFC documentation.
console-msw.c, console-msw.h: Add pointer to docs in win32.c.
emacs.c: Add comments on sources of doc info.
text.c, charset.h, unicode.c, intl-win32.c, intl-encap-win32.c, text.h, file-coding.c, mule-coding.c: Collect background comments and related to text matters and
internationalization, and proposals for work to be done, in text.c
or Internals manual, stuff related to specific textual API's in
text.h, and stuff related to internal implementation of Unicode
conversion in unicode.c. Put lots of pointers to the comments to
make them easier to find.
s/mingw32.h, s/win32-common.h, s/win32-native.h, s/windowsnt.h, win32.c: Add bunches of new documentation on the different kinds of
builds and environments under Windows and how they work.
Collect this info in win32.c. Add pointers to these docs in
the relevant s/* files.
emacs.c: Document places with long comments.
Remove comment about exiting, move to internals manual, put
in pointer.
event-stream.c: Move docs about event queues and focus to internals manual, put
in pointer.
events.h: Move docs about event stream callbacks to internals manual, put
in pointer.
profile.c, redisplay.c, signal.c: Move documentation to the Internals manual.
process-nt.c: Add pointer to comment in win32-native.el.
lisp.h: Add comments about some comment conventions.
lisp.h: Add comment about the second argument.
device-msw.c, redisplay-msw.c: @@#### comments are out-of-date.
---------------------------------------------------------------
PDUMP WORK (MOTIVATED BY UNICODE CHANGES)
---------------------------------------------------------------
alloc.c, buffer.c, bytecode.c, console-impl.h, console.c, device.c, dumper.c, lrecord.h, elhash.c, emodules.h, events.c, extents.c, frame.c, glyphs.c, glyphs.h, mule-charset.c, mule-coding.c, objects.c, profile.c, rangetab.c, redisplay.c, specifier.c, specifier.h, window.c, lstream.c, file-coding.h, file-coding.c: PDUMP:
Properly implement dump_add_root_block(), which never worked before,
and is necessary for dumping Unicode tables.
Pdump name changes for accuracy:
XD_STRUCT_PTR -> XD_BLOCK_PTR.
XD_STRUCT_ARRAY -> XD_BLOCK_ARRAY.
XD_C_STRING -> XD_ASCII_STRING.
*_structure_* -> *_block_*.
lrecord.h: some comments added about
dump_add_root_block() vs dump_add_root_block_ptr().
extents.c: remove incorrect comment about pdump problems with gap array.
---------------------------------------------------------------
ALLOCATION
---------------------------------------------------------------
abbrev.c, alloc.c, bytecode.c, casefiddle.c, device-msw.c, device-x.c, dired-msw.c, doc.c, doprnt.c, dragdrop.c, editfns.c, emodules.c, file-coding.c, fileio.c, filelock.c, fns.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-x.c, gui-msw.c, gui-x.c, imgproc.c, intl-win32.c, lread.c, menubar-gtk.c, menubar.c, nt.c, objects-msw.c, objects-x.c, print.c, process-nt.c, process-unix.c, process.c, realpath.c, redisplay.c, search.c, select-common.c, symbols.c, sysdep.c, syswindows.h, text.c, text.h, ui-byhand.c: New macros {alloca,xnew}_{itext,{i,ext,raw,bin,asc}bytes} for
more convenient allocation of these commonly requested items.
Modify functions to use alloca_ibytes, alloca_array, alloca_extbytes,
xnew_ibytes, etc. also XREALLOC_ARRAY, xnew.
alloc.c: Rewrite the allocation functions to factor out repeated code.
Add assertions for freeing dumped data.
lisp.h: Moved down and consolidated with other allocation stuff.
lisp.h, dynarr.c: New functions for allocation that's very efficient when mostly in
LIFO order.
lisp.h, text.c, text.h: Factor out some stuff for general use by alloca()-conversion funs.
text.h, lisp.h: Fill out convenience routines for allocating various kinds of
bytes and put them in lisp.h. Use them in place of xmalloc(),
ALLOCA().
text.h: Fill out the convenience functions so the _MALLOC() kinds match
the alloca() kinds.
---------------------------------------------------------------
ERROR-CHECKING
---------------------------------------------------------------
text.h: Create ASSERT_ASCTEXT_ASCII() and ASSERT_ASCTEXT_ASCII_LEN()
from similar Eistring checkers and change the Eistring checkers to
use them instead.
---------------------------------------------------------------
MACROS IN LISP.H
---------------------------------------------------------------
lisp.h: Redo GCPRO declarations. Create a "base" set of functions that can
be used to generate any kind of gcpro sets -- regular, ngcpro,
nngcpro, private ones used in GC_EXTERNAL_LIST_LOOP_2.
buffer.c, callint.c, chartab.c, console-msw.c, device-x.c, dialog-msw.c, dired.c, extents.c, ui-gtk.c, rangetab.c, nt.c, mule-coding.c, minibuf.c, menubar-msw.c, menubar.c, menubar-gtk.c, lread.c, lisp.h, gutter.c, glyphs.c, glyphs-widget.c, fns.c, fileio.c, file-coding.c, specifier.c: Eliminate EXTERNAL_LIST_LOOP, which does not check for circularities.
Use EXTERNAL_LIST_LOOP_2 instead or EXTERNAL_LIST_LOOP_3
or EXTERNAL_PROPERTY_LIST_LOOP_3 or GC_EXTERNAL_LIST_LOOP_2
(new macro). Removed/redid comments on EXTERNAL_LIST_LOOP.
---------------------------------------------------------------
SPACING FIXES
---------------------------------------------------------------
callint.c, hftctl.c, number-gmp.c, process-unix.c: Spacing fixes.
---------------------------------------------------------------
FIX FOR GEOMETRY PROBLEM IN FIRST FRAME
---------------------------------------------------------------
unicode.c: Add workaround for newlib bug in sscanf() [should be fixed by
release 1.5.12 of Cygwin].
toolbar.c: bug fix for problem of initial frame being 77 chars wide on Windows.
will be overridden by my other ws.
---------------------------------------------------------------
FIX FOR LEAKING PROCESS HANDLES:
---------------------------------------------------------------
process-nt.c: Fixes for leaking handles. Inspired by work done by Adrian Aichner
<adrian@xemacs.org>.
---------------------------------------------------------------
FIX FOR CYGWIN BUG (Unicode-related):
---------------------------------------------------------------
unicode.c: Add workaround for newlib bug in sscanf() [should be fixed by
release 1.5.12 of Cygwin].
---------------------------------------------------------------
WARNING FIXES:
---------------------------------------------------------------
console-stream.c: `reinit' is unused.
compiler.h, event-msw.c, frame-msw.c, intl-encap-win32.c, text.h: Add stuff to deal with ANSI-aliasing warnings I got.
regex.c: Gather includes together to avoid warning.
---------------------------------------------------------------
CHANGES TO INITIALIZATION ROUTINES:
---------------------------------------------------------------
buffer.c, emacs.c, console.c, debug.c, device-x.c, device.c, dragdrop.c, emodules.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, font-lock.c, frame-msw.c, glyphs-widget.c, glyphs.c, gui-x.c, insdel.c, lread.c, lstream.c, menubar-gtk.c, menubar-x.c, minibuf.c, mule-wnnfns.c, objects-msw.c, objects.c, print.c, scrollbar-x.c, search.c, select-x.c, text.c, undo.c, unicode.c, window.c, symsinit.h: Call reinit_*() functions directly from emacs.c, for clarity.
Factor out some redundant init code. Move disallowed stuff
that had crept into vars_of_glyphs() into complex_vars_of_glyphs().
Call init_eval_semi_early() from eval.c not in the middle of
vars_of_() in emacs.c since there should be no order dependency
in the latter calls.
---------------------------------------------------------------
ARMAGEDDON:
---------------------------------------------------------------
alloc.c, emacs.c, lisp.h, print.c: Rename inhibit_non_essential_printing_operations to
inhibit_non_essential_conversion_operations.
text.c: Assert on !inhibit_non_essential_conversion_operations.
console-msw.c, print.c: Don't do conversion in SetConsoleTitle or FindWindow to avoid
problems during armageddon. Put #errors for NON_ASCII_INTERNAL_FORMAT
in places where problems would arise.
---------------------------------------------------------------
CHANGES TO THE BUILD PROCEDURE:
---------------------------------------------------------------
config.h.in, s/cxux.h, s/usg5-4-2.h, m/powerpc.h: Add comment about correct ordering of this file.
Rearrange everything to follow this -- put all #undefs together
and before the s&m files. Add undefs for HAVE_ALLOCA, C_ALLOCA,
BROKEN_ALLOCA_IN_FUNCTION_CALLS, STACK_DIRECTION. Remove unused
HAVE_STPCPY, HAVE_GETWD, HAVE_SETLOCALE.
m/gec63.h: Deleted; totally broken, not used at all, not in FSF.
m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/altos.h, m/amdahl.h, m/apollo.h, m/att3b.h, m/aviion.h, m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/ews4800r.h, m/gould.h, m/hp300bsd.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, m/intel386.h, m/iris4d.h, m/iris5d.h, m/iris6d.h, m/irist.h, m/isi-ov.h, m/luna88k.h, m/m68k.h, m/masscomp.h, m/mg1.h, m/mips-nec.h, m/mips-siemens.h, m/mips.h, m/news.h, m/nh3000.h, m/nh4000.h, m/ns32000.h, m/orion105.h, m/pfa50.h, m/plexus.h, m/pmax.h, m/powerpc.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h, m/sgi-challenge.h, m/symmetry.h, m/tad68k.h, m/tahoe.h, m/targon31.h, m/tekxd88.h, m/template.h, m/tower32.h, m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/xps100.h: Delete C_ALLOCA, HAVE_ALLOCA, STACK_DIRECTION,
BROKEN_ALLOCA_IN_FUNCTION_CALLS. All of this is auto-detected.
When in doubt, I followed recent FSF sources, which also have
these things deleted.
author | ben |
---|---|
date | Thu, 04 Nov 2004 23:08:28 +0000 |
parents | 715eed24e30e |
children | d96db265d893 |
rev | line source |
---|---|
623 | 1 This directory tree holds version 21.5 of XEmacs. |
2 | |
3 | |
4 *** What is XEmacs? | |
5 | |
6 XEmacs is a powerful, highly customizable open source text editor and | |
7 application development system, with full GUI support. It is protected | |
8 under the GNU Public License and related to other versions of Emacs, in | |
9 particular GNU Emacs. Its emphasis is on modern graphical user | |
10 interface support and an open software development model, similar to | |
11 Linux. XEmacs has an active development community numbering in the | |
12 hundreds (and thousands of active beta testers on top of this), and runs | |
13 on all versions of MS Windows, on Linux, and on nearly every other | |
14 version of Unix in existence. Support for XEmacs has been supplied by | |
15 Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical | |
16 Laboratory, Amdahl Corporation, BeOpen, and others, as well as the | |
17 unpaid time of a great number of individual developers. | |
18 | |
19 | |
20 | |
21 *** What platforms does it run on? | |
22 | |
23 -- MS Windows (It has been tested on NT, 2000, 95, 98, and ME; you | |
24 can also compile Cygwin and MinGW versions.) | |
25 -- Unix (It is regularly tested on Linux, Solaris, SunOS, HP/UX, | |
26 FreeBSD, OpenBSD, BSD/OS aka BSDI, Tru64 aka DEC/OSF, SCO5, | |
27 and probably others. It should work on all versions of Unix | |
28 created in the last 10 years or so, perhaps with a bit of | |
29 work on more obscure platforms to correct bit-rot. It uses | |
30 a sophisticated configuration system to auto-detect zillions | |
31 of features that are implemented differently in different | |
32 versions of Unix, so it will probably work on your vendor's | |
33 version, possibly with a bit of tweaking, even if we've | |
34 never heard of it.) | |
35 -- MacOS/X (As an X Windows application. Unfortunately there is no | |
36 support currently for MacOS-specific features.) | |
37 | |
38 There is also a port of XEmacs 19.14 (an older version, circa 1996) | |
39 for all versions of MacOS, with extensive support for MacOS-specific | |
40 features. See the FAQ for more details. | |
41 | |
42 There are rumors of an in-progress port to OS/2. See the FAQ. | |
43 | |
44 XEmacs will probably never work on MS/DOS or Windows 3.1, and we're | |
45 not particularly interested in patches for these platforms, as they | |
46 would introduce huge amounts of code clutter due to the woefully | |
47 underfeatured nature of these systems. (See GNU Emacs for a port to | |
48 MS/DOS.) | |
49 | |
50 | |
51 | |
52 *** Where's the FAQ? | |
53 | |
54 Look at `man/xemacs-faq.texi'. | |
55 | |
56 For the very latest version, see | |
57 http://cvs.xemacs.org/cgi-bin/cvswebxe/xemacs/man/xemacs-faq.texi. | |
58 | |
59 | |
60 | |
61 *** Where's the latest version? | |
62 | |
63 For up-to-date information on XEmacs, see http://www.xemacs.org. | |
64 | |
65 To download XEmacs, see http://ftp.xemacs.org/ or | |
66 ftp://ftp.xemacs.org/pub/xemacs/. | |
67 | |
68 For the latest experimental sources, see http://cvs.xemacs.org/, which | |
69 gives instructions on how to get started with CVS access. | |
70 | |
71 There are numerous mailing lists for discussion of XEmacs. The | |
72 current description of these lists can be found at | |
73 http://www.xemacs.org/Lists/, or see `etc/MAILINGLISTS'. General | |
74 discussion of bugs, new features, etc. takes place on | |
75 xemacs-beta@xemacs.org. | |
76 | |
77 | |
78 | |
79 *** How do I build and install XEmacs? | |
0 | 80 |
81 See the file `etc/NEWS' for information on new features and other | |
82 user-visible changes since the last version of XEmacs. | |
83 | |
253 | 84 The file `INSTALL' in this directory says how to bring up XEmacs on |
85 Unix and Cygwin, once you have loaded the entire subtree of this | |
86 directory. | |
0 | 87 |
253 | 88 See the file `nt/README' for instructions on building XEmacs for |
89 Microsoft Windows. | |
90 | |
424 | 91 The file 'README.packages' will guide you in the installation of |
92 (essential) add on packages. | |
93 | |
623 | 94 |
95 | |
96 *** How do I deal with bugs or with problems building, installing, or running? | |
97 | |
98 The file `PROBLEMS' contains information on many common problems that | |
99 occur in building, installing and running XEmacs. | |
100 | |
101 Reports of bugs in XEmacs should be sent to xemacs-beta@xemacs.org. | |
102 You can also post to the newsgroup comp.emacs.xemacs (or equivalentlt, | |
103 send to the mailing list xemacs@xemacs.org), but it is less likely | |
104 that the developers will see it in a timely fashion. See the "Bugs" | |
105 section of the XEmacs manual for more information on how to report | |
106 bugs. (The file `BUGS' in this directory explains how you can find | |
107 and read that section using the Info files that come with XEmacs.) | |
108 See `etc/MAILINGLISTS' for more information on mailing lists relating | |
109 to XEmacs. | |
110 | |
111 | |
781 | 112 *** How do I get started developing XEmacs? |
113 | |
114 First, get yourself set up under CVS so that you can access the CVS | |
115 repositories containing the XEmacs sources and the XEmacs packages. | |
116 | |
117 Next, set up your layout. This is important, as a good layout will | |
118 facilitate getting things done efficiently, while a bad layout will could | |
119 lead to disaster, as you can't figure out which code is the most recent, | |
120 which can be thrown away, etc. We suggest the following layout: (feel free | |
121 to make changes) | |
122 | |
123 -- Everything goes under /src/xemacs (use a different directory if you | |
124 want). From now, instead of saying /src/xemacs, we use <xsrc-top>, to | |
125 make it easier in case someone picked a different directory. | |
126 | |
127 -- Package source is in <xsrc-top>/package-src. | |
128 | |
129 -- Installed packages go under <xsrc-top>/xemacs-packages, and | |
130 <xsrc-top>/mule-packages. | |
131 | |
132 -- A "workspace" is a complete copy of the sources, in which you do work of | |
133 a particular kind. Workspaces can be differentiated by which branch of | |
134 the source tree they extend off of -- usually either the stable or | |
135 experimental, unless other branches have been created (for example, Ben | |
136 created a branch for his Mule work because (1) the project was long-term | |
137 and involved an enormous number of changes, (2) people wanted to be able | |
138 to look at what his work in progress, and (3) he wanted to be able to | |
139 check things in and in general use source-code control, since it was a | |
140 long-term project). Workspaces are also differentiated in what their | |
141 purpose is -- general working workspace, workspace for particular | |
142 projects, workspace keeping the latest copy of the code in one of the | |
143 branches without mods, etc. | |
144 | |
145 -- Various workspaces are subdirectories under <xsrc-top>, e.g.: | |
146 | |
147 -- <xsrc-top>/working (the workspace you're actively working on, | |
148 periodically synched up with the latest trunk) | |
149 | |
150 -- <xsrc-top>/stable (for making changes to the stable version of | |
151 XEmacs, which sits on a branch) | |
152 | |
153 -- <xsrc-top>/unsigned-removal (a workspace for a specific, difficult | |
154 task that's going to affect lots of source and take a long time, and | |
155 so best done in its own workspace without the interference of other | |
156 work you're doing. Also, you can commit just this one large change, | |
157 separate from all the other changes). | |
158 | |
159 -- <xsrc-top>/latest (a copy of the latest sources on the trunk, | |
160 i.e. the experimental version of XEmacs, with no patches in it; | |
161 either update it periodically, by hand, or set up a cron job to do it | |
162 automatically). Set it up so it can be built, and build it so you | |
163 have a working XEmacs. (Building it might also go into the cron job.) | |
164 | |
165 This workspace serves a number of purposes: | |
166 -- 1. You always have a recent version of XEmacs you can compare | |
167 against when something you're working on breaks. It's true | |
168 that you can do this with cvs diff, but when you need to do | |
169 some serious investigation, this method just fails. | |
170 -- 2. You (almost) always have a working, up-to-date executable that | |
171 can be used when your executable is crashing and you need to | |
172 keep developing it, or when you need an `xemacs' to build | |
173 packages, etc. | |
174 -- 3. When creating new workspaces, you can just copy the `latest' | |
175 workspace using GNU cp -a. You have all the .elc's built, | |
176 everything else probably configured, any spare files in place | |
177 (e.g. some annoying xpm.dll under Windows, etc.). | |
178 | |
179 -- <xsrc-top>/latest-stable/ (equivalent to <xsrc-top>/latest/, but | |
180 for the Stable branch of XEmacs, rather than the Experimental branch | |
181 of XEmacs). This may or may not be necessary depending on how much | |
182 development you do of the stable branch. | |
183 | |
184 -- <xsrc-top>/xemacsweb is a workspace for working on the XEmacs web site. | |
185 | |
186 -- <xsrc-top>/in-patches for patches received from email and saved to files. | |
187 | |
188 -- <xsrc-top>/out-patches for locally-generated patches to be sent to | |
189 xemacs-patches@xemacs.org. Less useful now that the patcher util has been | |
190 developed. | |
191 | |
192 -- <xsrc-top>/build, for build trees when compiling and testing XEmacs with | |
193 various configuration options turned off and on. The scripts in | |
194 xemacs-builds/ben (see below) can be used to automate building XEmacs | |
195 workspaces with many different configuration options and automatically | |
196 filtering out the normal output so that you see only the abnormal | |
197 output. | |
198 | |
199 -- <xsrc-top>/xemacs-builds, for the xemacs-builds module, which you need | |
200 to check out separately in CVS. This contains scripts used for building | |
201 XEmacs, automating and simplifying using CVS, etc. Under various | |
202 people's directories are their own build and other scripts. The | |
203 currently most-maintained scripts are under ben/, where there are easily | |
204 configurable scripts that can be used to easily build any workspace | |
205 (esp. if you've more or less followed the layout presented above) | |
206 unattended, with one or more configuration states (there's a | |
207 pre-determined list of the most useful, but it's easy to change). The | |
208 output is filtered and split up in various ways so that you can identify | |
209 which output came from where, and you can see the output either full or | |
210 with all "normal" output except occasional status messages filtered so | |
211 that you only see the abnormal ones. | |
212 | |
623 | 213 *** What's the basic layout of the code? |
0 | 214 |
215 The file `configure' is a shell script to acclimate XEmacs to the | |
216 oddities of your processor and operating system. It will create a | |
217 file named `Makefile' (a script for the `make' program), which helps | |
218 automate the process of building and installing emacs. See INSTALL | |
219 for more detailed information. | |
220 | |
221 The file `configure.in' is the input used by the autoconf program to | |
222 construct the `configure' script. Since XEmacs has configuration | |
223 requirements that autoconf can't meet, `configure.in' uses an unholy | |
224 marriage of custom-baked configuration code and autoconf macros; it | |
225 may be wise to avoid rebuilding `configure' from `configure.in' when | |
226 possible. | |
227 | |
228 The file `Makefile.in' is a template used by `configure' to create | |
229 `Makefile'. | |
230 | |
231 There are several subdirectories: | |
232 | |
623 | 233 `src' holds the C code for XEmacs (the XEmacs Lisp interpreter and its |
0 | 234 primitives, the redisplay code, and some basic editing functions). |
623 | 235 `lisp' holds the XEmacs Lisp code for XEmacs (most everything else). |
0 | 236 `lib-src' holds the source code for some utility programs for use by |
237 or with XEmacs, like movemail and etags. | |
238 `etc' holds miscellaneous architecture-independent data files | |
239 XEmacs uses, like the tutorial text and the Zippy the Pinhead quote | |
240 database. The contents of the `lisp', `info' and `man' | |
241 subdirectories are architecture-independent too. | |
623 | 242 `lwlib' holds the C code for the X toolkit objects used by XEmacs. |
0 | 243 `info' holds the Info documentation tree for XEmacs. |
623 | 244 `man' holds the source code for the XEmacs online documentation. |
245 `nt' holds files used compiling XEmacs under Microsoft Windows. |