1include /etc/ql.mak
2
3# Makefile for Zip, ZipNote, ZipCloak and ZipSplit
4
5MAKE = make
6SHELL = /bin/sh
7
8#
9BIND = $(CC)
10
11# probably can change this to 'install' if you have it
12INSTALL = cp
13
14# target directories - where to install executables and man pages to
15BINDIR =
16manext=1
17MANDIR =
18ZIPMANUAL = MANUAL
19
20# flags
21#   CFLAGS    flags for C compile
22#   LFLAGS1   flags after output file spec, before obj file list
23#   LFLAGS2   flags after obj file list (libraries, etc)
24CFLAGS = -O -DASMV -DASM_CRC
25LFLAGS1 = -v
26#LFLAGS2 = -lutime
27
28all: zip
29
30# object file lists
31OBJZ = zip.o zipfile.o zipup.o fileio.o util.o globals.o crypt.o qdos.o ttyio.o
32OBJI = deflate.o trees.o qfileio.o crc32.o
33OBJA = config.o crc68.o match.o
34#  crc32.o
35OBJQ = qdos_.o config.o qfileio_.o
36OBJU = zipfile_.o fileio_.o util_.o globals.o $(OBJQ)
37OBJN = zipnote.o  $(OBJU)
38OBJC = zipcloak.o $(OBJU) crc32_.o crypt_.o
39OBJS = zipsplit.o $(OBJU)
40
41
42# suffix rules
43.SUFFIXES:
44.SUFFIXES: _.o .o .c .doc .1
45.c_.o:
46	rm -f $*_.c; ln $< $*_.c
47	$(CC) $(CFLAGS) -DUTIL -c $*_.c
48	rm -f $*_.c
49.c.o:
50	$(CC) $(CFLAGS) -c $<
51
52.1.doc:
53	nroff -man $< | col -b | uniq > $@
54
55# rules for zip, zipnote, zipcloak, zipsplit, and zip.doc.
56$(OBJZ): zip.h ziperr.h tailor.h
57$(OBJI): zip.h ziperr.h tailor.h
58$(OBJN): zip.h ziperr.h tailor.h
59$(OBJS): zip.h ziperr.h tailor.h
60$(OBJC): zip.h ziperr.h tailor.h
61zip.o zipup.o crc32.o crypt.o fileio.o zipfile.o:  crc32.h
62zipcloak.o crc32_.o crypt_.o fileio_.o zipfile_.o:  crc32.h
63zip.o zipup.o crypt.o zipup_.o zipcloak.o crypt_.o:  crypt.h
64
65qfileio.o: qdos/qfileio.c
66	cp qdos/qfileio.c qfileio.c
67	$(CC) $(CFLAGS) -c qfileio.c
68	rm -f qfileio.c
69
70qfileio_.o: qdos/qfileio.c
71	cp qdos/qfileio.c qfileio_.c
72	$(CC) $(CFLAGS) -DUTIL -c qfileio_.c
73	rm -f qfileio_.c
74
75match.o: qdos/match.s
76	cp qdos/match.s ./_match.s
77	$(AS) _match.s -o match.o
78	rm -f _match.s
79
80crc68.o: qdos/crc68.s
81	cp qdos/crc68.s ./crc68.s
82	$(AS) crc68.s -o crc68.o
83	rm -f crc68.s
84
85config.o: qdos/config.s
86	cp qdos/config.s ./config.x
87	$(CC) -c -DZIP config.x -o config.o
88	rm -f config.x
89
90ZIPS = zip$E zipnote$E zipsplit$E zipcloak$E
91
92zip.o zipup.o zipnote.o zipcloak.o zipsplit.o: revision.h
93zips: $(ZIPS)
94zipsman: $(ZIPS) $(ZIPMANUAL)
95
96qdos.o:   qdos/qdos.c
97	cp qdos/qdos.c .
98	$(CC) -c -oqdos.o qdos.c
99	rm -f qdos.c
100
101qdos_.o:  qdos/qdos.c
102	cp qdos/qdos.c ./qdos_.c
103	$(CC) -DUTIL -c -oqdos_.o qdos_.c
104	rm -f qdos_.c
105
106zip$E: $(OBJZ) $(OBJI) $(OBJA)
107	$(BIND) -o zip$E $(LFLAGS1) $(OBJZ) $(OBJI) $(OBJA) $(LFLAGS2)
108zipnote$E: $(OBJN)
109	$(BIND) -o zipnote$E $(LFLAGS1) $(OBJN) $(LFLAGS2)
110zipcloak$E: $(OBJC)
111	$(BIND) -o zipcloak$E $(LFLAGS1) $(OBJC) $(LFLAGS2)
112zipsplit$E: $(OBJS)
113	$(BIND) -o zipsplit$E $(LFLAGS1) $(OBJS) $(LFLAGS2)
114
115$(ZIPMANUAL): man/zip.1
116	nroff -man man/zip.1 | col -b | uniq > $(ZIPMANUAL)
117
118# install
119install:        $(ZIPS)
120	$(INSTALL) $(ZIPS) $(BINDIR)
121	$(INSTALL) man/zip.1 $(MANDIR)/zip.$(manext)
122
123uninstall:
124	-cd $(BINDIR); rm -f $(ZIPS)
125	-cd $(MANDIR); rm -f zip.$(manext)
126
127flags:  configure
128	sh configure flags
129
130# These symbols, when #defined using -D have these effects on compilation:
131# ZMEM          - includes C language versions of memset(), memcpy(), and
132#                 memcmp() (util.c).
133# SYSV          - use <sys/dirent.h> and the library opendir()
134# DIRENT        - use <sys/dirent.h> and getdents() instead of <sys/dir.h>
135#                 and opendir(), etc. (fileio.c).
136# NODIR         - used for 3B1, which has neither getdents() nor opendir().
137# NDIR          - use "ndir.h" instead of <sys/dir.h> (fileio.c).
138# UTIL          - select routines for utilities (note, cloak, and split).
139# PROTO         - enable function prototypes.
140# RMDIR         - remove directories using a system("rmdir ...") call.
141# CONVEX        - for Convex make target.
142# AIX           - for AIX make target.
143# LINUX         - for linux make target.
144
145# end of Makefile
146