~ubuntu-branches/ubuntu/karmic/fweb/karmic

« back to all changes in this revision

Viewing changes to Web/Makefile

  • Committer: Bazaar Package Importer
  • Author(s): Yann Dirson
  • Date: 2002-01-04 23:20:22 UTC
  • Revision ID: james.westby@ubuntu.com-20020104232022-330ad4iyzpvb5bm4
Tags: upstream-1.62
ImportĀ upstreamĀ versionĀ 1.62

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
# --- FWEB MAKE FILE (v. 1.60) ---
 
3
 
 
4
# Unix users should first type ``./configure'' for compiling a new version.
 
5
# See the more detailed instructions below.
 
6
 
 
7
# PLEASE REPORT ANY DIFFICULTIES WITH USING THIS MAKE FILE OR WITH ANY
 
8
# OTHER ASPECT OF COMPILING OR RUNNING FWEB:  krommes@princeton.edu.
 
9
 
 
10
# You should PREFACE ALL MAJOR OPERATIONS with
 
11
 
 
12
#       make -n ...
 
13
 
 
14
# This tells you what will happen without actually performing the operations.
 
15
 
 
16
 
 
17
# --- PRINCIPAL ENTRY POINTS ---
 
18
 
 
19
# The principal entry points to this make file can be determined by saying
 
20
# ``make help''.  (See the help: target below.)
 
21
 
 
22
 
 
23
# BEFORE USING THIS MAKE FILE: 
 
24
 
 
25
#    (1) If you are a Unix user, do the following:
 
26
 
 
27
#               cd Web
 
28
#               ./configure [--prefix=path] [--exec-prefix=path]
 
29
# (This generates the following files appropriate to your system:
 
30
#       defaults.mk from defaults.mk.in;
 
31
#       config.h from config.h.in;
 
32
#       custom.h from custom.h.in.)
 
33
 
 
34
#               make
 
35
# (log on as root)              
 
36
#               make install
 
37
 
 
38
# If you are not a Unix user, DO NOT PROCEED for v1.50 or above, as the 
 
39
# following system-specific bootstrap procedures have not been tested and 
 
40
# upgraded for this version.
 
41
 
 
42
#    (2) Select a boot subdirectory (containing system-specific files) most
 
43
# relevant to your machine; call that $(BOOT_D).  For example, 
 
44
# BOOT_D = boot/unix/ansi.
 
45
 
 
46
#    (3) Copy $(BOOT_D)/defaults.mk to the web subdirectory.
 
47
 
 
48
#    (4) Verify the system-specific definitions in defaults.mk.  An example
 
49
# of defaults.mk is provided in each bootstrap subdirectory.  The possible
 
50
# things that you may put into defaults.mk are discussed in 
 
51
# $(MANUAL)/INSTALL_FWEB.tex.
 
52
 
 
53
#    (4) Copy $(BOOT_D)/custom.h to the web subdirectory.  This file
 
54
# contains definitions of various machine- or operating-system-dependent
 
55
# flags.  It will be included into the *.c files by the C compiler.
 
56
 
 
57
 
 
58
# --- INCLUDING FILES into the Makefile ---
 
59
 
 
60
# The file defaults.mk customizes the operation of Makefile for your
 
61
# compiler environment.
 
62
# NOTE: Not all makes include files in identical ways; you may need to
 
63
# modify the next line:
 
64
 
 
65
include defaults.mk # Unix
 
66
# ! include "defaults.mk" # Borland/Microsoft
 
67
 
 
68
 
 
69
# --------------------- DON'T TOUCH LINES BELOW HERE!!! --------------------
 
70
 
 
71
# Experts will note that this file sometimes doesn't use the full power of
 
72
# make (let alone gmake). This is because some of the makes on the personal
 
73
# computers didn't work correctly with some of the more sophisticated commands.
 
74
 
 
75
# Here we set up the command-line options for the FWEB processors.  Those
 
76
# options are as follows:
 
77
 
 
78
# COMPILER --- Either CC or GCC.  Presently only GCC is relevant, and then
 
79
#                       only for the Sun.
 
80
# FILE --- Should more properly be called PATH.  The directory
 
81
#                       specification for the output file.
 
82
# HOME_MACHINE --- The machine on which you're tangling.  See custom.web or
 
83
#                       custom.h for a list of the possible macros to use here.
 
84
# MACHINE --- The machine for which you're generating C code.
 
85
 
 
86
# DEBUGGING --- Used by the developer.
 
87
# STAT --- Optional additional commands, e.g., the statistics option -s;
 
88
#               sometimes used by the developer.
 
89
# UNDEF --- Used by the developer.
 
90
#
 
91
# You can override  macros such as MACHINE and FILE from the command line,
 
92
# in the form, e.g.,
 
93
#       make MACHINE=SGI FILE="$HOME/fweb/v1.1/unix/sgi"
 
94
 
 
95
UNDEF =
 
96
DEBUGGING =
 
97
STAT =
 
98
 
 
99
# In $(OPTIONS), 
 
100
# the -u option is used to cancel out a possible +m command in the .fweb
 
101
# ini file. For the use of CUSTOM_OPTIONS, see custom.web. 
 
102
# To kill off line numbers, say ``STAT = -\#'' for many makes, or 
 
103
# ``STAT = -^#'' for the Microsoft nmake.
 
104
 
 
105
OPTIONS = -u$(HOME_MACHINE) -m$(MACHINE) $(DEBUGGING)\
 
106
         $(UNDEF) -m$(COMPILER) $(STAT) -=$(FILE)$(@)
 
107
 
 
108
# Other upper-case macros, such as OS_HWEB, are used to express hidden
 
109
# dependencies because of files that are @i'd or #included.
 
110
 
 
111
# For more discussion of the various files, please see INSTALL_FWEB.tex.
 
112
 
 
113
# Set up the directory macros.  (top_srcdir and srcdir should be set in
 
114
# defaults.mk.  If they are not, one must say `top_srcdir=..', `srcdir=.')
 
115
 
 
116
# --- Top-level--- 
 
117
FWEB0 = $(top_srcdir)
 
118
 
 
119
# --- The bootstrap directory tree ---
 
120
BOOT = $(FWEB0)/Boot
 
121
 
 
122
# --- Where the demo programs are kept ---
 
123
DEMOS = $(FWEB0)/Demos
 
124
 
 
125
# --- Where the user manual and fwebmac.sty are kept ---
 
126
MANUAL = $(FWEB0)/Manual
 
127
 
 
128
# --- Where *.web, *.hweb, *.c, and *.h are kept ---
 
129
WEB = $(srcdir)
 
130
 
 
131
# If you just say ``make'' or ``make bootstrap'', the source files are
 
132
# touched first so they're sure to be newer than the web files.  If you don't
 
133
# have a 'touch' facility, try saying ``make -t ...'' 
 
134
all bootstrap boot: tch_src both $(MANUAL)/fweb.info
 
135
 
 
136
tch_src:
 
137
        $(TOUCH) $(WEB)/typedefs.hweb $(WEB)/*.h $(WEB)/*.c 
 
138
 
 
139
# --- This entry makes both FWEB processors from the FWEB sources. ---
 
140
both: ftangle fweave idxmerge
 
141
 
 
142
# --- The ``make bootstrap'' command assumes that the WEB files are there.
 
143
# However, if you're just compiling you shouldn't need the WEB files.  In the
 
144
# absence of a WEB file, the null .DEFAULT command ``rebuilds'' the WEB file.
 
145
# Then make will try to invoke ftangle.  That shouldn't be there either,
 
146
# but if it is, it will try to tangle a non-existent file.  The .IGNORE
 
147
# command tells make to continue anyway; then it will just compile.  
 
148
# (Unfortunately, these commands don't work with all makes, so they're
 
149
# commented out.)
 
150
#.DEFAULT:
 
151
 
 
152
#.IGNORE:
 
153
 
 
154
# --- Remake things if the make commands themselves change ---
 
155
# .KEEP_STATE:
 
156
 
 
157
# --- CUSTOMIZATION FILE ---
 
158
$(WEB)/custom.h $(WEB)/custom.h.in: $(WEB)/custom.web
 
159
        ./ftangle $(WEB)/custom $(OPTIONS) $(CUSTOM_OPTIONS) -# -v
 
160
 
 
161
# --- EXTRA MACRO FILE ---
 
162
$(WEB)/strmac.h: $(WEB)/strmac.web $(WEB)/os.$(HWEB)
 
163
        ./ftangle $(WEB)/strmac $(OPTIONS)
 
164
 
 
165
# --- #INCLUDEs ---
 
166
INCLUDES_H = $(WEB)/os.h $(WEB)/config.h $(WEB)/custom.h $(WEB)/strmac.h
 
167
 
 
168
D_TYPE_H = $(WEB)/d_type.h $(INCLUDES_H)
 
169
Y_TYPE_H = $(WEB)/y_type.h $(INCLUDES_H)
 
170
C_TYPE_H = $(WEB)/c_type.h $(Y_TYPE_H) $(D_TYPE_H)
 
171
 
 
172
A_TYPE_H = $(WEB)/a_type.h $(INCLUDES_H)
 
173
S_TYPE_H = $(WEB)/s_type.h $(A_TYPE_H)
 
174
 
 
175
M_TYPE_H = $(WEB)/m_type.h $(INCLUDES_H)
 
176
E_TYPE_H = $(WEB)/e_type.h $(C_TYPE_H)
 
177
R_TYPE_H = $(WEB)/r_type.h $(C_TYPE_H)
 
178
T_TYPE_H = $(WEB)/t_type.h\
 
179
                 $(S_TYPE_H) $(R_TYPE_H) $(E_TYPE_H) $(M_TYPE_H)
 
180
 
 
181
P_TYPE_H = $(WEB)/p_type.h $(INCLUDES_H)
 
182
W_TYPE_H = $(WEB)/w_type.h\
 
183
                 $(P_TYPE_H) $(C_TYPE_H) $(S_TYPE_H) $(D_TYPE_H)
 
184
 
 
185
TYPEDEFS_H = $(WEB)/typedefs.h $(WEB)/os.h
 
186
MAP_H = $(WEB)/map.h $(C_TYPE_H) $(S_TYPE_H)
 
187
 
 
188
# --- PORTABILITY ISSUES are mostly localized here. ---
 
189
OS_HWEB = $(WEB)/os.$(HWEB) $(WEB)/sfile.$(HWEB) 
 
190
INCLUDES_HWEB = $(WEB)/sfile.$(HWEB) $(WEB)/includes.$(HWEB)\
 
191
                 $(WEB)/proto.$(HWEB) $(WEB)/time.$(HWEB)
 
192
COMMON_HWEB = $(OS_HWEB) $(WEB)/typedefs.$(HWEB) $(WEB)/mem.$(HWEB)
 
193
 
 
194
$(WEB)/os.h: $(WEB)/os.web $(INCLUDES_HWEB)
 
195
        ./ftangle $(WEB)/os $(OPTIONS) -#
 
196
 
 
197
# --- The fundamental macro packages: ---
 
198
$(WEB)/typedefs.hweb $(WEB)/typedefs.h: $(WEB)/typedefs.web
 
199
        ./ftangle $(WEB)/typedefs $(OPTIONS) --F -# -=$(FILE)typedefs.h
 
200
 
 
201
$(WEB)/map.h: $(WEB)/map.web
 
202
        ./ftangle $(WEB)/map $(OPTIONS)
 
203
 
 
204
# --- COMMON (Routines common to both ftangle and fweave) ---
 
205
COMMON = $(INCLUDES_HWEB) $(OS_HWEB)\
 
206
                $(WEB)/typedefs.$(HWEB)\
 
207
                $(WEB)/mem.$(HWEB) $(WEB)/trunc.$(HWEB) 
 
208
COMMON_WEB = $(WEB)/common.web $(COMMON) 
 
209
 
 
210
$(WEB)/common.c: $(COMMON_WEB)
 
211
        ./ftangle $(WEB)/common $(OPTIONS)
 
212
 
 
213
C_TYPE_WEB = $(WEB)/c_type.web $(OS_HWEB) 
 
214
 
 
215
$(WEB)/c_type.h: $(C_TYPE_WEB)
 
216
        ./ftangle $(WEB)/c_type $(OPTIONS)
 
217
 
 
218
Y_TYPE_WEB = $(WEB)/y_type.web $(OS_HWEB)
 
219
 
 
220
$(WEB)/y_type.h: $(Y_TYPE_WEB)
 
221
        ./ftangle $(WEB)/y_type $(OPTIONS)
 
222
 
 
223
COMMON_C = $(WEB)/common.c $(TYPEDEFS_H) $(MAP_H)
 
224
 
 
225
COMMONS = common.$(O) $(COMMON2)
 
226
 
 
227
commons:  $(COMMONS)
 
228
 
 
229
common.$(O): $(COMMON_C)
 
230
        $(COMPILE) $(PART1) $(WEB)/common.c             
 
231
 
 
232
common2.$(O): $(COMMON_C) 
 
233
        $(COMPILE) $(PART2) $(WEB)/common.c             
 
234
 
 
235
 
 
236
# --- STYLE (Reading the style file; also needed for both ftangle and
 
237
# fweave) --- 
 
238
S_TYPE_WEB = $(WEB)/s_type.web
 
239
 
 
240
$(WEB)/s_type.h: $(S_TYPE_WEB)
 
241
        ./ftangle $(WEB)/s_type $(OPTIONS)
 
242
 
 
243
STYLE =  $(OS_HWEB) $(INCLUDES_HWEB)\
 
244
                 $(WEB)/typedefs.$(HWEB) $(WEB)/mem.$(HWEB)
 
245
STYLE_WEB = $(WEB)/style.web $(STYLE)
 
246
 
 
247
$(WEB)/style.c: $(STYLE_WEB)
 
248
        ./ftangle $(WEB)/style $(OPTIONS)
 
249
 
 
250
style.$(O): $(WEB)/style.c $(TYPEDEFS_H) $(MAP_H)
 
251
        $(COMPILE) $(WEB)/style.c               
 
252
 
 
253
 
 
254
# --- TERMCAP (Dummy termcap routines) ---
 
255
A_TYPE_WEB = $(WEB)/a_type.web $(OS_HWEB)
 
256
 
 
257
$(WEB)/a_type.h: $(A_TYPE_WEB)
 
258
        ./ftangle $(WEB)/a_type $(OPTIONS)
 
259
 
 
260
TERMCAP0_WEB = $(WEB)/termcap0.web 
 
261
 
 
262
$(WEB)/termcap0.c: $(TERMCAP0_WEB)
 
263
        ./ftangle $(WEB)/termcap0 $(OPTIONS)
 
264
 
 
265
termcap0.$(O): $(WEB)/termcap0.c $(A_TYPE_H)
 
266
        $(COMPILE) $(WEB)/termcap0.c
 
267
 
 
268
 
 
269
# --- RESERVED WORDS ---
 
270
D_TYPE_WEB = $(WEB)/d_type.web $(OS_HWEB)
 
271
 
 
272
$(WEB)/d_type.h: $(D_TYPE_WEB)
 
273
        ./ftangle $(WEB)/d_type $(OPTIONS)
 
274
 
 
275
RESERVED_WEB = $(WEB)/reserved.web $(COMMON_HWEB)\
 
276
         $(WEB)/ccodes.$(HWEB) $(WEB)/xrefs.$(HWEB)
 
277
 
 
278
$(WEB)/reserved.c: $(RESERVED_WEB)
 
279
        ./ftangle $(WEB)/reserved $(OPTIONS)
 
280
 
 
281
RESERVED_C = $(WEB)/reserved.c $(TYPEDEFS_H) $(C_TYPE_H)
 
282
 
 
283
RESERVES = reserved.$(O) $(RESERVED2)
 
284
 
 
285
reserves: $(RESERVES)
 
286
 
 
287
reserved.$(O): $(RESERVED_C)
 
288
        $(COMPILE) $(PART1) $(WEB)/reserved.c
 
289
 
 
290
reservd2.$(O): $(RESERVED_C)
 
291
        $(COMPILE) $(PART2) $(WEB)/reserved.c
 
292
 
 
293
 
 
294
# --- MACS (Macro processing for ftangle) ---
 
295
M_TYPE_WEB = $(WEB)/m_type.web $(OS_HWEB)  
 
296
 
 
297
$(WEB)/m_type.h: $(M_TYPE_WEB)
 
298
        ./ftangle $(WEB)/m_type $(OPTIONS)
 
299
 
 
300
MACS = $(COMMON_HWEB) $(WEB)/macs.$(HWEB) $(WEB)/t_codes.$(HWEB)\
 
301
                $(WEB)/texts.$(HWEB) $(WEB)/stacks.$(HWEB)\
 
302
                $(WEB)/val.$(HWEB) $(WEB)/trunc.$(HWEB)
 
303
MACS_WEB = $(WEB)/macs.web $(MACS)  
 
304
 
 
305
$(WEB)/macs.c: $(MACS_WEB)
 
306
        ./ftangle $(WEB)/macs $(OPTIONS)        
 
307
 
 
308
macs.$(O): $(WEB)/macs.c $(T_TYPE_H) $(TYPEDEFS_H) $(MAP_H)
 
309
        $(COMPILE) $(WEB)/macs.c                
 
310
 
 
311
 
 
312
# --- RATFOR (Implementing the Ratfor language for ftangle) ---
 
313
RATFOR = $(COMMON_HWEB) $(WEB)/t_codes.$(HWEB) $(WEB)/texts.$(HWEB)\
 
314
                $(WEB)/stacks.$(HWEB) $(WEB)/val.$(HWEB)\
 
315
                $(WEB)/macs.$(HWEB)\
 
316
                $(WEB)/trunc.$(HWEB)
 
317
RATFOR_WEB = $(WEB)/ratfor.web $(RATFOR)  
 
318
 
 
319
$(WEB)/ratfor.c: $(RATFOR_WEB)
 
320
        ./ftangle $(WEB)/ratfor $(OPTIONS)
 
321
 
 
322
R_TYPE_WEB = $(WEB)/r_type.web $(OS_HWEB)  
 
323
 
 
324
$(WEB)/r_type.h: $(R_TYPE_WEB)
 
325
        ./ftangle $(WEB)/r_type $(OPTIONS)
 
326
 
 
327
RATFOR_C = $(WEB)/ratfor.c $(T_TYPE_H) $(TYPEDEFS_H) $(MAP_H)
 
328
 
 
329
RATFORS = ratfor$(LOAD_RATFOR).$(O) $(RATFOR2)
 
330
 
 
331
ratfors:  $(RATFORS)
 
332
 
 
333
ratfor.$(O): $(RATFOR_C)
 
334
        $(COMPILE) $(PART1) $(WEB)/ratfor.c             
 
335
 
 
336
ratfor2.$(O): $(RATFOR_C)
 
337
        $(COMPILE) $(PART2) $(WEB)/ratfor.c             
 
338
 
 
339
RATFOR0_WEB = $(WEB)/ratfor0.web $(RATFOR)
 
340
 
 
341
$(WEB)/ratfor0.c: $(RATFOR0_WEB)
 
342
        ./ftangle $(WEB)/ratfor0 $(OPTIONS)
 
343
 
 
344
ratfor0.$(O): $(WEB)/ratfor0.c $(T_TYPE_H)
 
345
        $(COMPILE) $(WEB)/ratfor0.c
 
346
 
 
347
 
 
348
# --- EVAL (Expression evaluation) ---
 
349
EVAL = $(COMMON_HWEB) $(WEB)/val.$(HWEB) $(WEB)/os.$(HWEB)\
 
350
                $(WEB)/t_codes.$(HWEB)
 
351
EVAL_WEB = $(WEB)/eval.web $(EVAL)  
 
352
 
 
353
$(WEB)/eval.c: $(EVAL_WEB)
 
354
        ./ftangle $(WEB)/eval $(OPTIONS)        
 
355
 
 
356
E_TYPE_WEB = $(WEB)/e_type.web $(OS_HWEB) 
 
357
 
 
358
$(WEB)/e_type.h: $(E_TYPE_WEB)
 
359
        ./ftangle $(WEB)/e_type $(OPTIONS)
 
360
 
 
361
eval.$(O): $(WEB)/eval.c $(E_TYPE_H) $(TYPEDEFS_H)
 
362
        $(COMPILE) $(WEB)/eval.c                
 
363
 
 
364
 
 
365
# --- FTANGLE (The ftangle processor) ---
 
366
FTANGLE = $(COMMON_HWEB) $(WEB)/macs.$(HWEB) $(WEB)/t_codes.$(HWEB)\
 
367
                $(WEB)/texts.$(HWEB) $(WEB)/stacks.$(HWEB)\
 
368
                $(WEB)/val.$(HWEB) $(WEB)/trunc.$(HWEB)
 
369
FTANGLE_WEB = $(WEB)/ftangle.web $(FTANGLE)  
 
370
 
 
371
$(WEB)/ftangle.c: $(FTANGLE_WEB)
 
372
        ./ftangle $(WEB)/ftangle $(OPTIONS)
 
373
 
 
374
T_TYPE_WEB = $(WEB)/t_type.web $(OS_HWEB) 
 
375
 
 
376
$(WEB)/t_type.h: $(T_TYPE_WEB)
 
377
        ./ftangle $(WEB)/t_type $(OPTIONS)
 
378
 
 
379
FTANGLE_C = $(WEB)/ftangle.c $(T_TYPE_H) $(TYPEDEFS_H) $(MAP_H)
 
380
 
 
381
FTANGLES = ftangle.$(O) $(FTANGLE2) $(FTANGLE3)
 
382
 
 
383
ftangles: $(FTANGLES)
 
384
 
 
385
ftangle.$(O): $(FTANGLE_C)
 
386
        $(COMPILE) $(PART1) $(WEB)/ftangle.c    
 
387
 
 
388
ftangle2.$(O): $(FTANGLE_C)
 
389
        $(COMPILE) $(PART2) $(WEB)/ftangle.c    
 
390
 
 
391
ftangle3.$(O): $(FTANGLE_C)
 
392
        $(COMPILE) $(PART3) $(WEB)/ftangle.c
 
393
 
 
394
# In the following, ftangle0 is used when making with LOAD_RATFOR=0.
 
395
ftangle ftangle0 ftangle.exe: $(FTANGLES)\
 
396
                $(COMMONS) $(RATFORS) $(RESERVES) \
 
397
                eval.$(O) macs.$(O) style.$(O) $(TERMCAP0)
 
398
        $(LINK) ftangle$(OBJ) $(FTANGLE2) $(FTANGLE3)\
 
399
                common$(OBJ) $(COMMON2)\
 
400
                reserved$(OBJ) $(RESERVED2)\
 
401
                ratfor$(LOAD_RATFOR)$(OBJ) $(RATFOR2)\
 
402
                eval$(OBJ) macs$(OBJ) style$(OBJ) $(TERMCAP0)\
 
403
                $(LIBS)
 
404
 
 
405
# --- PROD (The ``productions'' for fweave) ---
 
406
P_TYPE_WEB = $(WEB)/p_type.web $(OS_HWEB)  
 
407
 
 
408
$(WEB)/p_type.h: $(P_TYPE_WEB)
 
409
        ./ftangle $(WEB)/p_type $(OPTIONS)
 
410
 
 
411
PROD = $(COMMON_HWEB) $(WEB)/xrefs.$(HWEB) $(WEB)/tokens.$(HWEB)\
 
412
                $(WEB)/ccodes.$(HWEB) $(WEB)/output.$(HWEB)\
 
413
                $(WEB)/scraps.$(HWEB)
 
414
 
 
415
PROD_WEB = $(WEB)/prod.web $(PROD)  
 
416
 
 
417
$(WEB)/prod.c: $(PROD_WEB)
 
418
        ./ftangle $(WEB)/prod $(OPTIONS)        
 
419
 
 
420
PROD_C = $(WEB)/prod.c $(P_TYPE_H) $(TYPEDEFS_H) $(MAP_H)
 
421
 
 
422
PRODS = prod.$(O) $(PROD2)
 
423
 
 
424
prods:  $(PRODS)
 
425
 
 
426
prod.$(O): $(PROD_C)
 
427
        $(COMPILE) $(PART1) $(WEB)/prod.c               
 
428
 
 
429
prod2.$(O): $(PROD_C)
 
430
        $(COMPILE) $(PART2) $(WEB)/prod.c               
 
431
 
 
432
 
 
433
# --- FWEAVE (The fweave processor) ---
 
434
W_TYPE_WEB = $(WEB)/w_type.web $(OS_HWEB)  
 
435
 
 
436
$(WEB)/w_type.h: $(W_TYPE_WEB)
 
437
        ./ftangle $(WEB)/w_type $(OPTIONS)
 
438
 
 
439
FWEAVE = $(COMMON_HWEB) $(WEB)/xrefs.$(HWEB) $(WEB)/tokens.$(HWEB)\
 
440
                $(WEB)/ccodes.$(HWEB) $(WEB)/output.$(HWEB)\
 
441
                $(WEB)/scraps.$(HWEB)
 
442
 
 
443
FWEAVE_WEB = $(WEB)/fweave.web $(FWEAVE)  
 
444
 
 
445
$(WEB)/fweave.c: $(FWEAVE_WEB)
 
446
        ./ftangle $(WEB)/fweave $(OPTIONS)
 
447
 
 
448
FWEAVE_C = $(WEB)/fweave.c $(W_TYPE_H) $(TYPEDEFS_H) $(MAP_H)
 
449
 
 
450
FWEAVES = fweave.$(O) $(FWEAVE2) $(FWEAVE3)
 
451
 
 
452
fweaves: $(FWEAVES)
 
453
 
 
454
fweave.$(O): $(FWEAVE_C)
 
455
        $(COMPILE) $(PART1) $(WEB)/fweave.c             
 
456
 
 
457
fweave2.$(O): $(FWEAVE_C)
 
458
        $(COMPILE) $(PART2) $(WEB)/fweave.c             
 
459
 
 
460
fweave3.$(O): $(FWEAVE_C)
 
461
        $(COMPILE) $(PART3) $(WEB)/fweave.c
 
462
 
 
463
fweave fweave.exe: $(FWEAVES)\
 
464
                $(COMMONS) $(PRODS) ratfor0.$(O) $(RESERVES) style.$(O)\
 
465
                $(TERMCAP0)     
 
466
        $(LINK) fweave$(OBJ) $(FWEAVE2) $(FWEAVE3)\
 
467
                common$(OBJ) $(COMMON2)\
 
468
                prod$(OBJ) $(PROD2)\
 
469
                reserved$(OBJ) $(RESERVED2)\
 
470
                style$(OBJ) ratfor0$(OBJ) $(TERMCAP0)\
 
471
                $(LIBS)
 
472
 
 
473
# --- IDXMERGE (utility for merging several indexes) ---
 
474
$(WEB)/idxmerge.c: $(WEB)/idxmerge.web
 
475
        ./ftangle $(WEB)/idxmerge $(OPTIONS)
 
476
 
 
477
idxmerge.$(O): $(WEB)/idxmerge.c
 
478
        $(COMPILE) $(WEB)/idxmerge.c
 
479
 
 
480
idxmerge idxmerge.exe: idxmerge.$(O)
 
481
        $(LINK) idxmerge$(OBJ)
 
482
 
 
483
#------------------------------------------------------------------------------
 
484
 
 
485
# --- DOCUMENTATION ---
 
486
FWEB_TEX = $(FWEB0)fweb.tex # This file is included for all documentation.
 
487
 
 
488
# --- We can handle all the dvi files with a generalized suffix rule. ---
 
489
 
 
490
# If your make (e.g., Borland) doesn't like the following line, try just
 
491
# commenting it out. 
 
492
.SUFFIXES: .tex .dvi 
 
493
 
 
494
.tex.dvi: 
 
495
        latex $*                        
 
496
        $(PRINT_DVI) $(@)
 
497
 
 
498
# In the following, note the occasional use of the -i command-line option
 
499
# to fweave. This prevents repeated printing of the header files that are
 
500
# included via @I.
 
501
 
 
502
fwebmac.tex: $(MANUAL)/fwebmac.web
 
503
        ./fweave $(MANUAL)/fwebmac
 
504
 
 
505
custom.tex: $(WEB)/custom.web $(WEB)/formats.$(HWEB)
 
506
        ./fweave $(WEB)/custom
 
507
 
 
508
strmac.tex: $(WEB)/strmac.web $(OS_HWEB) $(WEB)/formats.$(HWEB)
 
509
        ./fweave $(WEB)/strmac -i
 
510
 
 
511
y_type.tex: $(Y_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
512
        ./fweave $(WEB)/y_type -i
 
513
 
 
514
c_type.tex: $(C_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
515
        ./fweave $(WEB)/c_type -i       
 
516
 
 
517
common.tex: $(COMMON_WEB)
 
518
        ./fweave $(WEB)/common
 
519
 
 
520
e_type.tex: $(E_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
521
        ./fweave $(WEB)/e_type -i       
 
522
 
 
523
eval.tex: $(EVAL_WEB)
 
524
        ./fweave $(WEB)/eval -i         
 
525
 
 
526
m_type.tex: $(M_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
527
        ./fweave $(WEB)/m_type -i       
 
528
 
 
529
macs.tex: $(MACS_WEB)
 
530
        ./fweave $(WEB)/macs -i         
 
531
 
 
532
p_type.tex: $(P_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
533
        ./fweave $(WEB)/p_type -i       
 
534
 
 
535
prod.tex: $(PROD_WEB)
 
536
        ./fweave $(WEB)/prod -i         
 
537
 
 
538
r_type.tex: $(R_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
539
        ./fweave $(WEB)/r_type -i       
 
540
 
 
541
ratfor.tex: $(RATFOR_WEB)
 
542
        ./fweave $(WEB)/ratfor -i       
 
543
 
 
544
ratfor0.tex: $(RATFOR0_WEB)
 
545
        ./fweave $(WEB)/ratfor0 -i
 
546
 
 
547
d_type.tex: $(D_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
548
        ./fweave $(WEB)/d_type -i
 
549
 
 
550
reserved.tex: $(RESERVED_WEB)
 
551
        ./fweave $(WEB)/reserved -i -ykw750
 
552
 
 
553
t_type.tex: $(T_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
554
        ./fweave $(WEB)/t_type -i       
 
555
 
 
556
ftangle.tex: $(FTANGLE_WEB)
 
557
        ./fweave $(WEB)/ftangle -i
 
558
 
 
559
s_type.tex: $(S_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
560
        ./fweave $(WEB)/s_type -i       
 
561
 
 
562
style.tex: $(STYLE_WEB)
 
563
        ./fweave $(WEB)/style -i                
 
564
 
 
565
a_type.tex: $(A_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
566
        ./fweave $(WEB)/a_type -i
 
567
 
 
568
termcap0.tex: $(TERMCAP0_WEB)
 
569
        ./fweave $(WEB)/termcap0 -i
 
570
 
 
571
w_type.tex: $(W_TYPE_WEB) $(WEB)/formats.$(HWEB)
 
572
        ./fweave $(WEB)/w_type -i       
 
573
 
 
574
fweave.tex: $(FWEAVE_WEB)
 
575
        ./fweave $(WEB)/fweave -i
 
576
 
 
577
#------------------------------------------------------------------------------
 
578
 
 
579
# --- INSTALLATION of the processors ---
 
580
 
 
581
install: both idxmerge $(MANUAL)/fweb.info
 
582
        @echo ""
 
583
        @echo "If any changes need to be made to the default directories,"
 
584
        @echo "please use --prefix and/or --exec-prefix options to configure,"
 
585
        @echo " or edit ./defaults.mk.in, then rerun ./configure."
 
586
        @echo ""
 
587
        $(INSTALL_PROGRAM) ftangle $(bindir)/ftangle
 
588
        $(INSTALL_PROGRAM) fweave $(bindir)/fweave
 
589
        $(INSTALL_PROGRAM) idxmerge $(bindir)/idxmerge
 
590
        test -d $(texdir) || mkdir -p $(texdir)
 
591
        $(INSTALL_DATA) $(MANUAL)/fwebmac.sty $(texdir)/fwebmac.sty
 
592
        $(INSTALL_DATA) $(MANUAL)/fweb.tex $(texdir)/fweb.tex
 
593
        $(INSTALL_DATA) $(MANUAL)/fweb.1 $(mandir)/fweb.$(manext)
 
594
        $(INSTALL_DATA) $(MANUAL)/fweb.info $(infodir)/fweb.info
 
595
        $(INSTALL_DATA) $(MANUAL)/fweb.info-1 $(infodir)/fweb.info-1
 
596
        $(INSTALL_DATA) $(MANUAL)/fweb.info-2 $(infodir)/fweb.info-2
 
597
        $(INSTALL_DATA) $(MANUAL)/fweb.info-3 $(infodir)/fweb.info-3
 
598
        $(INSTALL_DATA) $(MANUAL)/fweb.info-4 $(infodir)/fweb.info-4
 
599
        $(INSTALL_DATA) $(MANUAL)/fweb.info-5 $(infodir)/fweb.info-5
 
600
        $(INSTALL_DATA) $(MANUAL)/fweb.info-6 $(infodir)/fweb.info-6
 
601
        $(INSTALL_DATA) $(MANUAL)/fweb.info-7 $(infodir)/fweb.info-7
 
602
        $(INSTALL_DATA) $(MANUAL)/fweb.info-8 $(infodir)/fweb.info-8
 
603
        $(INSTALL_DATA) $(MANUAL)/fweb.info-9 $(infodir)/fweb.info-9
 
604
        $(INSTALL_DATA) $(MANUAL)/fweb.texi $(texinfodir)/fweb.texi
 
605
        @echo ""
 
606
        @echo "DON'T FORGET TO RECORD THE PRESENCE OF fweb.info BY EDITING $(infodir)/dir."
 
607
 
 
608
uninstall:
 
609
        @echo "Sorry, uninstall is not implemented yet!"
 
610
 
 
611
$(MANUAL)/fweb.info: $(MANUAL)/fweb.texi
 
612
        cd $(MANUAL) && makeinfo --fill-column=70 fweb.texi
 
613
 
 
614
# --- CLEANUP ---
 
615
all_clean very_clean: clean clean_man clean_install
 
616
 
 
617
# --- Clean up the OBJECT FILES ---
 
618
clean:
 
619
        $(RM) -f ftangle fweave *.o core
 
620
 
 
621
mostlyclean: clean
 
622
 
 
623
distclean: clean
 
624
        $(RM) -f defaults.mk config.cache config.log config.status
 
625
 
 
626
realclean: distclean
 
627
 
 
628
 
 
629
# --- HELP ---
 
630
help:
 
631
        @echo "Important targets for this Makefile:"
 
632
        @echo ""
 
633
        @echo " all       --- Touch *.c and *.h, then compile and link"
 
634
        @echo "               ftangle and fweave."
 
635
        @echo " both      --- Tangle, compile, and link ftangle and"
 
636
        @echo "               fweave from the FWEB sources."
 
637
        @echo " clean     --- Removes the FWEB processors and object files."
 
638
        @echo " distclean --- Like clean, but also deletes defaults.mk,"
 
639
        @echo "               config.cache, config.log, and config.status."
 
640
        @echo " ftangle   --- Tangle, compile, and link ftangle."
 
641
        @echo " fweave    --- Tangle, compile, and link fweave."
 
642
        @echo " help      --- Obtain help about this Makefile."
 
643
        @echo " install   --- Install the processors (you must be root)."
 
644
        @echo " *.tex     --- Woven documentation for FWEB source code."
 
645
        @echo " *.dvi     --- Document AND PRINT FWEB source code."
 
646
        @echo "               (To prevent a dvi file from being printed"
 
647
        @echo "               automatically, uncomment the #ECHO = line in"
 
648
        @echo "               defaults.mk.in.)"
 
649
 
 
650