configure
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:135k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. Note "  Found tiffio.h version ${header_ver}"
  2. Note "  Found libtiff version ${lib_ver}"
  3. if [ ${header_ver} -ge 19960307 ]; then
  4.     case ${lib_ver} in
  5. 3.4) tiff_runlen_t="uint16" ;;
  6. 3.[56789]) tiff_runlen_t="uint32" ;;
  7.     esac
  8. fi
  9.     else
  10. cat 1>&2 <<EOF
  11. Missing TIFF Library.
  12. Compilation of the following test program failed:
  13. ----------------------------------------------------------
  14. EOF
  15.         cat t.c 1>&2
  16.         cat 1>&2 <<EOF
  17. ----------------------------------------------------------
  18. TIFFINC=${OTIFFINC}
  19. LIBTIFF=${LIBTIFF}
  20. Verify that you have the TIFFINC and LIBTIFF configuration parameters
  21. set correctly for your system (see above) and that any environment
  22. variables are setup that are needed to locate a libtiff DSO at runtime
  23. (e.g. LD_LIBRARY_PATH). Also be sure that any relative pathnames are
  24. made relative to the top of the build area.
  25. EOF
  26. boom
  27. return 1
  28.     fi
  29.     if [ "${tiff_runlen_t}" != "" ]; then
  30. export tiff_runlen_t
  31. return 0
  32.     else
  33. cat 1>&2 <<EOF
  34. Incompatible TIFF Library.
  35. HylaFAX ${VERSION} requires TIFF software distribution versions 3.4 through
  36. 3.9.  If you do not have up to date TIFF software on your system
  37. then you can retrieve it from the location where you obtained this software.
  38. The Home Page for version 3.5 and later is http://www.libtiff.org
  39. EOF
  40. boom
  41. return 1
  42.     fi
  43. }
  44. #
  45. # Check an existing port.h to see if it was created
  46. # for the target and compiler we're using.
  47. #
  48. CheckPortDotH()
  49. {
  50.     getConfigTag TARGET port.h; target="$param"
  51.     getConfigTag CCOMPILER port.h; ccompiler="$param"
  52.     getConfigTag CXXCOMPILER port.h; cxxcompiler="$param"
  53.     CCOMP=$CCOMPILER;
  54. test $ISGCC = yes && CCOMP="${CCOMP}-${GCCversion}"
  55.     CXXCOMP=$CXXCOMPILER;
  56. test $ISGXX = yes && CXXCOMP="${CXXCOMP}-${GCCversion}"
  57.     test "$target" = "$TARGET" && 
  58.     test "$ccompiler" = "$CCOMP" && 
  59.     test "$cxxcompiler" = "$CXXCOMP"
  60. }
  61. #
  62. # Built port.h and, optionally, termios.h based on
  63. # the system and compiler setup.
  64. #
  65. BuildPortDotH()
  66. {
  67.     Note ""
  68.     Note "Creating port.h with necessary definitions."
  69.     (EmitCPlusPlusPrologue _PORT_
  70.     EmitConfigurationDefinitions
  71.     echo '#include <sys/types.h>'
  72.     TYPES_H="sys/types.h"
  73.     if CheckForIncludeFile sys/bsdtypes.h; then
  74. Note "... configure use of <sys/bsdtypes.h>"
  75.         echo '#include <sys/bsdtypes.h>'
  76. TYPES_H="$TYPES_H sys/bsdtypes.h"
  77.     fi
  78.     CheckVarDecl uid_t 'typedef int uid_t;' $TYPES_H
  79.     CheckVarDecl gid_t 'typedef int gid_t;' $TYPES_H
  80.     CheckVarDecl mode_t 'typedef int mode_t;' $TYPES_H stdlib.h
  81.     CheckVarDecl off_t 'typedef long off_t;' $TYPES_H stdlib.h
  82.     CheckVarDecl pid_t 'typedef int pid_t;' $TYPES_H stdlib.h
  83.     CheckVarDecl size_t 'typedef unsigned size_t;' $TYPES_H stdlib.h
  84.     CheckVarDecl dev_t 'typedef int dev_t;' $TYPES_H stdlib.h
  85.     if CheckForIncludeFile stdint.h; then
  86. Note "... configure use of <stdint.h>"
  87.         echo '#define HAVE_STDINT_H 1'
  88. TYPES_H="$TYPES_H stdint.h"
  89.     fi
  90.     CheckVarDecl intptr_t 'typedef long intptr_t;' $TYPES_H
  91.     if [ $CONFIG_OSFCNH = auto ]; then
  92.         if CheckForIncludeFile osfcn.h; then
  93.         CONFIG_OSFCNH=yes
  94.         else
  95.             CONFIG_OSFCNH=no
  96.         fi
  97.     fi
  98.     if [ $CONFIG_OSFCNH = yes ]; then
  99. Note "... configure use of <osfcn.h>"
  100. echo '#define HAS_OSFCN_H 1'
  101. OSFCNH='osfcn.h'
  102.     else
  103. OSFCNH=
  104.     fi
  105.     if CheckForIncludeFile sys/select.h; then
  106. Note "... configure use of <sys/select.h>"
  107. echo '#define HAS_SELECT_H 1'
  108. SELECTH='sys/select.h'
  109.     else
  110. SELECTH=
  111.     fi
  112.     #
  113.     # Check whether compiler uses new C++ header style
  114.     #
  115.     CheckForIncludeFile new || {
  116.         Note "... configure use of new.h"
  117.             echo '#define HAS_OLD_NEW_H 1'
  118.     }
  119.     #
  120.     # Some vendors have changed the socket API so that
  121.     # call-by-reference parameters that give buffer
  122.     # lengths are not int; this must be dealt with to
  123.     # get the code to compile.  Note that we only emit
  124.     # the define if the type is not an int; we do this
  125.     # so Socket.h can include code that assumes the
  126.     # default so folks don't have to rerun configure.
  127.     #
  128.     # The HP-UX case is a bit peculiar.  There socklen_t 
  129.     # is defined as size_t, but in order to use it...
  130.     # "To use UNIX95/98 style sockets in HP-UX, the libxnet 
  131.     # library needs to be added to the link line. Also, the 
  132.     # macro, _XOPEN_SOURCE, needs to be defined, and the 
  133.     # macro, _XOPEN_SOURCE_EXTENDED, needs to be defined as 1. 
  134.     # Refer to HP-UX manpage, xopen_networking(7) for further 
  135.     # details."  Otherwise, we must define
  136.     # CONFIG_HPUX_SOCKLEN_T_BRAINDAMAGE.
  137.     #
  138.     test "$CONFIG_SOCKARGLENTYPE" || { # int vs unsigned long vs ...
  139.         case $TARGET in
  140.     # XXX fill in for busted systems
  141.         *-aix4*) CONFIG_SOCKARGLENTYPE=size_t;;
  142.         *-hpux11*) CONFIG_SOCKARGLENTYPE=size_t;;
  143.         *sysv4.2uw2*) CONFIG_SOCKARGLENTYPE=size_t;;
  144.         *-univel-*) CONFIG_SOCKARGLENTYPE=size_t;;
  145.         *-sysv5UnixWare*) CONFIG_SOCKARGLENTYPE=size_t;;
  146.         *-sysv5OpenUNIX*) CONFIG_SOCKARGLENTYPE=size_t;;
  147.         *-sysv5SCO_SV*) CONFIG_SOCKARGLENTYPE=size_t;;
  148. *-freebsd4*) CONFIG_SOCKARGLENTYPE=u_int32_t;;
  149. *-freebsd5*) CONFIG_SOCKARGLENTYPE=u_int32_t;;
  150.         *) CONFIG_SOCKARGLENTYPE=int;;
  151.         esac
  152.     }
  153.     TYPES_H="$TYPES_H sys/socket.h"
  154.     CheckVarDecl socklen_t "typedef $CONFIG_SOCKARGLENTYPE socklen_t;" $TYPES_H
  155.     #
  156.     # Select signal handler type casts.
  157.     #
  158.     if [ $ISGXX = yes ]; then
  159.         #
  160.         # Must use -pendantic-errors with gcc to insure (sig_t) (...)
  161.         # is treated as an error instead of a warning when searching
  162.         # for the proper signal handler types below.
  163.         #
  164.         OGCXXOPTS="$GCXXOPTS"
  165.         GCXXOPTS="$GCXXOPTS -pedantic-errors"
  166.         makeDefs xdefs
  167.     fi
  168.     SIGHANDLERTYPES="
  169.         $SIGHANDLERTYPES
  170.         (sig_t)
  171.         (SIG_PF)
  172.         (void(*)(int))
  173.         (void(*)())
  174.         (int)
  175.     "
  176.     SIGHANDLERTYPE=
  177.     for i in $SIGHANDLERTYPES; do
  178.         CheckSigactionHandler "$i" && {
  179.             SIGHANDLERTYPE="#define fxSIGACTIONHANDLER $i"
  180.             Note "... use $i for sigaction handler type"
  181.             break;
  182.     }
  183.     done
  184.     # Only look for sigvec if we cannot find a sigaction() type
  185.     if [ -z "$SIGHANDLERTYPE" ]; then
  186.         for i in $SIGHANDLERTYPES; do
  187.             CheckSigvecHandler "$i" && {
  188.                 SIGHANDLERTYPE="#define fxSIGVECHANDLER $i"
  189.                 Note "... use $i for sigvec handler type"
  190.                 break;
  191.         }
  192.         done
  193.     fi
  194.     echo $SIGHANDLERTYPE
  195.     SIGHANDLERTYPE=
  196.     for i in $SIGHANDLERTYPES; do
  197.         CheckSignalHandler "$i" && {
  198.             SIGHANDLERTYPE="#define fxSIGHANDLER $i"
  199.             Note "... use $i for signal handler type"
  200.             break;
  201.         }
  202.     done
  203.     echo $SIGHANDLERTYPE
  204.     if [ $ISGXX = yes ]; then
  205. GCXXOPTS="$OGCXXOPTS"
  206. makeDefs xdefs
  207.     fi
  208.     CheckForMMAP && {
  209. echo '#define HAS_MMAP 1'
  210. Note "... configure use of mmap for memory-mapped files"
  211. CheckFuncDecl mmap 
  212.     'extern void* mmap(void*, size_t, int, int, int, off_t);' sys/mman.h
  213. CheckFuncDecl munmap 'extern int munmap (caddr_t, int);' sys/mman.h
  214.     }
  215.     CheckFuncDecl bzero 'extern void bzero(void *, int);' string.h
  216.     CheckFuncDecl mkstemp 'extern int mkstemp(char *);' stdlib.h stdio.h unistd.h
  217.     CheckFuncDecl strerror 'extern char* strerror(int);' string.h
  218.     CheckFuncDecl strncasecmp 
  219. 'extern int strncasecmp(const char*, const char*, size_t);' string.h
  220.     CheckFuncDecl strcasecmp 
  221. 'extern int strcasecmp(const char*, const char*);' string.h
  222.     CheckFuncDecl strdup 'extern char* strdup(const char*);' string.h
  223.     CheckFuncDecl memset 'extern void* memset(void*, int, size_t);' string.h
  224.     CheckFuncDecl getpass 'extern char* getpass(const char *);' stdlib.h unistd.h
  225.     CheckFuncDecl random 'extern long random(void);' math.h stdlib.h
  226.     CheckFuncDecl srandom 'extern void srandom(int);' math.h stdlib.h
  227.     CheckFuncDecl floor 'extern double floor(double);' math.h
  228.     CheckFuncDecl waitpid 'extern pid_t waitpid(pid_t, int *, int);' sys/wait.h
  229.     CheckForFunc sysconf && {
  230. echo '#define HAS_SYSCONF 1'
  231. Note "... configure use of sysconf"
  232. CheckFuncDecl sysconf 'extern long sysconf(int);' unistd.h
  233.     }
  234.     CheckForFunc ulimit && {
  235. echo '#define HAS_ULIMIT 1'
  236. Note "... configure use of ulimit"
  237. CheckFuncDecl ulimit 'extern long ulimit(int, ...);' ulimit.h
  238.     }
  239.     CheckForFunc getdtablesize && {
  240. echo '#define HAS_GETDTABLESIZE 1'
  241. Note "... configure use of getdtablesize"
  242. CheckFuncDecl getdtablesize 'extern int getdtablesize(void);' unistd.h
  243.     }
  244.     CheckDefine _POSIX_OPEN_MAX '_POSIX_OPEN_MAX 16' limits.h
  245.     CheckDefine howmany 'howmany(x, y) (((x)+((y)-1))/(y))' $TYPES_H
  246.     CheckForFuncDecl sigvec signal.h || {
  247. echo 'struct sigvec;'
  248. AddFuncDecl sigvec 
  249.     'extern int sigvec(int, const struct sigvec*, struct sigvec*);'
  250.     }
  251.     CheckForFuncDecl sigaction signal.h || {
  252. echo 'struct sigaction;'
  253. AddFuncDecl sigaction 
  254.     'extern int sigaction(int, const struct sigaction*, struct sigaction*);'
  255.     }
  256.     CheckFuncDecl kill 'extern int kill(pid_t, int);' signal.h
  257.     CheckFuncDecl close 'extern int close(int);' unistd.h
  258.     CheckFuncDecl getuid 'extern uid_t getuid(void);' unistd.h
  259.     CheckFuncDecl geteuid 'extern uid_t geteuid(void);' unistd.h
  260.     CheckFuncDecl seteuid 'extern int seteuid(uid_t);' unistd.h
  261.     CheckFuncDecl setegid 'extern int setegid(gid_t);' unistd.h
  262.     CheckFuncDecl setenv 'int setenv(const char *, const char *, int);' stdlib.h
  263.     CheckFuncDecl ftruncate 'extern int ftruncate(int, off_t);' unistd.h
  264.     CheckFuncDecl getdtablesize 'extern int getdtablesize(void);' unistd.h
  265.     CheckFuncDecl chroot 'extern int chroot(const char *path);' unistd.h
  266.     #
  267.     # unistd.h is where many people put it
  268.     # sys/select.h is for USL-derived code
  269.     # sys/time.h is for HP systems (sigh)
  270.     # sys/types.h is for yet other systems (sigh sigh)
  271.     #
  272.     CheckForFuncDecl select unistd.h $SELECTH sys/time.h $TYPES_H || {
  273. echo 'struct fd_set;'
  274. echo 'struct timeval;'
  275. AddFuncDecl select 
  276.     'extern int select(int,struct fd_set*,struct fd_set*,struct fd_set*,struct timeval*);'
  277.     }
  278.     CheckFuncDecl unlink 'extern int unlink(const char*);' unistd.h
  279.     CheckFuncDecl read 'extern int read(int, const void*, unsigned int);' unistd.h
  280.     CheckFuncDecl ioctl 'extern int ioctl(int, int, ...);' unistd.h sys/ioctl.h
  281.     CheckForFunc fchown && {
  282. echo '#define HAS_FCHOWN 1'
  283. Note "... configure use of fchown"
  284. CheckFuncDecl fchown 'extern int fchown(int, uid_t, gid_t);' unistd.h
  285.     }
  286.     CheckFuncDecl gethostname 'extern int gethostname(char*, int);' unistd.h $OSFCNH
  287.     CheckFuncDecl malloc 'extern void* malloc(size_t);' stdlib.h
  288.     CheckFuncDecl realloc 'extern void* realloc(void*, size_t);' stdlib.h
  289.     CheckFuncDecl free 'extern void free(void*);' stdlib.h
  290.     CheckFuncDecl strtoul 
  291. 'extern unsigned long strtoul(const char*, char**, int);' stdlib.h
  292.     #
  293.     # unistd.h is for sco3.2v4.[0-2] and GNU libc (yech!)
  294.     #
  295.     CheckFuncDecl getopt 
  296. 'extern int getopt(int, char* const*, const char*);' stdlib.h unistd.h
  297.     CheckFuncDecl isatty 'extern int isatty(int);' stdlib.h unistd.h
  298.     CheckVarDecl 'char.*optarg' 'extern char* optarg;' stdlib.h unistd.h
  299.     CheckVarDecl 'int.*opterr' 'extern int opterr;' stdlib.h unistd.h
  300.     CheckVarDecl 'int.*optind' 'extern int optind;' stdlib.h unistd.h
  301.     CheckFuncDecl system 'extern int system(const char*);' stdlib.h
  302.     CheckFuncDecl mktemp 'extern char* mktemp(char*);' stdlib.h stdio.h unistd.h
  303.     CheckStdio popen 'extern FILE* popen(const char *, const char *);'
  304.     CheckStdio pclose 'extern int pclose(FILE*);'
  305.     CheckStdio fdopen 'extern FILE* fdopen(int, const char*);'
  306.     CheckStdio snprintf 'extern int snprintf(char*, size_t, const char*,...);'
  307.     CheckForFuncDecl vsnprintf stdio.h || {
  308. echo '#include <stdarg.h>'
  309. AddFuncDecl vsnprintf 'extern int vsnprintf(char*, size_t, const char*, va_list);'
  310.     }
  311.     CheckForDefine fileno stdio.h || {
  312. CheckStdio fileno 'extern int fileno(FILE*);'
  313.     }
  314.     CheckFuncDecl opendir 'extern DIR* opendir(const char*);' dirent.h
  315.     CheckFuncDecl syslog 'extern void syslog(int, const char*, ...);' syslog.h
  316.     CheckForFuncDecl vsyslog syslog.h || {
  317. echo '#include <stdarg.h>'
  318. AddFuncDecl vsyslog 'extern void vsyslog(int, const char*, va_list);'
  319.     }
  320.     CheckFuncDecl closelog 'extern void closelog(void);' syslog.h
  321.     CheckFuncDecl openlog 'extern void openlog(const char*, int, int);' syslog.h
  322.     CheckForFunc fchmod && {
  323. echo '#define HAS_FCHMOD 1'
  324. Note "... configure use of fchmod"
  325. CheckFuncDecl fchmod 'extern int fchmod(int, mode_t);' 
  326.     unistd.h libc.h $OSFCNH sys/stat.h
  327.     }
  328.     CheckFuncDecl mknod 'extern int mknod(const char*, mode_t, dev_t);' 
  329. unistd.h sys/stat.h
  330.     CheckForFuncDecl gettimeofday sys/time.h || {
  331. echo 'struct timezone;'
  332. echo 'struct timeval;'
  333. AddFuncDecl gettimeofday 
  334.     'extern int gettimeofday(struct timeval*, struct timezone*);'
  335.     }
  336.     CheckForFuncDecl strftime time.h || {
  337. echo 'struct tm;'
  338. AddFuncDecl strftime 
  339.     'extern size_t strftime(char*,size_t,const char*,const struct tm*);'
  340.     }
  341.     CheckForFuncDecl localtime time.h || {
  342. echo 'struct tm;'
  343. AddFuncDecl localtime 'struct tm* localtime(const time_t* clock);'
  344.     }
  345.     CheckForTimeZoneHandling && {
  346. echo '#define HAS_TM_ZONE 1'
  347. Note "... configure use of struct tm timezone information"
  348.     }
  349.     CheckForFuncDecl setitimer sys/time.h || {
  350. echo '#ifdef ITIMER_REAL'
  351. echo 'struct itimerval;'
  352. AddFuncDecl setitimer 
  353.     'extern int setitimer(int,struct itimerval*,struct itimerval*);'
  354. echo '#endif'
  355.     }
  356.     CheckFuncDecl setpwent 'extern void setpwent(void);' pwd.h
  357.     CheckFuncDecl endpwent 'extern void endpwent(void);' pwd.h
  358.     CheckFuncDecl getpwnam 'extern struct passwd* getpwnam(const char*);' pwd.h
  359.     case "$TARGET" in
  360.     *-reno*)
  361. ;;
  362.     *)
  363. for i in toupper tolower; do
  364.     CheckFuncDecl $i "extern int $i(int);" ctype.h
  365. done
  366. ;;
  367.     esac
  368.     CheckForIncludeFile net/errno.h && {
  369. Note "... configure use of <net/errno.h>"
  370.         echo '#define HAS_NETERRNO_H 1'
  371.     }
  372.     CheckForFuncDecl getpeername sys/socket.h || {
  373. echo 'struct sockaddr;'
  374. AddFuncDecl getpeername 'extern int getpeername(int,struct sockaddr*,int*);'
  375.     }
  376.     CheckForFuncDecl getsockname sys/socket.h || {
  377. echo 'struct sockaddr;'
  378. AddFuncDecl getsockname 'extern int getsockname(int,struct sockaddr*,int*);'
  379.     }
  380.     CheckFuncDecl socket 'extern int socket(int, int, int);' sys/socket.h
  381.     CheckFuncDecl connect 'extern int connect(int, const void*, int);' sys/socket.h
  382.     CheckForFuncDecl bind sys/socket.h || {
  383. echo 'struct sockaddr;'
  384. AddFuncDecl bind 'extern int bind(int, const struct sockaddr*, int);'
  385.     }
  386.     CheckFuncDecl listen 'extern int listen(int, int);' sys/socket.h
  387.     CheckFuncDecl getsockopt 
  388. 'extern int getsockopt(int, int, int, const char*, int*);' sys/socket.h
  389.     CheckFuncDecl setsockopt 
  390. 'extern int setsockopt(int, int, int, const char*, int);' sys/socket.h
  391.     CheckForFuncDecl accept sys/socket.h || {
  392. echo 'struct sockaddr;'
  393. AddFuncDecl accept 'extern int accept(int, struct sockaddr*, int*);'
  394.     }
  395.     CheckFuncDecl send 
  396. 'extern int send(int, const void*, int, int);' sys/socket.h
  397.     CheckFuncDecl setutent 'extern void setutent(void);' utmp.h
  398.     CheckFuncDecl endutent 'extern void endutent(void);' utmp.h
  399.     CheckForFuncDecl getutent utmp.h || {
  400. echo 'struct utmp;'
  401. AddFuncDecl getutent 'extern struct utmp* getutent(void);'
  402.     }
  403.     CheckForFuncDecl pututline utmp.h || {
  404. echo 'struct utmp;'
  405. AddFuncDecl pututline 
  406.     'extern struct utmp* pututline(const struct utmp*);'
  407.     }
  408.     CheckForFuncDecl gethostbyname netdb.h || {
  409. echo 'struct hostent;'
  410. AddFuncDecl gethostbyname 
  411.     'extern struct hostent* gethostbyname(const char*);'
  412.     }
  413.     CheckForFuncDecl gethostbyaddr netdb.h || {
  414. echo 'struct hostent;'
  415. AddFuncDecl gethostbyaddr 
  416.     'extern struct hostent* gethostbyaddr(const void*, int, int);'
  417.     }
  418.     CheckForFuncDecl getservbyname netdb.h || {
  419. echo 'struct servent;'
  420. AddFuncDecl getservbyname 
  421.     'extern struct servent* getservbyname(const char*, const char*);'
  422.     }
  423.     CheckForDefine LOCK_SH sys/file.h || {
  424. AddDefine LOCK_SH 'LOCK_SH 1 /* shared lock */'
  425. AddDefine LOCK_EX 'LOCK_EX 2 /* exclusive lock */'
  426. AddDefine LOCK_NB 'LOCK_NB 4 /* dont block when locking */'
  427. AddDefine LOCK_UN 'LOCK_UN 8 /* unlock */'
  428.     }
  429.     CheckFuncDecl flock 'extern int flock(int, int);' sys/file.h
  430.     CheckForFuncDecl sigsetjmp setjmp.h || {
  431. echo '#include <setjmp.h>'
  432. echo '#ifndef sigsetjmp'
  433. AddDefine sigjmp_buf 'sigjmp_buf jmp_buf /* hopefully compatible */'
  434. AddFuncDecl sigsetjmp 'extern int sigsetjmp(sigjmp_buf, int);'
  435. AddFuncDecl siglongjmp 'extern void siglongjmp(sigjmp_buf, int);'
  436. echo '#endif'
  437.     }
  438.     CheckForFuncDecl inet_ntoa arpa/inet.h || {
  439. echo 'struct in_addr;'
  440. AddFuncDecl inet_ntoa 'extern char* inet_ntoa(struct in_addr);'
  441.     }
  442.     CheckForIncludeFile sys/mkdev.h && {
  443. Note "... configure use of <sys/mkdev.h> (for SVR4-style lock files)"
  444. echo '#define HAS_MKDEV 1'
  445.     }
  446.     CheckForIncludeFile locale.h && {
  447. Note "... configure use of <locale.h> (internationalization support)"
  448. echo '#define HAS_LOCALE 1'
  449.     }
  450.     CheckForIncludeFile langinfo.h && {
  451. Note "... configure use of <langinfo.h> (internationalization support)"
  452. echo '#define HAS_LANGINFO 1'
  453.     }
  454.     CheckForIncludeFile paths.h && {
  455. Note "... configure use of <paths.h>"
  456. echo '#include <paths.h>'
  457.     }
  458.     CheckForIncludeFile sys/modem.h && {
  459. Note "... configure use of <sys/modem.h>"
  460. echo '#define HAS_MODEM_H 1'
  461.     }
  462.     CheckForIncludeFile sys/termiox.h && {
  463. case $TARGET in
  464. *-*-sco3.2v5.*) ;;
  465. *) Note "... configure use of SVR4 termiox support"
  466. echo '#define HAS_TERMIOX 1'
  467. ;;
  468. esac
  469.     }
  470.     CheckForFunc flock || {
  471. #
  472. # Emit the necessary #defines for emulating flock
  473. #
  474. if CheckForFunc fcntl; then
  475.     echo '#define HAS_FCNTL 1'
  476. fi
  477. if CheckForFunc lockf; then
  478.     echo '#define HAS_LOCKF 1'
  479. fi
  480.     }
  481.     # NB: logwtmp checked above when looking for -lutil
  482.     test $HAS_LOGWTMP = yes && {
  483. #
  484. # Configure use of logwtmp in the BSD getty support and
  485. # verify that the accompanying logout function is present
  486. # also.  Note that we put out proper declarations for the
  487. # functions since they don't appear to be declared anywhere.
  488. #
  489. echo '#define HAS_LOGWTMP 1'
  490. Note "... configure use of logwtmp (BSD-style wtmp logging)"
  491. CheckForFuncDecl logwtmp utmp.h || {
  492.     AddFuncDecl logwtmp 
  493. 'int logwtmp(const char*, const char*, const char*);'
  494. }
  495. CheckForLibrary logout -lutil && {
  496.     echo '#define HAS_LOGOUT 1'
  497.         Note "... configure use of logout (BSD-style utmp support)"
  498.         CheckForFuncDecl logout utmp.h || {
  499.             AddFuncDecl logout 'int logout(const char*);'
  500.         }
  501. }
  502.     }
  503.     CheckDefine _PATH_DEV     '_PATH_DEV "/dev/"' paths.h
  504.     CheckDefine _PATH_DEVNULL '_PATH_DEVNULL "/dev/null"' paths.h
  505.     CheckDefine _PATH_TMP     '_PATH_TMP "/tmp/"' paths.h
  506.     if [ $UTMP = auto ]; then
  507. if CheckForIncludeFile utmpx.h; then
  508.     case $TARGET in
  509.     *-hpux10.20*) UTMP=utmp;;
  510.     *-hpux11*) UTMP=utmp;;
  511.     *-aix4*) UTMP=utmp;;
  512.     *-aix5*) UTMP=utmp;;
  513.     *-dec-osf4.0*) UTMP=utmp;;
  514.     *-osf-5.1a*) UTMP=utmp;;
  515.     *-linux*) UTMP=utmp;;
  516.     *) UTMP=utmpx;;
  517.     esac
  518. else
  519.     UTMP=utmp;
  520. fi
  521.     fi
  522.     if [ $UTMP = utmpx ]; then
  523. Note "... configure use of <utmpx.h> (extended utmp interface)"
  524. echo '#define HAS_UTMPX 1'
  525. CheckForDefine _PATH_WTMPX paths.h utmp.h utmpx.h || {
  526.     if CheckForDefine WTMPX_FILE utmpx.h; then
  527. AddDefine _PATH_WTMPX '_PATH_WTMPX WTMPX_FILE'
  528.     else
  529. PATHWTMPX=`findFile wtmpx /etc:/var/adm:/usr/adm`
  530. test "$PATHWTMPX" && {
  531.     AddDefine _PATH_WTMPX "_PATH_WTMPX "${PATHWTMPX}""
  532. }
  533.     fi
  534. }
  535. #
  536. # struct exit_status is defined for all systems with
  537. # utmpx support, but SVR4.0.3 headers define the extended
  538. # exit status structure *within* struct utmp and then reuse
  539. # it within struct utmpx.  This does not work for all
  540. # compilers so we must look for this case and, if present,
  541. # enable a workaround declaration of struct exit_status (sigh).
  542. #
  543. if CheckForStructExitStatus utmpx '#include <utmpx.h>'; then
  544.     echo '#define HAS_UTEXIT 1'
  545.     echo '#define HAS_EXIT_STATUS 1'
  546. elif CheckForStructExitStatus utmpx 
  547.     'struct exit_status { short e_termination; short e_exit; };' 
  548.     '#include <utmpx.h>'; then
  549.     Note "... add declaration for struct exit_status"
  550.     echo '#define HAS_UTEXIT 1'
  551.     echo '#define HAS_EXIT_STATUS 0'
  552. fi
  553.     else
  554. Note "... configure use of <utmp.h> (normal utmp interface)"
  555. CheckForDefine _PATH_UTMP paths.h utmp.h || {
  556.     if CheckForDefine UTMP_FILE utmp.h; then
  557. AddDefine _PATH_UTMP '_PATH_UTMP UTMP_FILE'
  558.     else
  559. PATHUTMP=`findFile utmp /etc:/var/adm:/usr/adm`
  560. test "$PATHUTMP" && {
  561.     AddDefine _PATH_UTMP "_PATH_UTMP "${PATHUTMP}""
  562. }
  563.     fi
  564. }
  565. CheckForStructExitStatus utmp && {
  566.     Note "... configure use of extended exit status in utmp"
  567.     echo '#define HAS_UTEXIT 1'
  568. }
  569. CheckForDefine _PATH_WTMP paths.h utmp.h || {
  570.     if CheckForDefine WTMP_FILE utmp.h; then
  571. AddDefine _PATH_WTMP '_PATH_WTMP WTMP_FILE'
  572.     else
  573. PATHWTMP=`findFile wtmp /etc:/var/adm:/usr/adm`
  574. test "$PATHWTMP" && {
  575.     AddDefine _PATH_WTMP "_PATH_WTMP "${PATHWTMP}""
  576. }
  577.     fi
  578. }
  579.     fi
  580.     CheckForDefine RT_NOCHANGE sys/priocntl.h sys/rtpriocntl.h && 
  581.     CheckForDefine TS_NOCHANGE sys/priocntl.h sys/tspriocntl.h && {
  582. case $TARGET in
  583. *-*-sco3.2v5.*) ;;
  584. *) Note "... configure use of SVR4 realtime process control interface"
  585. echo '#define HAS_PRIOCNTL 1'
  586. ;;
  587. esac
  588.     }
  589.     CheckForDefine FP_NOCHANGE sys/priocntl.h sys/fppriocntl.h && {
  590. Note "... called FP instead of RT"
  591. echo '#define HAS_FPPRIOCNTL 1'
  592.     }
  593.     CheckForDefine NDPRI sys/schedctl.h && {
  594. Note "... configure use of IRIX realtime process control interface"
  595. echo '#define HAS_SCHEDCTL 1'
  596.     }
  597.     CheckForDefine RTPRIO_RTOFF sys/rtprio.h && {
  598. Note "... configure use of HP-UX realtime process control interface"
  599. echo '#define HAS_RTPRIO 1'
  600.     }
  601.     CheckForPositiveDefine _POSIX_PRIORITY_SCHEDULING unistd.h sched.h && {
  602. Note "... configure use of POSIX realtime process control interface"
  603. echo '#define HAS_POSIXSCHED 1'
  604. case $TARGET in
  605. *-*-sco3.2v5.*) echo '#define RT_PRIORITY 96';;
  606. *-linux*) echo '#define RT_PRIORITY 1';;
  607. *) echo '#define RT_PRIORITY 1';;
  608. esac
  609.     }
  610.     CheckForTXCD && {
  611. Note "... configure use of TXADDCD and TXDELCD ioctls"
  612. echo '#define HAS_TXCD 1'
  613.     }
  614.     if CheckForIncludeFile crypt.h; then
  615. Note "... configure use of <crypt.h>"
  616. echo '#define HAS_CRYPT_H 1'
  617. CheckFuncDecl crypt 'extern const char* crypt(const char*, const char*);' unistd.h crypt.h
  618.     else
  619. CheckFuncDecl crypt 'extern const char* crypt(const char*, const char*);' unistd.h stdlib.h
  620.     fi
  621.     CheckTermioFuncDecls termios.h
  622.     if CheckLibtiff; then
  623. Note "... add declaration for tiff_runlen_t"
  624. echo "#define tiff_runlen_t ${tiff_runlen_t}"
  625.     fi
  626.     if [ "x$PAMLIBS" != "x" ]; then
  627. CheckPAMType
  628.     fi
  629.     CheckForDefine s6_addr32 net/if.h  ||  {
  630. case $TARGET in
  631. *-*-sysv5*) AddDefine s6_addr32 's6_addr32 S6_un.S6_l' ;;
  632. sparc-sun-*) AddDefine s6_addr32 's6_addr32 S6_un.S6_l' ;;
  633. esac
  634.     }
  635.     # Emit the version variable that port will always give us.
  636.     echo "extern const char* HYLAFAX_VERSION_STRING;"
  637.     EmitCPlusPlusEpilogue
  638.     )>xport.h
  639.     mv xport.h port.h; chmod 444 port.h
  640.     Note "Done creating port.h."
  641. }
  642. if test -f port.h && CheckPortDotH; then
  643.     Note ""
  644.     Note "Using previously created port.h."
  645. else
  646.     $RM xport.h xtermios.h t.c t.c++ a.out port.h termios.h
  647.     BuildTermiosDotH
  648.     BuildPortDotH
  649. fi
  650. Note ""
  651. Note "Checking system libraries for functionality to emulate."
  652. FUNCS="
  653.     flock
  654.     ftruncate
  655.     setegid
  656.     seteuid
  657.     setvbuf
  658.     strcasecmp
  659.     writev
  660. "
  661. for i in $FUNCS; do
  662.     CheckForFunc $i || {
  663. Note "... emulate $i"
  664. PORTFUNCS="$PORTFUNCS $i.c"
  665.     }
  666. done
  667. FUNCS="
  668.     random
  669. "
  670. for i in $FUNCS; do
  671.     CheckForStdFunc $i || {
  672. Note "... emulate $i"
  673. PORTFUNCS="$PORTFUNCS $i.c"
  674.     }
  675. done
  676. #
  677. # Now for those functions that need args.
  678. #
  679. CheckForUnistdFunc getopt "0, (void*)0, (void*)0" || {
  680.     Note "... emulate getopt"
  681.     PORTFUNCS="$PORTFUNCS getopt.c"
  682. }
  683. CheckForStdioFunc snprintf "(void*)0, 0, (void*)0" || {
  684.     Note "... emulate snprintf"
  685.     PORTFUNCS="$PORTFUNCS snprintf.c"
  686. }
  687. CheckForFunc vsnprintf "(void*)0, 0, (void*)0, (void*)0" || {
  688.     Note "... emulate vsnprintf"
  689.     PORTFUNCS="$PORTFUNCS vsnprintf.c"
  690. }
  691. CheckForFunc mkstemp "(void*)0" || {
  692.     Note "... emulate mkstemp"
  693.     PORTFUNCS="$PORTFUNCS mkstemp.c"
  694. }
  695. CheckForFunc setenv "(void*)0, (void*)0, 0" || {
  696.     Note "... emulate setenv"
  697.     PORTFUNCS="$PORTFUNCS setenv.c"
  698. }
  699. CheckForStdFunc srandom "0" || {
  700.     Note "... emulate srandom"
  701.     PORTFUNCS="$PORTFUNCS srandom.c"
  702. }
  703. CheckForStdFunc strtod "(void*)0, (void*)0" || {
  704.     Note "... emulate strtod"
  705.     PORTFUNCS="$PORTFUNCS strtod.c"
  706. }
  707. CheckForStdFunc strtoul "(void*)0, (void*)0, 0" || {
  708.     Note "... emulate strtoul"
  709.     PORTFUNCS="$PORTFUNCS strtoul.c"
  710. }
  711. #
  712. # SCO OS 5 #defines syslog as another function
  713. # so it is necessary to include syslog.h when
  714. # checking if the function is present in the
  715. # library (sigh).
  716. #
  717. CheckForSyslog()
  718. {
  719.     (echo '#include <syslog.h>';
  720.      echo '#include <stdlib.h>';
  721.      echo '#include "port.h"';
  722.      echo 'main(){syslog(0,"foo");exit(0);}') >t.c
  723.     capture cat t.c
  724.     runMake t "t:; ${CC} t.c ${MACHDEPLIBS}"
  725. }
  726. CheckForVSyslog()
  727. {
  728.     (echo '#include <syslog.h>';
  729.      echo '#include <stdarg.h>';
  730.      echo '#include <stdlib.h>';
  731.      echo '#include "port.h"';
  732.      echo 'main(){va_list ap; vsyslog(0,"foo", ap);exit(0);}') >t.c
  733.     capture cat t.c
  734.     runMake t "t:; ${CC} t.c ${MACHDEPLIBS}"
  735. }
  736. if CheckForSyslog; then
  737.     CheckForVSyslog || {
  738. Note "... emulate vsyslog"
  739. PORTFUNCS="$PORTFUNCS vsyslog.c"
  740.     }
  741. else
  742.     Note "... emulate syslog&co."
  743.     PORTFUNCS="$PORTFUNCS syslog.c"
  744. fi
  745. LIBPORT='${PORT}/libport.a'
  746. Note "Done checking system libraries."
  747. Note ""
  748. Note "Checking ZLIB support."
  749. #
  750. # Verify library is compatible.
  751. #
  752. cat>t.c<<EOF
  753. #include <stdlib.h>
  754. #include <stdio.h>
  755. #include "zlib.h"
  756. main()
  757. {
  758.     if (strcmp(ZLIB_VERSION, "0.95") < 0) {     /* include file version */
  759.         printf("old include files: version %un", ZLIB_VERSION);
  760.         exit(-1);
  761.     }
  762.     if (strncmp(zlib_version, ZLIB_VERSION, 4) != 0) {
  763.         printf("library/header file incompatibility: %s %sn",
  764.         zlib_version, ZLIB_VERSION);
  765.         exit(-1);
  766.     } else {
  767.         exit(0);
  768.     }
  769. }
  770. EOF
  771. capture cat t.c
  772. if runMake t "t:; ${CC} ${CVERSION} ${OZLIBINC} t.c ${LIBZ} ${MACHDEPLIBS}" && capture ./a.out; then
  773.                 ZLIBINC="${OZLIBINC}"
  774.     if [ -n "$OZLIBINC" ]; then
  775. Note "Using ZLIB include files from $OZLIBINC"
  776.     fi
  777.     Note "Using pre-built ZLIB library $LIBZ"
  778. else
  779.     LIBZ=
  780.     DIRS="/usr/local /opt/zlib"
  781.     for i in $DIRS; do
  782.         if runMake t "t:; ${CC} ${CVERSION} -I${i}/include t.c -L${i}/lib -lz ${MACHDEPLIBS}" && capture ./a.out; then
  783.             OZLIBINC="-I${i}/include"
  784.             ZLIBINC="-I${i}/include"
  785.             LIBZ="-L${i}/lib -lz"
  786.             Note "Using ZLIB include files from ${i}/include"
  787.             Note "Using pre-built ZLIB library $LIBZ"
  788.             break
  789.         fi
  790.     done
  791.     if [ -z "$LIBZ" ]; then
  792.         cat 1>&2 <<EOF
  793. Incompatible/missing ZLIB Library.
  794. Compilation or execution of the following test program failed:
  795. ----------------------------------------------------------
  796. EOF
  797. cat t.c 1>&2
  798. cat 1>&2 <<EOF
  799. ----------------------------------------------------------
  800. With the following directories tried:
  801. DIRS=<default compiler search path> ${DIRS}
  802. The above program checks the version of the ZLIB library to ensure it
  803. is suitable for use with HylaFAX.  HylaFAX ${VERSION} requires a recent
  804. ZLIB software distribution; version 0.95 or newer.  If you have the right
  805. software, verify that you have the ZLIBINC(location of zlib.h) and
  806. LIBZ(location of libz.a/libz.so) configuration parameters set correctly
  807. for your system and that any environment variables are setup that are
  808. needed to locate a libz DSO at runtime (e.g.  LD_LIBRARY_PATH).
  809. Also be sure that any relative pathnames are made relative to the top of
  810. the build area.
  811. EOF
  812.         boom
  813.     fi
  814. fi
  815. Note "Done checking ZLIB support."
  816. Note ""
  817. Note "Checking TIFF support."
  818. #
  819. # Location of TIFF binaries
  820. #
  821. if [ -z "$TIFFBIN" ]; then
  822.     DIRS="/opt/local/bin /usr/local/bin /usr/contrib/bin /usr/gnu/bin /usr/bin"
  823.     for i in $DIRS; do
  824.         test -x $i/tiff2ps && { TIFFBIN=$i; break; }
  825.     done
  826. fi
  827. if [ -z "$TIFFBIN" ]; then
  828.     cat 1>&2 <<EOF
  829.     Cannot locate the TIFF binary files(ie tiff2ps) anywhere.
  830.     Please install the TIFF binaries and set the TIFFBIN parameter 
  831.     to the correct path.
  832. EOF
  833.     boom
  834. else
  835.     Note "Using TIFF binary files from $TIFFBIN"
  836. fi
  837. HAVE_JBIGTIFF="/*#define HAVE_JBIGTIFF 1*/"
  838. if [ "$DISABLE_JBIG" != "yes" ]; then
  839.     Note "Checking JBIG-in-TIFF conversion support."
  840.     exec 3>&2 2> /dev/null # Mute stderr, tiffcp may segfault here
  841.     $TIFFBIN/tiffcp -c g4 misc/jbig.tif misc/foo.tif > /dev/null 2>&1
  842.     EV=$?
  843.     exec 2>&3 3>&- # Restore stderr
  844.     if [ $EV = 0 ]; then
  845. $TIFFBIN/tiffcp misc/jbig.tif misc/foo.tif > /dev/null
  846. if [ -n "`$TIFFBIN/tiffinfo misc/foo.tif | grep 'Fax DCS'`" ]; then
  847.     HAVE_JBIGTIFF="#define HAVE_JBIGTIFF 1"
  848.     Note "JBIG-in-TIFF conversion support found."
  849. else
  850.     Note "JBIG-in-TIFF fax support not found."
  851. fi
  852.     else
  853. Note "JBIG-in-TIFF conversion support not found."
  854.     fi
  855.     rm -f misc/foo.tif
  856. fi
  857. Note "Done checking TIFF support."
  858. if [ "$DSO" = auto ] || [ "$DSO" = yes ]; then
  859.     Note ""
  860.     Note "Checking for Dynamic Shared Object (DSO) support."
  861.     case $DSO-$TARGET in
  862.     *-*-irix*)
  863. if (findApp rld /lib:/usr/lib:$PATH) >/dev/null 2>&1; then
  864.     DSOSUF=so
  865.     DSOOPTS="${CVERSION} -shared -rdata_shared -check_registry ${DEPTH}/${SRCDIR}/port/irix/so_locations -quickstart_info"
  866.     DSODELAY=-delay_load
  867.     LLDOPTS='-rpath ${LIBEXEC}'
  868.     DSO=IRIX
  869.     CheckCCDSO()
  870.     {
  871. $RM t.c t.o t.${DSOSUF}
  872. echo 'int f() { return 0; }'>t.c
  873. capture cat t.c
  874. runMake t 
  875.     't.o:; ${CCF} -c t.c' 
  876.     "t: t.o; ${CCF} ${DSOOPTS} -o t.${DSOSUF} t.o"
  877.     }
  878.     CheckCXXDSO()
  879.     {
  880. $RM t.c++ t.o t.${DSOSUF}
  881. echo 'int f() { return 0; }'>t.c++
  882. capture cat t.c++
  883. runMake t 
  884.     "t.o:; ${C++F} -c ${C++FILE} t.c++${MAKECXXOVERRIDE}" 
  885.     "t:t.o; ${C++F} ${DSOOPTS} -o t.${DSOSUF} t.o"
  886.     }
  887. else
  888.     Note "No runtime loader found, looks like your system does not supports DSOs."
  889.     DSO=no
  890. fi
  891. ;;
  892.     *-*-linux*)
  893. if [ "X${DIR_LIB}" != "X/usr/lib" ] && [ "X${DIR_LIB}" != "X/usr/lib64" ]; then
  894.     USE_RPATH=' -Wl,-rpath,${LIBDIR}'
  895. else
  896.     USE_RPATH=''
  897. fi
  898. DSOSUF=so.$VERSION
  899. LIBFAXSERVER='${FAXD}/'$LIBFAXSERVER
  900. FAXD='${DEPTH}/faxd'
  901. DSOOPTS='-shared -fpic -Wl,-soname,$@'
  902. LLDOPTS='-L${UTIL} -L${FAXD} '$LIBUTIL$USE_RPATH
  903. GCOPTS="${GCOPTS} -fpic"
  904. GCXXOPTS="${GCXXOPTS} -fpic"
  905. DSO=LINUX
  906. CheckCCDSO()
  907. {
  908. $RM t.c t.o t.${DSOSUF}
  909. echo 'int f() { return 0; }'>t.c
  910. capture cat t.c
  911. runMake t 
  912.     't.o:; ${CCF} -c t.c' 
  913.     "t: t.o; ${CCF} ${DSOOPTS} -o t.${DSOSUF} t.o"
  914. }
  915. CheckCXXDSO()
  916. {
  917. $RM t.c++ t.o t.${DSOSUF}
  918. echo 'int f() { return 0; }'>t.c++
  919. capture cat t.c++
  920. runMake t 
  921.     "t.o:; ${C++F} -c ${C++FILE} t.c++${MAKECXXOVERRIDE}" 
  922.     "t:t.o; ${C++F} ${DSOOPTS} -o t.${DSOSUF} t.o"
  923. }
  924. ;;
  925. # There has been a fair amount of back-and-forth on Solaris DSO defaults
  926. # because it always seems to be that there is some Solaris version out there
  927. # that won't work right, and it causes more trouble than it's worth.
  928. # So it's defaulted to "no" since it's the path of least-resistance and the
  929. # value of the DSO usage is rather small.
  930.     auto-*-solaris*)
  931. Note "Automatic DSO usage on Solaris is disabled.  Use --with-DSO=yes to enable."
  932. DSO=no
  933. ;;
  934.     yes-*-solaris*)
  935. if [ "X${DIR_LIB}" != "X/usr/lib" ]; then
  936.     USE_RPATH=' -R${LIBDIR}'
  937. else
  938.     USE_RPATH=''
  939. fi
  940. DSOSUF=so
  941. LIBUTIL=''
  942. FAXD='${DEPTH}/faxd'
  943. LIBFAXSERVER='-L${FAXD} -lfaxserver'
  944. # options here are passed directly to ld, not through g++ first
  945. if [ ${ISGCC} = "yes" ] ; then
  946.     DSOOPTS='-shared -Wl,-G,-h,$@'
  947.     LLDOPTS='-L${UTIL} -L${FAXD} -R${LIBDIR} -lfaxutil -lstdc++'
  948.     GCOPTS="${GCOPTS} -fpic"
  949.     GCXXOPTS="${GCXXOPTS} -fpic"
  950. else
  951.     DSOOPTS='-G -h $@'
  952.     LLDOPTS='-L${UTIL} -L${FAXD} -R${LIBDIR} -lfaxutil -lCrun'
  953.     GCOPTS="${GCOPTS} -Kpic"
  954.     GCXXOPTS="${GCXXOPTS} -Kpic"
  955. fi
  956. #LLDOPTS='-L${UTIL} -L${FAXD} -R${LIBDIR} -lfaxutil'
  957. DSO=SOLARIS
  958. CheckCCDSO()
  959. {
  960. $RM t.c t.o t.${DSOSUF}
  961. echo 'int f() { return 0; }'>t.c
  962. capture cat t.c
  963. runMake t 
  964.     't.o:; ${CCF} -c t.c' 
  965.     "t: t.o; ${CCF} ${DSOOPTS} -o t.${DSOSUF} t.o"
  966. }
  967. CheckCXXDSO()
  968. {
  969. $RM t.c++ t.o t.${DSOSUF}
  970. echo 'int f() { return 0; }'>t.c++
  971. capture cat t.c++
  972. runMake t 
  973.     "t.o:; ${C++F} -c ${C++FILE} t.c++${MAKECXXOVERRIDE}" 
  974.     "t:t.o; ${C++F} ${DSOOPTS} -o t.${DSOSUF} t.o"
  975. }
  976. ;;
  977.     *-sysv5*)
  978. if [ "X${DIR_LIB}" != "X/usr/lib" ]; then
  979.     USE_RPATH=' -R${LIBDIR}'
  980. else
  981.     USE_RPATH=''
  982. fi
  983. DSOSUF=so
  984. FAXD='${DEPTH}/faxd'
  985. LIBFAXSERVER='-L${FAXD} -lfaxserver'
  986. # options here are passed to CC, not directly to ld
  987. DSOOPTS='-G -Wl,-h,$@'
  988. if [ ${ISGCC} = "yes" ] ; then
  989.     LLDOPTS='-L${UTIL} -L${FAXD} -R${LIBDIR} -lfaxutil -lstdc++'
  990.     GCOPTS="${GCOPTS} -fpic"
  991.     GCXXOPTS="${GCXXOPTS} -fpic"
  992. else
  993.     LLDOPTS='-L${UTIL} -L${FAXD} -R${LIBDIR} -lfaxutil'
  994.     GCOPTS="${GCOPTS} -Kpic"
  995.     GCXXOPTS="${GCXXOPTS} -Kpic"
  996. fi
  997. #LLDOPTS='-L${UTIL} -L${FAXD} -R${LIBDIR} -lfaxutil'
  998. DSO=SYSV5
  999. CheckCCDSO()
  1000. {
  1001. $RM t.c t.o t.${DSOSUF}
  1002. echo 'int f() { return 0; }'>t.c
  1003. capture cat t.c
  1004. runMake t 
  1005.     't.o:; ${CCF} -c t.c' 
  1006.     "t: t.o; ${CCF} ${DSOOPTS} -o t.${DSOSUF} t.o"
  1007. }
  1008. CheckCXXDSO()
  1009. {
  1010. $RM t.c++ t.o t.${DSOSUF}
  1011. echo 'int f() { return 0; }'>t.c++
  1012. capture cat t.c++
  1013. runMake t 
  1014.     "t.o:; ${C++F} -c ${C++FILE} t.c++${MAKECXXOVERRIDE}" 
  1015.     "t:t.o; ${C++F} ${DSOOPTS} -o t.${DSOSUF} t.o"
  1016. }
  1017. ;;
  1018.     *) Note "There is no support for building HylaFAX as DSOs on your system."
  1019. DSO=no
  1020. ;;
  1021.     esac
  1022.     if [ "$DSO" != no ]; then
  1023. JUNK="$JUNK t.${DSOSUF}"
  1024. # We need the new shared/DSO OPTS/FLAGS
  1025. makeDefs xdefs
  1026. if CheckCCDSO; then
  1027.     if CheckCXXDSO; then
  1028. Note "Looks like your system supports $DSO-style DSOs."
  1029.     else
  1030. cat 1>&4 <<EOF
  1031. Looks like your system supports DSOs...
  1032. ... but $CXXCOMPILER does not support them in the expected way.
  1033. EOF
  1034. DSO=no
  1035.     fi
  1036. else
  1037.     cat 1>&4 <<EOF
  1038. Looks like your system supports DSOs...
  1039. ... sigh, but $CCOMPILER does not support them in the expected way.
  1040. EOF
  1041.     DSO=no
  1042. fi
  1043.     fi
  1044. elif [ "$DSO" != no ]; then
  1045.     Note ""
  1046.     Note "Looks like your system supports $DSO-style DSOs."
  1047. fi
  1048. if [ "$DSO" = no ]; then
  1049.     MAKEDSOINCLUDE='#'
  1050.     DSOSUF=a DSOOPTS= DSODELAY= LLDOPTS=
  1051. else
  1052.     MAKEDSOINCLUDE="$MAKEINCLUDE"
  1053. fi
  1054. Note ""
  1055. Note "Selecting programs used during installation and operation."
  1056. if [ -z "$AWK" ]; then
  1057.     # we need an awk that supports functions and -v
  1058.     CheckAwk()
  1059.     {
  1060. (set -x; $1 -v BAR=bar '
  1061. function foo(x) {
  1062.     print "GOT" x
  1063. }
  1064. BEGIN { foo(BAR) }
  1065. ' </dev/null | grep GOTbar) >&5 2>&1
  1066. return
  1067.     }
  1068.     for i in mawk nawk gawk awk; do
  1069. x=`findApp $i $PATH`
  1070. if test "$x" && CheckAwk "$x"; then
  1071.     AWK=$x
  1072.     break
  1073. fi
  1074.     done
  1075. fi
  1076. if [ -z "$AWK" ]; then
  1077.     AWK=awk
  1078.     Note ""
  1079.     Note "WARNING, could not locate a suitable AWK for processing the command"
  1080.     Note "         scripts included in this software distribution; using $AWK."
  1081. else
  1082.     Note "Looks like $AWK should be used in command scripts."
  1083. fi
  1084. test "$SED" || SED=`findApp sed $PATH`
  1085. if [ -z "$SED" ]; then
  1086.     SED=sed
  1087.     Note "WARNING, could not locate a suitable SED command; using $SED."
  1088. fi
  1089. test "$PATH_SENDMAIL" || 
  1090.     PATH_SENDMAIL=`findApp sendmail $PATH:/usr/lib:/usr/ucblib`
  1091. if [ -z "$PATH_SENDMAIL" ]; then
  1092.     cat<<EOF
  1093. WARNING, could not locate sendmail on your system.
  1094. Beware that the mail notification work done by this software uses
  1095. sendmail-specific command line options.  If you do not have a
  1096. sendmail-compatible mailer things will break.
  1097. EOF
  1098.     PATH_SENDMAIL=/usr/lib/sendmail
  1099.     Note "Using $PATH_SENDMAIL to deliver mail."
  1100. else
  1101.     Note "Looks like $PATH_SENDMAIL should be used to deliver mail."
  1102. fi
  1103. #
  1104. # Miscellaneous ``little'' programs.  We want absolute
  1105. # pathnames so that work done by the super-user (e.g.
  1106. # installation) is safer.
  1107. #
  1108. test "$CAT" || CAT=`findAppDef cat $PATH cat`
  1109. test "$CHGRP" || CHGRP=`findAppDef chgrp $PATH chgrp`
  1110. test "$CHMOD" || CHMOD=`findAppDef chmod $PATH chmod`
  1111. test "$CHOWN" || CHOWN=`findAppDef chown $PATH chown`
  1112. test "$CMP" || CMP=`findAppDef cmp $PATH cmp`
  1113. test "$COL" || COL=`findAppDef col $PATH col`
  1114. test "$CP" || CP=`findAppDef cp $PATH cp`
  1115. test "$ECHO" || ECHO=`findAppDef echo $PATH echo`
  1116. test "$FILECMD" || FILECMD=`findAppDef file $PATH file`
  1117. test "$FUSER" || FUSER=`findAppDef fuser /sbin:$PATH fuser`
  1118. test "$GENDIST" || GENDIST=`findAppDef gendist $PATH gendist`
  1119. test "$GREP" || GREP=`findAppDef grep $PATH grep`
  1120. test "$LN" || LN=`findAppDef ln $PATH ln`
  1121. test "$MAN" || MAN=`findAppDef man $PATH man`
  1122. test "$MIMENCODE" || MIMENCODE=`findAppDef mimencode $PATH mimencode`
  1123. test "$MIMENCODE" || MIMENCODE=`findAppDef base64-encode $PATH base64-encode`
  1124. test "$MIMENCODE" || MIMENCODE=`findAppDef base64 $PATH base64`
  1125. test "$MKDIR" || MKDIR=`findAppDef mkdir $PATH mkdir`
  1126. test "$MV" || MV=`findAppDef mv $PATH mv`
  1127. test "$PCL6CMD" || PCL6CMD=`findAppDef pcl6 $PATH pcl6`
  1128. test "$PWDCMD" || PWDCMD=`findAppDef pwd $PATH pwd`
  1129. test "$RMCMD" || RMCMD=`findAppDef rm $PATH rm`
  1130. test "$SORT" || SORT=`findAppDef sort $PATH sort`
  1131. test "$STRIP" || STRIP=`findAppDef strip $PATH strip`
  1132. test "$TIFF2PDF" || TIFF2PDF=`findAppDef tiff2pdf $PATH bin/tiff2pdf`
  1133. test "$TTYCMD" || TTYCMD=`findAppDef tty $PATH tty`
  1134. test "$UUENCODE" || UUENCODE=`findAppDef uuencode $PATH uuencode`
  1135. test "$UUENCODE" || UUENCODE=`findAppDef gmime-uuencode $PATH gmime-uuencode`
  1136. #
  1137. # Test/verify we know how to create FIFO special files.
  1138. #
  1139. $RM conffifo;
  1140. if capture mkfifo conffifo && test -p conffifo >/dev/null 2>&1; then
  1141.     Note "Looks like $MKFIFO creates FIFO special files."
  1142. elif test -f conffifo; then # NB: not everyone has test -p
  1143.     Note "Looks like $MKFIFO creates FIFO special files (unable to verify)."
  1144. else
  1145.     # NB: we can't be certain of this because on some systems
  1146.     # only root can create a FIFO special file
  1147.     Note "WARNING, $MKFIFO may create FIFO special files, but testing failed."
  1148. fi
  1149. #
  1150. # Check if mv -f is supported
  1151. #
  1152. if [ -z "$MV_F" ]; then
  1153.     $RM t.c; echo "">t.c
  1154.     if capture $MV -f t.c t.o; then
  1155. Note "Looks like $MV supports the -f option to force a move."
  1156. MV_F=-f
  1157.     else
  1158. Note "WARNING, looks like $MV has no -f option to force move operations;"
  1159. Note "         this may cause problems during installation."
  1160. MV_F=
  1161.     fi
  1162. fi
  1163. #
  1164. # Check if ln -s creates a symbolic link.
  1165. #
  1166. if [ -z "$LN_S" ]; then
  1167.     capture "$RM t.c; $LN -s foo t.c" && LN_S=-s
  1168. fi
  1169. if [ -n "$LN_S" ]; then
  1170.     Note "Looks like $LN supports the -s option to create a symbolic link."
  1171. else
  1172.     Note "WARNING, looks like $LN has no -s option to create symbolic links;"
  1173.     Note "         this may cause problems during installation."
  1174. fi
  1175. #
  1176. # Check if uuencode supports base64 encoding.
  1177. #
  1178. if [ -z "$ENCODING" ]; then
  1179.     if [ -x "$MIMENCODE" ]; then
  1180. ENCODING=base64
  1181. Note "Looks like $MIMENCODE supports base64 encoding."
  1182.     elif [ -x "$UUENCODE" ]; then
  1183. if capture "$UUENCODE -m port.h foo"; then
  1184.     ENCODING=base64
  1185.     Note "Looks like $UUENCODE supports base64 encoding."
  1186. else
  1187.     ENCODING=x-uuencode
  1188.     Note "Looks like $UUENCODE does not support base64 encoding."
  1189. fi
  1190.     fi
  1191. fi
  1192. #
  1193. # Pick install mechanism.
  1194. #
  1195. if [ -z "$INSTALL" ]; then
  1196.     case $TARGET in
  1197.     *-irix*) INSTALL=`findApp install /sbin:$PATH`;;
  1198.     *) INSTALL='${SHELL} ${PORT}/install.sh';;
  1199.     esac
  1200. fi
  1201. # Location SysV style init scripts
  1202. if [ -z "$DIR_SYSVINIT" ]; then
  1203.     DIR_SYSVINITS="
  1204. /etc/rc.d/init.d
  1205. /etc/init.d
  1206.     "
  1207.     case $TARGET in
  1208. *-sunos*) DIR_SYSVINITS="$DIR_SYSVINITS $DIR_SBIN";;
  1209. *-hpux*) DIR_SYSVINITS="/sbin/init.d $DIR_SYSVINITS";;
  1210. *-dec-osf*) DIR_SYSVINITS="/sbin/init.d $DIR_SYSVINITS";;
  1211. *) ;;
  1212.     esac
  1213.     DIR_SYSVINIT=
  1214.     for i in $DIR_SYSVINITS; do
  1215. test -d $i && { DIR_SYSVINIT=$i; break; }
  1216.     done
  1217. fi
  1218. if [ "$SYSVINIT" = auto ]; then
  1219.     if test -d "$DIR_SYSVINIT"; then
  1220. SYSVINIT=yes
  1221. Note "Looks like a SysV-style init is used, enabling installation of startup code."
  1222.     else
  1223. SYSVINIT=no
  1224.     fi
  1225. fi
  1226. if [ "$SYSVINIT" = yes ]; then
  1227. Note "Looks like SysV init scripts go in $DIR_SYSVINIT."
  1228. fi
  1229. if [ "$SYSVINIT" = yes ]; then
  1230.     if [ -z "$DIR_SYSVINITSTART" ]; then
  1231. case $TARGET in
  1232.     *-linux*) DIR_SYSVINITSTART="../rc2.d ../rc3.d ../rc4.d ../rc5.d";;
  1233.     *) DIR_SYSVINITSTART="../rc2.d";;
  1234. esac
  1235.     fi
  1236.     if [ -z "$DIR_SYSVINITSTOP" ]; then
  1237. case $TARGET in
  1238.     *-linux*) DIR_SYSVINITSTOP="../rc0.d ../rc1.d ../rc6.d";;
  1239.     *-solaris*) DIR_SYSVINITSTOP="../rc0.d ../rc1.d ../rcS.d";;
  1240.     *sysv4.2uw2*) DIR_SYSVINITSTOP="../rc0.d ../rc1.d";;
  1241.     *-sysv5UnixWare*) DIR_SYSVINITSTOP="../rc0.d ../rc1.d";;
  1242.     *-sysv5OpenUNIX*) DIR_SYSVINITSTOP="../rc0.d ../rc1.d";;
  1243.     *-sysv5SCO_SV*) DIR_SYSVINITSTOP="../rc0.d ../rc2.d";;
  1244.     *) DIR_SYSVINITSTOP="../rc0.d";;
  1245. esac
  1246.     fi
  1247.     if [ -z "$NAME_SYSVINITSTART" ]; then
  1248. case $TARGET in
  1249.     *-hpux*) NAME_SYSVINITSTART="S905hylafax" ;;
  1250.     *-linux*) NAME_SYSVINITSTART="S97hylafax" ;;
  1251.     *-*-sco3.2v5*) NAME_SYSVINITSTART="S90hylafax" ;;
  1252.     *) NAME_SYSVINITSTART="S80hylafax" ;;
  1253. esac
  1254.     fi
  1255.     if [ -z "$NAME_SYSVINITSTOP" ]; then
  1256. case $TARGET in
  1257.     *-hpux*) NAME_SYSVINITSTOP="K095hylafax" ;;
  1258.     *-solaris*) NAME_SYSVINITSTOP="K20hylafax" ;;
  1259.     *) NAME_SYSVINITSTOP="K05hylafax" ;;
  1260. esac
  1261.     fi
  1262. fi
  1263. # now to keep from breaking etc/Makefile
  1264. if [ -z "$DIR_SYSVINITSTART" ]; then
  1265.     DIR_SYSVINITSTART="dir_sysvinitstart_set_to_non_null_string"
  1266. fi
  1267. if [ -z "$DIR_SYSVINITSTOP" ]; then
  1268.     DIR_SYSVINITSTOP="dir_sysvinitstop_set_to_non_null_string"
  1269. fi
  1270. Note "Done selecting programs."
  1271. #
  1272. # User-changable configuration parameters section.
  1273. # Anything selected here is presented to the user
  1274. # and may be interactively changed.
  1275. #
  1276. Note ""
  1277. Note "Selecting default HylaFAX configuration parameters."
  1278. Note ""
  1279. #
  1280. # Fill in any other configuration parameters not
  1281. # setup in the site and local files.
  1282. #
  1283. #
  1284. # Fax user GID
  1285. #
  1286. if [ -z "$FAXGID" ]; then
  1287.     case $TARGET in
  1288.     *-aix*) FAXGID=uucp;;
  1289.     *-bsdi*) FAXGID=uucp;;
  1290.     *freebsd2.1*) FAXGID=uucp; break;; # Not sure when this changed..
  1291.     *bsd*) FAXGID=dialer;;
  1292.     *-hpux*) FAXGID=sys;;
  1293.     *-irix*) FAXGID=nuucp;;
  1294.     *-isc*) FAXGID=uucp;;
  1295.     *-linux*) FAXGID=uucp;;
  1296.     *-*-sco*) FAXGID=uucp;;
  1297.     *-solaris*) FAXGID=uucp;;
  1298.     *-sunos*) FAXGID=uucp;;
  1299.     *-sysv4*) FAXGID=uucp;;
  1300.     *-sysv5*) FAXGID=uucp;;
  1301.     *-ultrix*) FAXGID=uucp;;
  1302.     *)
  1303. FAXGID=uucp
  1304. for i in uucp dialer nuucp sys; do
  1305.     grep "^${i}:" /etc/group >/dev/null 2>&1 && { FAXGID=$i; break; }
  1306. done
  1307. ;;
  1308.     esac
  1309. fi
  1310. Note "Using uid $FAXUID and gid $FAXGID for controlling access to fax stuff."
  1311. #
  1312. # System installation group ID.
  1313. #
  1314. if [ -z "$SYSGID" ]; then
  1315.     case $TARGET in
  1316.     *-aix*) SYSGID=sys;;
  1317.     *netbsd*) SYSGID=wheel;;
  1318.     *bsd*) SYSGID=bin;;
  1319.     *-hpux*) SYSGID=bin;;
  1320.     *-irix*) SYSGID=sys;;
  1321.     *-isc*) SYSGID=sys;;
  1322.     *-linux*) SYSGID=bin;;
  1323.     *-*-sco*) SYSGID=sys;;
  1324.     *-solaris*) SYSGID=sys;;
  1325.     *-sunos*) SYSGID=bin;;
  1326.     *-sysv4*) SYSGID=sys;;
  1327.     *-sysv5*) SYSGID=sys;;
  1328.     *-ultrix*) SYSGID=bin;;
  1329.     *)
  1330. SYSGID=sys
  1331. for i in sys bin; do
  1332.     grep "^${i}:" /etc/group >/dev/null 2>&1 && { SYSGID=$i; break; }
  1333. done
  1334. ;;
  1335.     esac
  1336. fi
  1337. Note "Using uid $SYSUID and gid $SYSGID for installing programs."
  1338. if [ -z "$FILLORDER" ]; then
  1339.     #
  1340.     # Host bit order within a word.
  1341.     #
  1342.     case $TARGET in
  1343.     mips-dec-*) FILLORDER=LSB2MSB;;
  1344.     i[3-6]86-*) FILLORDER=LSB2MSB;;
  1345.     *) FILLORDER=MSB2LSB;;
  1346.     esac
  1347. fi
  1348. CPU=`echo $TARGET | sed 's/-.*//'`
  1349. Note "Using $FILLORDER bit order for your $CPU cpu."
  1350. # SVR4 packaging stuff
  1351. if [ -z "$PKG_ARCH" ]; then
  1352. PKG_ARCH=$CPU
  1353. fi
  1354. #
  1355. # Style of getty support.
  1356. #
  1357. if [ "$GETTY" = auto ]; then
  1358.     case $TARGET in
  1359.     *bsd*) GETTY=BSD;;
  1360.     *-sunos*) GETTY=BSD;;
  1361.     *-ultrix*) GETTY=BSD;;
  1362.     *darwin*)   GETTY=BSD;;
  1363.     *) GETTY=SysV;;
  1364.     esac
  1365. fi
  1366. Note "Looks like you need $GETTY getty support."
  1367. if [ -z "$PATH_GETTY" ]; then
  1368.     if CheckForDefine _PATH_GETTY paths.h; then
  1369. Note "Using _PATH_GETTY from <paths.h> as the program to exec for a data call."
  1370.     else
  1371. #
  1372. # NB: use findFile instead of findApp because on some
  1373. #     systems this file is mode 544; so if configure
  1374. #     is run by an unprivileged user the file will not
  1375. #     be located.
  1376. #
  1377. PATH_GETTY=`findFile ttymon /usr/lib/saf:/usr/libexec:/sbin:$PATH`
  1378. test -z "$PATH_GETTY" && 
  1379.     PATH_GETTY=`findApp agetty /usr/libexec:/sbin:$PATH`
  1380. test -z "$PATH_GETTY" && 
  1381.     PATH_GETTY=`findApp mgetty /usr/libexec:/sbin:$PATH`
  1382. test -z "$PATH_GETTY" && 
  1383.     PATH_GETTY=`findApp getty /usr/libexec:/sbin:$PATH`
  1384. if [ -z "$PATH_GETTY" ]; then
  1385.     PATH_GETTY=/etc/getty
  1386.     Note ""
  1387.     Note "WARNING, could not locate a suitable getty program to exec for a"
  1388.     Note "         data call; using a default value $PATH_GETTY."
  1389.     Note ""
  1390. else
  1391.     Note "Looks like $PATH_GETTY is the program to exec for a data call."
  1392. fi
  1393.     fi
  1394. else
  1395.     Note "Using $PATH_GETTY as the program to exec for a data call."
  1396. fi
  1397. # vgetty support
  1398. if [ -z "$PATH_VGETTY" ]; then
  1399.     PATH_VGETTY=`findApp vgetty /usr/libexec:/sbin:$PATH` 
  1400.     if [ -z "$PATH_VGETTY" ]; then
  1401. PATH_VGETTY=/bin/vgetty
  1402. Note "WARNING, no vgetty program found to handle a voice call, using $PATH_VGETTY."
  1403.     else
  1404. Note "Looks like $PATH_VGETTY is the program to exec for a voice call."
  1405.     fi
  1406. else
  1407.     Note "Using $PATH_VGETTY as the program to exec for a voice call."
  1408. fi
  1409. # egetty support
  1410. if [ -z "$PATH_EGETTY" ]; then
  1411.     PATH_EGETTY=`findApp egetty /usr/libexec:/sbin:$PATH` 
  1412.     if [ -z "$PATH_EGETTY" ]; then
  1413. PATH_EGETTY=/bin/egetty
  1414. Note "WARNING, no egetty program found, using $PATH_EGETTY."
  1415.     else
  1416. Note "Looks like $PATH_EGETTY is the program to exec for an extern call."
  1417.     fi
  1418. else
  1419.     Note "Using $PATH_EGETTY as the program to exec for an extern call."
  1420. fi
  1421. #
  1422. # UUCP lock file type and location.
  1423. #
  1424. if [ "$LOCKS" = auto ]; then
  1425.     case $TARGET in
  1426.     *-aix*) LOCKS=ascii;;
  1427.     *-*-sco*) LOCKS="-ascii";;
  1428.     *-sysv2*) LOCKS=binary;;
  1429.     *-hpux*) LOCKS=binary;;
  1430.     *-sysv4*) LOCKS="+ascii";;
  1431.     *-sysv5*) LOCKS="-ascii";;
  1432.     *-solaris*) LOCKS="+ascii";;
  1433.     *-freebsd*) LOCKS=ascii;;
  1434.     *-netbsd*) LOCKS=ascii;;
  1435.     *bsd*) LOCKS=binary;;
  1436.     *) LOCKS=ascii;;
  1437.     esac
  1438. fi
  1439. Note "Looks like you use ${LOCKS}-style UUCP lock files."
  1440. if [ -z "$DIR_LOCKS" ]; then
  1441.     LOCKDIRS="
  1442. /var/spool/locks
  1443. /usr/spool/locks
  1444. /var/spool/lock
  1445. /usr/spool/lock
  1446. /var/spool/uucp
  1447. /usr/spool/uucp
  1448.     "
  1449.     case $TARGET in
  1450.     *-aix*)     LOCKDIRS="/etc/locks $LOCKDIRS";;
  1451.     *-linux*)   LOCKDIRS="/var/lock/uucp /var/lock $LOCKDIRS";;
  1452.     *-*-sco*)   LOCKDIRS="/usr/spool/uucp $LOCKDIRS";;
  1453.     *-*-sysv5*) LOCKDIRS="/usr/spool/uucp $LOCKDIRS";;
  1454.     esac
  1455.     DIR_LOCKS=
  1456.     for i in $LOCKDIRS; do
  1457. test -d $i && { DIR_LOCKS=$i; break; }
  1458.     done
  1459. fi
  1460. if [ -z "$DIR_LOCKS" ]; then
  1461.     DIR_LOCKS=/var/spool/uucp
  1462.     Note "WARNING, could not locate a directory for UUCP lock files,"
  1463.     Note "guessing that UUCP lock files go in $DIR_LOCKS."
  1464. else
  1465.     Note "Looks like UUCP lock files go in $DIR_LOCKS."
  1466. fi
  1467. bitchExecutable()
  1468. {
  1469.     echo ""
  1470.     echo "WARNING, $1 does not seem to be an executable program;"
  1471.     echo "         you may need to correct this before starting up the fax server."
  1472.     ls -lL $1
  1473.     echo ""
  1474. }
  1475. #
  1476. # PostScript package and RIP location.
  1477. #
  1478. PickRIP()
  1479. {
  1480.     if [ -z "$PATH_GSRIP" ]; then
  1481. GSLOCS="
  1482.     /opt/local/bin/gs
  1483.     /usr/local/bin/gs
  1484.     /usr/contrib/bin/gs
  1485.     /usr/gnu/bin/gs
  1486.     /opt/gnu/bin/gs
  1487.     /usr/bin/gs
  1488.     /usr/sfw/bin/gs
  1489. "
  1490. for i in $GSLOCS; do
  1491.     # verify Ghostscript was linked with the tiffg3 device driver
  1492.     capture "$i -h 2>&1 | grep tiffg3" && { PATH_GSRIP=$i; break; }
  1493. done
  1494.     fi
  1495.     case $PS in
  1496.     dps) PATH_PSRIP=$PATH_DPSRIP;;
  1497.     imp) PATH_PSRIP=$PATH_IMPRIP;;
  1498.     gs) PATH_PSRIP=$PATH_GSRIP;;
  1499.     esac
  1500. }
  1501. CheckRIP()
  1502. {
  1503.     if [ -x "$PATH_PSRIP" ]; then
  1504. if [ $PS = gs ]; then
  1505.     # verify Ghostscript was linked with the tiffg3 device driver
  1506.     capture "$PATH_PSRIP -h 2>&1 | grep tiffg3" || cat<<EOF
  1507. WARNING, no tiffg3 driver in $PATH_PSRIP.
  1508. The PostScript imaging program $PATH_PSRIP does not appear to be
  1509. to be configured with the tiffg3 device driver.  This is necessary for the
  1510. fax software to operate correctly.  See the documentation for information
  1511. on building Ghostscript with the necessary TIFF driver.
  1512. EOF
  1513. fi
  1514.     elif [ -n "$PATH_PSRIP" ]; then
  1515. bitchExecutable $PATH_PSRIP
  1516.     else
  1517. cat<<EOF
  1518. WARNING, no PostScript imaging program.
  1519. No suitable PostScript imaging program was located on your system.
  1520. This may be due to your not having Ghostscript installed or not having
  1521. Ghostscript configured with the tiffg3 device driver.  A default pathname
  1522. will be used for the moment.  You must correct this situation for the
  1523. fax software to operate correctly.  See the WWW documentation for information
  1524. on building Ghostscript with the necessary TIFF driver.
  1525. EOF
  1526. PATH_PSRIP=/usr/local/bin/gs
  1527. PATH_GSRIP=$PATH_PSRIP
  1528.     fi
  1529. }
  1530. if [ "$PS" = auto ]; then
  1531.     case $TARGET in
  1532.     *-irix*) if expr $RELEASE >= 6.2 >/dev/null; then
  1533.     PS=gs;
  1534. else
  1535.     PS=dps;
  1536. fi
  1537. ;;
  1538.     *) PS=gs;;
  1539.     esac
  1540. fi
  1541. Note "Looks like the $PS imager package should be used."
  1542. PickRIP
  1543. Note "Looks like $PATH_PSRIP is the PostScript RIP to use."
  1544. CheckRIP
  1545. #
  1546. # Ghostscript Fontmap File
  1547. #
  1548. getGSFonts()
  1549. {
  1550. if [ ! "$PS" = gs ] && [ -n $PATH_PSRIP ];then
  1551. return 1
  1552. fi
  1553. $PATH_PSRIP -h | $AWK -F '[ ]' '
  1554. BEGIN { start = 0; }
  1555. /Search path:/ { start = 1 }
  1556. {
  1557. if (start == 1) {
  1558. if ($1 == "") {
  1559. gsub(" ","")
  1560. gsub("^[.]","")
  1561. gsub("^:","")
  1562. printf "%s", $0
  1563. } else if ($1 != "Search") start = 0
  1564. }
  1565. }
  1566. '
  1567. return 0
  1568. }
  1569. case $TARGET in
  1570. *-freebsd*)     PATH_AFM=/usr/local/lib/afm ;;
  1571. *)      if [ -z "$FONTMAP" ]; then
  1572. FONTMAP=`getGSFonts`;
  1573. fi
  1574. ;;
  1575. esac
  1576. Note "Setting the Fontmap path to $FONTMAP"
  1577. #
  1578. # Location of Adobe Font Metric files.
  1579. #
  1580. if [ -z "$PATH_AFM" ]; then
  1581.     # if the fontmap path is available use that
  1582.     # else just guess
  1583.     if [ -n "$FONTMAP" ]; then
  1584. PATH_AFM=$FONTMAP
  1585.     else
  1586.         DIR_AFMS="
  1587.     /usr/lib/afm
  1588.     /opt/local/lib/afm
  1589.     /usr/local/lib/afm
  1590.     /usr/local/share/ghostscript/fonts
  1591.     /usr/local/lib/ghostscript/fonts
  1592.     /usr/share/ghostscript/fonts
  1593.     /usr/gnu/lib/ghostscript/fonts
  1594.     /opt/gnu/lib/ghostscript/fonts
  1595.     /usr/lib/ghostscript/fonts
  1596.     /usr/lib/gnu/ghostscript/fonts
  1597.         "
  1598.         case $TARGET in
  1599.         *-irix*) DIR_AFMS="/usr/lib/DPS/AFM $DIR_AFMS";;
  1600.         *-bsdi*) DIR_AFMS="/usr/contrib/lib/flexfax/afm $DIR_AFMS";;
  1601.         *-sunos*) DIR_AFMS="/usr/openwin/lib/fonts/afm $DIR_AFMS";;
  1602.         esac
  1603.         PATH_AFM=
  1604.         for i in $DIR_AFMS; do
  1605.     test -d $i && { PATH_AFM=$i; break; }
  1606.         done
  1607.     fi
  1608. fi
  1609. if [ -z "$PATH_AFM" ]; then
  1610.     # put it where ghostscript normally puts things
  1611.     PATH_AFM=/usr/local/lib/ghostscript/fonts
  1612.     Note "WARNING, could not locate a directory with font metric information,"
  1613.     Note "guessing that font metric information goes in $PATH_AFM."
  1614. else
  1615.     Note "Looks like font metric information goes in $PATH_AFM."
  1616. fi
  1617. #
  1618. # Setup manual page-related stuff.
  1619. #
  1620. # Manual pages are processed according to:
  1621. # 1. Section organization (BSD or System V)
  1622. # 2. Pre-formatted (w/ nroff) or source.
  1623. # 3. Compressed (compress, gzip, pack) or uncompressed.
  1624. # 4. Whether or not the FlexFAX ``F'' suffix must be
  1625. #    stripped for pages to be found (only for 4F pages).
  1626. #
  1627. if [ -z "$DIR_MAN" ]; then
  1628.     MANPATH="
  1629. $MANPATH
  1630. /usr/local/man
  1631. /usr/contrib/man
  1632. /usr/catman/local
  1633.     "
  1634.     DIR_MAN=
  1635.     for i in $MANPATH; do
  1636. test -d $i && { DIR_MAN=$i; break; }
  1637.     done
  1638.     test -z "$DIR_MAN" && DIR_MAN=/usr/local/man
  1639. fi
  1640. Note "Looks like manual pages go in $DIR_MAN."
  1641. if [ -z "$MANSCHEME" ]; then
  1642.     case $TARGET in
  1643.     *-bsdi*|*-netbsd*) MANSCHEME=bsd-nroff-gzip-0.gz;;
  1644.     *-freebsd*) MANSCHEME=bsd-source-cat;;
  1645.     *-linux*) MANSCHEME=bsd-source-cat;;
  1646.     *-ultrix*) MANSCHEME=bsd-source-cat;;
  1647.     *-sunos*) MANSCHEME=bsd-source-cat-strip;;
  1648.     *-sysv[2345]*) MANSCHEME=sysv-source-cat-strip;;
  1649.     *-hpux*) MANSCHEME=sysv-source-cat-strip;;
  1650.     *-solaris*) MANSCHEME=sysv-source-cat-strip;;
  1651.     *-aix*) MANSCHEME=sysv-source-strip;;
  1652.     *-isc*|*-*-sco*) MANSCHEME=sysv-source-cat;;
  1653.     *-irix*) MANSCHEME=sysv-nroff-compress-Z;;
  1654.     *)
  1655. #
  1656. # Try to deduce the setup from existing manual pages.
  1657. # XXX needs more work XXX
  1658. #
  1659. MANSCHEME=sysv-source-cat
  1660. if [ -d /usr/share/man ]; then
  1661.     if [ -d /usr/share/man/u_man ]; then
  1662.        MANSCHEME=sysv-source-cat
  1663.     elif [ -d /usr/share/man/man8 ]; then
  1664.        MANSCHEME=bsd-source-cat
  1665.     fi
  1666. elif [ -d /usr/share/catman ]; then
  1667.     if [ -d /usr/share/catman/u_man ]; then
  1668.        MANSCHEME=sysv-nroff-cat
  1669.     elif [ -d /usr/share/catman/man8 ]; then
  1670.        MANSCHEME=bsd-nroff-cat
  1671.     fi
  1672. fi
  1673. ;;
  1674.     esac
  1675. fi
  1676. Note "Looks like manual pages should be installed with $MANSCHEME."
  1677. #
  1678. # Figure out which brand of echo we have and define
  1679. # prompt and print shell functions accordingly.
  1680. #
  1681. if [ `echo foo\c`@ = "foo@" ]; then
  1682.     prompt()
  1683.     {
  1684. echo "$* \c"
  1685.     }
  1686. elif [ "`echo -n foo`@" = "foo@" ]; then
  1687.     prompt()
  1688.     {
  1689. echo -n "$* "
  1690.     }
  1691. else
  1692.     prompt()
  1693.     {
  1694. echo "$*"
  1695.     }
  1696. fi
  1697. #
  1698. # Prompt the user for a string that can not be null.
  1699. #
  1700. promptForNonNullStringParameter()
  1701. {
  1702.     x="" val="$1" desc="$2"
  1703.     while [ -z "$x" ]; do
  1704. prompt "$desc [$val]?"; read x
  1705. if [ "$x" ]; then
  1706.     # strip leading and trailing white space
  1707.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1708. else
  1709.     x="$val"
  1710. fi
  1711.     done
  1712.     param="$x"
  1713. }
  1714. #
  1715. # Prompt the user for a numeric value.
  1716. #
  1717. promptForNumericParameter()
  1718. {
  1719.     x="" val="$1" desc="$2"
  1720.     while [ -z "$x" ]; do
  1721. prompt "$desc [$val]?"; read x
  1722. if [ "$x" ]; then
  1723.     # strip leading and trailing white space
  1724.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1725.     match=`expr "$x" : "([0-9]*)"`
  1726.     if [ "$match" != "$x" ]; then
  1727. echo ""
  1728. echo "This must be entirely numeric; please correct it."
  1729. echo ""
  1730. x="";
  1731.     fi
  1732. else
  1733.     x="$val"
  1734. fi
  1735.     done
  1736.     param="$x"
  1737. }
  1738. promptForImagerPackage()
  1739. {
  1740.     x=""
  1741.     while [ -z "$x" ]; do
  1742. prompt "PostScript imager package [$PS]?"; read x
  1743. if [ "$x" ]; then
  1744.     # strip leading and trailing white space
  1745.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1746.     case "$x" in
  1747.     [dD]ps|DPS) x="dps";;
  1748.     [gG]s|[gG]host[sS]cript) x="gs";;
  1749.     imp) x="imp";;
  1750.     *)
  1751. cat <<EOF
  1752. "$x" is not a PostScript imager package; choose one of:
  1753. dps for Display PostScript on a Silicon Graphics machine running
  1754. any version of IRIX *prior* to 6.2
  1755. gs for the freely available Ghostscript package
  1756. imp for Impressario 2.1 on a Silicon Graphics machine
  1757. EOF
  1758. x="";;
  1759.     esac
  1760. else
  1761.     x="$PS"
  1762. fi
  1763.     done
  1764.     PS="$x"
  1765. }
  1766. promptForPageSize()
  1767. {
  1768.     file=$1 x=""
  1769.     while [ -z "$x" ]; do
  1770. prompt "Default page size [$PAGESIZE]?"; read x
  1771. if [ "$x" ]; then
  1772.     # strip leading and trailing white space
  1773.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1774.     # search pagesizes file for an entry
  1775.     y=`sed -e '/^#/d' $file | grep -i "$x" | sed -e 's/ .*//;q'`
  1776.     if [ -z "$y" ]; then
  1777. cat<<EOF
  1778. "$x" is not a known page size; the following are known page sizes:
  1779. Name Abbrev Width Height Width Height Top Left
  1780. EOF
  1781. sed -e '/^#/d' -e '/@DEFPAGESIZE@/d' $file
  1782. echo ""
  1783. x=""
  1784.     else
  1785. x="$y"
  1786.     fi
  1787. else
  1788.     x="$PAGESIZE"
  1789. fi
  1790.     done
  1791.     PAGESIZE="$x"
  1792. }
  1793. #
  1794. # Prompt the user for a numeric value.
  1795. #
  1796. promptForVRes()
  1797. {
  1798.     x=""
  1799.     while [ -z "$x" ]; do
  1800. prompt "Default vertical res (lpi) [$DEFVRES]?"; read x
  1801. if [ "$x" ]; then
  1802.     # strip leading and trailing white space
  1803.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1804.     case "$x" in
  1805.     98|low|med*) x="98";;
  1806.     196|high|fine) x="196";;
  1807.     *)
  1808. cat <<EOF
  1809. "$x" is not a valid vertical resolution; choose either "98" lines/inch
  1810. (low resolution) or "196" lines/inch (often called fine resolution).
  1811. EOF
  1812. x="";;
  1813.     esac
  1814. else
  1815.     x="$DEFVRES"
  1816. fi
  1817.     done
  1818.     DEFVRES="$x"
  1819. }
  1820. promptForUUCPLockScheme()
  1821. {
  1822.     x=""
  1823.     while [ -z "$x" ]; do
  1824. prompt "UUCP lock file scheme [$LOCKS]?"; read x
  1825. if [ "$x" ]; then
  1826.     # strip leading and trailing white space
  1827.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1828.     case "$x" in
  1829.     ascii|[-+]ascii) ;;
  1830.     binary|[-+]binary) ;;
  1831.     *)
  1832. cat <<EOF
  1833. "$x" is not a valid UUCP lock file scheme; choose "ascii" or
  1834. "binary" to get lock files with the process ID of the lock holder
  1835. written as ASCII or binary values and optionally prefix this with
  1836. "+" for SVR4-style lock file names (LK.xxx.yyy.zzz) or "-" for
  1837. SCO-style lock file names (convert tty names from upper to lower
  1838. case when forming the lock file name).
  1839. EOF
  1840. x="";;
  1841.     esac
  1842. else
  1843.     x="$LOCKS"
  1844. fi
  1845.     done
  1846.     LOCKS="$x"
  1847. }
  1848. promptForManPageScheme()
  1849. {
  1850.     x=""
  1851.     while [ -z "$x" ]; do
  1852. prompt "Manual page installation scheme [$MANSCHEME]?"; read x
  1853. if [ "$x" ]; then
  1854.     # strip leading and trailing white space
  1855.     x=`echo "$x" | sed -e 's/^[  ]*//' -e 's/[  ]*$//'`
  1856.     # XXX do a better job of validating...
  1857.     case "$x" in
  1858.     bsd-nroff-cat*|sysv-nroff-cat*) ;;
  1859.     bsd-nroff-gzip*|sysv-nroff-gzip*) ;;
  1860.     bsd-nroff-comp*|sysv-nroff-comp*) ;;
  1861.     bsd-nroff-pack*|sysv-nroff-pack*) ;;
  1862.     bsd-source-cat*|sysv-source-cat*) ;;
  1863.     bsd-source-gzip*|sysv-source-gzip*) ;;
  1864.     bsd-source-comp*|sysv-source-comp*) ;;
  1865.     bsd-source-pack*|sysv-source-pack*) ;;
  1866.     *)
  1867. cat <<EOF
  1868. "$x" is not a valid manual page installation scheme.  Schemes are
  1869. constructed according to:
  1870.     <organization>-<formatting>-<compression>[-<suffix>]
  1871. where:
  1872. <organization>  is either "bsd" for BSD-style section organization (e.g.
  1873. file formats in section 5) or "sysv" for System V-style
  1874. organization (e.g. file formats in section 4).
  1875. <formatting>    is either "nroff" to force installation of formatted
  1876.                 materials (using nroff) or "source" to get the nroff
  1877. source installed.
  1878. <compression>   is either the name of a program to compress the manual
  1879.                 pages (gipz, compress, pack) or "cat" for uncompressed data.
  1880. <suffix>        is either the file suffix to convert installed pages to
  1881.                 (e.g. 0.gz for gzip-compressed pages under BSD) or "strip"
  1882. to force the normal ".4f" suffix to be converted to ".4"
  1883. (or ".5" if using the BSD organization).  If no -<suffix>
  1884. is specified then filenames are not converted when they
  1885. are installed.
  1886. Common schemes are:
  1887. bsd-nroff-gzip-0.gz compressed formatted pages for BSD 
  1888. bsd-source-cat nroff source w/ BSD organization
  1889. sysv-source-cat-strip nroff source for SysV w/o .4f suffix
  1890. sysv-source-cat nroff source for SysV as-is
  1891. EOF
  1892. x="";;
  1893.     esac
  1894. else
  1895.     x="$MANSCHEME"
  1896. fi
  1897.     done
  1898.     MANSCHEME="$x"
  1899. }
  1900. getPageSizeInfo()
  1901. {
  1902.     pat=`grep '^default' $1 | 
  1903. sed -e 's/default[  ]*//' -e 's/[  ][  ]*/[  ]*/g'`
  1904.     param=`grep "$pat" $1 | sed -e 's/ .*//;q'`
  1905. }
  1906. printConfig1()
  1907. {
  1908.     cat<<EOF
  1909. HylaFAX configuration parameters (part 1 of 2) are:
  1910. [ 1] Directory for applications:        $DIR_BIN
  1911. [ 2] Directory for lib data files:      $DIR_LIBDATA
  1912. [ 3] Directory for lib executables:     $DIR_LIBEXEC
  1913. [ 4] Directory for system apps:   $DIR_SBIN
  1914. [ 5] Directory for manual pages:        $DIR_MAN
  1915. [ 6] Directory for spooling:            $DIR_SPOOL
  1916. [ 7] Directory for uucp lock files:     $DIR_LOCKS
  1917. [ 8] Uucp lock file scheme:             $LOCKS
  1918. [ 9] PostScript imager package:         $PS
  1919. [10] PostScript imager program:         $PATH_PSRIP
  1920. [11] Manual page installation scheme:   $MANSCHEME
  1921. [12] Default page size:                 $PAGESIZE
  1922. [13] Default vertical res (lpi):        $DEFVRES
  1923. EOF
  1924. }
  1925. printConfig2()
  1926. {
  1927.     cat<<EOF
  1928. HylaFAX configuration parameters (part 2 of 2) are:
  1929. [14] Location of getty program:         $PATH_GETTY
  1930. [15] Location of voice getty program:   $PATH_VGETTY
  1931. [16] Location of sendmail program:      $PATH_SENDMAIL
  1932. [17] Location of TIFF tools:            $TIFFBIN
  1933. [18] Location of SysV init scripts: $DIR_SYSVINIT
  1934. [19] Location of SysV start scripts: $DIR_SYSVINITSTART
  1935. [20] Location of SysV stop scripts: $DIR_SYSVINITSTOP
  1936. [21] Name of SysV start script: $NAME_SYSVINITSTART
  1937. [22] Name of SysV stop script: $NAME_SYSVINITSTOP
  1938. [23] Init script starts faxq: $FAXQ_SERVER
  1939. [24] Init script starts hfaxd $HFAXD_SERVER
  1940. [25] Start paging protocol: $HFAXD_SNPP_SERVER
  1941. EOF
  1942. }
  1943.   
  1944. promptForParameter()
  1945. {
  1946.     case $1 in
  1947.     1) promptForNonNullStringParameter "$DIR_BIN" 
  1948.     "Directory to install applications"; DIR_BIN="$param"
  1949. ;;
  1950.     2) promptForNonNullStringParameter "$DIR_LIBDATA" 
  1951.     "Directory to install library data files"; DIR_LIBDATA="$param"
  1952. ;;
  1953.     3) promptForNonNullStringParameter "$DIR_LIBEXEC" 
  1954.     "Directory to install library executables"; DIR_LIBEXEC="$param"
  1955. ;;
  1956.     4) promptForNonNullStringParameter "$DIR_SBIN" 
  1957.     "Directory to install system apps"; DIR_SBIN="$param"
  1958. ;;
  1959.     5) promptForNonNullStringParameter "$DIR_MAN" 
  1960.     "Directory to install manual pages"; DIR_MAN="$param"
  1961. ;;
  1962.     6) promptForNonNullStringParameter "$DIR_SPOOL" 
  1963.     "Directory to setup server spooling area"; DIR_SPOOL="$param"
  1964. ;;
  1965.     7) promptForNonNullStringParameter "$DIR_LOCKS" 
  1966.     "Directory for uucp lock files"; DIR_LOCKS="$param"
  1967. ;;
  1968.     8) promptForUUCPLockScheme;;
  1969.     9) promptForImagerPackage; PickRIP; CheckRIP;;
  1970.     10) promptForNonNullStringParameter "$PATH_PSRIP" 
  1971.     "PostScript imager program"; PATH_PSRIP="$param"
  1972. case "$PS" in
  1973. dps) PATH_DPSRIP=$PATH_PSRIP;;
  1974. imp) PATH_IMPRIP=$PATH_PSRIP;;
  1975. gs) PATH_GSRIP=$PATH_PSRIP;;
  1976. esac
  1977. ;;
  1978.     11) promptForManPageScheme;;
  1979.     12) promptForPageSize $SRCDIR/util/pagesizes.in;;
  1980.     13) promptForVRes;;
  1981.     14) promptForNonNullStringParameter "$PATH_GETTY" 
  1982.     "Location of getty program"; PATH_GETTY="$param"
  1983. ;;
  1984.     15) promptForNonNullStringParameter "$PATH_VGETTY" 
  1985.     "Location of vgetty program";         PATH_VGETTY="$param"
  1986. ;;
  1987.     16) promptForNonNullStringParameter "$PATH_SENDMAIL" 
  1988.     "Location of sendmail program"; PATH_SENDMAIL="$param"
  1989. ;;
  1990.     17) promptForNonNullStringParameter "$TIFFBIN" 
  1991.     "Location of TIFF tools"; TIFFBIN="$param"
  1992. ;;
  1993.     18) promptForNonNullStringParameter "$DIR_SYSVINIT" 
  1994.     "Location of SysV init scripts"; DIR_SYSVINIT="$param"
  1995. ;;
  1996.     19) promptForNonNullStringParameter "$DIR_SYSVINITSTART" 
  1997.     "Location of SysV start scripts"; DIR_SYSVINITSTART="$param"
  1998. ;;
  1999.     20) promptForNonNullStringParameter "$DIR_SYSVINITSTOP" 
  2000.     "Location of SysV stop scripts"; DIR_SYSVINITSTOP="$param"
  2001. ;;
  2002.     21) promptForNonNullStringParameter "$NAME_SYSVINITSTART" 
  2003.     "Name of SysV start script"; NAME_SYSVINITSTART="$param"
  2004. ;;
  2005.     22) promptForNonNullStringParameter "$NAME_SYSVINITSTOP" 
  2006.     "Name of SysV stop script"; NAME_SYSVINITSTOP="$param"
  2007. ;;
  2008.     23) promptForNonNullStringParameter "$FAXQ_SERVER" 
  2009.     "Init script starts faxq"; FAXQ_SERVER="$param"
  2010. ;;
  2011.     24) promptForNonNullStringParameter "$HFAXD_SERVER" 
  2012.     "Init script starts hfaxd"; HFAXD_SERVER="$param"
  2013. ;;
  2014.     25) promptForNonNullStringParameter "$HFAXD_SNPP_SERVER" 
  2015.     "Start paging protocol"; HFAXD_SNPP_SERVER="$param"
  2016. ;;
  2017.     esac
  2018. }
  2019. checkForExecutable()
  2020. {
  2021.     test -x $1 || bitchExecutable $1
  2022. }
  2023. if [ $QUIET = no ] && [ $INTERACTIVE != no ]; then
  2024. Note "Press Return to Continue "
  2025. read ok
  2026. fi
  2027. if [ $QUIET = no ]; then
  2028.     ok=skip
  2029.     while [ "$ok" != y ] && [ "$ok" != yes ]; do
  2030. if [ "$ok" != skip ]; then
  2031.     for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
  2032. promptForParameter $i;
  2033.     done
  2034. fi
  2035. printConfig1
  2036. if [ $INTERACTIVE = no ]; then
  2037.     ok=yes
  2038. else
  2039.     prompt "Are these ok [yes]?"; read ok
  2040.     test -z "$ok" && ok=yes
  2041.     case "$ok" in
  2042.     [1-9]|1[0-4]) promptForParameter $ok;;
  2043.     [yY]*|[nN]*) continue;;
  2044.     ?*)
  2045. echo ""
  2046. echo ""y", "yes", or <RETURN> accepts the displayed parameters."
  2047. echo "A number lets you change the numbered parameter."
  2048. echo ""
  2049. ;;
  2050.     esac
  2051.     ok=skip
  2052. fi
  2053.     done
  2054. fi
  2055. if [ $QUIET = no ]; then
  2056.     ok=skip
  2057.     while [ "$ok" != y ] && [ "$ok" != yes ]; do
  2058. if [ "$ok" != skip ]; then
  2059.     for i in 15 16 17 18 19 20 21 22 23 24 25 26 27 ; do
  2060. promptForParameter $i;
  2061.     done
  2062. fi
  2063. printConfig2
  2064. checkForExecutable $PATH_SENDMAIL
  2065. checkForExecutable $PATH_GETTY
  2066. if [ $INTERACTIVE = no ]; then
  2067.     ok=yes
  2068. else
  2069.     prompt "Are these ok [yes]?"; read ok
  2070.     test -z "$ok" && ok=yes
  2071.     case "$ok" in
  2072.     1[5-9]|2[0-7]) promptForParameter $ok;;
  2073.     [yY]*|[nN]*) continue;;
  2074.     ?*)
  2075. echo ""
  2076. echo ""y", "yes", or <RETURN> accepts the displayed parameters."
  2077. echo "A number lets you change the numbered parameter."
  2078. echo ""
  2079. ;;
  2080.     esac
  2081.     ok=skip
  2082. fi
  2083.     done
  2084. fi
  2085. $RM config.cache; dumpvals |sort> config.cache
  2086. case $MANSCHEME in
  2087. bsd-source-*) MANAPPS=man1 MANSYS=man8 MANFILES=man5;;
  2088. bsd-nroff-*) MANAPPS=cat1 MANSYS=cat8 MANFILES=cat5;;
  2089. sysv-source-*) MANAPPS=man1 MANSYS=man1 MANFILES=man4;;
  2090. sysv-nroff-*) MANAPPS=cat1 MANSYS=cat1 MANFILES=cat4;;
  2091. esac
  2092. case $MANSCHEME in
  2093. bsd-*-strip) MANNUM4_5=5  MANNUM1_8=8;;
  2094. bsd-*) MANNUM4_5=5F MANNUM1_8=8C;;
  2095. sysv-*-strip) MANNUM4_5=4  MANNUM1_8=1;;
  2096. sysv-*) MANNUM4_5=4F MANNUM1_8=1M;;
  2097. esac
  2098. case $MANSCHEME in
  2099. *-source-*) MANCVT='${MANSED} $? >$@';;
  2100. *-nroff-gzip-*) MANCVT='${MANSED} $? | nroff -man | gzip > $@';;
  2101. *-nroff-pack-*) MANCVT='${MANSED} $? | nroff -man | pack > $@';;
  2102. *-nroff-com*-*) MANCVT='${MANSED} $? | nroff -man | compress > $@';;
  2103. *-nroff-cat-*) MANCVT='${MANSED} $? | nroff -man > $@';;
  2104. esac
  2105. case $MANSCHEME in
  2106. *-0|*-0.gz|*-0.Z|*-gz|*-Z|*-z)
  2107.     suf=`echo $MANSCHEME | $SED 's/.*-/./'`
  2108.     A='`echo $$i | sed' B='`' # workaround shell bugs
  2109.     MANCAPPNAME="$A s/\\.1$$/$suf/$B"
  2110.     MANCFILENAME="$A s/\\.4f$$/$suf/$B"
  2111.     MANSAPPNAME="$A s/\\.1m$$/$suf/$B"
  2112.     MANSFILENAME="$A s/\\.4f$$/$suf/$B"
  2113.     ;;
  2114. bsd-*-strip)
  2115.     MANCAPPNAME='$$i'
  2116.     MANCFILENAME='`echo $$i | sed s/\.4f$$/.5/`'
  2117.     MANSAPPNAME='`echo $$i | sed s/\.1m$$/.8/`'
  2118.     MANSFILENAME='`echo $$i | sed s/\.4f$$/.5/`'
  2119.     ;;
  2120. *-strip)
  2121.     MANCAPPNAME='$$i'
  2122.     MANCFILENAME='`echo $$i | sed s/\.4f$$/.4/`'
  2123.     MANSAPPNAME='`echo $$i | sed s/\.1m$$/.1/`'
  2124.     MANSFILENAME='`echo $$i | sed s/\.4f$$/.4/`'
  2125.     ;;
  2126. bsd-*)
  2127.     MANCAPPNAME='$$i'
  2128.     MANCFILENAME='`echo $$i | sed s/\.4f$$/.5f/`'
  2129.     MANSAPPNAME='`echo $$i | sed s/\.1m$$/.8c/`'
  2130.     MANSFILENAME='`echo $$i | sed s/\.4f$$/.5f/`'
  2131.     ;;
  2132. *)
  2133.     MANCAPPNAME='$$i' MANCFILENAME='$$i'
  2134.     MANSAPPNAME='$$i' MANSFILENAME='$$i'
  2135.     ;;
  2136. esac
  2137. Note ""
  2138. if [ $GS = yes ]; then
  2139.     test -d $SRCDIR/gs || {
  2140. Note ""
  2141. Note "WARNING, no Ghostscript build directory exists; disabling building"
  2142. Note "and installation of Ghostscript from source (GS=no)."
  2143. Note ""
  2144. GS=no
  2145.     }
  2146. fi
  2147. if [ $DPS = yes ]; then
  2148.     test -d $SRCDIR/dps || {
  2149. Note ""
  2150. Note "WARNING, no DPS build directory exists; disabling building"
  2151. Note "and installation of ps2fax for IRIX (DPS=no)."
  2152. Note ""
  2153. DPS=no
  2154.     }
  2155. fi
  2156. if [ $IMP = yes ]; then
  2157.     test -d $SRCDIR/imp || {
  2158. Note ""
  2159. Note "WARNING, no Impressario build directory exists; disabling building"
  2160. Note "and installation of the Impressario 2.1 back-end for IRIX (IMP=no)."
  2161. Note ""
  2162. IMP=no
  2163.     }
  2164. fi
  2165. #
  2166. # Convert default page size name to an entry that goes
  2167. # in the pagesizes database file.
  2168. #
  2169. F=$SRCDIR/util/pagesizes
  2170. test -f $F.in || {
  2171.     bitch "$F.in is missing; this should be part of the distribution."
  2172.     boom
  2173. }
  2174. DEFPAGESIZE=`grep "$PAGESIZE" $F.in | $SED -e 's/[^ ]*/default/;q'`
  2175. x="`relativize ${LIBTIFF}`"; LIBTIFF="$x"
  2176. x="`relativize ${LIBZ}`"; LIBZ="$x"
  2177. x="`relativize ${LIBREGEX}`"; LIBREGEX="$x"
  2178. # NB: these should be sorted alphabetically
  2179. $RM confsed1; dumpvars "$VAR1" | sort > confsed1
  2180. $RM confsed2; dumpvars "$VAR2" | sort > confsed2
  2181. SedConfigFiles()
  2182. {
  2183.     for F do
  2184. test -f $SRCDIR/$F.in || {
  2185.     bitch "$SRCDIR/$F.in is missing; this should be part of the distribution."
  2186.     boom
  2187. }
  2188. dir=`echo $F | $SED 's;/[^/]*$;;'`
  2189. if [ $dir != $F ] && [ ! -d $dir ]; then
  2190.     Note "Creating $dir directory"
  2191.     $MKDIR $dir
  2192. fi
  2193. suffix=`echo $F | $SED 's/.*.//'`
  2194. if [ "$suffix" = h ]; then
  2195.     #
  2196.     # Compare old and new versions so that include files
  2197.     # are only updated when something has changed--this
  2198.     # saves time for subsequent makes.  Note we screen
  2199.     # out use of @DATE@ 'cuz otherwise that'll mess up
  2200.     # the comparison (this assumes dates are used in lines
  2201.     # of the form DATE: @DATE@).
  2202.     #
  2203.     unset POSIXLY_CORRECT
  2204.     $RM $F.new; $SED -f confsed1 $SRCDIR/$F.in | $SED -f confsed2 > $F.new
  2205.     POSIXLY_CORRECT=1 ; export POSIXLY_CORRECT
  2206.     $RM confx; $SED '/D[aA][tT][eE]:/d' $F.new >confx
  2207.     $RM confy; $SED '/D[aA][tT][eE]:/d' $F >confy 2>/dev/null
  2208.     if cmp -s confx confy >/dev/null 2>&1; then
  2209. $RM $F.new
  2210.     else
  2211. Note "Creating $F from $SRCDIR/$F.in"
  2212. $RM $F; $MV $F.new $F; $CHMOD 444 $F
  2213.     fi
  2214. else
  2215.     Note "Creating $F from $SRCDIR/$F.in"
  2216.     unset POSIXLY_CORRECT
  2217.     if $SED -f confsed1 $SRCDIR/$F.in  | $SED -f confsed2 >$F.new; then
  2218. POSIXLY_CORRECT=1 ; export POSIXLY_CORRECT
  2219. $RM $F; $MV $F.new $F; $CHMOD 444 $F
  2220.     else
  2221. POSIXLY_CORRECT=1 ; export POSIXLY_CORRECT
  2222. cat 1>&2 <<EOF
  2223. Help, there was a problem crafting $F from $F.in.
  2224. The command:
  2225.     $SED -f confsed1 $SRCDIR/$F.in | $SED -f confsed2 >$F.new
  2226. failed.  Aborting without cleaning up files so you can take a look...
  2227. EOF
  2228. exit 1 # NB: don't use boom/die
  2229.     fi
  2230. fi
  2231.     done
  2232. }
  2233. #
  2234. # Configuration File Generation
  2235. #
  2236. # The following files are created using the parameters determined above:
  2237. #
  2238. # defs master make include file for the source code
  2239. # rules make definitions for building from source code
  2240. # config.h master definitions compiled into code
  2241. # */Makefile make rules files
  2242. # port/install.sh SGI install program emulation script
  2243. # port/mkdepend makefile dependency generator (if configured)
  2244. # etc/faxsetup.sh script for setting up a machine
  2245. # etc/faxaddmodem.sh script for adding/configuring a modem
  2246. # etc/probemodem.sh script for probing a modem for its capabilities
  2247. # etc/hylafax SysV-style init script for HylaFAX servers
  2248. # faxcover/edit-faxcover.sh script to edit faxcover.ps
  2249. # util/xferfaxstats.sh script for transmit statistics accounting
  2250. # util/recvstats.sh script for receive statistics accounting
  2251. # util/faxcron.sh script for cleaning up the spooling area (run from cron)
  2252. # util/pagesizes client page dimensions database (has default page size)
  2253. # pkg/cpkginfo SVR4 package stuff (client package info)
  2254. # pkg/cproto.stub SVR4 package stuff (client prototype stub)
  2255. # pkg/crequest SVR4 package stuff
  2256. # pkg/make_proto.sh SVR4 package stuff (script for making prototype files)
  2257. # pkg/postinstall SVR4 package stuff
  2258. # pkg/postremove SVR4 package stuff
  2259. # pkg/spkginfo SVR4 package stuff (server package info)
  2260. # pkg/sproto.stub SVR4 package stuff (server prototype stub)
  2261. # pkg/srequest SVR4 package stuff
  2262. #
  2263. CONF_FILES="
  2264.     defs
  2265.     config.h
  2266.     rules
  2267.     Makefile
  2268.     config/Makefile
  2269.     etc/Makefile
  2270.     faxalter/Makefile
  2271.     faxcover/Makefile
  2272.     faxd/Makefile
  2273.     faxmail/Makefile
  2274.     faxrm/Makefile
  2275.     faxstat/Makefile
  2276.     hfaxd/Makefile
  2277.     man/Makefile
  2278.     sendfax/Makefile
  2279.     sendpage/Makefile
  2280.     util/Makefile
  2281.     faxcover/edit-faxcover.sh
  2282.     faxmail/application-pdf.sh
  2283.     faxmail/application-octet-stream.sh
  2284.     faxmail/image-tiff.sh
  2285.     port/Makefile
  2286.     port/install.sh
  2287.     port/version.c
  2288.     etc/faxsetup.sh
  2289.     etc/faxsetup.linux
  2290.     etc/faxaddmodem.sh
  2291.     etc/probemodem.sh
  2292.     etc/hylafax
  2293.     util/xferfaxstats.sh
  2294.     util/recvstats.sh
  2295.     util/faxcron.sh
  2296.     util/pagesizes
  2297.     util/archive.sh
  2298.     util/dictionary.sh
  2299.     util/common-functions.sh
  2300.     util/faxrcvd.sh
  2301.     util/mkcover.sh
  2302.     util/notify.sh
  2303.     util/pcl2fax.sh
  2304.     util/pollrcvd.sh
  2305.     util/ps2fax.dps.sh
  2306.     util/ps2fax.gs.sh
  2307.     util/pdf2fax.gs.sh
  2308.     util/ps2fax.imp.sh
  2309.     util/tiff2fax.sh
  2310.     util/wedged.sh
  2311.     util/tiff2pdf.sh
  2312.     util/qp-encode.awk
  2313.     util/rfc2047-encode.awk
  2314.     util/dict-de
  2315.     util/dict-es
  2316.     util/dict-it
  2317.     util/dict-pt
  2318.     util/dict-ro
  2319.     util/dict-tr
  2320.     util/dict-en
  2321.     util/dict-fr
  2322.     util/dict-pl
  2323.     util/dict-pt_BR
  2324.     util/dict-sr
  2325.     util/dict-zh
  2326.     pkg/Makefile
  2327.     pkg/cpkginfo
  2328.     pkg/cproto.stub
  2329.     pkg/crequest
  2330.     pkg/make_proto.sh
  2331.     pkg/postinstall
  2332.     pkg/postremove
  2333.     pkg/spkginfo
  2334.     pkg/sproto.stub
  2335.     pkg/srequest
  2336. "
  2337. SedConfigFiles $CONF_FILES
  2338. test $DPS = yes &&    SedConfigFiles dps/Makefile
  2339. test $GS = yes &&    SedConfigFiles gs/Makefile
  2340. test $IMP = yes &&    SedConfigFiles imp/Makefile
  2341. test "$MKDEPEND" != ":" &&    SedConfigFiles port/mkdepend
  2342. test $SGI2FAX = yes &&        SedConfigFiles sgi2fax/Makefile
  2343. test $REGEX = yes &&    SedConfigFiles regex/Makefile
  2344. if [ "$MAKEDEPINCLUDE" != "sinclude" ]; then
  2345.     Note "Setting up make dependency files."
  2346.     #
  2347.     # Setup null make dependency files so that we can include
  2348.     # it w/o problem.  Some systems have conditional include
  2349.     # support in their make, but others do not, so we use an
  2350.     # unconditional include and setup everthing as null here
  2351.     #
  2352.     DEPEND=".
  2353. faxalter
  2354. faxcover
  2355. faxd
  2356. faxmail
  2357. faxrm
  2358. faxstat
  2359. hfaxd
  2360. sendfax
  2361. sendpage
  2362. util
  2363. man
  2364. etc
  2365. config
  2366. "
  2367.     test $GS = yes && DEPEND="$DEPEND gs"
  2368.     test $SGI2FAX = yes && DEPEND="$DEPEND sgi2fax"
  2369.     test $PORT = yes && DEPEND="$DEPEND port"
  2370.     test $REGEX = yes && DEPEND="$DEPEND regex"
  2371.     test -d $SRCDIR/faxview && test -d faxview && DEPEND="$DEPEND faxview"
  2372.     for i in $DEPEND; do
  2373. test -f $i/Makedepend || cp /dev/null $i/Makedepend
  2374.     done
  2375. fi
  2376. Note "Done."
  2377. $RM $JUNK
  2378. exit 0