1# ========================================================================
2# Copyright 2008-2011 Mark Crispin
3# ========================================================================
4#
5# Program:	C client makefile
6#
7# Author:	Mark Crispin
8#		Networks and Distributed Computing
9#		Computing & Communications
10#		University of Washington
11#		Administration Building, AG-44
12#		Seattle, WA  98195
13#		Internet: MRC@CAC.Washington.EDU
14#
15# Date:		11 May 1989
16# Last Edited:	29 August 2011
17#
18# Previous versions of this file were
19#
20# Copyright 1988-2008 University of Washington
21#
22# Licensed under the Apache License, Version 2.0 (the "License");
23# you may not use this file except in compliance with the License.
24# You may obtain a copy of the License at
25#
26#     http://www.apache.org/licenses/LICENSE-2.0
27
28
29# Command line build parameters
30
31EXTRAAUTHENTICATORS=
32EXTRADRIVERS=mbox
33PASSWDTYPE=pam
34SSLTYPE=unix.nopwd
35IP=6
36
37
38# The optimization level here for GCC ports is set here for a reason.  It's
39# to get you to read this text.
40# The general concensus seems to be that -O2 is the one to use.
41# Over the years, I've been told to use many different settings, including -O6.
42# In recent versions of GCC [as of 2/2005], -O6 generates bad code that, among
43# other ill effects, causes infinite loops.
44# -O3 seems to be safe, but empirical observation from our local expert
45# indicates that in some (many?) cases -O3 code runs slower than -O2.
46
47GCCOPTLEVEL= -O2
48
49
50# Try to have some consistency in GCC builds.  We want optimization, but we
51# also want to be able to debug.
52
53GCCCFLAGS= -g $(GCCOPTLEVEL) -pipe -fno-omit-frame-pointer
54GCC4CFLAGS= $(GCCCFLAGS) -Wno-pointer-sign
55
56
57# Extended flags needed for SSL.  You may need to modify.
58
59#SSLDIR=/usr/local/ssl
60SSLCERTS=$(PREFIX)/certs
61SSLKEYS=$(SSLCERTS)
62SSLINCLUDE=$(SSLDIR)/include
63SSLLIB=$(SSLDIR)/lib
64
65SSLCRYPTO=-lcrypto -lcrypt
66
67# Older versions of MIT Kerberos also have a libcrypto.  If so, you may need
68# to use this instead
69#SSLCRYPTO=$(SSLLIB)/libcrypto.a
70
71# RSA Security Inc. released the RSA public key encryption algorithm into
72# the public domain on September 6, 2000.  There is no longer any need to
73# use RSAREF.
74SSLRSA= # -lRSAglue -lrsaref
75
76SSLCFLAGS= -I$(SSLINCLUDE) -I$(SSLINCLUDE)/openssl\
77 -DSSL_CERT_DIRECTORY=\"$(SSLCERTS)\" -DSSL_KEY_DIRECTORY=\"$(SSLKEYS)\"
78SSLLDFLAGS= -L$(SSLLIB) -lssl $(SSLCRYPTO) $(SSLRSA)
79
80
81# Extended flags needed for non-standard passwd types.  You may need to modify.
82
83AFSDIR=/usr/afsws
84AFSCFLAGS=-I$(AFSDIR)/include
85AFSLIB=$(AFSDIR)/lib
86AFSLDFLAGS=-L$(AFSLIB)/afs -L$(AFSLIB) -L$(AFSDIR)/domestic/lib\
87 -lkauth -lprot -lubik -lauth -lrxkad -lrx -llwp -ldes -lcom_err\
88 $(AFSLIB)/afs/util.a -laudit -lsys
89# AFSLDFLAGS may also need -L/usr/ucblib -lucb
90DCECFLAGS= -DDCE_MINIMAL -DPASSWD_OVERRIDE=\"/opt/pop3/passwd/passwd\"
91DCELDFLAGS= -ldce
92PAMLDFLAGS= # -lpam -lcrypt
93
94
95# Build parameters normally set by the individual port
96
97CHECKPW=std
98LOGINPW=std
99SIGTYPE=bsd
100CRXTYPE=std
101ACTIVEFILE=/usr/lib/news/active
102SPOOLDIR=/usr/spool
103MAILSPOOL=$(SPOOLDIR)/mail
104NEWSSPOOL=$(SPOOLDIR)/news
105RSHPATH=/usr/ucb/rsh
106MD5PWD=/etc/cram-md5.pwd
107# Tries one of the test alternatives below if not specified.
108LOCKPGM=
109# Test alternatives if LOCKPGM not specified
110LOCKPGM1=/usr/libexec/mlock
111LOCKPGM2=/usr/sbin/mlock
112LOCKPGM3=/etc/mlock
113
114
115# Default formats for creating new mailboxes and for empty mailboxes in the
116# default namespace; must be set to the associated driver's prototype.
117#
118# The CREATEPROTO is the default format for new mailbox creation.
119# The EMPTYPROTO is the default format for handling zero-byte files.
120#
121# Normally, this is set by the individual port.
122#
123# NOTE: namespace formats (e.g. mh and news) can not be set as a default format
124# since they do not exist in the default namespace.  Also, it is meaningless to
125# set certain other formats (e.g. mbx, mx, and mix) as the EMPTYPROTO since
126# these formats can never be empty files.
127
128CREATEPROTO=unixproto
129EMPTYPROTO=unixproto
130
131
132# Commands possibly overriden by the individual port
133
134ARRC=ar rc
135#CC=cc
136LN=ln -s
137RANLIB=ranlib
138
139
140# Standard distribution build parameters
141
142DEFAULTAUTHENTICATORS=ext md5 pla log
143#
144# mh needs to be after any other directory format drivers (such as mx or mix)
145# since otherwise mh will seize any directory that is under the mh path.
146# However, mh needs to be before any sysinbox formats (such as mmdf or unix)
147# since otherwise INBOX won't work correctly when mh_allow_inbox is set.
148#
149DEFAULTDRIVERS=imap nntp pop3 mix mx mbx tenex mtx mh mmdf unix news phile
150CHUNKSIZE=65536
151
152# Normally no need to change any of these
153
154ARCHIVE=c-client.a
155BINARIES=osdep.o mail.o misc.o newsrc.o smanager.o utf8.o utf8aux.o siglocal.o \
156 dummy.o pseudo.o netmsg.o flstring.o fdstring.o \
157 rfc822.o nntp.o smtp.o imap4r1.o pop3.o \
158 unix.o mbx.o mmdf.o tenex.o mtx.o news.o phile.o mh.o mx.o mix.o
159CFLAGS+=$(BASECFLAGS) $(EXTRACFLAGS)
160
161CAT=cat
162MAKE=make
163MV=mv
164RM=rm -rf
165SH=sh
166
167
168# Primary build command
169
170BUILD=$(MAKE) build EXTRACFLAGS='$(EXTRACFLAGS)'\
171 EXTRALDFLAGS='$(EXTRALDFLAGS)'\
172 EXTRADRIVERS='$(EXTRADRIVERS)' EXTRAAUTHENTICATORS='$(EXTRAAUTHENTICATORS)'\
173 PASSWDTYPE=$(PASSWDTYPE) SSLTYPE=$(SSLTYPE) IP=$(IP)
174
175
176# Need this for the shared library rule to work correctly
177.SUFFIXES: .o .so
178SOFILES=${BINARIES:.o=.so}
179
180# Here if no make argument established
181
182missing: osdep.h
183	$(MAKE) all `$(CAT) SPECIALS`
184
185osdep.h:
186	@echo You must specify what type of system
187	@false
188
189
190# Current ports
191
192a32:	# AIX 3.2 for RS/6000
193	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
194	 SIGTYPE=psx CRXTYPE=nfs \
195	 SPOOLDIR=/var/spool \
196	 RSHPATH=/usr/bin/rsh \
197	 BASECFLAGS="-g -Dunix=1 -D_BSD" \
198	 BASELDFLAGS="-lbsd"
199
200a41:	# AIX 4.1 for RS/6000
201	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
202	 SIGTYPE=psx CHECKPW=a41 CRXTYPE=nfs \
203	 SPOOLDIR=/var/spool \
204	 RSHPATH=/usr/bin/rsh \
205	 BASECFLAGS="-g -Dunix=1 -D_BSD -qro -qroconst" \
206	 BASELDFLAGS="-ls"
207
208a52:	# AIX 5.2
209	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
210	 SIGTYPE=psx CHECKPW=a41 CRXTYPE=nfs \
211	 SPOOLDIR=/var/spool \
212	 RSHPATH=/usr/bin/rsh \
213	 BASECFLAGS="-g -Dunix=1 -D_BSD -qro -qroconst" \
214	 BASELDFLAGS="-ls"
215
216aix:	# AIX/370
217	@echo You are building for AIX on an S/370 class machine
218	@echo If you want AIX on an RS/6000 you need to use a32 or a41 instead!
219	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
220	 CRXTYPE=nfs \
221	 BASECFLAGS="-g" \
222	 BASELDFLAGS="-lbsd"
223
224aos:	# AOS for RT
225	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
226	 CRXTYPE=nfs \
227	 BASECFLAGS="-g -Dconst="
228
229art:	# AIX 2.2.1 for RT
230	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
231	 SIGTYPE=sv4 \
232	 SPOOLDIR=/var \
233	 ACTIVEFILE=/usr/local/news/control/active \
234	 RSHPATH=/bin/rsh \
235	 BASECFLAGS="-g -Dconst= -Dvoid=char" \
236	 RANLIB=true
237
238asv:	# Altos SVR4
239	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
240	 SIGTYPE=sv4 LOGINPW=old \
241	 ACTIVEFILE=/usr/spool/news/active \
242	 RSHPATH=/usr/bin/rcmd \
243	 BASECFLAGS="-Dconst= -DSIGSTOP=SIGKILL" \
244	 BASELDFLAGS="-lsocket -lrpc -lgen -lcrypt -lxenix" \
245	 RANLIB=true
246
247aux:	# A/UX
248	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
249	 CRXTYPE=nfs \
250	 MAILSPOOL=/usr/mail \
251	 BASECFLAGS="-g -B/usr/lib/big/ -Dvoid=char -Dconst=" \
252	 RANLIB=true ARRC="ar -rc"
253
254bs3:	# BSD/i386 3.0 or higher
255	$(BUILD) `$(CAT) SPECIALS` OS=bsi \
256	 CHECKPW=bsi LOGINPW=bsi CRXTYPE=nfs \
257	 SPOOLDIR=/var NEWSSPOOL=/var/news/spool \
258	 ACTIVEFILE=/var/news/etc/active \
259	 RSHPATH=/usr/bin/rsh \
260	 BASECFLAGS="$(GCCCFLAGS)" CC=shlicc
261
262bsd:	# BSD UNIX
263	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
264	 CRXTYPE=nfs \
265	 BASECFLAGS="-g -Dconst="
266
267bsf:	# FreeBSD
268	$(BUILD) `$(CAT) SPECIALS` OS=$@ CHECKPW=pam \
269	 SIGTYPE=psx CRXTYPE=nfs \
270	 SPOOLDIR=/var \
271	 ACTIVEFILE=/usr/local/news/lib/active \
272	 RSHPATH=/usr/bin/rsh \
273	 LOCKPGM=$(PREFIX)/libexec/mlock \
274	 BASECFLAGS="$(GCCCFLAGS)" \
275	 BASELDFLAGS="-lpam"
276
277bsi:	# BSD/i386
278	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
279	 CRXTYPE=nfs \
280	 SPOOLDIR=/var NEWSSPOOL=/var/news/spool \
281	 ACTIVEFILE=/var/news/etc/active \
282	 RSHPATH=/usr/bin/rsh \
283	 BASECFLAGS="$(GCCCFLAGS)"
284
285bso:	# OpenBSD
286	$(BUILD) `$(CAT) SPECIALS` OS=bsi \
287	 SIGTYPE=psx CRXTYPE=nfs \
288	 SPOOLDIR=/var \
289	 ACTIVEFILE=/usr/local/news/lib/active \
290	 RSHPATH=/usr/bin/rsh \
291	 BASECFLAGS="$(GCCCFLAGS)"
292
293cvx:	# Convex
294	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
295	 CRXTYPE=nfs \
296	 BASECFLAGS="-O -ext -Dconst="
297
298cyg:	# Cygwin - note that most local file drivers don't work!!
299	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
300	DEFAULTDRIVERS="imap nntp pop3 mbx unix phile" \
301	SIGTYPE=psx CHECKPW=cyg LOGINPW=cyg CRXTYPE=std \
302	SPOOLDIR=/var \
303	ACTIVEFILE=/usr/local/news/lib/active \
304	RSHPATH=/usr/bin/rsh \
305	BASECFLAGS="$(GCCCFLAGS)" \
306	BASELDFLAGS="-lcrypt" \
307	CC=gcc
308
309d-g:	# Data General DG/UX
310	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
311	 SIGTYPE=sv4 CRXTYPE=nfs \
312	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
313	 ACTIVEFILE=/local/news/active \
314	 RSHPATH=/usr/bin/remsh \
315	 BASECFLAGS="-g -Dconst=" \
316	 BASELDFLAGS="-lnsl -lsocket" \
317	 RANLIB=true
318
319d54:	# Data General DG/UX 5.4
320	$(BUILD) `$(CAT) SPECIALS` OS=d-g \
321	 SIGTYPE=sv4 CRXTYPE=nfs \
322	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
323	 ACTIVEFILE=/local/news/active \
324	 RSHPATH=/usr/bin/remsh \
325	 BASECFLAGS="-g -Dconst=" \
326	 BASELDFLAGS="-lnsl -lsocket" \
327	 RANLIB=true
328
329dpx:	# Bull DPX/2
330	$(BUILD) `$(CAT) SPECIALS` OS=sv4 \
331	 SIGTYPE=sv4 CHECKPW=sv4 LOGINPW=sv4 \
332	 RSHPATH=/usr/bin/remsh \
333	 BASECFLAGS="-Dconst= -DSYSTEM5 -DSHORT_IDENT" \
334	 BASELDFLAGS="-linet" \
335	 RANLIB=true LN=ln
336
337drs:	# ICL DRS/NX
338	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
339	 SIGTYPE=sv4 CHECKPW=sv4 LOGINPW=sv4 CRXTYPE=nfs \
340	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
341	 ACTIVEFILE=/var/lib/news/active \
342	 RSHPATH=/usr/bin/rsh \
343	 BASECFLAGS="-O" \
344	 BASELDFLAGS="-lsocket -lgen" \
345	 RANLIB=true
346
347do4:	# Apollo Domain/OS sr10.4
348	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
349	 CRXTYPE=nfs \
350	 BASECFLAGS="-A systype,bsd4.3 -D_APOLLO_SOURCE" \
351	 RANLIB=true
352
353dyn:	# Dynix
354	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
355	 CRXTYPE=nfs \
356	 BASECFLAGS="-g -Dconst="
357
358epx:	# EP/IX
359	$(BUILD) `$(CAT) SPECIALS` OS=sv4 \
360	 SIGTYPE=sv4 CHECKPW=sv4 LOGINPW=sv4 \
361	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
362	 ACTIVEFILE=/usr/share/news/active \
363	 RSHPATH=/usr/net/rsh \
364	 BASECFLAGS="-g -systype svr4" \
365	 BASELDFLAGS="-lsocket -lnsl -lgen" \
366	 RANLIB=true
367
368ga4:	# GCC AIX 4.1 for RS/6000
369	$(BUILD) `$(CAT) SPECIALS` OS=a41 \
370	 SIGTYPE=psx CHECKPW=a41 CRXTYPE=nfs \
371	 SPOOLDIR=/var/spool \
372	 RSHPATH=/usr/bin/rsh \
373	 BASECFLAGS="-g -Dunix=1 -D_BSD" \
374	 BASELDFLAGS="-ls"
375
376gas:	# GCC Altos SVR4
377	$(BUILD) `$(CAT) SPECIALS` OS=asv \
378	 SIGTYPE=sv4 LOGINPW=old \
379	 ACTIVEFILE=/usr/spool/news/active \
380	 RSHPATH=/usr/bin/rcmd \
381	 BASECFLAGS="-g -O -DALTOS_SYSTEM_V -DSIGSTOP=SIGKILL" \
382	 BASELDFLAGS="-lsocket -lrpc -lgen -lcrypt -lxenix" \
383	 RANLIB=true CC=gcc
384
385gh9:	# GCC HP-UX 9.x
386	$(BUILD) `$(CAT) SPECIALS` OS=hpp \
387	 SIGTYPE=psx CRXTYPE=nfs \
388	 MAILSPOOL=/usr/mail \
389	 RSHPATH=/usr/bin/remsh \
390	 BASECFLAGS="$(GCCCFLAGS)" \
391	 RANLIB=true CC=gcc
392
393ghp:	# GCC HP-UX 10.x
394	$(BUILD) `$(CAT) SPECIALS` OS=hpp \
395	 SIGTYPE=psx CRXTYPE=nfs \
396	 SPOOLDIR=/var \
397	 ACTIVEFILE=/var/news/active \
398	 RSHPATH=/usr/bin/remsh \
399	 BASECFLAGS="$(GCCCFLAGS)" \
400	 RANLIB=true CC=gcc
401
402ghs:	# GCC HP-UX with Trusted Computer Base
403	$(BUILD) `$(CAT) SPECIALS` OS=shp \
404	 SIGTYPE=psx CHECKPW=sec CRXTYPE=nfs \
405	 SPOOLDIR=/var \
406	 ACTIVEFILE=/var/news/active \
407	 RSHPATH=/usr/bin/remsh \
408	 BASECFLAGS="$(GCCCFLAGS)" \
409	 BASELDFLAGS="-lnet -lV3 -lsec" \
410	 RANLIB=true CC=gcc
411
412go5:	# GCC 2.7.1 (95q4) SCO Open Server 5.0.x
413	$(BUILD) `$(CAT) SPECIALS` OS=sc5 \
414	 SIGTYPE=psx CHECKPW=sec LOGINPW=sec \
415	 CREATEPROTO=mmdfproto EMPTYPROTO=mmdfproto \
416	 SPOOLDIR=/var/spool \
417	 ACTIVEFILE=/var/lib/news/active \
418	 RSHPATH=/usr/bin/rcmd \
419	 BASECFLAGS="$(GCCCFLAGS) -I/usr/include -L/lib" \
420	 BASELDFLAGS="-lsocket -lprot -lx -ltinfo -lm" \
421	 RANLIB=true CC=gcc
422
423gsc:	# Santa Cruz Operation
424	$(BUILD) `$(CAT) SPECIALS` OS=sco \
425	 SIGTYPE=sv4 CHECKPW=sec LOGINPW=sec \
426	 CREATEPROTO=mmdfproto EMPTYPROTO=mmdfproto \
427	 RSHPATH=/usr/bin/rcmd \
428	 BASECFLAGS="$(GCCCFLAGS)" \
429	 BASELDFLAGS="-lsocket -lprot -lcrypt_i -lx -los" \
430	 RANLIB=true LN=ln CC=gcc
431
432gsg:	# GCC Silicon Graphics
433	$(BUILD) `$(CAT) SPECIALS` OS=sgi \
434	 SIGTYPE=sv4 CRXTYPE=nfs \
435	 MAILSPOOL=/usr/mail \
436	 RSHPATH=/usr/bsd/rsh \
437	 BASECFLAGS="$(GCCCFLAGS)" \
438	 RANLIB=true CC=gcc
439
440gso:	os_sol.h	# GCC Solaris
441	$(BUILD) `$(CAT) SPECIALS` OS=sol \
442	 SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
443	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
444	 ACTIVEFILE=/usr/share/news/active \
445	 RSHPATH=/usr/bin/rsh \
446	 BASECFLAGS="$(GCCCFLAGS)" \
447	 BASELDFLAGS="-lsocket -lnsl -lgen -R/usr/local/ssl/lib" \
448	 RANLIB=true CC=gcc
449
450gsu:	# GCC SUN-OS
451	$(BUILD) `$(CAT) SPECIALS` OS=sun \
452	 CRXTYPE=nfs \
453	 BASECFLAGS="$(GCCCFLAGS)" \
454	 BASELDFLAGS="-ldl" \
455	 CC=gcc
456
457gul:	# GCC Ultrix
458	$(BUILD) `$(CAT) SPECIALS` OS=ult \
459	 SIGTYPE=psx CHECKPW=ult CRXTYPE=nfs \
460	 BASECFLAGS="$(GCCCFLAGS)" \
461	 BASELDFLAGS="-lauth -lc" \
462	 CC=gcc
463
464h11:	# HP-UX 11i
465	$(BUILD) `$(CAT) SPECIALS` OS=hpp \
466	 SIGTYPE=psx CRXTYPE=nfs \
467	 SPOOLDIR=/var \
468	 ACTIVEFILE=/var/news/active \
469	 RSHPATH=/usr/bin/remsh \
470	 BASECFLAGS="-g -Ae" \
471	 RANLIB=true
472
473hpp:	# HP-UX 9.x
474	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
475	 SIGTYPE=psx CRXTYPE=nfs \
476	 MAILSPOOL=/usr/mail \
477	 RSHPATH=/usr/bin/remsh \
478	 BASECFLAGS="-g -Aa -D_HPUX_SOURCE" \
479	 BASELDFLAGS="-lnet -lV3" \
480	 RANLIB=true
481
482hpx:	# HP-UX 10.x
483	$(BUILD) `$(CAT) SPECIALS` OS=hpp \
484	 SIGTYPE=psx CRXTYPE=nfs \
485	 SPOOLDIR=/var \
486	 ACTIVEFILE=/var/news/active \
487	 RSHPATH=/usr/bin/remsh \
488	 BASECFLAGS="-g -Ae" \
489	 BASELDFLAGS="-lnet -lV3" \
490	 RANLIB=true
491
492isc:	# Interactive
493	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
494	 SIGTYPE=sv4 CHECKPW=sv4 LOGINPW=sv4 \
495	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
496	 ACTIVEFILE=/var/spool/news/active \
497	 BASECFLAGS="-Xp -D_SYSV3" \
498	 BASELDFLAGS="-linet -lnsl_s -lgen -lx -lsec -liberty" \
499	 RANLIB=true
500
501lnp:	# Linux Pluggable Authentication modules
502	$(BUILD) `$(CAT) SPECIALS` OS=slx \
503	 SIGTYPE=psx CHECKPW=pam CRXTYPE=nfs \
504	 SPOOLDIR=/var/spool \
505	 ACTIVEFILE=/var/lib/news/active \
506	 RSHPATH=/usr/bin/rsh \
507	 BASECFLAGS="$(GCCCFLAGS)" \
508	 BASELDFLAGS="$(PAMLDFLAGS)"
509
510lnx:	# Linux non-shadow passwords
511	@echo You are building for traditional Linux *without* shadow
512	@echo passwords and with the crypt function in the C library.
513	@echo If your system has shadow passwords, or if crypt is not
514	@echo in the C library, you must use slx, sl4, or sl5 instead!
515	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
516	 SIGTYPE=psx CRXTYPE=nfs \
517	 SPOOLDIR=/var/spool \
518	 ACTIVEFILE=/var/lib/news/active \
519	 RSHPATH=/usr/bin/rsh \
520	 BASECFLAGS="$(GCCCFLAGS)"
521
522lyn:	# LynxOS
523	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
524	 CRXTYPE=nfs \
525	 RSHPATH=/bin/rsh \
526	 BASECFLAGS="$(GCCCFLAGS)" \
527	 BASELDFLAGS=-lbsd \
528	 CC=gcc
529
530mct:	# MachTen - CRXTYPE=nfs doesn't work (at least not on 2.2)
531	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
532	 SPOOLDIR=/var/spool \
533	 BASECFLAGS="$(GCCCFLAGS)"
534
535mnt:	# Mint
536	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
537	 SIGTYPE=psx CRXTYPE=nfs \
538	 SPOOLDIR=/var/spool \
539	 ACTIVEFILE=/var/lib/news/active \
540	 RSHPATH=/usr/bin/rsh \
541	 BASECFLAGS="$(GCCCFLAGS)"
542
543neb:	# NetBSD
544	$(BUILD) `$(CAT) SPECIALS` OS=bsi \
545	 CRXTYPE=nfs \
546	 SPOOLDIR=/var \
547	 ACTIVEFILE=/var/db/news/active \
548	 RSHPATH=/usr/bin/rsh \
549	 BASECFLAGS="$(GCCCFLAGS)" \
550	 BASELDFLAGS="-lcrypt"
551
552nec:	# NEC UX
553	$(BUILD) `$(CAT) SPECIALS` OS=sv4 \
554	 SIGTYPE=sv4 CHECKPW=sv4 \
555	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
556	 ACTIVEFILE=/var/news/lib/active \
557	 RSHPATH=/usr/bin/rsh \
558	 BASECFLAGS="-g -Kopt=2 -KOlimit=2000" \
559	 BASELDFLAGS="-lsocket -lnsl -lgen" \
560	 RANLIB=true CC=/usr/abiccs/bin/cc
561
562nto:	# QNX Neutrino RTP
563	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
564	 CRXTYPE=nfs \
565	 SPOOLDIR=/var/spool \
566	 ACTIVEFILE=/var/lib/news/active \
567	 RSHPATH=/usr/bin/rsh \
568	 BASECFLAGS="-g -O"
569
570nxt:	# NEXTSTEP
571	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
572	 CRXTYPE=nfs \
573	 BASECFLAGS="$(GCCCFLAGS)"
574
575nx3:	# NEXTSTEP 3.0 single threaded
576	$(BUILD) `$(CAT) SPECIALS` OS=nxt \
577	 CRXTYPE=nfs \
578	 BASECFLAGS="$(GCCCFLAGS)"
579	echo "void malloc_singlethreaded (void);" >> linkage.h
580	echo "  malloc_singlethreaded ();" >> linkage.c
581
582osf:	# OSF/1
583	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
584	 SIGTYPE=psx CRXTYPE=nfs \
585	 SPOOLDIR=/var/spool \
586	 BASECFLAGS="-g3 -w -O2 -Olimit 1500"
587
588# Note: sia_become_user() used by LOGINPW=os4 doesn't seem to work right.  The
589# user doesn't get proper file access, and the process can't be killed.
590
591os4:	# OSF/1 (Digital UNIX) 4
592	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
593	 SIGTYPE=psx CHECKPW=os4 LOGINPW=os4 CRXTYPE=nfs \
594	 SPOOLDIR=/var/spool \
595	 BASECFLAGS="-g3 -w -std0 -O2"
596
597osx:	# Mac OS X
598	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
599	 CRXTYPE=nfs \
600	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
601	 RSHPATH=/usr/bin/rsh \
602	 BASECFLAGS="$(GCC4CFLAGS)"
603
604ptx:	# PTX
605	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
606	 SIGTYPE=psx CHECKPW=svo LOGINPW=sv4 CRXTYPE=nfs \
607	 MAILSPOOL=/usr/mail \
608	 RSHPATH=/usr/bin/resh \
609	 BASECFLAGS="-Wc,-O3 -Wc,-seq -Dprivate=PRIVATE" \
610	 BASELDFLAGS="-lseq -lsec -lsocket -linet -lnsl -lgen" \
611	 RANLIB=true
612
613pyr:	# Pyramid
614	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
615	 CRXTYPE=nfs \
616	 BASECFLAGS="-g -Dconst="
617
618qn6:	# QNX 6
619	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
620	 CRXTYPE=nfs \
621	 SPOOLDIR=/var/spool \
622	 ACTIVEFILE=/var/lib/news/active \
623	 RSHPATH=/usr/bin/rsh \
624	 BASECFLAGS="$(GCCFLAGS)"
625
626qnx:	# QNX
627	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
628	 CHECKPW=psx LOGINPW=old \
629	 RSHPATH=/usr/ucb/rsh \
630	 BASECFLAGS="-Otax -g -Dunix=1 -D_POSIX_SOURCE" \
631	 BASELDFLAGS="-g -N128k -llogin -lsocket -lunix"
632
633s40:	# SUN-OS 4.0
634	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
635	 CRXTYPE=nfs \
636	 BASECFLAGS="-g -Dconst="
637
638sc5:	# SCO Open Server 5.0
639	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
640	 SIGTYPE=psx CHECKPW=sec LOGINPW=sec \
641	 CREATEPROTO=mmdfproto EMPTYPROTO=mmdfproto \
642	 SPOOLDIR=/var/spool \
643	 ACTIVEFILE=/var/lib/news/active \
644	 RSHPATH=/usr/bin/rcmd \
645	 BASECFLAGS="-O3 -s -belf" \
646	 BASELDFLAGS="-lsocket -lprot -lx -ltinfo -lm" \
647	 RANLIB=true
648
649sco:	# Santa Cruz Operation
650	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
651	 SIGTYPE=sv4 CHECKPW=sec LOGINPW=sec \
652	 CREATEPROTO=mmdfproto EMPTYPROTO=mmdfproto \
653	 RSHPATH=/usr/bin/rcmd \
654	 BASECFLAGS="-O3" \
655	 BASELDFLAGS="-lsocket -lprot -lcrypt_i -lx -los" \
656	 RANLIB=true LN=ln
657
658# Note: setting _POSIX_SOURCE doesn't seem to build it as of SGI IRIX 5.3
659
660sgi:	# Silicon Graphics
661	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
662	 SIGTYPE=sv4 CRXTYPE=nfs \
663	 MAILSPOOL=/usr/mail \
664	 RSHPATH=/usr/bsd/rsh \
665	 BASECFLAGS="-g3 -O2 -Olimit 8192" \
666	 RANLIB=true
667
668sg6:	# Silicon Graphics, IRIX 6.5
669	MAKEFLAGS= $(BUILD) `$(CAT) SPECIALS` OS=sgi \
670	 SIGTYPE=sv4 CRXTYPE=nfs \
671	 MAILSPOOL=/usr/mail \
672	 RSHPATH=/usr/bsd/rsh \
673	 BASECFLAGS="-g3 -O2 -OPT:Olimit=0 -woff 1110,1116" \
674	 RANLIB=true
675
676# Note: Mark Kaesling says that setluid() isn't in HP-UX with SecureWare.
677
678shp:	# HP-UX with Trusted Computer Base
679	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
680	 SIGTYPE=psx CHECKPW=sec CRXTYPE=nfs \
681	 SPOOLDIR=/var \
682	 ACTIVEFILE=/var/news/active \
683	 RSHPATH=/usr/bin/remsh \
684	 BASECFLAGS="-g -Ae" \
685	 BASELDFLAGS="-lnet -lV3 -lsec" \
686	 RANLIB=true
687
688slx:	# Secure Linux
689	@echo You are building for libc6/glibc versions of Secure Linux
690	@echo If you want libc5 versions you must use sl5 instead!
691	@echo If you want libc4 versions you must use sl4 instead!
692	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
693	 SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
694	 SPOOLDIR=/var/spool \
695	 ACTIVEFILE=/var/lib/news/active \
696	 RSHPATH=/usr/bin/rsh \
697	 BASECFLAGS="$(GCCCFLAGS)" \
698	 BASELDFLAGS="-lcrypt"
699
700sl4:	# Secure Linux using libc4
701	@echo You are building for libc4 versions of Secure Linux
702	@echo If you want libc6/glibc versions you must use slx instead!
703	@echo If you want libc5 versions you must use sl5 instead!
704	$(BUILD) `$(CAT) SPECIALS` OS=slx \
705	 SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
706	 SPOOLDIR=/var/spool \
707	 ACTIVEFILE=/var/lib/news/active \
708	 RSHPATH=/usr/bin/rsh \
709	 BASECFLAGS="$(GCCCFLAGS)" \
710	 BASELDFLAGS="-lshadow"
711
712sl5:	# Secure Linux using libc5
713	@echo You are building for libc5 versions of Secure Linux
714	@echo If you want libc6/glibc versions you must use slx instead!
715	@echo If you want libc4 versions you must use sl4 instead!
716	$(BUILD) `$(CAT) SPECIALS` OS=slx \
717	 SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
718	 SPOOLDIR=/var/spool \
719	 ACTIVEFILE=/var/lib/news/active \
720	 RSHPATH=/usr/bin/rsh \
721	 BASECFLAGS="$(GCCCFLAGS)"
722
723snx:	# Siemens Nixdorf SINIX and Reliant UNIX
724	$(BUILD) `$(CAT) SPECIALS` OS=sv4 \
725	 SIGTYPE=psx CHECKPW=sv4 \
726	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
727	 ACTIVEFILE=/usr/share/news/active \
728	 RSHPATH=/usr/bin/rsh \
729	 BASECFLAGS="-g -D_SYS_CLOCK_H -Dconst=" \
730	 BASELDFLAGS="-lsocket -lnsl -lgen" \
731	 RANLIB=true
732
733# Sorry about the -w, but the cretinous SUN Workshop Pro C compiler barfs on
734# implicit casts between char and unsigned char.
735
736soc:	os_sol.h	# Solaris with cc
737	$(BUILD) `$(CAT) SPECIALS` OS=sol \
738	 SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
739	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
740	 ACTIVEFILE=/usr/share/news/active \
741	 RSHPATH=/usr/bin/rsh \
742	 BASECFLAGS="-g -O -w" \
743	 BASELDFLAGS="-lsocket -lnsl -lgen -R/usr/local/ssl/lib" \
744	 RANLIB=true CC=/opt/SUNWspro/bin/cc
745
746
747# Note: It is a long and disgusting story about why cc is set to ucbcc.  You
748# need to invoke the C compiler so that it links with the SVR4 libraries and
749# not the BSD libraries, otherwise readdir() will return the wrong information.
750# Of all the names in the most common path, ucbcc is the only name to be found
751# (on /usr/ccs/bin) that points to a suitable compiler.  cc is likely to be
752# /usr/ucb/cc which is absolutely not the compiler that you want.  The real
753# SVR4 cc is probably something like /opt/SUNWspro/bin/cc which is rarely in
754# anyone's path.
755#
756# ucbcc is probably a link to acc, e.g. /opt/SUNWspro/SC4.0/bin/acc, and is
757# the UCB C compiler using the SVR4 libraries.
758#
759# If ucbcc isn't on your system, then punt on the SUN C compiler and use gcc
760# instead (the gso port instead of the sol port).
761#
762# If, in spite of all the above warnings, you choose to use the "soc" port
763# instead of the "sol" port, be sure to check the behavior of the LIST command
764# in imapd.  Also, note that the "soc" port uses -O.  If you want to use the
765# real SVR4 compiler, you must use -O.  If it works to compile with -O2, then
766# cc is probably using the UCB compiler with BSD libraries, and will not build
767# a good binary
768#
769# To recap:
770# 1) The sol port is designed to be built using the UCB compiler using the
771#    SVR4 libraries.  This compiler is "ucbcc", which is lunk to acc.  You
772#    use -O2 as one of the CFLAGS.
773# 2) If you build the sol port with the UCB compiler using the BSD libraries,
774#    you will get no error messages but you will get bad binaries (the most
775#    obvious symptom is dropping the first two characters return filenames
776#    from the imapd LIST command.  This compiler also uses -O2, and is very
777#    often what the user gets from "cc".  BEWARE!!!
778# 3) If you build the sol port with the real SVR4 compiler, which is often
779#    hidden away or unavailable on many systems, then you will get errors
780#    from -O2 and you need to change that to -O.  But you will get a good
781#    binary.  However, you should try it with -O2 first, to make sure that
782#    you got this compiler and not the UCB compiler using BSD libraries.
783
784sol:	os_sol.h	# Solaris
785	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
786	 SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
787	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
788	 ACTIVEFILE=/usr/share/news/active \
789	 RSHPATH=/usr/bin/rsh \
790	 BASECFLAGS="-g -O2" \
791	 BASELDFLAGS="-lsocket -lnsl -lgen -R/usr/local/ssl/lib" \
792	 RANLIB=true CC=ucbcc
793
794sos:	# Secure OSF/1
795	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
796	 SIGTYPE=psx CHECKPW=sce LOGINPW=sec CRXTYPE=nfs \
797	 BASECFLAGS="-g3 -w -O2 -Olimit 1500" \
798	 BASELDFLAGS="-lsecurity -laud"
799
800ssn:	# Secure SUN-OS
801	$(BUILD) `$(CAT) SPECIALS` OS=sun \
802	 CHECKPW=ssn CRXTYPE=nfs \
803	 BASECFLAGS="-g -Dconst=" \
804	 BASELDFLAGS="-ldl"
805
806sua:	# Windows Vista Subsystem for UNIX Applications
807	$(BUILD) `$(CAT) SPECIALS` OS=sua \
808	 SIGTYPE=psx CRXTYPE=nfs LOGINPW=old \
809	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
810	 ACTIVEFILE=/var/lib/news/active \
811	 RSHPATH=/usr/bin/rsh \
812	 BASECFLAGS="-g -O2" \
813	 BASELDFLAGS="-lcrypt"
814
815sun:	# SUN-OS
816	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
817	 CRXTYPE=nfs \
818	 BASECFLAGS="-g -Dconst=" \
819	 BASELDFLAGS="-ldl"
820
821sv2:	# SVR2
822	@echo You are being *very* optimistic!
823	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
824	 SIGTYPE=sv4 LOGINPW=old \
825	 MAILSPOOL=/usr/mail \
826	 RSHPATH=/usr/bin/remsh \
827	 BASECFLAGS="-Dconst= -DSYSTEM5 -DSHORT_IDENT -I/usr/ethernet/include" \
828	 BASELDFLAGS="-lnet" \
829	 RANLIB=true LN=ln
830
831sv4:	# SVR4
832	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
833	 SIGTYPE=sv4 CHECKPW=sv4 LOGINPW=sv4 \
834	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
835	 ACTIVEFILE=/usr/share/news/active \
836	 RSHPATH=/usr/bin/resh \
837	 BASECFLAGS="-g -Dconst=" \
838	 BASELDFLAGS="-lsocket -lnsl -lgen" \
839	 RANLIB=true
840
841ult:	# Ultrix
842	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
843	 SIGTYPE=psx CHECKPW=ult CRXTYPE=nfs \
844	 BASECFLAGS="-g3 -O2 -Olimit 1500 -Dconst=" \
845	 BASELDFLAGS="-lauth -lc"
846
847uw2:	# UnixWare SVR4.2
848	$(BUILD) `$(CAT) SPECIALS` OS=sv4 \
849	 SIGTYPE=sv4 CHECKPW=sv4 \
850	 SPOOLDIR=/var/spool MAILSPOOL=/var/mail \
851	 ACTIVEFILE=/var/news/lib/active \
852	 RSHPATH=/usr/bin/rsh \
853	 BASECFLAGS="-g" \
854	 BASELDFLAGS="-lsocket -lnsl -lgen" \
855	 RANLIB=true
856
857vul:	# VAX Ultrix
858	$(BUILD) `$(CAT) SPECIALS` OS=ult \
859	 SIGTYPE=psx CHECKPW=ult CRXTYPE=nfs \
860	 BASECFLAGS="-O2 -Dconst=" \
861	 BASELDFLAGS="-lauth -lc"
862
863vu2:	# VAX Ultrix 2.3, etc.
864	$(BUILD) `$(CAT) SPECIALS` OS=$@ \
865	 CRXTYPE=nfs \
866	 BASECFLAGS="-O2 -Dconst= -Dvoid=char"
867
868
869# Build it!
870
871build:	clean once $(ARCHIVE) $(SHLIBNAME)
872
873all:	$(ARCHIVE) $(SHLIBNAME)
874
875$(ARCHIVE): $(BINARIES)
876	sh -c '$(RM) $(ARCHIVE) || true'
877	@$(CAT) ./ARCHIVE
878	@$(SH) ./ARCHIVE
879
880$(SHLIBNAME): $(SOFILES)
881	$(CC) -shared -Wl,-soname=$(SHLIBNAME) -o $(SHLIBNAME) $(SOFILES) `cat LDFLAGS`
882	$(LN) $(SHLIBNAME) lib$(SHLIBBASE).so
883
884.c.so: osdep.h
885	$(CC) -fPIC -DPIC -c `cat CFLAGS` ${@:.so=.c} -o $@
886
887.c.o:
888	$(CC) -c `cat CFLAGS` $*.c
889
890
891# Cleanup
892
893clean:
894	sh -c '$(RM) auths.c crexcl.c ip_unix.c linkage.[ch] siglocal.c osdep*.[ch] *.o ARCHIVE *FLAGS *TYPE $(ARCHIVE) || true'
895	sh -c '$(RM) *.so $(SHLIBNAME)'
896
897
898# Dependencies
899
900dummy.o: mail.h misc.h osdep.h dummy.h
901fdstring.o: mail.h misc.h osdep.h fdstring.h
902flstring.o: mail.h misc.h osdep.h flstring.h
903imap4r1.o: mail.h misc.h osdep.h imap4r1.h rfc822.h
904mail.o: mail.h misc.h osdep.h rfc822.h linkage.h
905mbx.o: mail.h misc.h osdep.h dummy.h
906mh.o: mail.h misc.h osdep.h dummy.h
907mix.o: mail.h misc.h osdep.h dummy.h
908mx.o: mail.h misc.h osdep.h dummy.h
909misc.o: mail.h misc.h osdep.h
910mmdf.o: mail.h misc.h osdep.h pseudo.h dummy.h
911mtx.o: mail.h misc.h osdep.h dummy.h
912netmsg.o: mail.h misc.h osdep.h netmsg.h
913news.o: mail.h misc.h osdep.h
914newsrc.o: mail.h misc.h osdep.h newsrc.h
915nntp.o: mail.h misc.h osdep.h netmsg.h smtp.h nntp.h rfc822.h
916phile.o: mail.h misc.h osdep.h rfc822.h dummy.h
917pseudo.o: pseudo.h
918pop3.o: mail.h misc.h osdep.h rfc822.h
919smanager.o: mail.h misc.h osdep.h
920smtp.o: mail.h misc.h osdep.h smtp.h rfc822.h
921rfc822.o: mail.h misc.h osdep.h rfc822.h
922tenex.o: mail.h misc.h osdep.h dummy.h
923unix.o: mail.h misc.h osdep.h unix.h pseudo.h dummy.h
924utf8.o: mail.h misc.h osdep.h utf8.h tmap.c widths.c
925utf8aux.o: mail.h misc.h osdep.h utf8.h
926
927
928# OS-dependent
929
930OSDEPS= mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
931	osdep.h env_unix.h tcp_unix.h \
932	osdep.c env_unix.c fs_unix.c ftl_unix.c nl_unix.c tcp_unix.c ip_unix.c\
933	auths.c crexcl.c flockcyg.c flocklnx.c flocksim.c fsync.c \
934	gethstid.c getspnam.c \
935	gr_wait.c gr_wait4.c gr_waitp.c \
936	kerb_mit.c \
937	auth_ext.c auth_gss.c auth_log.c auth_md5.c auth_pla.c \
938	pmatch.c scandir.c setpgrp.c strerror.c truncate.c write.c \
939	memmove.c memmove2.c memset.c \
940	tz_bsd.c tz_nul.c tz_sv4.c \
941	write.c sslstdio.c \
942	strerror.c strpbrk.c strstr.c strtok.c strtoul.c \
943	OSCFLAGS
944
945osdep.o: $(OSDEPS)
946	$(CC) `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` -c osdep.c
947	@echo ========================================================================
948	@echo Building OS-dependent module
949	@echo If you get No such file error messages for files x509.h, ssl.h,
950	@echo pem.h, buffer.h, bio.h, and crypto.h, that means that OpenSSL
951	@echo is not installed on your system.  Either install OpenSSL first
952	@echo or build with command: make `$(CAT) OSTYPE` SSLTYPE=none
953	@echo ========================================================================
954
955osdep.so: $(OSDEPS)
956	$(CC) -fPIC -DPIC -c `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` osdep.c -o $@
957
958osdep.c: osdepbas.c osdepckp.c osdeplog.c osdepssl.c
959	$(CAT) osdepbas.c osdepckp.c osdeplog.c osdepssl.c > osdep.c
960
961osdepbas.c:
962	@echo osdepbas.c not found...try make clean and new make
963	@false
964
965osdepckp.c:
966	@echo osdepckp.c not found...try make clean and new make
967	@false
968
969osdeplog.c:
970	@echo osdeplog.c not found...try make clean and new make
971	@false
972
973osdepssl.c:
974	@echo osdepssl.c not found...try make clean and new make
975	@false
976
977siglocal.c:
978	@echo siglocal.c not found...try make clean and new make
979	@false
980
981crexcl.c:
982	@echo crexcl.c not found...do make clean and new make
983	@false
984
985ip_unix.c:
986	@echo ip_unix.c not found...do make clean and new make
987	@false
988
989os_sol.h:
990	sh -c 'if [ -f /lib/libc.a ]; then (strings /lib/libc.a | grep getpassphrase > /dev/null) && $(LN) os_soln.h os_sol.h || $(LN) os_solo.h os_sol.h ; else $(LN) os_soln.h os_sol.h ; fi'
991
992
993# Once-only environment setup
994
995once:	onceenv ckp$(PASSWDTYPE) ssl$(SSLTYPE) osdep.c
996
997onceenv:
998	@echo Once-only environment setup...
999	echo $(CC) > CCTYPE
1000	echo $(BASECFLAGS) '$(EXTRACFLAGS)' -DCHUNKSIZE=$(CHUNKSIZE) > CFLAGS
1001	echo -DCREATEPROTO=$(CREATEPROTO) -DEMPTYPROTO=$(EMPTYPROTO) \
1002	 -DMD5ENABLE=\"$(MD5PWD)\" -DMAILSPOOL=\"$(MAILSPOOL)\" \
1003	 -DANONYMOUSHOME=\"$(MAILSPOOL)/anonymous\" \
1004	 -DACTIVEFILE=\"$(ACTIVEFILE)\" -DNEWSSPOOL=\"$(NEWSSPOOL)\" \
1005	 -DRSHPATH=\"$(RSHPATH)\" -DLOCKPGM=\"$(LOCKPGM)\" \
1006	 -DLOCKPGM1=\"$(LOCKPGM1)\" -DLOCKPGM2=\"$(LOCKPGM2)\" \
1007	 -DLOCKPGM3=\"$(LOCKPGM3)\" > OSCFLAGS
1008	echo $(BASELDFLAGS) $(EXTRALDFLAGS) > LDFLAGS
1009	echo "$(ARRC) $(ARCHIVE) $(BINARIES);$(RANLIB) $(ARCHIVE)" > ARCHIVE
1010	echo $(OS) > OSTYPE
1011	./drivers $(EXTRADRIVERS) $(DEFAULTDRIVERS) dummy
1012	./mkauths $(EXTRAAUTHENTICATORS) $(DEFAULTAUTHENTICATORS)
1013	echo "  mail_versioncheck (CCLIENTVERSION);" >> linkage.c
1014	$(LN) os_$(OS).h osdep.h
1015	$(LN) os_$(OS).c osdepbas.c
1016	$(LN) log_$(LOGINPW).c osdeplog.c
1017	$(LN) sig_$(SIGTYPE).c siglocal.c
1018	$(LN) crx_$(CRXTYPE).c crexcl.c
1019	$(LN) ip$(IP)_unix.c ip_unix.c
1020	sh -c '(test $(OS) = sc5 -o $(OS) = sco -o ! -f /usr/include/sys/statvfs.h) && echo -DNOFSTATVFS >> OSCFLAGS || fgrep statvfs64 /usr/include/sys/statvfs.h > /dev/null || echo -DNOFSTATVFS64 >> OSCFLAGS'
1021
1022
1023# Password checkers
1024
1025ckpafs:	# AFS
1026	@echo AFS password authentication
1027	echo $(AFSCFLAGS) >> OSCFLAGS
1028#	echo $(AFSLDFLAGS) >> LDFLAGS
1029# Note: Steve Roseman says that AFS libraries have to be lunk before SSL
1030	echo $(AFSLDFLAGS) `$(CAT) LDFLAGS` > LDFLAGS.tmp
1031	mv LDFLAGS.tmp LDFLAGS
1032	$(LN) ckp_afs.c osdepckp.c
1033
1034ckpdce:	# DCE
1035	@echo DCE password authentication
1036	echo $(DCECFLAGS) >> OSCFLAGS
1037	echo $(DCELDFLAGS) >> LDFLAGS
1038	$(LN) ckp_dce.c osdepckp.c
1039
1040ckpgss:	# Kerberos V (must have gss EXTRAAUTHENTICATOR as well)
1041	@echo Kerberos V password authentication
1042	$(LN) ckp_gss.c osdepckp.c
1043
1044ckpnul:	# NUL authenticator (disables all plaintext authentication)
1045	@echo Plaintext authentication prohibited
1046	echo "  mail_parameters (NIL,SET_DISABLEPLAINTEXT,(void *) 1);" >> linkage.c
1047	$(LN) ckp_nul.c osdepckp.c
1048
1049ckppam:	# Pluggable Authentication Modules authenticator
1050	@echo PAM password authentication
1051	echo $(PAMLDFLAGS) >> LDFLAGS
1052	$(LN) ckp_pam.c osdepckp.c
1053
1054ckppmb:	# Broken (e.g. SUN) Pluggable Authentication Modules authenticator
1055	@echo Broken PAM password authentication
1056	echo $(PAMLDFLAGS) >> LDFLAGS
1057	$(LN) ckp_pmb.c osdepckp.c
1058
1059ckpstd:	# Port standard
1060	@echo Standard password authentication
1061	$(LN) ckp_$(CHECKPW).c osdepckp.c
1062
1063ckptwo:	# Something plus standard
1064	@echo $(CHECKPWALT) password authentication first, then standard
1065	$(CAT) ckp_1st.c ckp_$(CHECKPWALT).c ckp_2nd.c ckp_$(CHECKPW).c \
1066	 ckp_3rd.c > osdepckp.c
1067
1068
1069# SSL support
1070
1071sslnone:# No SSL
1072	@echo Building without SSL support
1073	$(LN) ssl_none.c osdepssl.c
1074
1075sslnopwd: sslunix snopwd
1076
1077sslunix.nopwd: sslnopwd
1078
1079sslsco.nopwd: sslsco snopwd
1080
1081sslunix: sbasic sldunix
1082
1083sslsco:	sbasic sldsco
1084
1085sbasic:	# UNIX OpenSSL
1086	@echo Building with SSL
1087	$(LN) ssl_unix.c osdepssl.c
1088	echo $(SSLCFLAGS) >> OSCFLAGS
1089	echo "  ssl_onceonlyinit ();" >> linkage.c
1090
1091snopwd:	# Plaintext disable
1092	@echo Building with SSL and plaintext passwords disabled unless SSL/TLS
1093	echo "  mail_parameters (NIL,SET_DISABLEPLAINTEXT,(void *) 2);" >> linkage.c
1094
1095sldunix:# Normal UNIX SSL load flags
1096	echo $(SSLLDFLAGS) >> LDFLAGS
1097
1098
1099sldsco:	# SCO SSL load flags
1100# Note: Tim Rice says that SSL has to be lunk before other libraries on SCO.
1101	echo $(SSLLDFLAGS) `cat LDFLAGS` > LDFLAGS.tmp
1102	mv LDFLAGS.tmp LDFLAGS
1103
1104
1105# A monument to a hack of long ago and far away...
1106
1107love:
1108	@echo not war?
1109