ee3b96a1e695bf0ed426fc6d833936cfb8141472
[chise/xemacs-chise.git.1] / nt / xemacs.mak
1 #   Makefile for Microsoft NMAKE
2 #   Copyright (C) 1995 Board of Trustees, University of Illinois.
3 #   Copyright (C) 1995, 1996 Ben Wing.
4 #   Copyright (C) 1995 Sun Microsystems, Inc.
5 #   Copyright (C) 1998 Free Software Foundation, Inc.
6 #
7 # This file is part of XEmacs.
8 #
9 # XEmacs is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU General Public License as published by the
11 # Free Software Foundation; either version 2, or (at your option) any
12 # later version.
13 #
14 # XEmacs is distributed in the hope that it will be useful, but WITHOUT
15 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 # for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with XEmacs; see the file COPYING.  If not, write to
21 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 # Boston, MA 02111-1307, USA.
23 #
24 # Synched up with: Not in FSF.
25 #
26
27 XEMACS=..
28 LISP=$(XEMACS)\lisp
29 NT=$(XEMACS)\nt
30
31 # Program name and version
32
33 !include "..\version.sh"
34
35 !if !defined(INFODOCK)
36 INFODOCK=0
37 !endif
38
39 !if $(INFODOCK)
40 INFODOCK_VERSION_STRING=$(infodock_major_version).$(infodock_minor_version).$(infodock_build_version)
41 PROGRAM_DEFINES=-DINFODOCK                                      \
42         -DPATH_VERSION=\"$(INFODOCK_VERSION_STRING)\"           \
43         -DPATH_PROGNAME=\"infodock\"                            \
44         -DINFODOCK_MAJOR_VERSION=$(infodock_major_version)      \
45         -DINFODOCK_MINOR_VERSION=$(infodock_minor_version)      \
46         -DINFODOCK_BUILD_VERSION=$(infodock_build_version)
47 !else
48 !if "$(emacs_beta_version)" != ""
49 XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)-b$(emacs_beta_version)
50 !else
51 XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)
52 !endif
53 PROGRAM_DEFINES=                                                \
54         -DPATH_VERSION=\"$(XEMACS_VERSION_STRING)\"             \
55         -DPATH_PROGNAME=\"xemacs\"
56 !endif
57
58 #
59 # Command line options defaults
60 #
61 !if !defined(INSTALL_DIR)
62 ! if $(INFODOCK)
63 INSTALL_DIR=c:\Program Files\Infodock\Infodock-$(INFODOCK_VERSION_STRING)
64 ! else
65 INSTALL_DIR=c:\Program Files\XEmacs\XEmacs-$(XEMACS_VERSION_STRING)
66 ! endif
67 !endif
68 !if !defined(PACKAGEPATH)
69 PATH_PACKAGEPATH="c:\\Program Files\\XEmacs\\packages"
70 !else
71 PATH_PACKAGEPATH="$(PACKAGEPATH)"
72 !endif
73 !if !defined(HAVE_MSW)
74 HAVE_MSW=1
75 !endif
76 !if !defined(HAVE_X)
77 HAVE_X=0
78 !endif
79 !if !defined(HAVE_MULE)
80 HAVE_MULE=0
81 !endif
82 !if !defined(HAVE_XPM)
83 HAVE_XPM=0
84 !endif
85 !if !defined(HAVE_TOOLBARS)
86 HAVE_TOOLBARS=$(HAVE_XPM)
87 !endif
88 !if !defined(HAVE_DIALOGS)
89 HAVE_DIALOGS=1
90 !endif
91 !if !defined(HAVE_MSW_C_DIRED)
92 HAVE_MSW_C_DIRED=1
93 !endif
94 !if !defined(HAVE_NATIVE_SOUND)
95 HAVE_NATIVE_SOUND=1
96 !endif
97 !if !defined(DEBUG_XEMACS)
98 DEBUG_XEMACS=0
99 !endif
100 !if !defined(USE_UNION_TYPE)
101 USE_UNION_TYPE=0
102 !endif
103 !if !defined(USE_MINIMAL_TAGBITS)
104 USE_MINIMAL_TAGBITS=0
105 !endif
106 !if !defined(USE_INDEXED_LRECORD_IMPLEMENTATION)
107 USE_INDEXED_LRECORD_IMPLEMENTATION=0
108 !endif
109
110 #
111 # System configuration
112 #
113 !if !defined(PROCESSOR_ARCHITECTURE) && "$(OS)" != "Windows_NT"
114 EMACS_CONFIGURATION=i386-pc-win32
115 !else if "$(PROCESSOR_ARCHITECTURE)" == "x86"
116 EMACS_CONFIGURATION=i386-pc-win32
117 !else if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
118 EMACS_CONFIGURATION=mips-pc-win32
119 !else if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
120 EMACS_CONFIGURATION=alpha-pc-win32
121 !else if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
122 EMACS_CONFIGURATION=ppc-pc-win32
123 !else
124 ! error Unknown processor architecture type $(PROCESSOR_ARCHITECTURE)
125 !endif
126
127 #
128 # Conf error checks
129 #
130 CONFIG_ERROR=0
131 !if $(INFODOCK) && !exist("..\..\Infodock.rules")
132 !message Cannot build InfoDock without InfoDock sources
133 CONFIG_ERROR=1
134 !endif
135 !if !$(HAVE_MSW) && !$(HAVE_X)
136 !message Please specify at least one HAVE_MSW=1 and/or HAVE_X=1
137 CONFIG_ERROR=1
138 !endif
139 !if $(HAVE_X) && !defined(X11_DIR)
140 !message Please specify root directory for your X11 installation: X11_DIR=path
141 CONFIG_ERROR=1
142 !endif
143 !if $(HAVE_X) && defined(X11_DIR) && !exist("$(X11_DIR)\LIB\X11.LIB")
144 !message Specified X11 directory does not contain "$(X11_DIR)\LIB\X11.LIB"
145 CONFIG_ERROR=1
146 !endif
147 !if $(HAVE_MSW) && $(HAVE_XPM) && !defined(XPM_DIR)
148 !message Please specify root directory for your XPM installation: XPM_DIR=path
149 CONFIG_ERROR=1
150 !endif
151 !if $(HAVE_MSW) && $(HAVE_XPM) && defined(XPM_DIR) && !exist("$(XPM_DIR)\lib\Xpm.lib")
152 !message Specified XPM directory does not contain "$(XPM_DIR)\lib\Xpm.lib"
153 CONFIG_ERROR=1
154 !endif
155 !if $(HAVE_MSW) && $(HAVE_TOOLBARS) && !$(HAVE_XPM)
156 !error Toolbars require XPM support
157 CONFIG_ERROR=1
158 !endif
159 !if $(CONFIG_ERROR)
160 !error Configuration error(s) found
161 !endif
162
163 #
164 # Handle GUNG_HO
165 #
166 !if defined(GUNG_HO)
167 USE_MINIMAL_TAGBITS=$(GUNG_HO)
168 USE_INDEXED_LRECORD_IMPLEMENTATION=$(GUNG_HO)
169 !endif
170
171 #
172 # Small configuration report
173 #
174 !if !defined(CONF_REPORT_ALREADY_PRINTED)
175 !if [set CONF_REPORT_ALREADY_PRINTED=1]
176 !endif
177 !message ------------------------------------------------
178 !message Configured for "$(EMACS_CONFIGURATION)".
179 !message 
180 !message Installation directory is "$(INSTALL_DIR)".
181 !message Package path is $(PATH_PACKAGEPATH).
182 !message 
183 !if $(INFODOCK)
184 !message Building InfoDock.
185 !endif
186 !if $(HAVE_MSW)
187 !message Compiling in support for native GUI.
188 !endif
189 !if $(HAVE_X)
190 !message Compiling in support for X-Windows.
191 !endif
192 !if $(HAVE_MULE)
193 !message Compiling in MULE.
194 !endif
195 !if $(HAVE_XPM)
196 !message Compiling in support for XPM images.
197 !endif
198 !if $(HAVE_TOOLBARS)
199 !message Compiling in support for toolbars.
200 !endif
201 !if $(HAVE_DIALOGS)
202 !message Compiling in support for dialogs.
203 !endif
204 !if $(HAVE_NATIVE_SOUND)
205 !message Compiling in support for native sounds.
206 !endif
207 !if $(HAVE_MSW_C_DIRED)
208 # Define HAVE_MSW_C_DIRED to be non-zero if you want XEmacs to use C
209 # primitives to significantly speed up dired, at the expense of an
210 # additional ~4KB of code.
211 !message Compiling in fast dired implementation.
212 !endif
213 !if $(USE_MINIMAL_TAGBITS)
214 !message Using minimal tagbits.
215 !endif
216 !if $(USE_INDEXED_LRECORD_IMPLEMENTATION)
217 !message Using indexed lrecord implementation.
218 !endif
219 !if $(USE_UNION_TYPE)
220 !message Using union type for Lisp object storage.
221 !endif
222 !if $(DEBUG_XEMACS)
223 !message Compiling in extra debug checks. XEmacs will be slow!
224 !endif
225 !message ------------------------------------------------
226 !message 
227 !endif # !defined(CONF_REPORT_ALREADY_PRINTED)
228
229 #
230 # Compiler command echo control. Define VERBOSECC=1 to get vebose compilation.
231 #
232 !if !defined(VERBOSECC)
233 VERBOSECC=0
234 !endif
235 !if $(VERBOSECC)
236 CCV=$(CC) -nologo
237 !else
238 CCV=@$(CC) -nologo
239 !endif
240
241 !if $(DEBUG_XEMACS)
242 OPT=-Od -Zi
243 !else
244 OPT=-O2 -G5 -Zi
245 !endif
246
247 WARN_CPP_FLAGS = -W3
248
249 !if $(HAVE_X)
250 X_DEFINES=-DHAVE_X_WINDOWS
251 X_INCLUDES=-I$(X11_DIR)\include
252 X_LIBS=-libpath:$(X11_DIR)\lib Xaw.lib Xmu.lib Xt.lib SM.lib ICE.lib Xext.lib X11.lib
253 !endif
254
255 !if $(HAVE_MSW)
256 MSW_DEFINES=-DHAVE_MS_WINDOWS -DHAVE_SCROLLBARS -DHAVE_MENUBARS
257 MSW_INCLUDES=
258 MSW_LIBS=
259 !if $(HAVE_MSW_C_DIRED)
260 MSW_DEFINES=$(MSW_DEFINES) -DHAVE_MSW_C_DIRED
261 MSW_C_DIRED_SRC=$(XEMACS)\src\dired-msw.c
262 MSW_C_DIRED_OBJ=$(OUTDIR)\dired-msw.obj
263 !endif
264 !if $(HAVE_XPM)
265 MSW_DEFINES=$(MSW_DEFINES) -DHAVE_XPM -DFOR_MSW
266 MSW_INCLUDES=$(MSW_INCLUDES) -I"$(XPM_DIR)" -I"$(XPM_DIR)\lib"
267 MSW_LIBS=$(MSW_LIBS) "$(XPM_DIR)\lib\Xpm.lib"
268 !endif
269 !if $(HAVE_TOOLBARS)
270 MSW_DEFINES=$(MSW_DEFINES) -DHAVE_TOOLBARS
271 MSW_TOOLBAR_SRC=$(XEMACS)\src\toolbar.c $(XEMACS)\src\toolbar-msw.c
272 MSW_TOOLBAR_OBJ=$(OUTDIR)\toolbar.obj $(OUTDIR)\toolbar-msw.obj
273 MSW_LIBS=$(MSW_LIBS) comctl32.lib
274 !endif
275 !if $(HAVE_DIALOGS)
276 MSW_DEFINES=$(MSW_DEFINES) -DHAVE_DIALOGS
277 MSW_DIALOG_SRC=$(XEMACS)\src\dialog.c $(XEMACS)\src\dialog-msw.c
278 MSW_DIALOG_OBJ=$(OUTDIR)\dialog.obj $(OUTDIR)\dialog-msw.obj
279 !endif
280 !if $(HAVE_NATIVE_SOUND)
281 MSW_DEFINES=$(MSW_DEFINES) -DHAVE_NATIVE_SOUND
282 !endif
283 !endif
284
285 !if $(HAVE_MULE)
286 MULE_DEFINES=-DMULE
287 !endif
288
289 !if $(DEBUG_XEMACS)
290 DEBUG_DEFINES=-DDEBUG_XEMACS -D_DEBUG 
291 DEBUG_FLAGS= -debugtype:both -debug:full
292 !endif
293
294 !if $(USE_MINIMAL_TAGBITS)
295 TAGBITS_DEFINES=-DUSE_MINIMAL_TAGBITS
296 !endif
297 !if $(USE_INDEXED_LRECORD_IMPLEMENTATION)
298 LRECORD_DEFINES=-DUSE_INDEXED_LRECORD_IMPLEMENTATION
299 !endif
300 !if $(USE_UNION_TYPE)
301 UNION_DEFINES=-DUSE_UNION_TYPE
302 !endif
303
304 # Hard-coded paths
305
306 !if $(INFODOCK)
307 PATH_PREFIX=../..
308 !else
309 PATH_PREFIX=..
310 !endif
311
312 PATH_DEFINES=-DPATH_PREFIX=\"$(PATH_PREFIX)\"
313
314 # Generic variables
315
316 INCLUDES=$(X_INCLUDES) $(MSW_INCLUDES) -I$(XEMACS)\nt\inc -I$(XEMACS)\src -I$(XEMACS)\lwlib
317
318 DEFINES=$(X_DEFINES) $(MSW_DEFINES) $(MULE_DEFINES) \
319         $(TAGBITS_DEFINES) $(LRECORD_DEFINES) $(UNION_DEFINES) \
320         -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN -DWINDOWSNT -Demacs \
321         -DHAVE_CONFIG_H $(PROGRAM_DEFINES) $(PATH_DEFINES)
322
323 OUTDIR=obj
324
325 #------------------------------------------------------------------------------
326
327 default: $(OUTDIR)\nul all 
328
329 $(OUTDIR)\nul:
330         -@mkdir $(OUTDIR)
331
332 XEMACS_INCLUDES=\
333  $(XEMACS)\src\config.h \
334  $(XEMACS)\src\Emacs.ad.h \
335  $(XEMACS)\src\paths.h \
336  $(XEMACS)\src\puresize-adjust.h
337
338 $(XEMACS)\src\config.h: config.h
339         copy config.h $(XEMACS)\src
340
341 $(XEMACS)\src\Emacs.ad.h:       Emacs.ad.h
342         copy Emacs.ad.h $(XEMACS)\src
343
344 $(XEMACS)\src\paths.h:  paths.h
345         copy paths.h $(XEMACS)\src
346
347 $(XEMACS)\src\puresize-adjust.h:        puresize-adjust.h
348         copy puresize-adjust.h $(XEMACS)\src
349
350 #------------------------------------------------------------------------------
351
352 # lib-src programs
353
354 LIB_SRC = $(XEMACS)\lib-src
355 LIB_SRC_DEFINES = -DHAVE_CONFIG_H -DWIN32 -DWINDOWSNT
356
357 # Inferred rule
358 {$(LIB_SRC)}.c{$(LIB_SRC)}.exe :
359         @cd $(LIB_SRC)
360         $(CCV) -I. -I$(XEMACS)/src -I$(XEMACS)/nt/inc $(LIB_SRC_DEFINES) -O2 -W3 -Fe$@ $**
361         @cd $(NT)
362
363 # Individual dependencies
364 ETAGS_DEPS = $(LIB_SRC)/getopt.c $(LIB_SRC)/getopt1.c $(LIB_SRC)/../src/regex.c
365 $(LIB_SRC)/etags.exe : $(LIB_SRC)/etags.c $(ETAGS_DEPS)
366 #### ootags???
367
368 LIB_SRC_TOOLS = \
369         $(LIB_SRC)/make-docfile.exe     \
370         $(LIB_SRC)/hexl.exe             \
371         $(LIB_SRC)/movemail.exe         \
372         $(LIB_SRC)/mmencode.exe         \
373         $(LIB_SRC)/sorted-doc.exe       \
374         $(LIB_SRC)/wakeup.exe           \
375         $(LIB_SRC)/etags.exe            
376
377 #------------------------------------------------------------------------------
378
379 # runemacs proglet
380
381 RUNEMACS = $(XEMACS)\src\runemacs.exe
382
383 $(RUNEMACS): $(NT)\runemacs.c $(NT)\xemacs.res
384         $(CCV) -I. -I$(XEMACS)/src -I$(XEMACS)/nt/inc -O2 -W3 -Fe$@ $** kernel32.lib user32.lib
385
386 #------------------------------------------------------------------------------
387
388 # LASTFILE Library
389
390 LASTFILE=$(OUTDIR)\lastfile.lib
391 LASTFILE_SRC=$(XEMACS)\src
392 LASTFILE_FLAGS=$(WARN_CPP_FLAGS) $(OPT) $(INCLUDES) -Fo$@ -c
393 LASTFILE_OBJS= \
394         $(OUTDIR)\lastfile.obj
395
396 $(LASTFILE): $(XEMACS_INCLUDES) $(LASTFILE_OBJS)
397         link.exe -lib -nologo -out:$@ $(LASTFILE_OBJS)
398
399 $(OUTDIR)\lastfile.obj: $(LASTFILE_SRC)\lastfile.c
400          $(CCV) $(LASTFILE_FLAGS) $**
401
402 #------------------------------------------------------------------------------
403
404 !if $(HAVE_X)
405
406 # LWLIB Library
407
408 LWLIB=$(OUTDIR)\lwlib.lib
409 LWLIB_SRC=$(XEMACS)\lwlib
410 LWLIB_FLAGS=$(WARN_CPP_FLAGS) $(OPT) $(INCLUDES) $(DEFINES) \
411  -DNEED_ATHENA -DNEED_LUCID \
412  -D_WINDOWS -DMENUBARS_LUCID -DSCROLLBARS_LUCID -DDIALOGS_ATHENA \
413  -Fo$@ -c
414 LWLIB_OBJS= \
415         $(OUTDIR)\lwlib-config.obj \
416         $(OUTDIR)\lwlib-utils.obj \
417         $(OUTDIR)\lwlib-Xaw.obj \
418         $(OUTDIR)\lwlib-Xlw.obj \
419         $(OUTDIR)\lwlib.obj \
420         $(OUTDIR)\xlwmenu.obj \
421         $(OUTDIR)\xlwscrollbar.obj
422
423 $(LWLIB): $(LWLIB_OBJS)
424         link.exe -lib -nologo $(DEBUG_FLAGS) -out:$@ $(LWLIB_OBJS)
425
426 $(OUTDIR)\lwlib-config.obj:     $(LWLIB_SRC)\lwlib-config.c
427          $(CCV) $(LWLIB_FLAGS) $**
428
429 $(OUTDIR)\lwlib-utils.obj:      $(LWLIB_SRC)\lwlib-utils.c
430          $(CCV) $(LWLIB_FLAGS) $**
431
432 $(OUTDIR)\lwlib-Xaw.obj:        $(LWLIB_SRC)\lwlib-Xaw.c
433          $(CCV) $(LWLIB_FLAGS) $**
434
435 $(OUTDIR)\lwlib-Xlw.obj:        $(LWLIB_SRC)\lwlib-Xlw.c
436          $(CCV) $(LWLIB_FLAGS) $**
437
438 $(OUTDIR)\lwlib.obj:            $(LWLIB_SRC)\lwlib.c
439          $(CCV) $(LWLIB_FLAGS) $**
440
441 $(OUTDIR)\xlwmenu.obj:          $(LWLIB_SRC)\xlwmenu.c
442          $(CCV) $(LWLIB_FLAGS) $**
443
444 $(OUTDIR)\xlwscrollbar.obj:     $(LWLIB_SRC)\xlwscrollbar.c
445          $(CCV) $(LWLIB_FLAGS) $**
446
447 !endif
448 #------------------------------------------------------------------------------
449
450 DOC=$(LIB_SRC)\DOC
451 DOC_SRC1=\
452  $(XEMACS)\src\abbrev.c \
453  $(XEMACS)\src\alloc.c \
454  $(XEMACS)\src\alloca.c \
455  $(XEMACS)\src\blocktype.c \
456  $(XEMACS)\src\buffer.c \
457  $(XEMACS)\src\bytecode.c \
458  $(XEMACS)\src\callint.c \
459  $(XEMACS)\src\callproc.c \
460  $(XEMACS)\src\casefiddle.c \
461  $(XEMACS)\src\casetab.c \
462  $(XEMACS)\src\chartab.c \
463  $(XEMACS)\src\cmdloop.c \
464  $(XEMACS)\src\cmds.c \
465  $(XEMACS)\src\console-stream.c \
466  $(XEMACS)\src\console.c \
467  $(XEMACS)\src\data.c \
468  $(XEMACS)\src\device.c
469 DOC_SRC2=\
470  $(XEMACS)\src\dired.c \
471  $(XEMACS)\src\doc.c \
472  $(XEMACS)\src\doprnt.c \
473  $(XEMACS)\src\dragdrop.c \
474  $(XEMACS)\src\dynarr.c \
475  $(XEMACS)\src\editfns.c \
476  $(XEMACS)\src\elhash.c \
477  $(XEMACS)\src\emacs.c \
478  $(XEMACS)\src\eval.c \
479  $(XEMACS)\src\event-stream.c \
480  $(XEMACS)\src\events.c \
481  $(XEMACS)\src\extents.c \
482  $(XEMACS)\src\faces.c \
483  $(XEMACS)\src\file-coding.c \
484  $(XEMACS)\src\fileio.c \
485  $(XEMACS)\src\filelock.c \
486  $(XEMACS)\src\filemode.c \
487  $(XEMACS)\src\floatfns.c \
488  $(XEMACS)\src\fns.c 
489 DOC_SRC3=\
490  $(XEMACS)\src\font-lock.c \
491  $(XEMACS)\src\frame.c \
492  $(XEMACS)\src\free-hook.c \
493  $(XEMACS)\src\general.c \
494  $(XEMACS)\src\glyphs.c \
495  $(XEMACS)\src\glyphs-eimage.c \
496  $(XEMACS)\src\gmalloc.c \
497  $(XEMACS)\src\gui.c  \
498  $(XEMACS)\src\hash.c \
499  $(XEMACS)\src\imgproc.c \
500  $(XEMACS)\src\indent.c \
501  $(XEMACS)\src\insdel.c \
502  $(XEMACS)\src\intl.c \
503  $(XEMACS)\src\keymap.c \
504  $(XEMACS)\src\line-number.c \
505  $(XEMACS)\src\lread.c \
506  $(XEMACS)\src\lstream.c \
507  $(XEMACS)\src\macros.c \
508  $(XEMACS)\src\marker.c
509 DOC_SRC4=\
510  $(XEMACS)\src\md5.c \
511  $(XEMACS)\src\menubar.c \
512  $(XEMACS)\src\minibuf.c \
513  $(XEMACS)\src\nt.c \
514  $(XEMACS)\src\ntheap.c \
515  $(XEMACS)\src\ntplay.c \
516  $(XEMACS)\src\ntproc.c \
517  $(XEMACS)\src\objects.c \
518  $(XEMACS)\src\opaque.c \
519  $(XEMACS)\src\print.c \
520  $(XEMACS)\src\process.c \
521  $(XEMACS)\src\process-nt.c \
522  $(XEMACS)\src\profile.c \
523  $(XEMACS)\src\pure.c \
524  $(XEMACS)\src\rangetab.c \
525  $(XEMACS)\src\realpath.c \
526  $(XEMACS)\src\redisplay-output.c \
527  $(XEMACS)\src\redisplay.c \
528  $(XEMACS)\src\regex.c \
529  $(XEMACS)\src\scrollbar.c \
530  $(XEMACS)\src\scrollbar-msw.c \
531  $(XEMACS)\src\search.c \
532  $(XEMACS)\src\signal.c \
533  $(XEMACS)\src\sound.c 
534 DOC_SRC5=\
535  $(XEMACS)\src\specifier.c \
536  $(XEMACS)\src\strftime.c \
537  $(XEMACS)\src\symbols.c \
538  $(XEMACS)\src\syntax.c \
539  $(XEMACS)\src\sysdep.c \
540  $(XEMACS)\src\termcap.c  \
541  $(XEMACS)\src\tparam.c \
542  $(XEMACS)\src\undo.c \
543  $(XEMACS)\src\unexnt.c \
544  $(XEMACS)\src\vm-limit.c \
545  $(XEMACS)\src\window.c \
546  $(XEMACS)\src\widget.c
547
548 !if $(HAVE_X)
549 DOC_SRC6=\
550  $(XEMACS)\src\balloon_help.c \
551  $(XEMACS)\src\console-x.c \
552  $(XEMACS)\src\device-x.c  \
553  $(XEMACS)\src\dialog-x.c \
554  $(XEMACS)\src\EmacsFrame.c \
555  $(XEMACS)\src\EmacsManager.c \
556  $(XEMACS)\src\EmacsShell-sub.c\
557  $(XEMACS)\src\EmacsShell.c \
558  $(XEMACS)\src\event-Xt.c  \
559  $(XEMACS)\src\frame-x.c \
560  $(XEMACS)\src\glyphs-x.c \
561  $(XEMACS)\src\gui-x.c \
562  $(XEMACS)\src\menubar.c \
563  $(XEMACS)\src\menubar-x.c \
564  $(XEMACS)\src\objects-x.c \
565  $(XEMACS)\src\redisplay-x.c \
566  $(XEMACS)\src\scrollbar-x.c \
567  $(XEMACS)\src\balloon-x.c \
568  $(XEMACS)\src\xgccache.c \
569  $(XEMACS)\src\xmu.c \
570  $(XEMACS)\src\xselect.c 
571 !endif
572
573 !if $(HAVE_MSW)
574 DOC_SRC7=\
575  $(XEMACS)\src\console-msw.c \
576  $(XEMACS)\src\device-msw.c  \
577  $(XEMACS)\src\event-msw.c  \
578  $(XEMACS)\src\frame-msw.c \
579  $(XEMACS)\src\glyphs-msw.c \
580  $(XEMACS)\src\menubar-msw.c \
581  $(XEMACS)\src\objects-msw.c \
582  $(XEMACS)\src\redisplay-msw.c \
583  $(XEMACS)\src\scrollbar-msw.c \
584  $(XEMACS)\src\select-msw.c \
585  $(MSW_C_DIRED_SRC) \
586  $(MSW_TOOLBAR_SRC) \
587  $(MSW_DIALOG_SRC)
588 !endif
589
590 !if $(HAVE_MULE)
591 DOC_SRC8=\
592  $(XEMACS)\src\input-method-xlib.c \
593  $(XEMACS)\src\mule.c \
594  $(XEMACS)\src\mule-charset.c \
595  $(XEMACS)\src\mule-ccl.c \
596  $(XEMACS)\src\mule-coding.c
597 !endif
598
599 !if $(DEBUG_XEMACS)
600 DOC_SRC9=\
601  $(XEMACS)\src\debug.c
602 !endif
603
604 #------------------------------------------------------------------------------
605
606 # TEMACS Executable
607
608 # This may not exist
609 !if "$(emacs_beta_version)" != ""
610 EMACS_BETA_VERSION=-DEMACS_BETA_VERSION=$(emacs_beta_version)
611 !ENDIF
612
613 TEMACS_DIR=$(XEMACS)\src
614 TEMACS=$(TEMACS_DIR)\temacs.exe
615 TEMACS_BROWSE=$(TEMACS_DIR)\temacs.bsc
616 TEMACS_SRC=$(XEMACS)\src
617 TEMACS_LIBS=$(LASTFILE) $(LWLIB) $(X_LIBS) $(MSW_LIBS) \
618  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib \
619  shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib winmm.lib libc.lib
620 TEMACS_LFLAGS=-nologo $(LIBRARIES) $(DEBUG_FLAGS) -base:0x1000000\
621  -stack:0x800000 -entry:_start -subsystem:console\
622  -pdb:$(TEMACS_DIR)\temacs.pdb -map:$(TEMACS_DIR)\temacs.map \
623  -heap:0x00100000 -out:$@
624 TEMACS_CPP_FLAGS= $(WARN_CPP_FLAGS) $(INCLUDES) $(DEFINES) $(DEBUG_DEFINES) \
625  -DEMACS_MAJOR_VERSION=$(emacs_major_version) \
626  -DEMACS_MINOR_VERSION=$(emacs_minor_version) \
627  $(EMACS_BETA_VERSION) \
628  -DXEMACS_CODENAME=\"$(xemacs_codename)\" \
629  -DEMACS_CONFIGURATION=\"$(EMACS_CONFIGURATION)\" \
630  -DPATH_PACKAGEPATH=\"$(PATH_PACKAGEPATH)\"
631
632 TEMACS_FLAGS=-ML $(WARN_CPP_FALGS) $(OPT) -c $(TEMACS_CPP_FLAGS)
633
634 !if $(HAVE_X)
635 TEMACS_X_OBJS=\
636         $(OUTDIR)\balloon-x.obj \
637         $(OUTDIR)\balloon_help.obj \
638         $(OUTDIR)\console-x.obj \
639         $(OUTDIR)\device-x.obj \
640         $(OUTDIR)\dialog-x.obj \
641         $(OUTDIR)\EmacsFrame.obj \
642         $(OUTDIR)\EmacsManager.obj \
643         $(OUTDIR)\EmacsShell.obj \
644         $(OUTDIR)\TopLevelEmacsShell.obj\
645         $(OUTDIR)\TransientEmacsShell.obj\
646         $(OUTDIR)\event-Xt.obj \
647         $(OUTDIR)\frame-x.obj \
648         $(OUTDIR)\glyphs-x.obj \
649         $(OUTDIR)\gui-x.obj \
650         $(OUTDIR)\menubar-x.obj \
651         $(OUTDIR)\objects-x.obj \
652         $(OUTDIR)\redisplay-x.obj \
653         $(OUTDIR)\scrollbar-x.obj \
654         $(OUTDIR)\xgccache.obj \
655         $(OUTDIR)\xmu.obj \
656         $(OUTDIR)\xselect.obj
657 !endif
658
659 !if $(HAVE_MSW)
660 TEMACS_MSW_OBJS=\
661         $(OUTDIR)\console-msw.obj \
662         $(OUTDIR)\device-msw.obj \
663         $(OUTDIR)\event-msw.obj \
664         $(OUTDIR)\frame-msw.obj \
665         $(OUTDIR)\glyphs-msw.obj \
666         $(OUTDIR)\menubar-msw.obj \
667         $(OUTDIR)\objects-msw.obj \
668         $(OUTDIR)\redisplay-msw.obj \
669         $(OUTDIR)\scrollbar-msw.obj \
670         $(OUTDIR)\select-msw.obj \
671         $(MSW_C_DIRED_OBJ) \
672         $(MSW_TOOLBAR_OBJ) \
673         $(MSW_DIALOG_OBJ)
674 !endif
675
676
677 !if $(HAVE_MULE)
678 TEMACS_MULE_OBJS=\
679         $(OUTDIR)\input-method-xlib.obj \
680         $(OUTDIR)\mule.obj \
681         $(OUTDIR)\mule-charset.obj \
682         $(OUTDIR)\mule-ccl.obj \
683         $(OUTDIR)\mule-coding.obj
684 !endif
685
686 !if $(DEBUG_XEMACS)
687 TEMACS_DEBUG_OBJS=\
688         $(OUTDIR)\debug.obj
689 !endif
690
691 TEMACS_OBJS= \
692         $(TEMACS_X_OBJS)\
693         $(TEMACS_MSW_OBJS)\
694         $(TEMACS_CODING_OBJS)\
695         $(TEMACS_MULE_OBJS)\
696         $(TEMACS_DEBUG_OBJS)\
697         $(OUTDIR)\abbrev.obj \
698         $(OUTDIR)\alloc.obj \
699         $(OUTDIR)\alloca.obj \
700         $(OUTDIR)\blocktype.obj \
701         $(OUTDIR)\buffer.obj \
702         $(OUTDIR)\bytecode.obj \
703         $(OUTDIR)\callint.obj \
704         $(OUTDIR)\callproc.obj \
705         $(OUTDIR)\casefiddle.obj \
706         $(OUTDIR)\casetab.obj \
707         $(OUTDIR)\chartab.obj \
708         $(OUTDIR)\cmdloop.obj \
709         $(OUTDIR)\cmds.obj \
710         $(OUTDIR)\console-stream.obj \
711         $(OUTDIR)\console.obj \
712         $(OUTDIR)\data.obj \
713         $(OUTDIR)\device.obj \
714         $(OUTDIR)\dired.obj \
715         $(OUTDIR)\doc.obj \
716         $(OUTDIR)\doprnt.obj \
717         $(OUTDIR)\dragdrop.obj \
718         $(OUTDIR)\dynarr.obj \
719         $(OUTDIR)\editfns.obj \
720         $(OUTDIR)\elhash.obj \
721         $(OUTDIR)\emacs.obj \
722         $(OUTDIR)\eval.obj \
723         $(OUTDIR)\event-stream.obj \
724         $(OUTDIR)\events.obj \
725         $(OUTDIR)\extents.obj \
726         $(OUTDIR)\faces.obj \
727         $(OUTDIR)\file-coding.obj \
728         $(OUTDIR)\fileio.obj \
729         $(OUTDIR)\filelock.obj \
730         $(OUTDIR)\filemode.obj \
731         $(OUTDIR)\floatfns.obj \
732         $(OUTDIR)\fns.obj \
733         $(OUTDIR)\font-lock.obj \
734         $(OUTDIR)\frame.obj \
735         $(OUTDIR)\free-hook.obj \
736         $(OUTDIR)\general.obj \
737         $(OUTDIR)\glyphs.obj \
738         $(OUTDIR)\glyphs-eimage.obj \
739         $(OUTDIR)\gmalloc.obj \
740         $(OUTDIR)\gui.obj \
741         $(OUTDIR)\hash.obj \
742         $(OUTDIR)\indent.obj \
743         $(OUTDIR)\imgproc.obj \
744         $(OUTDIR)\insdel.obj \
745         $(OUTDIR)\intl.obj \
746         $(OUTDIR)\keymap.obj \
747         $(OUTDIR)\line-number.obj \
748         $(OUTDIR)\lread.obj \
749         $(OUTDIR)\lstream.obj \
750         $(OUTDIR)\macros.obj \
751         $(OUTDIR)\menubar.obj \
752         $(OUTDIR)\marker.obj \
753         $(OUTDIR)\md5.obj \
754         $(OUTDIR)\minibuf.obj \
755         $(OUTDIR)\nt.obj \
756         $(OUTDIR)\ntheap.obj \
757         $(OUTDIR)\ntplay.obj \
758         $(OUTDIR)\ntproc.obj \
759         $(OUTDIR)\objects.obj \
760         $(OUTDIR)\opaque.obj \
761         $(OUTDIR)\print.obj \
762         $(OUTDIR)\process.obj \
763         $(OUTDIR)\process-nt.obj \
764         $(OUTDIR)\profile.obj \
765         $(OUTDIR)\pure.obj \
766         $(OUTDIR)\rangetab.obj \
767         $(OUTDIR)\realpath.obj \
768         $(OUTDIR)\redisplay-output.obj \
769         $(OUTDIR)\redisplay.obj \
770         $(OUTDIR)\regex.obj \
771         $(OUTDIR)\scrollbar.obj \
772         $(OUTDIR)\search.obj \
773         $(OUTDIR)\signal.obj \
774         $(OUTDIR)\sound.obj \
775         $(OUTDIR)\specifier.obj \
776         $(OUTDIR)\strftime.obj \
777         $(OUTDIR)\symbols.obj \
778         $(OUTDIR)\syntax.obj \
779         $(OUTDIR)\sysdep.obj \
780         $(OUTDIR)\tparam.obj \
781         $(OUTDIR)\undo.obj \
782         $(OUTDIR)\unexnt.obj \
783         $(OUTDIR)\vm-limit.obj \
784         $(OUTDIR)\widget.obj \
785         $(OUTDIR)\window.obj \
786         $(NT)\xemacs.res
787
788 # Rules
789
790 .SUFFIXES:
791 .SUFFIXES:      .c
792
793 # nmake rule
794 {$(TEMACS_SRC)}.c{$(OUTDIR)}.obj:
795         $(CCV) $(TEMACS_FLAGS) $< -Fo$@ -Fr$*.sbr
796
797 $(OUTDIR)\TopLevelEmacsShell.obj:       $(TEMACS_SRC)\EmacsShell-sub.c
798         $(CCV) $(TEMACS_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** -Fo$@
799
800 $(OUTDIR)\TransientEmacsShell.obj: $(TEMACS_SRC)\EmacsShell-sub.c
801         $(CCV) $(TEMACS_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** -Fo$@
802
803 $(OUTDIR)\pure.obj: $(TEMACS_SRC)\pure.c $(TEMACS_SRC)\puresize-adjust.h
804
805 #$(TEMACS_SRC)\Emacs.ad.h: $(XEMACS)\etc\Emacs.ad
806 #       !"sed -f ad2c.sed < $(XEMACS)\etc\Emacs.ad > $(TEMACS_SRC)\Emacs.ad.h"
807
808 #$(TEMACS_SRC)\paths.h: $(TEMACS_SRC)\paths.h.in
809 #       !"cd $(TEMACS_SRC); cp paths.h.in paths.h"
810
811 $(TEMACS): $(TEMACS_INCLUDES) $(TEMACS_OBJS)
812         link.exe @<<
813   $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS)
814 <<
815
816 $(NT)\xemacs.res: xemacs.rc
817         rc xemacs.rc
818
819 # MSDEV Source Broswer file. "*.sbr" is too inclusive but this is harmless
820 $(TEMACS_BROWSE): $(TEMACS_OBJS)
821         @dir /b/s $(OUTDIR)\*.sbr > bscmake.tmp
822         bscmake -nologo -o$@ @bscmake.tmp
823         @del bscmake.tmp
824
825 #------------------------------------------------------------------------------
826
827 # LISP bits 'n bobs
828
829 LOADPATH=$(LISP)
830
831 $(DOC): $(LIB_SRC)\make-docfile.exe
832         -del $(DOC)
833         $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\make-docfile.el -- -o $(DOC) -i $(XEMACS)\site-packages
834         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC1)
835         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC2)
836         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC3)
837         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC4)
838         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC5)
839         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC6)
840         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC7)
841         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC8)
842         $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC9)
843
844 $(LISP)\Installation.el: Installation.el
845         copy Installation.el $(LISP)
846
847 update-elc: $(LISP)\Installation.el
848         set EMACSBOOTSTRAPLOADPATH=$(LISP)
849         $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\update-elc.el
850
851 # This rule dumps xemacs and then possibly spawns sub-make if PURESPACE
852 # requirements has changed.
853 dump-xemacs: $(TEMACS)
854         @echo >$(TEMACS_DIR)\SATISFIED
855         cd $(TEMACS_DIR)
856         set EMACSBOOTSTRAPLOADPATH=$(LISP)
857         -1 $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\loadup.el dump
858         @cd $(NT)
859         @if not exist $(TEMACS_DIR)\SATISFIED nmake -nologo -f xemacs.mak $@
860
861 #------------------------------------------------------------------------------
862
863 # use this rule to build the complete system
864 all:    $(OUTDIR)\nul $(LASTFILE) $(LWLIB) $(LIB_SRC_TOOLS) $(RUNEMACS) \
865         $(TEMACS) $(TEMACS_BROWSE) update-elc $(DOC) dump-xemacs
866
867 temacs: $(TEMACS)
868
869 # use this rule to install the system
870 install:        all "$(INSTALL_DIR)\nul" "$(INSTALL_DIR)\lock\nul"
871         @xcopy /q $(LIB_SRC)\*.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\"
872         @copy $(LIB_SRC)\DOC "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\"
873         @copy $(XEMACS)\src\xemacs.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\"
874         @copy $(RUNEMACS) "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\"
875         @xcopy /e /q $(XEMACS)\etc  "$(INSTALL_DIR)\etc\"
876         @xcopy /e /q $(XEMACS)\info "$(INSTALL_DIR)\info\"
877         @xcopy /e /q $(XEMACS)\lisp "$(INSTALL_DIR)\lisp\"
878
879 "$(INSTALL_DIR)\nul":
880         -@mkdir "$(INSTALL_DIR)"
881
882 "$(INSTALL_DIR)\lock\nul":      "$(INSTALL_DIR)\nul"
883         -@mkdir "$(INSTALL_DIR)\lock"
884
885 distclean:
886         del *.bak
887         del *.orig
888         del *.rej
889         del *.pdb
890         del *.tmp
891         cd $(OUTDIR)
892         del *.obj
893         del *.sbr
894         del *.lib
895         cd $(XEMACS)\$(TEMACS_DIR)
896         del puresize-adjust.h
897         del config.h
898         del paths.h
899         del Emacs.ad.h
900         del *.bak
901         del *.orig
902         del *.rej
903         del *.exe
904         del *.map
905         del *.bsc
906         del *.pdb
907         cd $(LIB_SRC)
908         del DOC
909         del *.bak
910         del *.orig
911         del *.rej
912         del *.exe
913         cd $(LISP)
914         -del /s /q *.bak *.elc *.orig *.rej
915
916 depend:
917         mkdepend -f xemacs.mak -p$(OUTDIR)\ -o.obj -w9999 -- $(TEMACS_CPP_FLAGS) --  $(DOC_SRC1) $(DOC_SRC2) $(DOC_SRC3) $(DOC_SRC4) $(DOC_SRC5) $(DOC_SRC6) $(DOC_SRC7) $(DOC_SRC8) $(DOC_SRC9) $(LASTFILE_SRC)\lastfile.c $(LIB_SRC)\make-docfile.c .\runemacs.c
918
919 # DO NOT DELETE THIS LINE -- make depend depends on it.
920