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 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
|
###############################################################################
# #
# Make file for installing Basser Lout #
# #
# Jeffrey H. Kingston #
# #
# make prg2lout Compile a small auxiliary program called prg2lout #
# make lout Compile the Lout source #
# make all Equivalent to "make prg2lout" and "make lout" #
# #
# make install Install the Lout and prg2lout binaries and libraries #
# make installman Install the Lout and prg2lout manual entries #
# make installdoc Install the Lout documentation #
# make allinstall Equivalent to "make install", "make installman", #
# and "make installdoc". #
# #
# 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. #
# #
# 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) If you want to install Lout with debugging on for some reason, for #
# example if a guru has asked you to do this in the course of tracking #
# down some problem with Lout, then set these two macros as follows: #
# #
# DEBUGGING = 1 #
# TRACING = -g #
# #
# Lout will run a bit slower and its binary will be a bit larger if #
# you do this. The normal, non-debugging values are #
# #
# DEBUGGING = 0 #
# TRACING = #
# #
# These should appear like this below. #
# #
# (3) 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. #
# #
# (4) 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 computer programs, so if in doubt, do not #
# change the value of SAFEDFT. #
# #
# (5) Set the following four macros defined below to appropriate values: #
# #
# BINDIR Directory where Lout's binary goes. This directory is #
# assumed to exist. #
# #
# LOUTLIBDIR Directory where Lout's libraries go. This directory will #
# be created and must not exist already (but its parent #
# must exist already). It will be completely removed by #
# an uninstall. In short, it is the library directory for #
# Lout only, not a general library directory. #
# #
# LOUTDOCDIR Directory where the documents describing the Lout system #
# (written in Lout) go. This directory will be created #
# (but its parent must exist already). #
# #
# MANDIR Directory where the lout and prg2lout manual entries #
# (in nroff -man) go. This directory is assumed to exist. #
# #
# They are currently defined using a common stem called $(PREFIX), #
# but you don't have to use $(PREFIX) if you don't want to. #
# #
# (6) 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. #
# #
# (7) 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 executed (although #
# file <locale.h> will be read for collation stuff). #
# #
# 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. #
# #
# (8) Set macro COLLATE to either 0 or 1. If you set it to 1, Lout will #
# use the strcoll() routine by default when sorting alphabetically #
# (e.g. when sorting indexes), otherwise Lout will sort by default #
# based on the ISO codes of the characters. This default setting may #
# be changed during individual runs of Lout by the -l and -L flags. #
# #
# (9) Execute "make prg2lout". This will compile the prg2lout program, #
# leaving its binary in this directory. Other directories unchanged. #
# #
# (10) If you want to be able to produce compressed PDF files, as opposed to #
# uncompressed ones, you need to: #
# #
# (a) obtain the zlib compression library from #
# <http://www.cdrom.com/pub/infozip/zlib/>. #
# #
# (b) decompress the zlib source files using gunzip and/or tar and #
# then build the library by issuing the "make zlib.a" command #
# whilst in the zlib directory. If you want to test the library, #
# you should use the "make test" command (which also builds the #
# library). #
# #
# (c) set the PDF_COMPRESSION variable below to 1 #
# #
# (d) set the ZLIB variable to the path of the libz.a file. For example: #
# ZLIB = /usr/cs3/vtan/lout/lout.3.11/zlib-1.1.1/libz.a #
# #
# (e) set the ZLIBPATH variable to the path of the zlib directory with #
# -I in front. For example: #
# ZLIBPATH = -I/usr/cs3/vtan/lout/lout.3.11/zlib-1.1.1/ #
# #
# If you don't want zlib support or cannot obtain it or cannot use it, #
# leave the PDF_COMPRESSION, ZLIB, and ZLIBPATH variables as they are. #
# #
# (11) Execute "make lout". This will compile the Lout source, leaving the #
# binary in this directory. No changes are made in other directories. #
# #
# (12) 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. #
# #
# (13) Execute "make install". This will do the following things: #
# #
# (a) It will copy the lout and prg2lout binaries into $(BINDIR); #
# #
# (b) It will create $(LOUTLIBDIR) and copy 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 hyphenation (.lh) files mentioned #
# in file $(LOUTLIBDIR)/include/langdefs, check them, and #
# build the packed (.lp) versions; #
# #
# (ii) It will read and check the four standard database (.ld) #
# files in directory $(LOUTLIBDIR)/data, and build the #
# corresponding database index (.li) files. #
# #
# (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. #
# #
# (14) Execute "make installman". This installs the manual entries for lout #
# and prg2lout 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). #
# #
# (15) Execute "make installdoc". This creates directory $(LOUTDOCDIR) and #
# copies the Lout documentation into it. #
# #
# (16) 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 $(LOUTLIBDIR)/locale. #
# #
# (17) Execute "make clean". This cleans up this directory. #
# #
# (18) 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 #
# 251 of file $(LOUTLIBDIR)/include/bsf. 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 $(LOUTLIBDIR)/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. #
# #
# (19) 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 65 of file $(LOUTLIBDIR)/include/dsf: #
# #
# named @PageType { A4 @OrIfPlain Other } #
# #
# This is saying that the page type is to be A4 by default, unless #
# plain text output is in effect (lout -p), in which case the page #
# type is Other, which means that the page dimensions come from the #
# @PageWidth and @PageHeight options. Just change the A4, not the rest. #
# You can find the list of known page types, alternative to A4, in the #
# User's Guide, or at line 738 in $(LOUTLIBDIR)/include/dsf. #
# #
# Mail jeff@it.usyd.edu.au if you have any problems. #
# #
###############################################################################
OSUNIX = 1
OSDOS = 0
OSMAC = 0
DBFIX = 0
USESTAT = 1
SAFEDFT = 0
DEBUGGING = 0
TRACING =
# DEBUGGING = 1
# TRACING = -g
PREFIX = /home/jeff
BINDIR = $(PREFIX)/bin
LOUTLIBDIR = $(PREFIX)/lout.lib
LOUTDOCDIR = $(PREFIX)/lout.doc
MANDIR = $(PREFIX)/lout.man
LIBFONT = font
LIBMAPS = maps
LIBINCL = include
LIBDATA = data
LIBHYPH = hyph
LIBLOCA = locale
CHARIN = 1
CHAROUT = 0
USELOC = 1
LOC_FR = fr
LOC_DE = de
COLLATE = 1
PDF_COMPRESSION = 0
ZLIB =
ZLIBPATH =
CC = gcc
RCOPY = cp -r
COPTS = -ansi -pedantic -Wall -O3
CFLAGS = -DOS_UNIX=$(OSUNIX) \
-DOS_DOS=$(OSDOS) \
-DOS_MAC=$(OSMAC) \
-DDB_FIX=$(DBFIX) \
-DUSE_STAT=$(USESTAT) \
-DSAFE_DFT=$(SAFEDFT) \
-DCOLLATE=$(COLLATE) \
-DLIB_DIR=\"$(LOUTLIBDIR)\" \
-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=$(DEBUGGING) \
$(TRACING) \
-DPDF_COMPRESSION=$(PDF_COMPRESSION) \
$(ZLIBPATH)
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 z48.o \
z49.o z50.o z51.o z52.o
lout: $(OBJS)
$(CC) -o lout $(OBJS) $(ZLIB) -lm
chmod a+x lout
$(OBJS): externs.h
externs.h:
prg2lout: prg2lout.c
$(CC) $(COPTS) -o prg2lout prg2lout.c
chmod a+x prg2lout
all: lout prg2lout
install: lout prg2lout
@echo ""
@echo "(a) Installing lout and prg2lout binaries into BINDIR $(BINDIR)"
cp lout $(BINDIR)/lout
chmod 755 $(BINDIR)/lout
cp prg2lout $(BINDIR)/prg2lout
chmod 755 $(BINDIR)/prg2lout
@echo ""
@echo "(b) Installing library files into LOUTLIBDIR $(LOUTLIBDIR)"
mkdir $(LOUTLIBDIR)
chmod 755 $(LOUTLIBDIR)
@echo ""
mkdir $(LOUTLIBDIR)/$(LIBINCL)
chmod 755 $(LOUTLIBDIR)/$(LIBINCL)
cp include/* $(LOUTLIBDIR)/$(LIBINCL)
chmod 644 $(LOUTLIBDIR)/$(LIBINCL)/*
@echo ""
mkdir $(LOUTLIBDIR)/$(LIBDATA)
chmod 755 $(LOUTLIBDIR)/$(LIBDATA)
cp data/* $(LOUTLIBDIR)/$(LIBDATA)
chmod 644 $(LOUTLIBDIR)/$(LIBDATA)/*
@echo ""
mkdir $(LOUTLIBDIR)/$(LIBHYPH)
chmod 755 $(LOUTLIBDIR)/$(LIBHYPH)
cp hyph/* $(LOUTLIBDIR)/$(LIBHYPH)
chmod 644 $(LOUTLIBDIR)/$(LIBHYPH)/*
@echo ""
mkdir $(LOUTLIBDIR)/$(LIBFONT)
chmod 755 $(LOUTLIBDIR)/$(LIBFONT)
cp font/* $(LOUTLIBDIR)/$(LIBFONT)
chmod 644 $(LOUTLIBDIR)/$(LIBFONT)/*
@echo ""
mkdir $(LOUTLIBDIR)/$(LIBMAPS)
chmod 755 $(LOUTLIBDIR)/$(LIBMAPS)
cp maps/* $(LOUTLIBDIR)/$(LIBMAPS)
chmod 644 $(LOUTLIBDIR)/$(LIBMAPS)/*
@echo ""
mkdir $(LOUTLIBDIR)/$(LIBLOCA)
chmod 755 $(LOUTLIBDIR)/$(LIBLOCA)
@echo ""
@echo "(c) Initializing run (should be silent, no errors expected)"
$(BINDIR)/lout -x -s $(LOUTLIBDIR)/$(LIBINCL)/init
@echo ""
@echo "(d) Changing mode of files just created by initializing run"
chmod 644 $(LOUTLIBDIR)/$(LIBDATA)/*
chmod 644 $(LOUTLIBDIR)/$(LIBHYPH)/*
installman:
@echo ""
@echo "Installing manual entries into MANDIR $(MANDIR)"
sed -e "s@<BINDIR>@$(BINDIR)@" -e "s@<LIBDIR>@$(LOUTLIBDIR)@" \
-e "s@<LOUTDOCDIR>@$(LOUTDOCDIR)@" -e "s@<MANDIR>@$(MANDIR)@" \
man/lout.1 > $(MANDIR)/lout.1
chmod 644 $(MANDIR)/lout.1
cp man/prg2lout.1 $(MANDIR)/prg2lout.1
chmod 644 $(MANDIR)/prg2lout.1
installdoc:
@echo ""
@echo "Creating LOUTDOCDIR $(LOUTDOCDIR) and copying documentation into it"
$(RCOPY) doc/* $(LOUTDOCDIR)
chmod 755 $(LOUTDOCDIR)
chmod 755 $(LOUTDOCDIR)/*
chmod 644 $(LOUTDOCDIR)/*/*
allinstall: install installman installdoc
installfr:
@echo ""
@echo "Putting French error messages into $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)"
mkdir $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)
chmod 755 $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)
mkdir $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES
chmod 755 $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES
cp locale/msgs.fr $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/msgs.$(LOC_FR)
gencat $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/errors.$(LOC_FR) \
$(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/msgs.$(LOC_FR)
chmod 644 $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_FR)/LC_MESSAGES/*
installde:
@echo ""
@echo "Putting German error messages into $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)"
mkdir $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)
chmod 755 $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)
mkdir $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES
chmod 755 $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES
cp locale/msgs.de $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/msgs.$(LOC_DE)
gencat $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/errors.$(LOC_DE) \
$(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/msgs.$(LOC_DE)
chmod 644 $(LOUTLIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/*
uninstall:
-rm -f $(BINDIR)/lout $(BINDIR)/prg2lout
-rm -fr $(LOUTLIBDIR)
-rm -fr $(LOUTDOCDIR)
-rm -f $(MANDIR)/lout.1 $(MANDIR)/prg2lout.1
clean:
-rm -f lout prg2lout *.o
restart: clean uninstall
|