1# Makefile for PGP (Unix)
2#
3#
4# This makefile is intended for PGP 2.6.3i. PGP 2.6.3i is based on MIT's
5# PGP 2.6.2, but has been modified so that it:
6#
7#  (1) does not use RSAREF
8#  (2) allows you to disable the "legal kludge"
9#  (3) corrects a number of bugs present in PGP 2.6.2
10#  (4) adds a number of new features without breaking compatibility
11#      with older versions
12#
13# PGP 2.6.3i is probably illegal to use within the USA, so if you're
14# physically inside the US, you should do the following:
15#
16#  (1) Obtain and build a copy of the RSAREF 1.0 library (included with
17#      MIT PGP 2.6 and later)
18#  (2) Add the -DUSA compiler switch to CFLAGS for your system below
19#  (3) Comment out the lines for MPILIB (rsaglue1.o) and uncomment the
20#      lines for RSAREF (rsaglue2.o) below
21#
22# This will give you a version of PGP called 2.6.3, which is identical
23# to 2.6.3i, except that it uses RSAREF and the "legal kludge" cannot
24# be disabled.
25#
26#
27# CFLAGS options:
28#
29# -DUSA       to get a version that is legal to use within the US
30# -DHIGHFIRST if building PGP on a big-endian system
31# -DDEBUG     to include debugging information
32# -DNOTERMIO  if your system has no termios
33# -DSVR2      for System V release 2
34# -DDYN_ALLOC if your compiler does not support large static arrays
35# -DSMALL_MEM if your machine has a small memory (required for MSDOS)
36# -DIDEA32    if your int's are 32 bits this is probably faster
37#
38# -DPORTABLE  and
39# -DMPORTABLE to build the portable version of the RSA primitives
40#             (ie if no optimized asm versions are available)
41#
42# Define one of:
43# -DMERRITT    Merritt's modmult (fast on risc machines)
44# -DPEASANT    Russian peasant modulo multiply algorithm
45# -DUPTON      use Upton's modmult algorithm
46# -DSMITH      use Smith's modmult
47# See also the file platform.h for system defaults
48#
49# If you don't have a working FIONREAD ioctl you must use one of these:
50# -DUSE_SELECT to use select() system call
51# -DUSE_NBIO   to use non-blocking read()
52
53CFLAGS+= -O -DUNIX -DPORTABLE $(BYTEORDER)
54
55# must set byte order for targets "sysv" and "bsd"
56# BYTEORDER= -DHIGHFIRST
57
58CC      ?= cc
59LD      ?= cc            # Link command
60LDFLAGS ?=
61CPP     ?= $(CC) -E
62DBG     = -O
63RM      = rm -f
64
65# uncomment this for old versions of make
66MAKE   = make -j 5
67
68ASM     = $(CC) -c              # Assembler command
69
70OBJS_EXT=                       # ASM obj. files
71LIBS_EXT=                       # Libararies
72
73PROJ    = pgp
74
75default:
76	@echo "To build PGP on your flavour of Unix, type:"
77	@echo "        make <system>"
78	@echo ""
79	@echo "where <system> can be:"
80	@echo "	386bsd, 3b1, 3b1_asm, aix370, aix386, amix-68k-gcc, apollo,"
81	@echo "	apollo-gcc, atari,aux(*), aux-gcc, bsd, bsdgcc, convexos,"
82	@echo "	dgux, djgpp, encore, hpux-68k(*), hpux-68k-ansi,"
83	@echo "	freebsd-{alpha,i386,sparc64,ia64,amd64,powerpc,armv6,armv7,mips,mips64},"
84	@echo "	hpux-68k-gcc, hpux-pa(*), hpux-pa-ansi, hpux-pa-gcc, hpux9-pa-ansi,"
85	@echo "	irix, irix_asm, isc, isc_asm, linux, linux-aout, linux-68k,"
86	@echo "	machten, mach_386, mips-ultrix, netbsd, netbsd_68k, newsasm,"
87	@echo "	newsgcc, next, next-intel, next486, nextHP, os2, osf, qnx4,"
88	@echo "	riscos501, rs6000, rt_aos4, sco-2.0, sco-3.0, sco-3.0-gcc,"
89	@echo "	sco386cc, sgigcc, sgigcc_asm, sinix, solx86gcc, sun386i,"
90	@echo "	sun3asm, sun3cc(*), sun3gcc, sun4cc(*), sun4gcc,"
91	@echo "	sun4sunos5gcc, sun4acc, sun4sunos5acc, sunspc, sysv, sysvgcc,"
92	@echo "	sysv_386, sysv_386_gcc, unixware, vax-ultrix, vax_bsd43,"
93	@echo "	xenix286(*), xenix386"
94	@echo ""
95	@echo "For targets marked with (*) you must first get unproto."
96	@echo "See setup.doc for further details."
97
98all: $(PROJ)
99
100# For a pure MPILIB version, uncomment the following lines
101RSALIBS =
102RSAOBJS = rsaglue1.o
103
104# For an RSAREF version, uncomment the following lines
105#RSADIR = ../rsaref
106#RSALIBDIR = $(RSADIR)/install/unix
107#RSAINCDIR = -I$(RSADIR)/source -I$(RSADIR)/test $(USEMPILIB)
108#RSALIBS = $(RSALIBDIR)/rsaref.a
109#RSAOBJS = rsaglue2.o
110
111# If you want to use MPILIB as a back end to RSAREF, uncomment this line:
112#USEMPILIB = -DUSEMPILIB
113
114# Assembly-language subroutine dependencies
115
116_80386.o:	80386.S
117	$(CPP) $(ASMDEF) 80386.S > _80386.s
118	$(ASM) -o _80386.o _80386.s
119	$(RM) _80386.s
120
1218086.o:	8086.asm
122	cp 8086.asm 8086.s
123	$(ASM) -o 8086.o 8086.s
124	$(RM) 8086.s
125
126_zmatch.o:	zmatch.S
127	$(CPP) $(ASMDEF) zmatch.S > _zmatch.s
128	$(ASM) -o _zmatch.o _zmatch.s
129	$(RM) _zmatch.s
130
131sparc.o:	sparc.S
132	$(CPP) $(ASMDEF) sparc.S | grep -v '^# ' > _sparc.s
133	$(ASM) -o sparc.o _sparc.s
134	$(RM) _sparc.s
135
136mc68020.o:
137	$(ASM) -o mc68020.o mc68020.s
138
139ZIPOBJS= zbits.o zdeflate.o zfile_io.o zglobals.o \
140	zinflate.o zip.o zipup.o ztrees.o zunzip.o
141
142OBJ1 =  pgp.o crypto.o keymgmt.o fileio.o \
143	mdfile.o more.o armor.o mpilib.o mpiio.o \
144	genprime.o rsagen.o random.o idea.o passwd.o \
145	md5.o system.o language.o getopt.o keyadd.o \
146	config.o keymaint.o charset.o \
147	randpool.o noise.o
148
149OBJS =  $(OBJ1) $(ZIPOBJS) $(RSAOBJS) $(OBJS_EXT)
150CFLAGS = $(CFLAGS) -I$(RSAINCDIR)
151
152$(PROJ):	$(OBJS)
153		$(LD) -o $(PROJ) $(OBJS) $(LDFLAGS) $(LIBS_EXT) $(RSALIBS)
154
155#  Commodore Amiga Running SVR4 2.1p2a with GCC 2.6.0 LER
156amix-68k-gcc:
157	$(MAKE) all CC=gcc LD=gcc \
158	CFLAGS="$(RSAINCDIR) -O2 -DHIGHFIRST -DUNIX \
159	-DPORTABLE -DIDEA32"
160
161# Atari-version with gcc 2.5.8
162atari:
163	$(MAKE) all CC=gcc LD=gcc PROJ=pgp.ttp \
164	CFLAGS="$(RSAINCDIR) $(USEMPILIB) -O2 -DATARI -DHIGHFIRST -DPORTABLE \
165	-DUNIT32 -DIDEA32"
166
167linux:
168	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="_80386.o _zmatch.o" \
169	CFLAGS="$(RSAINCDIR) -pipe -O6 -g3 -DUNIX -DLINUX -DIDEA32 -DASM -DSTRONGPRIMES"
170
171linux-aout:
172	$(MAKE) all CC="gcc -b i486-linuxaout" LD="gcc -b i486-linuxaout" OBJS_EXT="_80386.o _zmatch.o" \
173	CFLAGS="$(RSAINCDIR) -pipe -O6 -g3 -DUNIX -DLINUX -DIDEA32 -DASM"
174
175linux-68k:
176	$(MAKE) all CC=gcc LD=gcc \
177	CFLAGS="$(RSAINCDIR) -O2 -DHIGHFIRST -DUNIX -DPORTABLE -DIDEA32"
178
179freebsd-i386:
180	$(MAKE) all LD="$(CC) -s" OBJS_EXT="_80386.o _zmatch.o" \
181	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DUNIX -DIDEA32 -DASM \
182	-DMAX_NAMELEN=255"
183
184freebsd-alpha:
185	$(MAKE) all LD="$(CC) -s" \
186	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
187	-DMAX_NAMELEN=255"
188
189freebsd-sparc64:
190	$(MAKE) all LD="$(CC) -s" \
191	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
192	-DHIGHFIRST -DMERRITT -DMAX_NAMELEN=255"
193
194freebsd-ia64:
195	$(MAKE) all LD="$(CC) -s" \
196	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
197	-DMAX_NAMELEN=255"
198freebsd-amd64:
199	$(MAKE) all LD="$(CC) -s" \
200	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
201	-DMAX_NAMELEN=255"
202freebsd-powerpc:
203	$(MAKE) all LD="$(CC) -s" \
204	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
205	-DMAX_NAMELEN=255"
206freebsd-armv6:
207	$(MAKE) all LD="$(CC) -s" \
208	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
209	-DMAX_NAMELEN=255"
210freebsd-armv7:
211	$(MAKE) all LD="$(CC) -s" \
212	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
213	-DMAX_NAMELEN=255"
214freebsd-mips:
215	$(MAKE) all LD="$(CC) -s" \
216	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
217	-DMAX_NAMELEN=255 -DMPORTABLE"
218freebsd-mips64:
219	$(MAKE) all LD="$(CC) -s" \
220	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
221	-DMAX_NAMELEN=255 -DMPORTABLE"
222freebsd-aarch64:
223	$(MAKE) all LD="$(CC) -s" \
224	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
225	-DMAX_NAMELEN=255"
226freebsd-powerpc64:
227	$(MAKE) all LD="$(CC) -s" \
228	CFLAGS="$(RSAINCDIR) $(OS_CFLAGS) -DPORTABLE -DUNIX -DIDEA32 \
229	-DMAX_NAMELEN=255"
230
231386bsd:
232	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="_80386.o _zmatch.o" \
233	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DASM -DMAX_NAMELEN=255"
234
235netbsd:
236	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="_80386.o _zmatch.o" \
237	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DASM -DMAX_NAMELEN=255"
238
239netbsd_68k:
240	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="mc68020.o" \
241	CFLAGS="$(RSAINCDIR) -O -DUNIX -DHIGHFIRST -DIDEA32 -DMAX_NAMELEN=255"
242
243# Sun 3 with gcc
244# change -traditional-cpp to -traditional for gcc < 2.0
245sun3gcc:
246	$(MAKE) all CC=gcc LD=gcc OBJS_EXT=memmove.o \
247	CFLAGS="$(RSAINCDIR) -O -traditional-cpp -DUNIX -DHIGHFIRST \
248	-DIDEA32 -DPORTABLE"
249
250sun3asm:
251	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="mc68020.o memmove.o" \
252	CFLAGS="$(RSAINCDIR) -O -traditional-cpp -DUNIX -DHIGHFIRST -DIDEA32"
253
254# Sun 3 with standard cc: compile with unproto
255sun3cc: unproto/cpp
256	$(MAKE) all CC=cc LD=cc OBJS_EXT=memmove.o \
257	CFLAGS="$(RSAINCDIR) -Qpath unproto -O -DUNIX -DHIGHFIRST \
258	-DIDEA32 -DPORTABLE"
259
260# Sun 4 SPARC with gcc (tested with gcc 1.39 and newer, sparc.s can not be
261# used with older versions of gcc)
262# change -traditional-cpp to -traditional for gcc < 2.0
263sun4gcc:
264	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="sparc.o memmove.o" \
265	CFLAGS="$(RSAINCDIR) -O -traditional-cpp -DUNIX -DHIGHFIRST -DIDEA32"
266
267# Sun 4 SPARC with standard cc: compile with unproto
268sun4cc: unproto/cpp
269	$(MAKE) all CC=cc LD=cc OBJS_EXT="sparc.o memmove.o"  \
270	CFLAGS="$(RSAINCDIR) -Qpath unproto -Dconst= -O -DUNIX \
271	-DHIGHFIRST -DIDEA32"
272
273# Sun 4 using SunPro C compiler
274sun4acc:
275	$(MAKE) all CC=acc LD=acc CPP="cc -E" OBJS_EXT="sparc.o memmove.o" \
276	CFLAGS="-w $(RSAINCDIR) -xO4 -DUNIX -DHIGHFIRST -DIDEA32" \
277
278# Sun 4 running Sunos5 (Solaris) using gcc
279sun4sunos5gcc:
280	$(MAKE) all CC=gcc LD=gcc OBJS_EXT=sparc.o \
281	CFLAGS="$(RSAINCDIR) -O -traditional-cpp -DSOLARIS -DUNIX -DHIGHFIRST \
282	-DIDEA32" ASMDEF=-DSYSV
283
284# Sun 4 running SunOs 5 (Solaris) using SunPro C compiler
285sun4sunos5acc:
286	$(MAKE) all CC=cc LD=cc \
287	CFLAGS="-w $(RSAINCDIR) -xO2 -DSOLARIS -DUNIX -DHIGHFIRST -DIDEA32 \
288	-DPORTABLE"
289
290sun386i:
291	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="_80386.o memmove.o" \
292	CFLAGS="$(RSAINCDIR) -I. -O -DUNIX -DIDEA32 -DNOTERMIO" \
293	ASMDEF=-DSYSV
294
295sunspc:
296	$(MAKE) all CC="ccspc -B/1.8.6/sun4 -ansi -w -I/usr/include" \
297	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DHIGHFIRST -DUNIT32 \
298	-DMERRITT" OBJS_EXT=sparc.o
299
300# x86 running SunOS 5 (Solaris)...
301solx86gcc:
302	$(MAKE) all CC=gcc LD=gcc \
303	CFLAGS="$(RSAINCDIR) -O -traditional-cpp -DSOLARIS -DUNIX -DIDEA32 \
304        -DPORTABLE"
305
306# Sony newsos v3 for m68k, with gcc
307# change -traditional-cpp to -traditional for gcc < 2.0
308newsgcc:
309	$(MAKE) all CC=gcc LD=gcc \
310	CFLAGS="$(RSAINCDIR) -O -I. -traditional-cpp -DNOTERMIO -D_BSD \
311	-DUNIX -DHIGHFIRST -DIDEA32 -DPORTABLE"
312
313#  with asm
314newsasm:
315	$(MAKE) all CC=gcc LD=gcc OBJS_EXT=mc68020.s CFLAGS="$(RSAINCDIR) -O \
316	-I. -traditional-cpp -DNOTERMIO -D_BSD -DUNIX -DHIGHFIRST -DIDEA32"
317
318qnx4:
319	$(MAKE) all \
320	CFLAGS="$(RSAINCDIR) -3 -O -I. -b -DNO_PARAM_H -DUNIX -DIDEA32 \
321	-DPORTABLE -DMPORTABLE $(BYTEORDER) -DMAX_NAMELEN=255"
322
323encore:
324	$(MAKE) all CC=gcc LD=gcc CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE \
325	-DMPORTABLE -DUSE_NBIO -DIDEA32 -DUPTON -DHIGHFIRST"
326
327sysv:
328	$(MAKE) all CPP=/lib/cpp \
329	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_NBIO $(BYTEORDER)"
330
331sysvgcc:
332	$(MAKE) all CC=gcc LD=gcc CPP=/lib/cpp \
333	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_NBIO $(BYTEORDER)"
334
335# Optimized version with 80386.S
336sysv_386:
337	$(MAKE) all CPP="/lib/cpp -DSYSV" OBJS_EXT="_80386.o _zmatch.o" \
338	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DUSE_NBIO -DASM"
339
340# gcc tested on ESIX 4.0.3a with gcc 2.5.8
341sysv_386_gcc:
342	$(MAKE) all CC=gcc LD=gcc CPP="/lib/cpp -DSYSV" \
343	OBJS_EXT="_80386.o _zmatch.o" \
344	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DUSE_NBIO -DASM"
345
346# Interactive Unix SVR3/386 version 3.2 with gcc
347isc:
348	$(MAKE) all CC=gcc LD=gcc LDFLAGS="-lcposix -lrpc" OBJS_EXT=memmove.o \
349	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DUSE_NBIO -DPORTABLE \
350	-DNO_ITIMER"
351
352isc_asm:
353	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="_80386.o memmove.o" ASMDEF=-DSYSV \
354	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DUSE_NBIO -DNO_ITIMER" \
355	LDFLAGS="-lcposix -lrpc"
356
357mach_386:
358	$(MAKE) all CC=gcc LD=gcc CPP=/lib/cpp OBJS_EXT=_80386.o \
359	CFLAGS="$(RSAINCDIR) -O -I. -DMACH -DUNIX -DIDEA32 -DNOTERMIO"
360
361machten:
362	$(MAKE) all CC=gcc LD=gcc CPP=/lib/cpp OBJS_EXT=mc68020.o \
363	CFLAGS="$(RSAINCDIR) -O -I. -DMACH -DUNIX -DHIGHFIRST \
364	-DIDEA32 -DNOTERMIO"
365
366sco-2.0:
367	$(MAKE) all CC=gcc LD=gcc CPP=/usr/lib/xcpp OBJS_EXT=_80386.o \
368	ASMDEF=-DSYSV CFLAGS="$(RSAINCDIR) -Dsco -O -DUNIX -DIDEA32 -DUSE_NBIO"
369
370sco-3.0:
371	$(MAKE) all CC=cc LD=cc CPP=/lib/cpp OBJS_EXT=_80386.o \
372	ASMDEF=-DSYSV CFLAGS="$(RSAINCDIR) -Dsco -O -DUNIX -DIDEA32 \
373	-DUSE_NBIO" LDFLAGS="-lsocket"
374
375sco-3.0-gcc:
376	$(MAKE) all CC=gcc LD=gcc CPP=/usr/lib/xcpp OBJS_EXT=_80386.o \
377	ASMDEF=-DSYSV CFLAGS="-traditional-cpp $(RSAINCDIR) -Dsco -O \
378	-DUNIX -DIDEA32 -DUSE_NBIO" LIBS_EXT=-lsocket
379
380sco386cc:
381	$(MAKE) all CPP=/usr/lib/xcpp OBJS_EXT=_80386.o ASMDEF=-DSYSV \
382	CFLAGS="$(RSAINCDIR) -Dsco -O -DUNIX -DIDEA32 -DUSE_NBIO -I." \
383	LDFLAGS="-lsocket"
384
385# Siemens RM 400 running Sinix 5.42, using the Siemens compiler
386sinix:
387	$(MAKE) all CPP=/lib/cpp \
388	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_NBIO -DHIGHFIRST"
389
390# Data General Unix using gcc
391dgux:
392	$(MAKE) all CPP=/lib/cpp CC=gcc LD=gcc\
393	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_NBIO  \
394	-DIDEA32 -DHIGHFIRST"
395
396x286:	xenix286
397xenix286:
398	$(MAKE) all CC="sh ccc.x286 -M2l" LD="cc -M2l" ASM="cc -M2l" \
399	OBJS_EXT=8086.o  LDFLAGS="-F 3000" \
400	CFLAGS="$(RSAINCDIR) -LARGE -Ot -DUNIX -DNOPROTO -DSMALL_MEM \
401	-DDYN_ALLOC -DUSE_NBIO -DSVR2"
402
403xenix386:
404	$(MAKE) all CPP=/lib/cpp OBJS_EXT="_80386.o _zmatch.o" \
405	CFLAGS="$(RSAINCDIR) -O -DUNIX -DSVR2 -DIDEA32 -DUSE_NBIO -DASM"
406
4073b1:
408	$(MAKE) all CC=gcc LD=gcc CPP=/usr/lib/cpp \
409	CFLAGS="$(RSAINCDIR) -O -I. -DUNIX -DSVR2 -DPORTABLE -DUSE_NBIO \
410	-DHIGHFIRST -DMAX_NAMELEN=14"
411
4123b1_asm:
413	$(MAKE) all CC=gcc LD=gcc CPP=/usr/lib/cpp OBJS_EXT=3b168010.o \
414	CFLAGS="$(RSAINCDIR) -O -I. -DUNIX -DSVR2 -DUSE_NBIO -DHIGHFIRST \
415	-DMAX_NAMELEN=14"
416
417# Silicon Graphics Iris IRIX
418sgigcc:
419	$(MAKE) all CC=gcc LD=gcc CPP=/usr/lib/cpp \
420	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_NBIO -DHIGHFIRST"
421
422# SGI with assembler modules
423sgigcc_asm:
424	$(MAKE) all CC=gcc LD=gcc CPP=/usr/lib/cpp OBJS_EXT="r3000.o r3kd.o" \
425	CFLAGS="$(RSAINCDIR) -O -DUNIX -DUSE_NBIO -DHIGHFIRST"
426
427irix:
428	$(MAKE) all CC=cc LD=cc \
429	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_NBIO -DHIGHFIRST -acpp"
430
431irix_asm:
432	$(MAKE) all CC=cc LD=cc OBJS_EXT="r3000.o r3kd.o" \
433	CFLAGS="$(RSAINCDIR) -O -g -DUNIX -DUSE_NBIO -DHIGHFIRST -acpp"
434
435# Users of PGP versions < 2.5 will expect a target 'hpux' to build for
436# a snake (HP Series 700 RISC machine).  Don't disappoint them.
437hpux:	hpux-pa-ansi
438
439# HP series 700 pa-risc running HP/UX with HP's ANSI cc
440hpux-pa-ansi:
441	$(MAKE) all CPP=/usr/lib/cpp \
442	CFLAGS="$(RSAINCDIR) -Aa +O3 +Obb5000 -D_HPUX_SOURCE -DHIGHFIRST \
443	-DUNIX -DPORTABLE -DUSE_SELECT -DIDEA32 -DMERRITT"
444
445# HP series 700/800 pa-risc running HP/UX 9.* with cc
446hpux9-pa-ansi:
447	$(MAKE) all CPP=/lib/cpp \
448	CFLAGS="$(RSAINCDIR) -Ae -D_HPUX_SOURCE +O3 +Onolimit -DHIGHFIRST \
449	-DUNIX -DPORTABLE -DUSE_SELECT -DIDEA32 -DMERRITT"
450
451
452# HP series 700 pa-risc running HP/UX with gcc
453hpux-pa-gcc:
454	$(MAKE) all CC=gcc LD=gcc \
455	CFLAGS="$(RSAINCDIR) -O2 -D_HPUX_SOURCE -DHIGHFIRST -DUNIX \
456	-DPORTABLE -DUSE_SELECT -DIDEA32 -DMERRITT"
457
458# HP series 700 pa-risc running HP/UX with HP's standard cc: use unproto
459hpux-pa: unproto/cpp
460	$(MAKE) all \
461	CFLAGS="-tp,./unproto/cpp $(RSAINCDIR) -DHIGHFIRST \
462	-DUNIX -DPORTABLE -DUSE_SELECT -DIDEA32 -DMERRITT"
463
464# HP series 300 mc68k running HP/UX with HP's ANSI cc
465hpux-68k-ansi:
466	$(MAKE) all \
467	CFLAGS="$(RSAINCDIR) -Aa +O2 -D_HPUX_SOURCE -DHIGHFIRST -DUNIX \
468	-DPORTABLE -DUSE_SELECT -DIDEA32"
469
470# HP series 300 mc68k running HP/UX with gcc
471hpux-68k-gcc:
472	$(MAKE) all CC=gcc LD=gcc \
473	CFLAGS="$(RSAINCDIR) -O2 -D_HPUX_SOURCE -DHIGHFIRST -DUNIX \
474	-DPORTABLE -DUSE_SELECT -DIDEA32"
475
476# HP series 300 mc68k running HP/UX with HP's standard cc: use unproto
477hpux-68k: unproto/cpp
478	$(MAKE) all \
479	CFLAGS="-tp,./unproto/cpp $(RSAINCDIR) -DHIGHFIRST \
480	-DUNIX -DPORTABLE -DUSE_SELECT -DIDEA32"
481
482# VAX Ultrix 4.2 BSD rev. 96, system #3 with gcc
483vax-ultrix:
484	$(MAKE) all CC=gcc LD=gcc \
485	CFLAGS="$(RSAINCDIR) -O -DUNIX -DPORTABLE -DUSE_SELECT \
486	-DSIG_IGN=1 -DSIG_DFL=0"
487
488# DEC Ultrix 4.2 BSD with gcc with MIPSco processors
489#
490# To use dec's cc on mips you should
491# uncomment the next two lines because you can't compile r3000.c
492#r3000.o:	r3000.s
493#	$(AS) -o $@ r3000.s
494#
495#mips-ultrix:
496#	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="r3kd.o r3000.o"\
497#	CFLAGS="$(RSAINCDIR) $(DBG) -DUNIX -DUSE_SELECT -DIDEA32"
498
499mips-ultrix:
500	$(MAKE) all CC=gcc LD=gcc \
501	CFLAGS="$(RSAINCDIR) $(DBG) -DUNIX -DPORTABLE \
502	-DMPORTABLE -DUSE_SELECT -DIDEA32"
503
504# Mips R3230 running RISC/os 5.01
505riscos501:
506	$(MAKE) all CC="cc -systype svr4" LD="cc -systype svr4" \
507	CFLAGS="$(RSAINCDIR) -DPORTABLE -DUNIX -DHIGHFIRST -DIDEA32 \
508	-DMPORTABLE -DUSE_SELECT -DMERRITT"
509
510convexos:
511	$(MAKE) all CC=gcc LD=gcc \
512	CFLAGS="$(RSAINCDIR) -O -DHIGHFIRST -DUNIX \
513	-DPORTABLE -DIDEA32"
514
515# RS6000 running AIX
516rs6000:
517	$(MAKE) all CFLAGS="$(RSAINCDIR) -O -DUNIX -DNOTERMIO -DPORTABLE \
518	-DMODERN -DHIGHFIRST -DIDEA32"
519
520# AIX/370
521aix370:
522	$(MAKE) all CPP=/lib/cpp \
523	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DUSE_NBIO -DSYSV -DHIGHFIRST \
524	-DPORTABLE"
525
526# AIX/386 v.1.3
527aix386:
528	$(MAKE) all CPP="/lib/cpp -DSYSV" \
529	CFLAGS="$(RSAINCDIR) -O -DUNIX -DIDEA32 -DUSE_NBIO -DSYSV -DPORTABLE"
530
531next:
532	$(MAKE) all \
533	CFLAGS="$(RSAINCDIR) -O -arch m68k -DNEXT -DUNIX -DHIGHFIRST \
534	-DMACH -DPORTABLE -DNOTERMIO"
535
536next-intel:
537	$(MAKE) all OBJS_EXT=_80386.o \
538	CFLAGS="-O -DNEXT -DUNIX -DMACH -DNOTERMIO"
539
540next486:
541	$(MAKE) all \
542	CFLAGS="$(RSAINCDIR) -O -arch i386 -DNEXT -DUNIX -DMACH -DPORTABLE \
543	-DIDEA32 -DNOTERMIO"
544
545nextHP:
546	$(MAKE) all \
547	CFLAGS="$(RSAINCDIR) -O -arch hppa -DNEXT -DUNIX -DMACH -DPORTABLE \
548	-DNOTERMIO -DHIGHFIRST"
549
550bsdgcc:
551	$(MAKE) all CC=gcc LD=gcc \
552	CFLAGS="$(RSAINCDIR) -O -I. -DNOTERMIO -D_BSD -DUNIX -DPORTABLE \
553	-DUSE_NBIO $(BYTEORDER)"
554
555bsd:
556	$(MAKE) all "LD=cc -s" \
557	CFLAGS="$(RSAINCDIR) -O -I. -B/lib/ -DNOTERMIO -D_BSD -DUNIX \
558	-DPORTABLE -DUSE_NBIO $(BYTEORDER)"
559
560sequent: unproto/cpp
561	$(MAKE) all "LD=cc -s -j" CPP=/usr/lib/cpp \
562	CFLAGS="$(RSAINCDIR) -j -O -I. -Yp,unproto -DUNIX -DNOTERMIO \
563	-DPORTABLE -DUSE_NBIO $(BYTEORDER)"
564
565#  Apollo running DomainOS Release 10.4 (bsd4.3)
566apollo:
567	$(MAKE) all CC=cc LD=cc \
568	CFLAGS="$(RSAINCDIR) -O -I. -DHIGHFIRST -DBSD -DUNIX -DPORTABLE \
569	-DUSE_SELECT"
570
571#  Apollo running DomainOS Release 10.4 (bsd4.3) and gcc 2.6.0
572apollo-gcc:
573	$(MAKE) all CC=gcc LD=gcc \
574	CFLAGS="$(RSAINCDIR) -O -I. -DHIGHFIRST -DBSD -DUNIX -DPORTABLE \
575	-DUSE_SELECT"
576
577# RT running bsd with gcc
578rt_aos4:
579	$(MAKE) all CC=gcc LD=gcc \
580	CFLAGS="$(RSAINCDIR) -O -DUNIX -D_BSD -DMAX_NAMELEN=255 -DPORTABLE \
581	-DHIGHFIRST -DNOTERMIO -I."
582
583# Vax running bsd with gcc
584vax_bsd43:
585	$(MAKE) all CC=gcc LD=gcc \
586	CFLAGS="$(RSAINCDIR) -O -I. -DUNIX -D_BSD -DMAX_NAMELEN=255 \
587	-DNOTERMIO -DPORTABLE"
588
589# The Open Software Foundation's OSF/1
590osf:
591	$(MAKE) all \
592	CFLAGS="$(RSAINCDIR) $(DBG) -I. -D_BSD -DUNIX -DNOTERMIO \
593	-DPORTABLE $(BYTEORDER)"
594
595# A/UX 3.0 using unproto (mine is invoked as a cpp using the CFLAGS shown
596# I placed the cpp in a subdirectory of /src/pgp called unproto
597aux: unproto/cpp
598	$(MAKE) all CC=cc OBJS_EXT=memmove.o \
599	LDFLAGS="-lposix -lbsd" \
600	CFLAGS="$(RSAINCDIR) -B unproto/ -tp -DSVR2 \
601	-DHIGHFIRST -DUNIX -DPORTABLE -DUSE_SELECT -DUPTON"
602aux-gcc:
603	$(MAKE) all CC=gcc LD=gcc OBJS_EXT=memmove.o \
604	LDFLAGS="-lposix -lbsd" \
605	CFLAGS="$(RSAINCDIR) -O2 -DSVR2 -DHIGHFIRST -DUNIX -DPORTABLE \
606	-DUSE_SELECT -DUPTON"
607
608# Novell UnixWare 2.0 with gcc
609unixware:
610	$(MAKE) all CC=gcc LD=gcc LDFLAGS="" \
611	CFLAGS="$(RSAINCDIR) -O2 -m486 -DUNIX -DIDEA32 -DUSE_NBIO -DPORTABLE"
612
613# Optimized version with 80386.S for OS/2 2.x.
614# Requires emx 0.8h (i.e. gcc 2.5.7 or later) and GNU make 3.71 for OS/2
615os2:
616	$(MAKE) all PROJ=pgp.exe RM=del OBJS_EXT="_80386.o _zmatch.o" \
617	CC="gcc -Zomf" CFLAGS="$(RSAINCDIR) -O -DOS2 -DASM -DIDEA32" \
618	ASM="gcc -Zomf -c" LD="gcc -Zomf -Zsys" LDFLAGS="-s pgp.def"
619
620
621# DJGPP, DJ Delorie's port of GNU C to MS-DOS (thanks DJ!).
622# (Tested with DJGPP 2.0 and GNU make.)
623djgpp:
624	$(MAKE) all 'OBJS_EXT=_80386.o _zmatch.o' \
625	CC=gcc 'CFLAGS=$(RSAINCDIR) -O3 -DASM -DIDEA32 -DSTRONGPRIMES' \
626	LD=gcc LIBS_EXT=-lpc RM=del
627	strip pgp
628#	coff2exe pgp
629	copy /b e:\djgpp\bin\cwsdstub.exe + pgp pgp.exe
630	upx --best pgp.exe
631#	djp pgp.exe
632
633#
634# unproto for K&R compilers
635#
636# unproto was posted on comp.sources.misc: v23i012 v23i013
637#
638# unpack the unproto package in subdirectory unproto
639#
640
641# unproto: needs preprocessed input
642unproto/unproto::
643	cd unproto && $(MAKE) PROG=unproto PIPE=
644
645# cpp: pipes through /lib/cpp
646unproto/cpp::
647	cd unproto && $(MAKE)
648
649clean:
650	-$(RM) *~ *.o $(PROJ) core a.out tags *.err
651
652tags:
653	ctags *.c *.h
654
655
656## Dependencies ##
657armor.o : armor.c mpilib.h usuals.h platform.h fileio.h mpiio.h language.h \
658  pgp.h more.h armor.h crypto.h charset.h
659charset.o : charset.c usuals.h language.h charset.h system.h
660config.o : config.c usuals.h fileio.h pgp.h more.h armor.h config.h \
661  charset.h
662crypto.o : crypto.c mpilib.h usuals.h platform.h mpiio.h random.h idea.h \
663  crypto.h keymgmt.h keymaint.h mdfile.h md5.h fileio.h charset.h language.h \
664  pgp.h more.h armor.h exitpgp.h zipup.h rsaglue.h
665fileio.o : fileio.c random.h idea.h usuals.h mpilib.h platform.h mpiio.h \
666  fileio.h language.h pgp.h more.h armor.h exitpgp.h charset.h system.h
667genprime.o : genprime.c mpilib.h usuals.h platform.h genprime.h random.h \
668  idea.h
669getopt.o : getopt.c getopt.h
670idea.o : idea.c idea.h usuals.h
671keyadd.o : keyadd.c mpilib.h usuals.h platform.h crypto.h fileio.h \
672  keymgmt.h charset.h language.h pgp.h more.h armor.h exitpgp.h keyadd.h \
673  keymaint.h
674keymaint.o : keymaint.c mpilib.h usuals.h platform.h random.h idea.h \
675  crypto.h fileio.h keymgmt.h keymaint.h mpiio.h charset.h language.h pgp.h \
676  more.h armor.h
677keymgmt.o : keymgmt.c system.h mpilib.h usuals.h platform.h idea.h random.h \
678  crypto.h fileio.h keymgmt.h rsagen.h mpiio.h language.h pgp.h more.h \
679  armor.h md5.h charset.h keymaint.h
680language.o : language.c usuals.h fileio.h language.h pgp.h more.h armor.h \
681  charset.h
682md5.o : md5.c md5.h
683mdfile.o : mdfile.c mpilib.h usuals.h platform.h mdfile.h md5.h fileio.h \
684  language.h pgp.h more.h armor.h
685more.o : more.c system.h mpilib.h usuals.h platform.h language.h fileio.h \
686  pgp.h more.h armor.h charset.h
687mpiio.o : mpiio.c mpilib.h # usuals.h platform.h mpiio.h pgp.h more.h armor.h
688mpilib.o : mpilib.c mpilib.h # usuals.h platform.h
689passwd.o : passwd.c random.h idea.h usuals.h md5.h language.h pgp.h more.h \
690  armor.h
691pgp.o : pgp.c system.h mpilib.h usuals.h platform.h random.h idea.h crypto.h \
692  fileio.h keymgmt.h language.h pgp.h more.h armor.h exitpgp.h charset.h \
693  getopt.h config.h keymaint.h keyadd.h rsaglue.h
694random.o : random.c system.h random.h idea.h usuals.h language.h
695rsagen.o : rsagen.c mpilib.h usuals.h platform.h genprime.h rsagen.h \
696  random.h idea.h rsaglue.h
697rsaglue.o : rsaglue.c mpilib.h mpiio.h pgp.h rsaglue.h
698system.o : system.c exitpgp.h system.h charset.h mpilib.h
699zbits.o : zbits.c zip.h ztailor.h ziperr.h
700zdeflate.o : zdeflate.c zunzip.h usuals.h system.h zip.h ztailor.h ziperr.h
701zfile_io.o : zfile_io.c zunzip.h usuals.h system.h
702zglobals.o : zglobals.c zip.h ztailor.h ziperr.h
703zinflate.o : zinflate.c zunzip.h usuals.h system.h exitpgp.h
704zip.o : zip.c zip.h usuals.h fileio.h language.h pgp.h more.h armor.h exitpgp.h
705zipup.o : zipup.c zip.h ztailor.h ziperr.h zrevisio.h
706ztrees.o : ztrees.c zip.h ztailor.h ziperr.h
707zunzip.o : zunzip.c zunzip.h usuals.h system.h language.h
708r3000.o : r3000.c mpilib.h usuals.h platform.h lmul.h
709