XEmacs 21.4.1 "Copyleft".
[chise/xemacs-chise.git.1] / nt / README
1 Building and Installing XEmacs on Windows 95/98/NT/2000    -*- mode:outline -*-
2
3                              David Hobley
4                              Marc Paquette
5                             Jonathan Harris
6                                Ben Wing
7
8 This is a port of XEmacs to Windows 95/98/NT/2000.  If you are looking for a
9 port of GNU Emacs, see http://www.cs.washington.edu/homes/voelker/ntemacs.html.
10 NT 3.51 or later is required for building on Windows NT.  Note that the
11 developers typically use NT 4.0 and Windows 2000, and there may possibly be
12 problems under Windows 95/98 and NT 3.51.  If so, please report them to
13 xemacs-nt@xemacs.org; we are committed to maintaining compatibility with all
14 systems listed.
15
16 * Required tools and sources
17 ============================
18
19 1.  You will need Visual C++ V4.0 or later to compile everything. Personally
20     we have tested V4.0, V4.2, V5.0 and v6.0.
21
22     Note that Visual C++ assumes that the environment variables INCLUDE and
23     LIB are set to specify the location of the includes and libraries.
24     Your PATH environment variable also needs to include the DevStudio
25     vc\bin and sharedide\bin directories.
26
27     Visual C++ V5.0 and later install a batch file called vcvars32.bat in
28     c:\Program Files\DevStudio\VC\bin\ (or wherever you installed it) that you
29     can run before building to set up all of these environment variables.
30     Alternatively, you can choose at setup time to have these
31     environment variables automatically set up in the registry, which
32     is generally a good idea.
33
34
35 2.  Grab the latest XEmacs source from
36
37       ftp://ftp.xemacs.org/pub/xemacs/
38
39     or one of its mirrors listed at http://www.xemacs.org/Download/index.html.
40
41     (NOTE: If you are behind a firewall and have problems with FTP access,
42     the URL http://ftp.xemacs.org/pub/xemacs/ works just as well.)
43
44     You'll also need the packages.  You probably want to get the unified
45     packages bundle from
46
47       ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-sumo.tar.gz
48
49     If you are building with international support, you also need
50
51       ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-mule-sumo.tar.gz
52
53     Although we don't recommend it, you can also retrieve just the packages
54     you really need if you have an extremely slow net connection or are very
55     short on disk space.  You can find the various packages in
56     ftp://ftp.xemacs.org/pub/xemacs/packages/.  You will need the xemacs-base
57     package (and mule-base, if building with international support).  You'll
58     also need the texinfo package unless you have a copy of makeinfo.exe on
59     your machine.  If you want to download additional or updated packages
60     from within XEmacs you'll need the efs, dired and vm packages.  You'll
61     probably also want at least the edit-utils, text-modes, fsf-compat,
62     cc-mode, prog-modes and xemacs-devel packages.
63
64     Unpack the packages into "x:\your\choice\XEmacs\xemacs-packages",
65     for example "c:\Program Files\XEmacs\xemacs-packages".
66
67 3.  At this point you can choose to build for X and/or for Win32 native GUI.
68     If you only want to build for the Win32 native GUI then skip the next
69     section.
70
71
72 ** Extra tools and sources required for X
73
74 NOTE: XEmacs has not been tested with X support under the native
75 Windows build for a long, long time!  It may not even compile any
76 more.  If you are interested in X support, you're better off compiling
77 the Cygwin version of XEmacs, which can handle both Win32 native and X
78 frames (in the same binary, in fact, but not at the same time), and is
79 actively tested with X support.
80
81 If you want support for X you will also need:
82
83 1.  An X server.  XEmacs has been tested and runs well under MI/X,
84     available from: http://www.microimages.com/mix/. (International aka
85     "Mule" support even works under this X server!) Unfortunately, this is
86     not free, but is trialware; you have to pay $25 if you want to use it
87     for more than 15 days.  XEmacs also runs (barely) under the free XWin
88     server that comes as part of the Cygwin XFree86 package, available at
89
90     ftp://sources.redhat.com/pub/cygwin/xfree/
91
92     or numerous mirrors, such as
93
94     ftp://ftp.freesoftware.com/pub/sourceware/cygwin/xfree/
95
96     There are numerous other X servers available in the same package or at
97     the same location, but unfortunately most of them behave even worse
98     than XWin.  If you have any luck with any of these, *PLEASE* email
99     the maintainers at xemacs-nt@xemacs.org, and we'll add the info here.
100
101 2.  Source for the MIT X11R6.3 libraries, available from ftp.x.org.
102
103 3.  You'll need to compile the MIT libraries without multi-thread support.
104     To do this, there is an example Win32.cf and site.def provided which set
105     the relevant flags. You will also need to apply the patch in nt/X11.patch
106     in the xc/lib/X11 directory which will fix the DLL definition file.
107
108     Once compiled and installed, you will need to apply the patch in
109     nt/Xmd.patch. This is messy and better solutions would be appreciated.
110
111 4.  Goto step 2 under 'Optional libraries' below.
112
113
114 * Optional libraries
115 ====================
116
117 1.  You really want the XPM library.  Grab the latest version of the
118     xpm sources (xpm-3.4k.tar.gz at time of writing) from
119     ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack them somewhere.
120     Copy nt\xpm.mak from the xemacs sources to the lib subdirectory of the
121     xpm sources, cd to that directory and build xpm with 'nmake -f xpm.mak'.
122
123 2.  You probably also want PNG image support. Grab the latest versions of zlib
124     and libpng (zlib-1.1.3 and libpng-1.0.2 at time of writing) from
125     ftp://ftp.xemacs.org/pub/xemacs/aux/, unpack them somewhere and read
126     the respective READMEs for details on how to build them.  The following
127     build procedure works for zlib-1.1.3 and libpng-1.0.2:
128
129     cd to the zlib directory, type 'copy msdos\makefile.w32 Makefile' and
130     then type 'nmake'.
131
132     cd to the libpng directory, rename or move the zlib directory to ..\zlib
133     and type 'nmake -f scripts\makefile.w32'.
134
135 3.  If you want TIFF support, grap the latest version of libtiff (tiff-v3.4
136     at time of writing) from ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack
137     it somewhere. Copy nt\tiff.mak from the xemacs sources to the
138     contrib\winnt subdirectory of the tiff sources, cd to that directory and
139     build libtiff with 'nmake -f tiff.mak'. Note: tiff.mak has only been
140     verified to work under WinNT, not Win95 or 98.  However, the latest
141     distribution of libtiff includes a contrib\win95\makefile.w95; that might
142     work.
143
144 4.  If you want JPEG support grab the latest version of jpegsrc (jpeg-6b at 
145     time of writing) from ftp://ftp.xemacs.org/pub/xemacs/aux/ and read the
146     README for details on how to build it.
147
148 5.  If you want X-Face support, grab the compface distribution from
149     ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack it somewhere.
150     Copy nt\compface.mak from xemacs sources to the compface directory.
151     cd to that directory and build libcompface with 'nmake -f compface.mak'.
152
153
154 * Building
155 ==========
156
157 1.  cd to the nt subdirectory of the xemacs distribution and copy the file
158     config.inc.samp to config.inc.  Make any necessary modifications.  This
159     file controls the options that XEmacs is built with:
160
161     -- If you want international (aka "Mule") support, modify the appropriate
162        line in config.inc as follows:
163
164        HAVE_MULE=1
165
166        NOTE: This support is still quite raw under the Win32 native GUI,
167        but works well if you compile the Cygwin version with X support
168        and disable native Win32 support (--with-msw=no).
169     
170     -- If you're building with XPM support, modify the appropriate lines in
171        config.inc as follows:
172
173        HAVE_XPM=1
174        XPM_DIR="x:\location\of\your\xpm\sources"
175     
176        and similarly for JPEG and TIFF support.
177
178     -- If you're building with PNG support, modify the appropriate lines in
179        config.inc as follows:
180
181        HAVE_PNG=1
182        PNG_DIR="x:\location\of\your\png\sources"
183        ZLIB_DIR="x:\location\of\your\zlib\sources"
184
185     -- If you're building with GIF support, modify the appropriate lines in
186        config.inc as follows:
187
188        HAVE_GIF=1
189
190     -- If you're building with X-Face support, modify the appropriate lines in
191        config.inc as follows:
192
193        HAVE_XFACE=1
194        COMPFACE_DIR="x:\location\of\your\compface\sources"
195
196     -- If you're building for X, modify the appropriate lines in config.inc
197        as follows:
198
199        HAVE_X_WINDOWS=1
200        X11_DIR=x:\root\directory\of\your\X11\installation
201
202     -- By default, XEmacs will expect to find its packages in the
203        subdirectories "site-packages", "mule-packages" and "xemacs-packages"
204        under the directory "c:\Program Files\XEmacs". If you want it to look
205        for these subdirectories elsewhere, modify the appropriate lines in
206        config.inc as follows:
207
208        PACKAGE_PREFIX="x:\your\package\directory"
209
210        Make sure that the directory pointed to by PACKAGE_PREFIX contains
211        the xemacs-packages directory into which you installed the packages.
212
213     -- XEmacs can build its info files more quickly if you have a copy of the
214        makeinfo program. If you have a copy, modify the appropriate lines in
215        config.inc as follows:
216
217        MAKEINFO="x:\location\of\makeinfo.exe"
218
219        If you don't have a copy of makeinfo then you'll need to have installed
220        the XEmacs texinfo package.
221
222 2.  If you want to install XEmacs when you build it, modify the appropriate
223     lines in config.inc as follows (you can also run XEmacs from its build
224     directory):
225
226        INSTALL_DIR="x:\your\installation\directory"
227
228     (By default, XEmacs will be installed in directories under the directory
229     "c:\Program Files\XEmacs\XEmacs-21.4".)
230
231 3.  If you want to build xemacs on the command line, use
232     `nmake install -f xemacs.mak', or just `nmake -f xemacs.mak' if you want
233     to run XEmacs from its build directory.  nmake will build temacs, the DOC
234     file, update the elc's, dump xemacs and (optionally) install the relevant
235     files in the directories under the installation directory.
236
237     If you chose to install XEmacs, the file that you should run to start
238     XEmacs will be installed (by default) as
239         "c:\Program Files\XEmacs\XEmacs-21.4\i586-pc-win32\xemacs.exe".
240
241     To run from the build directory, run the file "nt\xemacs.exe" off of the
242     root of the build directory.
243
244     You may want to create a shortcut to the file from your Desktop or
245     Start Menu.
246
247 4.  To build using MS Developer Studio, you can use the workspace file
248     `nt/xemacs.dsw'.  This was prepared for Visual C++ 6.0.  If you are using
249     Visual C++ 5.0, you can use the workspace file `nt/xemacs-vc50.dsw'.  If
250     you have a different version and neither file works, just open up
251     `nt/xemacs.mak' from within MS Developer Studio and it will offer to wrap
252     this Makefile in a workspace file, from which you can build.  Assuming
253     you want to run from the build directory (which you will want to do if
254     you are planning on doing any development work on XEmacs), use the
255     following settings in Project/Settings...:
256
257     Under the General tab:
258
259     Build command line: NMAKE /f xemacs.mak
260     Output file name: ..\src\xemacs.exe
261     Browse info file name: ..\src\temacs.bsc
262
263     Under the Debug tab:
264
265     Executable for debug session: ..\src\xemacs.exe
266
267
268     If you want to install XEmacs when it's built, change the build command
269     line to "NMAKE install /f xemacs.mak". (You will have to make the same
270     change even if you use the provided workspace nt/xemacs.dsw.)
271
272
273 * Debugging under MS Developer Studio
274 =====================================
275
276 The build process always creates debugging and "Source Browser" information
277 in the source tree for use with DevStudio. However that information is not
278 very useful unless you build a debug version of XEmacs:
279
280 1.  Set DEBUG_XEMACS=1 and DEPEND=1 in config.inc and rebuild.
281
282 2.  See instructions above for obtaining a workspace file for use with
283     MS Developer Studio.  Build and debug your XEmacs this way.
284
285 3.  To display the contents of a lisp variable, type Shift-F9 (or use the
286     menu) to bring up the QuickWatch window, type debug_print(variable) and
287     click Recalculate. The output will appear in a console window, as well
288     as in the Debug window in MS Developer Studio.
289
290 4.  To view Lisp variables in the "Watch" window wrap the variable in one of
291     the helper functions from the file src\console-msw.c, for example type
292     DSTRING(variable) in the "Watch" window to inspect a Lisp string.
293
294
295 * Known Problems
296 ================
297
298 Please look at the PROBLEMS file for known problems. Any other problems you
299 need clarified, please email us and we will endeavour to provide any
300 assistance we can:
301
302 The XEmacs NT Mailing List: xemacs-nt@xemacs.org
303 Subscribe address:          xemacs-nt-request@xemacs.org
304
305 Ben Wing (current primary MS Windows maintainer; author of the MS Windows
306           Mule code and some of the dialog box code)
307 Andy Piper (MS Windows contributor; author of the Cygwin support and the
308             MS Windows glyph and widget code)
309 Jonathan Harris (MS Windows contributor; author of the MS Windows redisplay
310                  and underlying GUI code)
311 Kirill Katsnelson (MS Windows contributor; author of the MS Windows process
312                    and printing code and some of the dialog box code;
313                    general guru on obscure MS Windows programming topics)
314 David Hobley (early MS Windows contributor)
315 Marc Paquette (early MS Windows contributor)
316 August Hill (early MS Windows contributor)
317
318 and others.