File: makefile

package info (click to toggle)
lout 3.10-1.1
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 7,580 kB
  • ctags: 939
  • sloc: ansic: 20,662; makefile: 234; sh: 59; perl: 28
file content (422 lines) | stat: -rw-r--r-- 22,512 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
###############################################################################
#                                                                             #
#  Make file for installing Basser Lout Version 3.10                          #
#                                                                             #
#  Jeffrey H. Kingston                                                        #
#  30 November 1996                                                           #
#                                                                             #
#     make lout         Compile the Lout source                               #
#     make c2lout       Compile a small auxiliary program called c2lout       #
#     make install      Install the Lout and c2lout binaries and libraries    #
#     make installman   Install the Lout and c2lout manual entries            #
#     make installdoc   Install the Lout documentation                        #
#     make installfr    Install French error messages (optional)              #
#     make installde    Install German error messages (optional)              #
#     make clean        Remove compilation temporaries                        #
#     make uninstall    Undo the effect of make install, installman,          #
#                       installdoc, installfr, and installde                  #
#     make restart      Undo everything except changes to this makefile,      #
#                       ready for a fresh start.                              #
#                                                                             #
#     make setupfiles   Creates setup files by editing include/master and     #
#                       puts them in directory setup.  You should not need    #
#                       to do this because it has already been done.          #
#                                                                             #
#  Most installations of Lout should require only the following steps.  If    #
#  something goes wrong, you can start again with "make restart".  Please     #
#  carry out all the steps, in exactly the order given.  Believe me, it       #
#  will be much faster than doing it any other way.                           #
#                                                                             #
#  (1) Set exactly one of the following macros defined below to 1 and the     #
#      others all to 0, to indicate the operating system under which the      #
#      Lout binary is to run.  At present OSUNIX and OSDOS work but OSMAC     #
#      doesn't work.                                                          #
#                                                                             #
#      OSUNIX    Unix in all its flavours, including Linux.                   #
#      OSDOS     MS-DOS etc. ("rb" and "wb" file access modes where needed)   #
#      OSMAC     Macintosh                                                    #
#                                                                             #
#  (2) Set the USESTAT macro defined below to 1 if the system you are         #
#      compiling onto has the stat() file status system call.  If you are     #
#      unsure, or know it doesn't, set USESTAT to 0.  The stat() call,        #
#      if used, will allow Lout to determine the time of last change          #
#      of database index files and rebuild them automatically if required.    #
#                                                                             #
#  (3) Set the SAFEDFT macro defined below to 1 if you want safe execution    #
#      (i.e. disabling calls to system()) to be the default behaviour.  You   #
#      can always specify safe or unsafe execution by means of the -S and     #
#      -U options to lout when processing a document; SAFEDFT means that      #
#      -S rather than -U is the default behaviour.  Unsafe execution is       #
#      required when formatting C programs and verbatim text, so if in        #
#      doubt, do not change the value of SAFEDFT.                             #
#                                                                             #
#  (4) Set the following four macros defined below to appropriate values:     #
#                                                                             #
#      BINDIR    Directory where Lout's binary goes.  This directory is       #
#                assumed to exist.                                            #
#                                                                             #
#      LIBDIR    Directory where Lout's libraries go.  This directory will    #
#                be created.                                                  #
#                                                                             #
#      DOCDIR    Directory where the documents describing the Lout system     #
#                (written in Lout) go.  This directory will be created.       #
#                                                                             #
#      MANDIR    Directory where the lout and c2lout online manual entries    #
#                (in nroff -man) go.  This directory is assumed to exist.     #
#                                                                             #
#  (5) Set the following two macros defined below to appropriate values.      #
#      I strongly recommend CHARIN=1 and CHAROUT=0 for all sites (English     #
#      and non-English language).  This way we get a truly international      #
#      standard in which everyone has access to accented characters, yet      #
#      Lout's output is in the strict 7-bit ASCII that is recommended in      #
#      the PostScript manual.                                                 #
#                                                                             #
#      CHARIN    This macro determines the assignment of characters in Lout   #
#                source files to character classes by the lexical analyser.   #
#                That is, it determines which characters are letters, which   #
#                is the comment character, etc.  Supported values are:        #
#                                                                             #
#                0  For English language only ASCII installations             #
#                                                                             #
#                1  For installations using the ISO-LATIN-1 character set     #
#                   (adds accented letters to the LETTER character class)     #
#                                                                             #
#                Lout will accept any 8-bit character except '\0'; CHARIN     #
#                does not determine the acceptability of any character, just  #
#                its class.                                                   #
#                                                                             #
#      CHAROUT   This macro determines the format of strings of literal       #
#                characters in the PostScript output.  Currently supported    #
#                values are:                                                  #
#                                                                             #
#                0  Every output character will be printable ASCII            #
#                                                                             #
#                1  Every output character will be printable ISO-LATIN-1      #
#                                                                             #
#                The output will be valid PostScript irrespective of the      #
#                value given to CHAROUT, which may be set independently of    #
#                CHARIN.  It just determines which characters are printed     #
#                as \ddd escape sequences and which are printed as one-byte   #
#                literal characters.                                          #
#                                                                             #
#  (6) Set macro USELOC to one of the following values, NOT TO A LOCALE.      #
#                                                                             #
#      0         Lout's error messages will always appear in English, and no  #
#                source code related to locales will be compiled.             #
#                                                                             #
#      1         Lout's error messages may appear in languages other than     #
#                English, depending on the current locale.  The Lout source   #
#                will be compiled including <locale.h>, <nl_types.h>, and     #
#                calls to setlocale(), catopen(), catgets(), and catclose()   #
#                                                                             #
#      If you choose to set USELOC to 1, you now need to set one or more of   #
#      these macros:                                                          #
#                                                                             #
#      LOC_FR    If you want French language error messages, set this macro   #
#                to your French locale name, i.e. to the value that you       #
#                expect setlocale(LC_MESSAGES, "") to return when you want    #
#                to get French language error messages                        #
#                                                                             #
#      LOC_DE    If you want German language error messages, set this macro   #
#                to your German locale name, i.e. to the value that you       #
#                expect setlocale(LC_MESSAGES, "") to return when you want    #
#                to get German language error messages                        #
#                                                                             #
#      For error messages in other languages, consult ./locale/README.        #
#                                                                             #
#  (7) Execute "make c2lout".  This will compile the c2lout program, leaving  #
#      its binary in this directory.  No changes to other directories.        #
#                                                                             #
#  (8) Execute "make lout".  This will compile the Lout source, leaving the   #
#      binary in this directory.  No changes are made in other directories.   #
#                                                                             #
#  (9) This makefile assumes that Lout is not installed on your system        #
#      already.  If you do have an earlier version of Lout installed,         #
#      the simplest way to get rid of it is to type "make uninstall" now.     #
#      Of course, this is assuming that the old version was installed in the  #
#      same directories as where you are about to install the new version.    #
#                                                                             #
# (10) Execute "make install".  This will do the following things:            #
#                                                                             #
#      (a) It will copy the lout and c2lout binaries into $(BINDIR);          #
#                                                                             #
#      (b) It will create $(LIBDIR) and copy all the library files into it;   #
#                                                                             #
#      (c) It will perform an initializing "lout -x" run.  This run will      #
#          do the following checks and initializations:                       #
#                                                                             #
#          (i)   It will read all the font files mentioned in file            #
#                $(LIBDIR)/include/fontdefs and check that they               #
#                exist and are in the correct format;                         #
#                                                                             #
#          (ii)  It will read all the hyphenation (.lh) files mentioned       #
#                in file $(LIBDIR)/include/langdefs, check them, and build    #
#                the packed (.lp) versions;                                   #
#                                                                             #
#          (iii) It will read and check the three standard database           #
#                (.ld) files in directory $(LIBDIR)/data, and build           #
#                the corresponding database index (.li) files.                #
#                                                                             #
#          Note to OS/2 users: this initializing run may fail with an error   #
#          message pointing to file norweg.lh (the Norwegian language         #
#          hyphenation file).  This problem has probably been fixed, but if   #
#          it does happen, change line 9 of file ./include/langdefs to        #
#                                                                             #
#            langdef Norwegian Norsk { -   . : ! ? .) :) ?) !) .' :' !' ?' }  #
#                                                                             #
#          to dis-inform Lout about this file, then "make uninstall" and      #
#          "make install" again.  Lout will not be able to hyphenate          #
#          Norwegian language words if you have to do this.                   #
#                                                                             #
#      (d) It will change the mode of the files created in (c) to be          #
#          publicly readable, just in case they weren't created that way.     #
#                                                                             #
#      It is good to build the various files during installation because      #
#      later runs will not have write permission in the library directories.  #
#                                                                             #
# (11) Execute "make installman".  This installs the manual entries for       #
#      lout and c2lout into directory $(MANDIR), which is assumed to exist.   #
#      These entries are troff files; plain text versions are also available  #
#      in directory ./man if you need them (install them yourself).           #
#                                                                             #
# (12) Execute "make installdoc".  This creates directory $(DOCDIR) and       #
#      copies the Lout documentation into it.                                 #
#                                                                             #
# (13) If you want French error messages, execute "make installfr" now.       #
#      If you want German error messages, execute "make installde" now.       #
#      These commands compile the error messages files into packed forms      #
#      using the gencat command, and store them in $(LIBDIR)/locale.          #
#                                                                             #
# (14) Execute "make clean".  This cleans up this directory.                  #
#                                                                             #
# (15) If the usual size of a piece of paper at your site is not A4, you      #
#      might like to now change the default value of the @PageType option     #
#      on line 850 of file $(LIBDIR)/include/dl.  You can find the list of    #
#      known page types in the User's Guide, and also at line 1963 in file    #
#      $(LIBDIR)/include/dl.                                                  #
#                                                                             #
# (16) If the usual language at your site is not English, you might like to   #
#      now change the default value of the @InitialLanguage option on line    #
#      832 of file $(LIBDIR)/include/dl.  This will mean that by default the  #
#      date and words like Chapter and July will appear in a different        #
#      language, and hyphenation will be carried out according to patterns    #
#      designed for that language.  You can find the list of known languages  #
#      in the User's Guide, or in file $(LIBDIR)/include/langdefs; if yours   #
#      is not on the list, let me know and we can work together to add it.    #
#      This has nothing to do with locales and USELOC.                        #
#                                                                             #
#  Mail jeff@cs.su.oz.au if you have any problems.                            #
#                                                                             #
###############################################################################

OSUNIX  = 1
OSDOS   = 0
OSMAC   = 0

USESTAT = 1
SAFEDFT = 1

prefix	= /usr
BINDIR	= $(prefix)/bin
LIBDIR	= $(prefix)/lib/lout
DOCDIR	= $(prefix)/doc/lout
MANDIR	= $(prefix)/man/man1

LIBFONT = font
LIBMAPS = maps
LIBINCL = include
LIBDATA = data
LIBHYPH = hyph
LIBLOCA = locale

CHARIN	= 1
CHAROUT	= 0

USELOC	= 1
LOC_FR	= fr
LOC_DE	= de

CC	= gcc -O2

COPTS	= -ansi -pedantic -Wall -g

CFLAGS	= -DOS_UNIX=$(OSUNIX)					\
	  -DOS_DOS=$(OSDOS)					\
	  -DOS_MAC=$(OSMAC)					\
	  -DUSE_STAT=$(USESTAT)					\
	  -DSAFE_DFT=$(SAFEDFT)					\
	  -DLIB_DIR=\"$(LIBDIR)\"				\
	  -DFONT_DIR=\"$(LIBFONT)\"				\
	  -DMAPS_DIR=\"$(LIBMAPS)\"				\
	  -DINCL_DIR=\"$(LIBINCL)\"				\
	  -DDATA_DIR=\"$(LIBDATA)\"				\
	  -DHYPH_DIR=\"$(LIBHYPH)\"				\
	  -DLOCALE_DIR=\"$(LIBLOCA)\"				\
	  -DCHAR_IN=$(CHARIN)					\
	  -DCHAR_OUT=$(CHAROUT)					\
	  -DLOCALE_ON=$(USELOC)					\
	  -DASSERT_ON=1 $(COPTS)				\
	  -DDEBUG_ON=1  -g

OBJS	= z01.o z02.o z03.o z04.o z05.o z06.o z07.o z08.o	\
	  z09.o z10.o z11.o z12.o z13.o z14.o z15.o z16.o	\
	  z17.o z18.o z19.o z20.o z21.o z22.o z23.o z24.o	\
	  z25.o z26.o z27.o z28.o z29.o z30.o z31.o z32.o	\
	  z33.o z34.o z35.o z36.o z37.o z38.o z39.o z40.o	\
	  z41.o z42.o z43.o z44.o z45.o z46.o z47.o

lout:	$(OBJS)
	$(CC) -o lout $(OBJS) -lm
	chmod a+x lout

$(OBJS): externs

externs:

c2lout:	c2lout.c
	$(CC) $(COPTS) -o c2lout c2lout.c
	chmod a+x c2lout

install: lout c2lout
	@echo ""
	@echo "(a) Installing lout and c2lout binaries into BINDIR $(BINDIR)"
	cp lout $(BINDIR)/lout
	chmod 755 $(BINDIR)/lout
	cp c2lout $(BINDIR)/c2lout
	chmod 755 $(BINDIR)/c2lout
	@echo ""
	@echo "(b) Installing library files into LIBDIR $(LIBDIR)"
	mkdir $(LIBDIR)
	chmod 755 $(LIBDIR)
	@echo ""
	mkdir $(LIBDIR)/$(LIBINCL)
	chmod 755 $(LIBDIR)/$(LIBINCL)
	cp include/* $(LIBDIR)/$(LIBINCL)
	cp setup/* $(LIBDIR)/$(LIBINCL)
	chmod 644 $(LIBDIR)/$(LIBINCL)/*
	@echo ""
	mkdir $(LIBDIR)/$(LIBDATA)
	chmod 755 $(LIBDIR)/$(LIBDATA)
	cp data/* $(LIBDIR)/$(LIBDATA)
	chmod 644 $(LIBDIR)/$(LIBDATA)/*
	@echo ""
	mkdir $(LIBDIR)/$(LIBHYPH)
	chmod 755 $(LIBDIR)/$(LIBHYPH)
	cp hyph/* $(LIBDIR)/$(LIBHYPH)
	chmod 644 $(LIBDIR)/$(LIBHYPH)/*
	@echo ""
	mkdir $(LIBDIR)/$(LIBFONT)
	chmod 755 $(LIBDIR)/$(LIBFONT)
	cp font/* $(LIBDIR)/$(LIBFONT)
	chmod 644 $(LIBDIR)/$(LIBFONT)/*
	@echo ""
	mkdir $(LIBDIR)/$(LIBMAPS)
	chmod 755 $(LIBDIR)/$(LIBMAPS)
	cp maps/* $(LIBDIR)/$(LIBMAPS)
	chmod 644 $(LIBDIR)/$(LIBMAPS)/*
	@echo ""
	mkdir $(LIBDIR)/$(LIBLOCA)
	chmod 755 $(LIBDIR)/$(LIBLOCA)
	@echo ""
	@echo "(c) Initializing run (should be silent, no errors expected)"
	$(BINDIR)/lout -x -s \
		-I$(LIBDIR)/$(LIBINCL) -C$(LIBDIR)/$(LIBMAPS) \
		-F$(LIBDIR)/$(LIBFONT) -H$(LIBDIR)/$(LIBHYPH) -D$(LIBDIR)/data \
		$(LIBDIR)/$(LIBINCL)/init
	@echo ""
	@echo "(d) Changing mode of files just created by initializing run"
	chmod 644 $(LIBDIR)/$(LIBDATA)/*
	chmod 644 $(LIBDIR)/$(LIBHYPH)/*

installman:
	@echo ""
	@echo "Installing manual entries into MANDIR $(MANDIR)"
	sed -e "s@<BINDIR>@$(BINDIR)@" -e "s@<LIBDIR>@$(LIBDIR)@"	\
	    -e "s@<DOCDIR>@$(DOCDIR)@" -e "s@<MANDIR>@$(MANDIR)@"	\
	man/lout.1 > $(MANDIR)/lout.1
	chmod 644 $(MANDIR)/lout.1
	cp man/c2lout.1 $(MANDIR)/c2lout.1
	chmod 644 $(MANDIR)/c2lout.1

installdoc:
	@echo ""
	@echo "Creating DOCDIR $(DOCDIR) and copying documentation into it"
	cp -r doc/* $(DOCDIR)
	chmod 755 $(DOCDIR)
	chmod 755 $(DOCDIR)/*
	chmod 644 $(DOCDIR)/*/*

installfr:
	@echo ""
	@echo "Putting French error messages into $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)"
	mkdir $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)
	chmod 755 $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)
	mkdir $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES
	chmod 755 $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES
	cp locale/msgs.fr $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/msgs.$(LOC_FR)
	gencat $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/errors.$(LOC_FR)	\
	       $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/msgs.$(LOC_FR)
	chmod 644 $(LIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/*

installde:
	@echo ""
	@echo "Putting German error messages into $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)"
	mkdir $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)
	chmod 755 $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)
	mkdir $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES
	chmod 755 $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES
	cp locale/msgs.de $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/msgs.$(LOC_DE)
	gencat $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/errors.$(LOC_DE)	\
	       $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/msgs.$(LOC_DE)
	chmod 644 $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/*

uninstall:
	-rm -f  $(BINDIR)/lout $(BINDIR)/c2lout
	-rm -fr $(LIBDIR)
	-rm -fr $(DOCDIR)
	-rm -f  $(MANDIR)/lout.1 $(MANDIR)/c2lout.1

clean:	
	-rm -f lout c2lout *.o

restart:	clean uninstall


setupfiles:
	@echo ""
	@echo "Creating the basic five document types"
	dosetup doc		doc
	dosetup report		report
	dosetup book		book
	dosetup slides		slides
	dosetup picture		picture

	@echo ""
	@echo "The basic five with C program printing"
	dosetup cdoc		doc cprint
	dosetup creport		report cprint
	dosetup cbook		book cprint
	dosetup cslides		slides cprint
	dosetup cpicture	picture cprint

	@echo ""
	@echo "The basic five with Eiffel program printing"
	dosetup edoc		doc eiffelprint
	dosetup ereport		report eiffelprint
	dosetup ebook		book eiffelprint
	dosetup eslides		slides eiffelprint
	dosetup epicture	picture eiffelprint

	@echo ""
	@echo "The basic five with diagram printing"
	dosetup ddoc		doc diag
	dosetup dreport		report diag
	dosetup dbook		book diag
	dosetup dslides		slides diag
	dosetup dpicture	picture diag

	@echo ""
	@echo "Books with Eiffel and C program printing and diagrams"
	dosetup dedoc		doc eiffelprint diag
	dosetup debook		book eiffelprint diag
	dosetup dcbook		book cprint diag