aboutsummaryrefslogtreecommitdiffstats
path: root/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'makefile')
-rw-r--r--makefile425
1 files changed, 425 insertions, 0 deletions
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..4452fbc
--- /dev/null
+++ b/makefile
@@ -0,0 +1,425 @@
+###############################################################################
+# #
+# Make file for installing Basser Lout Version 3.17 #
+# #
+# Jeffrey H. Kingston #
+# 17 September 1999 #
+# #
+# 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. #
+# #
+# 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) This may be the trickiest step of all. On some systems, for example #
+# NT under Visual C++, Lout's use of the system ftell() call causes #
+# a problem. This problem typically manifests itself on the *second* #
+# pass over a large document such as the Lout User's Guide: a message #
+# such as "error in database file" is printed and Lout aborts. The #
+# precise error may vary but should say something about a problem with #
+# a database file. #
+# #
+# If this problem occurs you can probably fix it by changing the value #
+# of DBFIX below to 1. Many thanks to Valeriy E. Ushakov for this fix. #
+# #
+# Systems requiring DBFIX = 0 Systems requiring DBFIX = 1 #
+# ------------------------------------------------------------- #
+# Unix NT/Visual C++ #
+# Cygnus gnuwin32 gcc djgpp #
+# Mingw32 #
+# #
+# (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 C programs and verbatim text, 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. #
+# #
+# LIBDIR Directory where Lout's libraries go. This directory will #
+# be created (but its parent must exist already). #
+# #
+# DOCDIR 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 c2lout online manual entries #
+# (in nroff -man) go. This directory is assumed to exist. #
+# #
+# (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 defaul setting may #
+# be changed during individual runs of Lout by the -l and -L flags. #
+# #
+# (9) Execute "make c2lout". This will compile the c2lout program, leaving #
+# its binary in this directory. No changes to other directories. #
+# #
+# (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 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. #
+# #
+# (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 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). #
+# #
+# (15) Execute "make installdoc". This creates directory $(DOCDIR) 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 $(LIBDIR)/locale. #
+# #
+# (17) Execute "make clean". This cleans up this directory. #
+# #
+# (18) 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 57 of file $(LIBDIR)/include/dsf. You can find the list of #
+# known page types in the User's Guide, and also at line 615 in file #
+# $(LIBDIR)/include/dsf. #
+# #
+# (19) 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 #
+# 255 of file $(LIBDIR)/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 $(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.usyd.edu.au if you have any problems. #
+# #
+###############################################################################
+
+OSUNIX = 1
+OSDOS = 0
+OSMAC = 0
+
+DBFIX = 0
+
+USESTAT = 1
+SAFEDFT = 0
+
+COLLATE = 1
+
+BINDIR = /usr/staff/jeff/bin
+LIBDIR = /usr/staff/jeff/lout.lib
+DOCDIR = /usr/staff/jeff/lout.doc
+MANDIR = /usr/staff/jeff/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
+
+PDF_COMPRESSION = 0
+ZLIB =
+ZLIBPATH =
+
+CC = gcc
+
+RCOPY = cp -r
+
+COPTS = -ansi -pedantic -Wall
+
+CFLAGS = -DOS_UNIX=$(OSUNIX) \
+ -DOS_DOS=$(OSDOS) \
+ -DOS_MAC=$(OSMAC) \
+ -DDB_FIX=$(DBFIX) \
+ -DUSE_STAT=$(USESTAT) \
+ -DSAFE_DFT=$(SAFEDFT) \
+ -DCOLLATE=$(COLLATE) \
+ -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 \
+ -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
+
+lout: $(OBJS)
+ $(CC) -o lout $(OBJS) $(ZLIB) -lm
+ chmod a+x lout
+
+$(OBJS): externs.h
+
+externs.h:
+
+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)
+ 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 $(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"
+ $(RCOPY) 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