1#!/bin/sh 2 3#++ 4# NAME 5# makedefs 1 6# SUMMARY 7# makefile configuration utility 8# SYNOPSIS 9# \fBmake makefiles \fIname=value...\fR 10# DESCRIPTION 11# The \fBmakedefs\fR command identifies the compilation 12# environment, and emits macro definitions on the standard output 13# stream that can be prepended to template Makefiles. 14# 15# Default settings can be overruled by specifying them as 16# environment variables. Use quotes if variables contain 17# whitespace or shell meta characters. 18# .IP \fBAUXLIBS=\fIobject_library...\fR 19# Specifies one or more non-default object libraries. 20# .IP \fBCC=\fIcompiler_command\fR 21# Specifies a non-default compiler. On many systems, the default 22# is \fBgcc\fR. 23# .IP \fBCCARGS=\fIcompiler_arguments\fR 24# Specifies non-default compiler arguments, for example, a non-default 25# \fIinclude\fR directory. 26# The following directives are special: 27# .RS 28# .IP \fB-DNO_DEVPOLL\fR 29# Do not build with Solaris /dev/poll support. 30# By default, /dev/poll support is compiled in on platforms that 31# are known to support it. 32# .IP \fB-DNO_EPOLL\fR 33# Do not build with Linux EPOLL support. 34# By default, EPOLL support is compiled in on platforms that 35# are known to support it. 36# .IP \fB-DNO_IPV6\fR 37# Do not build with IPv6 support. 38# By default, IPv6 support is compiled in on platforms that 39# are known to have IPv6 support. 40# 41# Note: this directive is for debugging and testing only. It 42# is not guaranteed to work on all platforms. 43# .IP \fB-DNO_KQUEUE\fR 44# Do not build with FreeBSD/NetBSD/OpenBSD/MacOSX KQUEUE support. 45# By default, KQUEUE support is compiled in on platforms that 46# are known to support it. 47# .IP \fB-DNO_PCRE\fR 48# Do not build with PCRE support. 49# By default, PCRE support is compiled in when the \fBpcre-config\fR 50# utility is installed. 51# .IP \fB-DNO_SIGSETJMP\fR 52# Use setjmp()/longjmp() instead of sigsetjmp()/siglongjmp(). 53# By default, Postfix uses sigsetjmp()/siglongjmp() when they 54# appear to work. 55# .RE 56# .IP \fBDEBUG=\fIdebug_level\fR 57# Specifies a non-default debugging level. The default is \fB-g\fR. 58# Specify \fBDEBUG=\fR to turn off debugging. 59# .IP \fBOPT=\fIoptimization_level\fR 60# Specifies a non-default optimization level. The default is \fB-O\fR. 61# Specify \fBOPT=\fR to turn off optimization. 62# .IP \fBWARN=\fIwarning_flags\fR 63# Specifies non-default gcc compiler warning options for use when 64# "make" is invoked in a source subdirectory only. 65# LICENSE 66# .ad 67# .fi 68# The Secure Mailer license must be distributed with this software. 69# AUTHOR(S) 70# Wietse Venema 71# IBM T.J. Watson Research 72# P.O. Box 704 73# Yorktown Heights, NY 10598, USA 74#-- 75 76# Emit system-dependent Makefile macro definitions to standard output. 77 78# Defaults for most sane systems 79 80RANLIB=ranlib 81SYSLIBS= 82AR=ar 83ARFL=rv 84 85# Ugly function to make our error message more visible among the 86# garbage that is output by some versions of make(1). 87 88# By now all shells must have functions. 89 90error() { 91 # Alas, tput(1) is not portable so we can't use visual effects. 92 echo "ATTENTION:" 1>&2; 93 echo "ATTENTION:" $* 1>&2; 94 echo "ATTENTION:" 1>&2; 95 exit 1 96} 97 98case $# in 99 # Officially supported usage. 100 0) SYSTEM=`(uname -s) 2>/dev/null` 101 RELEASE=`(uname -r) 2>/dev/null` 102 VERSION=`(uname -v) 2>/dev/null` 103 case "$VERSION" in 104 dcosx*) SYSTEM=$VERSION;; 105 esac;; 106 # Unsupported debug-only mode. Not suitable for cross-platform tests. 107 2) SYSTEM="$1"; RELEASE="$2";; 108 *) echo usage: $0 [system release] 1>&2; exit 1;; 109esac 110 111case "$SYSTEM.$RELEASE" in 112 SCO_SV.3.2) SYSTYPE=SCO5 113 # Use the native compiler by default 114 : ${CC="/usr/bin/cc -b elf"} 115 CCARGS="$CCARGS -DPIPES_CANT_FIONREAD $CCARGS" 116 SYSLIBS="-lsocket -ldbm" 117 RANLIB=echo 118 ;; 119 UnixWare.5*) SYSTYPE=UW7 120 # Use the native compiler by default 121 : ${CC=/usr/bin/cc} 122 RANLIB=echo 123 SYSLIBS="-lresolv -lsocket -lnsl" 124 ;; 125 UNIX_SV.4.2*) case "`uname -v`" in 126 2.1*) SYSTYPE=UW21 127 # Use the native compiler by default 128 : ${CC=/usr/bin/cc} 129 RANLIB=echo 130 SYSLIBS="-lresolv -lsocket -lnsl -lc -L/usr/ucblib -lucb" 131 ;; 132 *) error "Seems to be UnixWare`uname -v`. Untested.";; 133 esac 134 ;; 135 FreeBSD.2*) SYSTYPE=FREEBSD2 136 ;; 137 FreeBSD.3*) SYSTYPE=FREEBSD3 138 ;; 139 FreeBSD.4*) SYSTYPE=FREEBSD4 140 ;; 141 FreeBSD.5*) SYSTYPE=FREEBSD5 142 ;; 143 FreeBSD.6*) SYSTYPE=FREEBSD6 144 ;; 145 FreeBSD.7*) SYSTYPE=FREEBSD7 146 ;; 147 FreeBSD.8*) SYSTYPE=FREEBSD8 148 ;; 149 OpenBSD.2*) SYSTYPE=OPENBSD2 150 ;; 151 OpenBSD.3*) SYSTYPE=OPENBSD3 152 ;; 153 OpenBSD.4*) SYSTYPE=OPENBSD4 154 ;; 155 ekkoBSD.1*) SYSTYPE=EKKOBSD1 156 ;; 157 NetBSD.1*) SYSTYPE=NETBSD1 158 ;; 159 NetBSD.2*) SYSTYPE=NETBSD2 160 ;; 161 NetBSD.3*) SYSTYPE=NETBSD3 162 ;; 163 NetBSD.4*) SYSTYPE=NETBSD4 164 ;; 165 BSD/OS.2*) SYSTYPE=BSDI2 166 ;; 167 BSD/OS.3*) SYSTYPE=BSDI3 168 ;; 169 BSD/OS.4*) SYSTYPE=BSDI4 170 ;; 171 OSF1.V[3-5].*) SYSTYPE=OSF1 172 # Use the native compiler by default 173 : ${CC=cc} 174 : ${DEBUG="-g3"} 175 case $RELEASE in 176 V[0-4].*) CCARGS="$CCARGS -DNO_IPV6";; 177 esac 178 ;; 179 SunOS.4*) SYSTYPE=SUNOS4 180 SYSLIBS=-lresolv 181 ;; 182 SunOS.5*) SYSTYPE=SUNOS5 183 RANLIB=echo 184 SYSLIBS="-lresolv -lsocket -lnsl" 185 # Stock awk breaks with >10 files. 186 test -x /usr/xpg4/bin/awk && AWK=/usr/xpg4/bin/awk 187 # Solaris 2.5 added usleep() and POSIX regular expressions 188 case $RELEASE in 189 5.[0-4]) CCARGS="$CCARGS -DMISSING_USLEEP -DNO_POSIX_REGEXP";; 190 esac 191 # Solaris 8 added IPv6 and /dev/poll 192 case $RELEASE in 193 5.[0-7]|5.[0-7].*) CCARGS="$CCARGS -DNO_IPV6 -DNO_DEVPOLL";; 194 esac 195 # Solaris 9 added closefrom(), futimesat() and /dev/*random 196 case $RELEASE in 197 5.[0-8]|5.[0-8].*) CCARGS="$CCARGS -DNO_CLOSEFROM -DNO_DEV_URANDOM -DNO_FUTIMESAT";; 198 esac 199 # Work around broken str*casecmp(). Do it all here instead 200 # of having half the solution in the sys_defs.h file. 201 CCARGS="$CCARGS -Dstrcasecmp=fix_strcasecmp \ 202 -Dstrncasecmp=fix_strncasecmp" 203 STRCASE="strcasecmp.o" 204 # Avoid common types of braindamage 205 case "$LD_LIBRARY_PATH" in 206 ?*) error "Don't set LD_LIBRARY_PATH";; 207 esac 208 case "${CC}" in 209 *" "*) ;; 210 *ucb*) error "Don't use /usr/ucb/cc or ucblib";; 211 cc*) case `which ${CC}` in 212 *ucb*) error "Don't use /usr/ucb/cc or ucblib";; 213 esac;; 214 esac 215 ;; 216 ULTRIX.4*) SYSTYPE=ULTRIX4 217 if [ -f /usr/local/lib/libdb.a ]; then 218 SYSLIBS="$SYSLIBS -ldb" 219 CCARGS="$CCARGS -DHAS_DB" 220 if [ -d /usr/local/include/db ]; then 221 CCARGS="$CCARGS -I/usr/local/include/db" 222 fi 223 fi 224 for l in syslog resolv; do 225 if [ -f /usr/local/lib/lib$l.a ]; then 226 SYSLIBS="$SYSLIBS -l$l" 227 fi 228 done 229 ;; 230 AIX.*) case "`uname -v`" in 231 5) SYSTYPE=AIX5 232 case "$CC" in 233 cc|*/cc|xlc|*/xlc) CCARGS="$CCARGS -w -blibpath:/usr/lib:/lib:/usr/local/lib";; 234 esac 235 CCARGS="$CCARGS -D_ALL_SOURCE -DHAS_POSIX_REGEXP" 236 ;; 237 4) SYSTYPE=AIX4 238 # How embarrassing... 239 case "$CC" in 240 cc|*/cc|xlc|*/xlc) OPT=; CCARGS="$CCARGS -w -blibpath:/usr/lib:/lib:/usr/local/lib";; 241 esac 242 CCARGS="$CCARGS -D_ALL_SOURCE -DHAS_POSIX_REGEXP" 243 ;; 244 3) SYSTYPE=AIX3 245 # How embarrassing... 246 case "$CC" in 247 cc|*/cc|xlc|*/xlc) OPT=; CCARGS="$CCARGS -w";; 248 esac 249 CCARGS="$CCARGS -D_ALL_SOURCE" 250 ;; 251 *) error "Unknown AIX version: `uname -v`.";; 252 esac;; 253 # Tested with RedHat 3.03 on 20020729. 254 Linux.1*) SYSTYPE=LINUX1 255 SYSLIBS="-ldb" 256 ;; 257 Linux.2*) SYSTYPE=LINUX2 258 # Postfix no longer needs DB 1.85 compatibility 259 if [ -f /usr/include/db.h ] 260 then 261 : we are all set 262 elif [ -f /usr/include/db/db.h ] 263 then 264 CCARGS="$CCARGS -I/usr/include/db" 265 else 266 # No, we're not going to try db1 db2 db3 etc. 267 # On a properly installed system, Postfix builds 268 # by including <db.h> and by linking with -ldb 269 echo "No <db.h> include file found." 1>&2 270 echo "Install the appropriate db*-devel package first." 1>&2 271 echo "See the RELEASE_NOTES file for more information." 1>&2 272 exit 1 273 fi 274 # GDBM locks the DBM .pag file after open. This breaks postmap. 275 # if [ -f /usr/include/gdbm-ndbm.h ] 276 # then 277 # CCARGS="$CCARGS -DHAS_DBM -DPATH_NDBM_H='<gdbm-ndbm.h>'" 278 # GDBM_LIBS=gdbm 279 # elif [ -f /usr/include/gdbm/ndbm.h ] 280 # then 281 # CCARGS="$CCARGS -DHAS_DBM -DPATH_NDBM_H='<gdbm/ndbm.h>'" 282 # GDBM_LIBS=gdbm 283 # fi 284 SYSLIBS="-ldb" 285 for name in nsl resolv $GDBM_LIBS 286 do 287 for lib in /usr/lib64 /lib64 /usr/lib /lib 288 do 289 test -e $lib/lib$name.a -o -e $lib/lib$name.so && { 290 SYSLIBS="$SYSLIBS -l$name" 291 break 292 } 293 done 294 done 295 # Kernel 2.4 added IPv6 296 case "$RELEASE" in 297 2.[0-3].*) CCARGS="$CCARGS -DNO_IPV6";; 298 esac 299 # Kernel 2.6 added EPOLL 300 case "$RELEASE" in 301 2.[0-5].*) CCARGS="$CCARGS -DNO_EPOLL";; 302 # Workaround for retarded libc 303 2.6.*) 304 if [ `expr "X$CCARGS" : "X.*-DNO_EPOLL"` -gt 0 ] 305 then 306 : 307 elif [ ! -e /usr/include/sys/epoll.h ] 308 then 309 echo CCARGS="$CCARGS -DNO_EPOLL" 310 else 311 trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15 312 cat >makedefs.test.c <<'EOF' 313#include <sys/types.h> 314#include <sys/epoll.h> 315#include <errno.h> 316#include <stdio.h> 317#include <stdlib.h> 318 319int main(int argc, char **argv) 320{ 321 int epoll_handle; 322 323 if ((epoll_handle = epoll_create(1)) < 0) { 324 perror("epoll_create"); 325 exit(1); 326 } 327 exit(0); 328} 329EOF 330 ${CC-gcc} -o makedefs.test makedefs.test.c || exit 1 331 ./makedefs.test 2>/dev/null || 332 CCARGS="$CCARGS -DNO_EPOLL" 333 rm -f makedefs.test makedefs.test.[co] 334 fi;; 335 esac 336 ;; 337 GNU.0*|GNU/kFreeBSD.[567]*) 338 SYSTYPE=GNU0 339 # Postfix no longer needs DB 1.85 compatibility 340 if [ -f /usr/include/db.h ] 341 then 342 : we are all set 343 elif [ -f /usr/include/db/db.h ] 344 then 345 CCARGS="$CCARGS -I/usr/include/db" 346 else 347 # No, we're not going to try db1 db2 db3 etc. 348 # On a properly installed system, Postfix builds 349 # by including <db.h> and by linking with -ldb 350 echo "No <db.h> include file found." 1>&2 351 echo "Install the appropriate db*-devel package first." 1>&2 352 echo "See the RELEASE_NOTES file for more information." 1>&2 353 exit 1 354 fi 355 SYSLIBS="-ldb" 356 for name in nsl resolv 357 do 358 for lib in /usr/lib64 /lib64 /usr/lib /lib 359 do 360 test -e $lib/lib$name.a -o -e $lib/lib$name.so && { 361 SYSLIBS="$SYSLIBS -l$name" 362 break 363 } 364 done 365 done 366 case "`uname -s`" in 367 GNU) 368 # currently no IPv6 support on Hurd 369 CCARGS="$CCARGS -DNO_IPV6" 370 ;; 371 esac 372 ;; 373 IRIX*.5.*) SYSTYPE=IRIX5 374 # Use the native compiler by default 375 : ${CC=cc} ${DEBUG="-g3"} 376 RANLIB=echo 377 ;; 378 IRIX*.6.*) SYSTYPE=IRIX6 379 # Use the native compiler by default, and allow nested comments. 380 : ${CC="cc -woff 1009,1116,1412"} 381 RANLIB=echo 382 ;; 383HP-UX.A.09.*) SYSTYPE=HPUX9 384 SYSLIBS=-ldbm 385 CCARGS="$CCARGS -DMISSING_USLEEP" 386 if [ -f /usr/lib/libdb.a ]; then 387 CCARGS="$CCARGS -DHAS_DB" 388 SYSLIBS="$SYSLIBS -ldb" 389 fi 390 ;; 391HP-UX.B.10.*) SYSTYPE=HPUX10 392 CCARGS="$CCARGS `nm /usr/lib/libc.a 2>/dev/null | 393 (grep usleep >/dev/null || echo '-DMISSING_USLEEP')`" 394 if [ -f /usr/lib/libdb.a ]; then 395 CCARGS="$CCARGS -DHAS_DB" 396 SYSLIBS=-ldb 397 fi 398 ;; 399HP-UX.B.11.*) SYSTYPE=HPUX11 400 SYSLIBS=-lnsl 401 if [ -f /usr/lib/libdb.a ]; then 402 CCARGS="$CCARGS -DHAS_DB" 403 SYSLIBS="$SYSLIBS -ldb" 404 fi 405 ;; 406ReliantUNIX-?.5.43) SYSTYPE=ReliantUnix543 407 RANLIB=echo 408 SYSLIBS="-lresolv -lsocket -lnsl" 409 ;; 410 Darwin.*) SYSTYPE=MACOSX 411 # Use the native compiler by default 412 : ${CC=cc} 413 # Darwin > 1.3 uses awk and flat_namespace 414 case $RELEASE in 415 1.[0-3]) AWK=gawk;; 416 *) AWK=awk 417 SYSLIBS=-flat_namespace;; 418 esac 419 # Darwin 7 adds IPv6 support, BIND_8_COMPAT, NO_NETINFO 420 case $RELEASE in 421 [1-6].*) CCARGS="$CCARGS -DNO_IPV6";; 422 *) CCARGS="$CCARGS -DBIND_8_COMPAT -DNO_NETINFO";; 423 esac 424 # Darwin 10.3.0 no longer has <nameser8_compat.h>. 425 case $RELEASE in 426 ?.*) CCARGS="$CCARGS -DRESOLVE_H_NEEDS_NAMESER8_COMPAT_H";; 427 *) CCARGS="$CCARGS -DRESOLVE_H_NEEDS_ARPA_NAMESER_COMPAT_H";; 428 esac 429 # kqueue and/or poll are broken up to and including MacOS X 10.5 430 CCARGS="$CCARGS -DNO_KQUEUE" 431# # Darwin 8.11.1 has kqueue support, but let's play safe 432# case $RELEASE in 433# [1-8].*) CCARGS="$CCARGS -DNO_KQUEUE";; 434# *) trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15 435# cat >makedefs.test.c <<'EOF' 436#/* Adapted from libevent. */ 437# 438##include <sys/types.h> 439##include <sys/event.h> 440##include <sys/time.h> 441##include <string.h> 442##include <stdlib.h> 443##include <stdio.h> 444# 445##ifndef EV_SET 446##define EV_SET(kp, id, fi, fl, ffl, da, ud) do { \ 447# struct kevent *__kp = (kp); \ 448# __kp->ident = (id); \ 449# __kp->filter = (fi); \ 450# __kp->flags = (fl); \ 451# __kp->fflags = (ffl); \ 452# __kp->data = (da); \ 453# __kp->udata = (ud); \ 454# } while(0) 455##endif 456# 457#int main(int argc, char **argv) 458#{ 459# int kq; 460# struct kevent test_change; 461# struct kevent test_result; 462# 463# if ((kq = kqueue()) < 0) { 464# perror("kqueue"); 465# exit(1); 466# } 467##define TEST_FD (-1) 468# 469# EV_SET(&test_change, TEST_FD, EVFILT_READ, EV_ADD, 0, 0, 0); 470# if (kevent(kq, 471# &test_change, sizeof(test_change) / sizeof(struct kevent), 472# &test_result, sizeof(test_result) / sizeof(struct kevent), 473# (struct timespec *) 0) != 1 || 474# test_result.ident != TEST_FD || 475# test_result.flags != EV_ERROR) { 476# fprintf(stderr, "Error: kevent reports errors incorrectly\n"); 477# exit(1); 478# } 479# exit(0); 480#} 481#EOF 482# $CC -o makedefs.test makedefs.test.c || exit 1 483# ./makedefs.test 2>/dev/null || 484# CCARGS="$CCARGS -DNO_KQUEUE" 485# rm -f makedefs.test makedefs.test.[co];; 486# esac 487 ;; 488 dcosx.1*) SYSTYPE=DCOSX1 489 RANLIB=echo 490 SYSLIBS="-lresolv -lsocket -lnsl -lc -lrpcsvc -L/usr/ucblib -lucb" 491 ;; 492 493 ".") if [ -d /NextApps ]; then 494 SYSTYPE=`hostinfo | sed -n \ 495 's/^.*NeXT Mach 3.*$/NEXTSTEP3/;/NEXTSTEP3/{p;q;}'` 496 if [ "$SYSTYPE" = "" ]; then 497 SYSTYPE=`hostinfo | sed -n \ 498 's/^.*NeXT Mach 4.*$/OPENSTEP4/;/OPENSTEP4/{p;q;}'` 499 fi 500 : ${CC=cc} 501 RANLIB="sleep 5; ranlib" 502 else 503 error "Unable to determine your system type." 504 fi 505 ;; 506 *) error "Unknown system type: $SYSTEM $RELEASE";; 507esac 508 509# 510# sigsetjmp()/siglongjmp() can be "better" than setjmp()/longjmp() 511# if used wisely (that is: almost never, just like signals). 512# Unfortunately some implementations have been buggy in the past. 513# 514case "$CCARGS" in 515 *-DNO_SIGSETJMP*) ;; 516 *) trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15 517 cat >makedefs.test.c <<'EOF' 518#include <setjmp.h> 519#include <stdlib.h> 520#include <stdio.h> 521 522static int count = 0; 523 524int main(int argc, char **argv) 525{ 526 sigjmp_buf env; 527 int retval; 528 529 switch (retval = sigsetjmp(env, 1)) { 530 case 0: 531 siglongjmp(env, 12345); 532 case 12345: 533 break; 534 default: 535 fprintf(stderr, "Error: siglongjmp ignores second argument\n"); 536 exit(1); 537 } 538 539 switch (retval = sigsetjmp(env, 1)) { 540 case 0: 541 if (count++ > 0) { 542 fprintf(stderr, "Error: not overriding siglongjmp(env, 0)\n"); 543 exit(1); 544 } 545 siglongjmp(env, 0); 546 case 1: 547 break; 548 default: 549 fprintf(stderr, "Error: overriding siglongjmp(env, 0) with %d\n", 550 retval); 551 exit(1); 552 } 553 exit(0); 554} 555EOF 556 ${CC-gcc} -o makedefs.test makedefs.test.c || exit 1 557 ./makedefs.test 2>/dev/null || 558 CCARGS="$CCARGS -DNO_SIGSETJMP" 559 rm -f makedefs.test makedefs.test.[co] 560esac 561 562# 563# OpenSSL has no configuration query utility, but we don't try to 564# guess. We assume includes in /usr/include/openssl and libraries in 565# /usr/lib, or in their /usr/local equivalents. If the OpenSSL files 566# are in a non-standard place, their locations need to be specified. 567# 568#case "$CCARGS" in 569# *-DUSE_TLS*) ;; 570# *-DNO_TLS*) ;; 571# *) CCARGS="$CCARGS -DUSE_TLS" 572# AUXLIBS="$AUXLIBS -lssl -lcrypto" 573# ;; 574#esac 575 576# 577# PCRE 3.x has a pcre-config utility so we don't have to guess. 578# 579case "$CCARGS" in 580*-DHAS_PCRE*) ;; 581 *-DNO_PCRE*) ;; 582 *) pcre_cflags=`(pcre-config --cflags) 2>/dev/null` && 583 pcre_libs=`(pcre-config --libs) 2>/dev/null` && { 584 CCARGS="$CCARGS -DHAS_PCRE $pcre_cflags" 585 AUXLIBS="$AUXLIBS $pcre_libs" 586 } 587 ;; 588esac 589 590# Defaults that can be overruled (make makefiles CC=cc OPT=-O6 DEBUG=) 591# Disable optimizations by default when compiling for Purify. Disable 592# optimizations by default with gcc 2.8, until the compiler is known to 593# be OK. Those who dare can still overrule this (make makefiles OPT=-O). 594 595case "$CC" in 596 *purify*) : ${OPT=};; 597*/gcc|gcc) case `$CC -v` in 598 "gcc version 2.8"*) : ${OPT=};; 599 esac;; 600 *CC) error "Don't use CC. That's the C++ compiler";; 601 *) : ${OPT='-O'};; 602esac 603# 604# "gcc -W" 3.4.2 no longer reports functions that fail to return a 605# result. Use "gcc -Wall -Wno-comment" instead. We'll figure out 606# later if the other -Wmumble options are really redundant. Having 607# een burned once by a compiler that lies about what warnings it 608# produces, not taking that chance again. 609 610: ${CC='gcc $(WARN)'} ${OPT='-O'} ${DEBUG='-g'} ${AWK=awk} \ 611${WARN='-Wall -Wno-comment -Wformat -Wimplicit -Wmissing-prototypes \ 612 -Wparentheses -Wstrict-prototypes -Wswitch -Wuninitialized \ 613 -Wunused -Wno-missing-braces'} 614 615export SYSTYPE AR ARFL RANLIB SYSLIBS CC OPT DEBUG AWK OPTS 616 617# Snapshot only. 618#CCARGS="$CCARGS -DSNAPSHOT" 619 620# Non-production: needs thorough testing, or major changes are still 621# needed before the code stabilizes. 622#CCARGS="$CCARGS -DNONPROD" 623 624sed 's/ / /g' <<EOF 625SYSTYPE = $SYSTYPE 626AR = $AR 627ARFL = $ARFL 628RANLIB = $RANLIB 629SYSLIBS = $AUXLIBS $SYSLIBS 630CC = $CC $CCARGS 631OPT = $OPT 632DEBUG = $DEBUG 633AWK = $AWK 634STRCASE = $STRCASE 635EXPORT = AUXLIBS='$AUXLIBS' CCARGS='$CCARGS' OPT='$OPT' DEBUG='$DEBUG' 636WARN = $WARN 637EOF 638