1# ======================================================================== 2# Copyright 1988-2008 University of Washington 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# 11# ======================================================================== 12 13# Program: IMAP Toolkit Makefile 14# 15# Author: Mark Crispin 16# UW Technology 17# Seattle, WA 98195 18# Internet: MRC@Washington.EDU 19# 20# Date: 7 December 1989 21# Last Edited: 12 May 2008 22 23 24# Normal command to build IMAP toolkit: 25# make <port> [EXTRAAUTHENTICATORS=xxx] [EXTRADRIVERS=xxx] [EXTRACFLAGS=xxx] 26# [PASSWDTYPE=xxx] [SSLTYPE=xxx] [IP=n] 27 28 29# Port name. These refer to the *standard* compiler on the given system. 30# This means, for example, that the hpx port is for HP's compiler and not for 31# a non-standard compiler such as gcc. 32# 33# If you are using gcc and it is not the standard compiler on your system, try 34# using an ANSI port that is close to what you have. For example, if your 35# system is SVR4ish, try a32 or lnx; if it's more BSDish, try nxt, mct, or bsi. 36# 37# The following ports are bundled: 38# a32 AIX 3.2 for RS/6000 39# a41 AIX 4.1 for RS/6000 40# a52 Attempt at AIX 5.2 41# aix AIX/370 (not RS/6000!!) 42# ami AmigaDOS 43# am2 AmigaDOS with a 68020+ 44# ama AmigaDOS using AS225R2 45# amn AmigaDOS with a 680x0 using "new" socket library 46# aos AOS for RT 47# art AIX 2.2.1 for RT 48# asv Altos SVR4 49# aux A/UX 50# bs3 BSD/i386 3.0 and higher 51# bsd generic BSD 4.3 (as in ancient 1980s version) 52# bsf FreeBSD 53# bsi BSD/i386 54# bso OpenBSD (yes, yet another one...) 55# cvx Convex 56# cyg Cygwin 57# d-g Data General DG/UX prior to 5.4 (d41 port no longer exists) 58# d54 Data General DG/UX 5.4 59# do4 Apollo Domain/OS sr10.4 60# dpx Bull DPX/2 B.O.S. 61# drs ICL DRS/NX 62# dyn Dynix 63# epx EP/IX 64# ga4 GCC AIX 4.x for RS/6000 65# gas GCC Altos SVR4 66# gcs GCC Solaris with Blastwave Community Open Source Software 67# gh9 GCC HP-UX 9.x 68# ghp GCC HP-UX 10.x 69# ghs GCC HP-UX 10.x with Trusted Computer Base 70# go5 GCC 2.7.1 (95q4 from Skunkware _not_ 98q2!) SCO Open Server 5.0.x 71# gsc GCC Santa Cruz Operation 72# gsg GCC SGI 73# gso GCC Solaris 74# gsu GCC SUN-OS 75# gul GCC RISC Ultrix (DEC-5000) 76# h11 HP-UX 11i 77# hpp HP-UX 9.x (see gh9) 78# hpx HP-UX 10.x (see ghp, ghs, hxd, and shp) 79# hxd HP-UX 10.x with DCE security (see shp) 80# isc Interactive Systems 81# ldb Debian Linux 82# lfd Fedora Core 4 83# ln8 Linux for Nokia N800 84# lnx Linux with traditional passwords and crypt() in the C library 85# (see lnp, sl4, sl5, and slx) 86# lnp Linux with Pluggable Authentication Modules (PAM) 87# lmd Mandrake Linux 88# lr5 RedHat Enterprise 5 and later (same as lfd) 89# lrh RedHat Linux 7.2 and later 90# lsu SuSE Linux (same as lrh) 91# lyn LynxOS 92# mct MachTen 93# mnt Atari ST Mint (not MacMint) 94# neb NetBSD 95# nec NEC UX 96# nto QNX Neutrine RTP 97# nxt NEXTSTEP 98# nx3 NEXTSTEP 3.x 99# osf OSF/1 (see sos, os4) 100# os4 OSF/1 (Digital UNIX) 4 101# osi Apple iPhone and iPod Touch 102# osx Mac OS X 103# oxp Mac OS X with Pluggable Authentication Modules (PAM) 104# ptx PTX 105# pyr Pyramid 106# qnx QNX 4 107# s40 SUN-OS 4.0 (*not* Solaris) 108# sc5 SCO Open Server 5.0.x (see go5) 109# sco Santa Cruz Operation (see sc5, go5) 110# shp HP-UX with Trusted Computer Base 111# sgi Silicon Graphics IRIX 112# sg6 Silicon Graphics IRIX 6.5 113# sl4 Linux using -lshadow to get the crypt() function 114# sl5 Linux with shadow passwords, no extra libraries 115# slx Linux using -lcrypt to get the crypt() function 116# snx Siemens Nixdorf SININX or Reliant UNIX 117# soc Solaris with /opt/SUNWspro/bin/cc 118# sol Solaris (won't work unless "ucbcc" works -- use gso instead) 119# sos OSF/1 with SecureWare 120# ssn SUN-OS with shadow password security 121# sua Windows Vista (Enterprise or Ultima) Subsystem for Unix Applications 122# sun SUN-OS 4.1 or better (*not* Solaris) (see ssn) 123# sv2 SVR2 on AT&T PC-7300 (incomplete port) 124# sv4 generic SVR4 125# ult RISC Ultrix (DEC-5000) 126# uw2 UnixWare SVR4.2 127# vul VAX Ultrix 128# vu2 VAX Ultrix 2.3 (e.g. for VAXstation-2000 or similar old version) 129 130 131# Extra authenticators (e.g. OTP, Kerberos, etc.). Adds linkage for 132# auth_xxx.c and executes Makefile.xxx, where xxx is the name of the 133# authenticator. Some authenticators are only available from third parties. 134# 135# The following extra authenticators are bundled: 136# gss Kerberos V 137 138EXTRAAUTHENTICATORS= 139 140 141# Additional mailbox drivers. Add linkage for xxxdriver. Some drivers are 142# only available from third parties. 143# 144# The following extra drivers are bundled: 145# mbox if file "mbox" exists on the home directory, automatically moves mail 146# from the spool directory to "mbox" and uses "mbox" as INBOX. 147 148EXTRADRIVERS=mbox 149 150 151# Plaintext password type. Defines how plaintext password authentication is 152# done on this system. 153# 154# The following plaintext login types are bundled: 155# afs AFS authentication database 156# dce DCE authentication database 157# gss Kerberos V 158# nul plaintext authentication never permitted 159# pam PAM authentication (note: for Linux, you should use the "lnp" port 160# instead of setting this...also, you may have to modify PAMLDFLAGS 161# in the imap-[]/src/osdep/unix/Makefile 162# pmb PAM authentication for broken implementations such as Solaris. 163# you may have to modify PAMLDFLAGS 164# std system standard (typically passwd file), determined by port 165# two try alternative (defined by CHECKPWALT), then std 166 167PASSWDTYPE=std 168 169 170# SSL type. Defines whether or not SSL support is on this system 171# 172# The following SSL types are bundled: 173# none no SSL support 174# unix SSL support using OpenSSL 175# nopwd SSL support using OpenSSL, and plaintext authentication permitted only 176# in SSL/TLS sessions 177# sco link SSL before other libraries (for SCO systems) 178# unix.nopwd same as nopwd 179# sco.nopwd same as nopwd, plaintext authentication in SSL/TLS only 180# 181# SSLTYPE=nopwd is now the default as required by RFC 3501 182 183SSLTYPE=nopwd 184 185 186# IP protocol version 187# 188# The following IP protocol versions are defined: 189# o IPv4 support, no DNS (truly ancient systems) 190# 4 (default) IPv4 support only 191# 6 IPv6 and IPv4 support 192 193IP=6 194IP6=6 195 196 197# The following extra compilation flags are defined. None of these flags are 198# recommended. If you use these, include them in the EXTRACFLAGS. 199# 200# -DDISABLE_POP_PROXY 201# By default, the ipop[23]d servers offer POP->IMAP proxy access, 202# which allow a POP client to access mail on an IMAP server by using the 203# POP server as a go-between. Setting this option disables this 204# facility. 205# 206# -DOLDFILESUFFIX=\"xxx\" 207# Change the default suffix appended to the backup .newsrc file from 208# "old". 209# 210# -DSTRICT_RFC822_TIMEZONES 211# Disable recognition of the non-standard UTC (0000), MET (+0100), 212# EET (+0200), JST (+0900), ADT (-0300), AST (-0400), YDT (-0800), 213# YST (-0900), and HST (-1000) symbolic timezones. 214# 215# -DBRITISH_SUMMER_TIME 216# Enables recognition of non-standard symbolic timezone BST as +0100. 217# 218# -DBERING_STANDARD_TIME 219# Enables recognition of non-standard symbolic timezone BST as -1100. 220# 221# -DNEWFOUNDLAND_STANDARD_TIME 222# Enables recognition of non-standard symbolic timezone NST as -0330. 223# 224# -DNOME_STANDARD_TIME 225# Enables recognition of non-standard symbolic timezone NST as -1100. 226# 227# -DSAMOA_STANDARD_TIME 228# Enables recognition of non-standard symbolic timezone SST as -1100. 229# 230# -DY4KBUGFIX 231# Turn on the Y4K bugfix (yes, that's year 4000). It isn't well-known, 232# but century years evenly divisible by 4000 are *not* leap years in the 233# Gregorian calendar. A lot of "Y2K compilant" software does not know 234# about this rule. Remember to turn this on sometime in the next 2000 235# years. 236# 237# -DUSEORTHODOXCALENDAR 238# Use the more accurate Eastern Orthodox calendar instead of the 239# Gregorian calendar. The century years which are leap years happen 240# at alternating 400 and 500 year intervals without shifts every 4000 241# years. The Orthodox and Gregorian calendars diverge by 1 day for 242# gradually-increasing intervals, starting at 2800-2900, and becoming 243# permanent at 48,300. 244# 245# -DUSEJULIANCALENDAR 246# Use the less accurate Julian calendar instead of the Gregorian 247# calendar. Leap years are every 4 years, including century years. 248# My apologies to those in the English-speaking world who object to 249# the reform of September 2, 1752 -> September 14, 1752, since this 250# code still uses January 1 (which Julius Ceasar decreed as the start 251# of the year, which since 153 BCE was the day that Roman consuls 252# took office), rather than the traditional March 25 used by the 253# British. As of 2005, the Julian calendar and the Gregorian calendar 254# diverge by 15 days. 255 256EXTRACFLAGS= 257 258 259# Extra linker flags (additional/alternative libraries, etc.) 260 261EXTRALDFLAGS= 262 263 264# Special make flags (e.g. to override make environment variables) 265 266EXTRASPECIALS= 267SPECIALS= 268 269 270# Normal commands 271 272CAT=cat 273CD=cd 274LN=ln -s 275MAKE=make 276MKDIR=mkdir 277BUILDTYPE=rebuild 278RM=rm -rf 279SH=sh 280SYSTEM=unix 281TOOLS=tools 282TOUCH=touch 283 284 285# Primary build command 286 287BUILD=$(MAKE) build EXTRACFLAGS='$(EXTRACFLAGS)'\ 288 EXTRALDFLAGS='$(EXTRALDFLAGS)'\ 289 EXTRADRIVERS='$(EXTRADRIVERS)'\ 290 EXTRAAUTHENTICATORS='$(EXTRAAUTHENTICATORS)'\ 291 PASSWDTYPE=$(PASSWDTYPE) SSLTYPE=$(SSLTYPE) IP=$(IP)\ 292 EXTRASPECIALS='$(EXTRASPECIALS)' 293 294 295# Make the IMAP Toolkit 296 297all: c-client SPECIALS rebuild 298 299c-client: 300 @echo Not processed yet. In a first-time build, you must specify 301 @echo the system type so that the sources are properly processed. 302 @false 303 304 305SPECIALS: 306 echo $(SPECIALS) > SPECIALS 307 308# Note on SCO you may have to set LN to "ln". 309 310a32 a41 a52 aix bs3 bsi d-g d54 do4 drs epx ga4 gas gh9 ghp ghs go5 gsc gsg gso gul h11 hpp hpx lnp lyn mct mnt nec nto nxt nx3 osf os4 ptx qnx sc5 sco sgi sg6 shp sl4 sl5 slx snx soc sol sos uw2: an 311 $(BUILD) BUILDTYPE=$@ 312 313# If you use sv4, you may find that it works to move it to use the an process. 314# If so, you probably will want to delete the "-Dconst=" from the sv4 CFLAGS in 315# the c-client Makefile. 316 317aos art asv aux bsd cvx dpx dyn isc pyr sv4 ult vul vu2: ua 318 $(BUILD) BUILDTYPE=$@ 319 320 321# Knotheads moved Kerberos and SSL locations on these platforms 322 323# Paul Vixie claims that all FreeBSD versions have working IPv6 324 325bsf: an 326 $(TOUCH) ip6 327 $(BUILD) BUILDTYPE=$@ IP=$(IP6) \ 328 PASSWDTYPE=pam \ 329 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/local/certs SSLKEYS=/usr/local/certs GSSINCLUDE=/usr/include GSSLIB=/usr/lib PAMLDFLAGS=-lpam" 330 331# I assume that Theo did the right thing for IPv6. OpenBSD does not have PAM. 332 333bso: an 334 $(TOUCH) ip6 335 $(BUILD) BUILDTYPE=$@ IP=$(IP6) \ 336 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/etc/ssl SSLKEYS=/usr/local/certs GSSINCLUDE=/usr/include GSSLIB=/usr/lib" 337 338# Info from Joel Reicher about NetBSD SSL paths. I assume it has PAM because pam is in NetBSD sources... 339 340neb: an 341 $(TOUCH) ip6 342 $(BUILD) BUILDTYPE=$@ IP=$(IP6) \ 343 PASSWDTYPE=pam \ 344 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/etc/openssl/certs SSLKEYS=/etc/openssl/private GSSINCLUDE=/usr/include GSSLIB=/usr/lib PAMLDFLAGS=-lpam" 345 346cyg: an 347 $(BUILD) BUILDTYPE=cyg \ 348 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/ssl/certs SSLKEYS=/usr/ssl/certs" 349 350gcs: an 351 $(BUILD) BUILDTYPE=gso \ 352 SPECIALS="SSLINCLUDE=/opt/csw/include/openssl SSLLIB=/opt/csw/lib SSLCERTS=/opt/csw/ssl/certs SSLKEYS=/opt/csw/ssl/certs" 353 354ldb: an 355 $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ 356 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/local/certs SSLKEYS=/usr/local/certs GSSINCLUDE=/usr/include GSSLIB=/usr/lib MAILSPOOL=/var/mail" 357 358lfd: an 359 $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ 360 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/etc/pki/tls/certs SSLKEYS=/etc/pki/tls/private GSSDIR=/usr/kerberos" 361 362ln8: an 363 $(TOUCH) ip6 364 $(BUILD) BUILDTYPE=slx IP=$(IP6) \ 365 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/lib/ssl/certs MAILSPOOL=/var/mail" 366 367 368# RHE5 does not have the IPv6 bug 369 370lr5: an 371 $(TOUCH) ip6 372 $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ 373 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/etc/pki/tls/certs SSLKEYS=/etc/pki/tls/private GSSDIR=/usr/kerberos" 374 375lmd: an 376 $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ 377 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/lib/ssl/certs SSLKEYS=/usr/lib/ssl/private GSSINCLUDE=/usr/include GSSLIB=/usr/lib" 378 379# RHE3 definitely has the IPv6 bug 380 381lrh: lrhok an 382 $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ 383 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/share/ssl/certs SSLKEYS=/usr/share/ssl/private GSSDIR=/usr/kerberos" 384 385lrhok: 386 @$(SH) -c '(test ! -d /etc/pki/tls ) || make lrhwarn' 387 @$(TOUCH) lrhok 388 389lrhwarn: 390 @echo You are building for OLD versions of RedHat Linux. This build 391 @echo is NOT suitable for RedHat Enterprise 5, which stores SSL/TLS 392 @echo certificates and keys in /etc/pki/tls rather than /usr/share/ssl. 393 @echo If you want to build for modern RedHat Linux, you should use 394 @echo make lr5 instead. 395 @echo Do you want to continue this build? Type y or n please: 396 @$(SH) -c 'read x; case "$$x" in y) exit 0;; *) exit 1;; esac' 397 @echo OK, I will remember that you really want to build for old 398 @echo RedHat Linux. You will not see this message again. 399 @echo If you realize that you really wanted to build for modern 400 @echo RedHat Linux, then do the following commands: 401 @echo % rm lrhok 402 @echo % make clean 403 @echo % make lr5 404 405lsu: an 406 $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ 407 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/usr/share/ssl/certs SSLKEYS=/usr/share/ssl/private GSSDIR=/usr/kerberos" 408 409# iToy does not have Kerberos or PAM. It doesn't have a 410# /System/Library/OpenSSL directory either, but the libcrypto shared library 411# has these locations so this is what we will use. 412 413osi: an 414 $(TOUCH) ip6 415 $(BUILD) BUILDTYPE=osx IP=$(IP6) CC=arm-apple-darwin-gcc \ 416 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/System/Library/OpenSSL/certs SSLKEYS=/System/Library/OpenSSL/private" 417 418oxp: an 419 $(TOUCH) ip6 420 $(BUILD) BUILDTYPE=osx IP=$(IP6) EXTRAAUTHENTICATORS="$(EXTRAAUTHENTICATORS) gss" \ 421 PASSWDTYPE=pam \ 422 EXTRACFLAGS="$(EXTRACFLAGS) -DMAC_OSX_KLUDGE=1" \ 423 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/System/Library/OpenSSL/certs SSLKEYS=/System/Library/OpenSSL/private GSSINCLUDE=/usr/include GSSLIB=/usr/lib PAMDLFLAGS=-lpam" 424 425osx: osxok an 426 $(TOUCH) ip6 427 $(BUILD) BUILDTYPE=$@ IP=$(IP6) EXTRAAUTHENTICATORS="$(EXTRAAUTHENTICATORS) gss" \ 428 SPECIALS="SSLINCLUDE=/usr/local/include SSLLIB=/usr/local/lib SSLCERTS=/System/Library/OpenSSL/certs SSLKEYS=/System/Library/OpenSSL/private GSSINCLUDE=/usr/include GSSLIB=/usr/lib" 429 430osxok: 431 @$(SH) -c '(test ! -f /usr/include/pam/pam_appl.h ) || make osxwarn' 432 @$(TOUCH) osxok 433 434osxwarn: 435 @echo You are building for OLD versions of Mac OS X. This build is 436 @echo NOT suitable for modern versions of Mac OS X, such as Tiger, 437 @echo which use PAM-based authentication. If you want to build for 438 @echo modern Mac OS X, you should use make oxp instead. 439 @echo Do you want to continue this build? Type y or n please: 440 @$(SH) -c 'read x; case "$$x" in y) exit 0;; *) exit 1;; esac' 441 @echo OK, I will remember that you really want to build for old 442 @echo Mac OS X. You will not see this message again. 443 @echo If you realize that you really wanted to build for modern 444 @echo Mac OS X, then do the following commands: 445 @echo % rm osxok 446 @echo % make clean 447 @echo % make oxp 448 449 450# Linux shadow password support doesn't build on traditional systems, but most 451# Linux systems are shadow these days. 452 453lnx: lnxnul an 454 $(BUILD) BUILDTYPE=$@ 455 456lnxnul: 457 @$(SH) -c '(test $(PASSWDTYPE) = nul) || make lnxok' 458 459lnxok: 460 @echo You are building for traditional Linux. Most modern Linux 461 @echo systems require that you build using make slx. 462 @echo Do you want to continue this build? Type y or n please: 463 @$(SH) -c 'read x; case "$$x" in y) exit 0;; *) exit 1;; esac' 464 @echo OK, I will remember that you really want to build for 465 @echo traditional Linux. You will not see this message again. 466 @echo If you discover that you can not log in to the POP and IMAP 467 @echo servers, then do the following commands: 468 @echo % rm lnxok 469 @echo % make clean 470 @echo % make slx 471 @echo If slx does not work, try sl4 or sl5. Be sure to do a 472 @echo make clean between each try! 473 @$(TOUCH) lnxok 474 475 476# SUN-OS C compiler makes you load libdl by hand... 477 478ssn sun: sunok suntools ua 479 $(BUILD) BUILDTYPE=$@ 480 481suntools: 482 $(CD) tools;$(MAKE) LDFLAGS=-ldl 483 484gsu: sunok an 485 $(BUILD) BUILDTYPE=$@ 486 487s40: sunok ua 488 $(BUILD) BUILDTYPE=$@ 489 490sunok: 491 @echo You are building for the old BSD-based SUN-OS. This is NOT 492 @echo the modern SVR4-based Solaris. If you want to build for 493 @echo Solaris, you should use make gso or make sol or make soc. Do 494 @echo you want to continue this build? Type y or n please: 495 @$(SH) -c 'read x; case "$$x" in y) exit 0;; *) exit 1;; esac' 496 @echo OK, I will remember that you really want to build for the old 497 @echo BSD-based SUN-OS. You will not see this message again. 498 @echo If the build fails and you realize that you really wanted to 499 @echo build for Solaris, then do the following commands: 500 @echo % rm sunok 501 @echo % make clean 502 @echo % make gso 503 @echo If gso does not work, try sol. Be sure to do a make clean 504 @echo between each try! 505 @$(TOUCH) sunok 506 507 508# SVR2 doesn't have symbolic links (at least my SVR2 system doesn't) 509 510sv2: 511 $(MAKE) ua LN=ln 512 $(BUILD) BUILDTYPE=$@ LN=ln 513 514# Hard links don't quite work right in SUA, and there don't seem to be any 515# SSL includes. However, IPv6 works. 516 517sua: 518 $(TOUCH) ip6 sslnone 519 $(MAKE) an LN=cp SSLTYPE=none 520 $(BUILD) BUILDTYPE=$@ LN=cp IP=$(IP6) SSLTYPE=none 521 522 523# Pine port names, not distinguished in c-client 524 525bs2: an 526 $(BUILD) BUILDTYPE=bsi 527 528pt1: an 529 $(BUILD) BUILDTYPE=ptx 530 531 532# Compatibility 533 534hxd: 535 $(BUILD) BUILDTYPE=hpx PASSWDTYPE=dce 536 537# Amiga 538 539ami am2 ama amn: 540 $(MAKE) an LN=cp SYSTEM=amiga 541 $(BUILD) BUILDTYPE=$@ LN=cp 542 543 544# Courtesy entries for Microsoft systems 545 546nt: 547 nmake /nologo /f makefile.nt 548 549ntk: 550 nmake /nologo /f makefile.ntk 551 552w2k: 553 nmake /nologo /f makefile.w2k 554 555wce: 556 nmake /nologo /f makefile.wce 557 558 559# SSL build choices 560 561sslnopwd sslunix.nopwd sslsco.nopwd: 562 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 563 @echo + Building in full compliance with RFC 3501 security 564 @echo + requirements: 565 @echo ++ TLS/SSL encryption is supported 566 @echo ++ Unencrypted plaintext passwords are prohibited 567 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 568 569sslunix sslsco: 570 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 571 @echo + Building in PARTIAL compliance with RFC 3501 security 572 @echo + requirements: 573 @echo + Compliant: 574 @echo ++ TLS/SSL encryption is supported 575 @echo + Non-compliant: 576 @echo ++ Unencrypted plaintext passwords are permitted 577 @echo + 578 @echo + In order to rectify this problem, you MUST build with: 579 @echo ++ SSLTYPE=$(SSLTYPE).nopwd 580 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 581 582nounenc: 583 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 584 @echo + At your request, this build with unencrypted authentication has 585 @echo + been CANCELLED. 586 @echo + You must start over with a new make command. 587 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 588 589 590sslnone: 591 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 592 @echo + Building in NON-COMPLIANCE with RFC 3501 security requirements: 593 @echo + Non-compliant: 594 @echo ++ TLS/SSL encryption is NOT supported 595 @echo ++ Unencrypted plaintext passwords are permitted 596 @echo + 597 @echo + In order to rectify this problem, you MUST build with: 598 @echo ++ SSLTYPE=nopwd 599 @echo + You must also have OpenSSL or equivalent installed. 600 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 601 602nonossl: 603 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 604 @echo + At your request, this build with no TLS/SSL support has been 605 @echo + CANCELLED. 606 @echo + You must start over with a new make command. 607 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 608 609 610# IP build choices 611 612ip4: 613 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 614 @echo + Building with IPv4 support 615 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 616 617ip6: 618 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 619 @echo + Building with IPv6 support 620 @echo + 621 @echo + NOTE: Some versions of glibc have a bug in the getaddrinfo 622 @echo + call which does DNS name resolution. This bug causes host 623 @echo + names to be canonicalized incorrectly, as well as doing an 624 @echo + unnecessary and performance-sapping reverse DNS call. This 625 @echo + problem does not affect the IPv4 gethostbyname call. 626 @echo + 627 @echo + getaddrinfo works properly on Mac OS X and Windows. However, 628 @echo + the problem has been observed on some Linux systems. 629 @echo + 630 @echo + If you answer n to the following question the build will be 631 @echo + cancelled and you must rebuild. If you did not specify IPv6 632 @echo + yourself, try adding IP6=4 to the make command line. 633 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 634 @echo 635 @echo Do you want to build with IPv6 anyway? Type y or n please: 636 @$(SH) -c 'read x; case "$$x" in y) exit 0;; *) (make noip6;exit 1);; esac' 637 @echo OK, I will remember that you really want to build with IPv6. 638 @echo You will not see this message again. 639 @$(TOUCH) ip6 640 641noip6: 642 $(MAKE) clean 643 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 644 @echo + At your request, this build with IPv6 has been CANCELLED. 645 @echo + You must start over with a new make command. 646 @echo + 647 @echo + If you wish to rebuild without IPv6 support, do one of the 648 @echo + following: 649 @echo + 650 @echo + 1. If you specified IP=6 on the make command line, omit it. 651 @echo + 652 @echo + 2. Some of the Linux builds automatically select IPv6. If 653 @echo + you choose one of those builds, add IP6=4 to the make command 654 @echo + line. Note that this is IP6=4, not IP=4. 655 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 656 657# C compiler types 658 659an ua: 660 @$(MAKE) ssl$(SSLTYPE) 661 @echo Applying $@ process to sources... 662 $(TOOLS)/$@ "$(LN)" src/c-client c-client 663 $(TOOLS)/$@ "$(LN)" src/ansilib c-client 664 $(TOOLS)/$@ "$(LN)" src/charset c-client 665 $(TOOLS)/$@ "$(LN)" src/osdep/$(SYSTEM) c-client 666 $(TOOLS)/$@ "$(LN)" src/mtest mtest 667 $(TOOLS)/$@ "$(LN)" src/ipopd ipopd 668 $(TOOLS)/$@ "$(LN)" src/imapd imapd 669 $(TOOLS)/$@ "$(LN)" src/mailutil mailutil 670 $(TOOLS)/$@ "$(LN)" src/mlock mlock 671 $(TOOLS)/$@ "$(LN)" src/dmail dmail 672 $(TOOLS)/$@ "$(LN)" src/tmail tmail 673 $(LN) $(TOOLS)/$@ . 674 675build: OSTYPE rebuild rebuildclean 676 677OSTYPE: 678 @$(MAKE) ip$(IP) 679 @echo Building c-client for $(BUILDTYPE)... 680 @$(TOUCH) SPECIALS 681 echo `$(CAT) SPECIALS` $(EXTRASPECIALS) > c-client/SPECIALS 682 $(CD) c-client;$(MAKE) $(BUILDTYPE) EXTRACFLAGS='$(EXTRACFLAGS)'\ 683 EXTRALDFLAGS='$(EXTRALDFLAGS)'\ 684 EXTRADRIVERS='$(EXTRADRIVERS)'\ 685 EXTRAAUTHENTICATORS='$(EXTRAAUTHENTICATORS)'\ 686 PASSWDTYPE=$(PASSWDTYPE) SSLTYPE=$(SSLTYPE) IP=$(IP)\ 687 $(SPECIALS) $(EXTRASPECIALS) 688 echo $(BUILDTYPE) > OSTYPE 689 $(TOUCH) rebuild 690 691rebuild: 692 @$(SH) -c '(test $(BUILDTYPE) = rebuild -o $(BUILDTYPE) = `$(CAT) OSTYPE`) || (echo Already built for `$(CAT) OSTYPE` -- you must do \"make clean\" first && exit 1)' 693 @echo Rebuilding c-client for `$(CAT) OSTYPE`... 694 @$(TOUCH) SPECIALS 695 $(CD) c-client;$(MAKE) all CFLAGS="`$(CAT) CFLAGS`" `$(CAT) SPECIALS` 696 697rebuildclean: 698 $(SH) -c '$(RM) rebuild || true' 699 700bundled: 701 @echo Building bundled tools... 702 $(CD) mtest;$(MAKE) 703 $(CD) ipopd;$(MAKE) 704 $(CD) imapd;$(MAKE) 705 $(CD) mailutil;$(MAKE) 706 @$(SH) -c '(test -f /usr/include/sysexits.h ) || make sysexitwarn' 707 $(CD) mlock;$(MAKE) || true 708 $(CD) dmail;$(MAKE) || true 709 $(CD) tmail;$(MAKE) || true 710 711 712sysexitwarn: 713 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 714 @echo + Hmm...it does not look like /usr/include/sysexits.h exists. 715 @echo + Either your system is too ancient to have the sysexits.h 716 @echo + include, or your C compiler gets it from some other location 717 @echo + than /usr/include. If your system is too old to have the 718 @echo + sysexits.h include, you will not be able to build the 719 @echo + following programs. 720 @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 721 722clean: 723 @echo Removing old processed sources and binaries... 724 $(SH) -c '$(RM) an ua OSTYPE SPECIALS c-client mtest imapd ipopd mailutil mlock dmail tmail || true' 725 $(CD) tools;$(MAKE) clean 726 727 728# A monument to a hack of long ago and far away... 729love: 730 @echo not war? 731