From: Matthew Fernandez Date: Sat, 12 Sep 2020 20:48:47 +0000 (-0700) Subject: remove iffe interpreter that is no longer used X-Git-Tag: 2.46.0~20^2^2~76^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1a8df410a7469d962dc79c2c99846fb681e84a06;p=graphviz remove iffe interpreter that is no longer used --- diff --git a/Makefile.am b/Makefile.am index cbc91f13e..fd69ca457 100644 --- a/Makefile.am +++ b/Makefile.am @@ -41,7 +41,7 @@ $(top_builddir)/graphviz_version.h: config.h EXTRA_DIST = $(txt) $(html) graphviz.spec \ autogen.sh config/depcomp config/config.rpath \ builddate.h \ - Makeargs iffe config.iffe \ + Makeargs \ m4/README m4/iconv.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 \ graphviz.7 Doxyfile.in Doxyfile awk \ config/config_perl.pl config/config_python.py \ diff --git a/config.iffe b/config.iffe deleted file mode 100644 index cc6c238a8..000000000 --- a/config.iffe +++ /dev/null @@ -1,209 +0,0 @@ -# Run using: iffe - set cc cc : run configdata > out -# Second cc can be replace with $(CC) $(CFLAGS) -set config -iff GVIZ_CONFIG -cat{ -}end -lib __freadable -lib cbrt math.h -lm -lib setenv -lib vsnprintf -lib setmode -lib iconv -lib lsqrt -lib drand48 -lib feenableexcept -D_GNU_SOURCE fenv.h -lm -lib fesetenv -D_GNU_SOURCE fenv.h -lm -lib lrand48 -lib srand48 -lib sincos - -hdr dlfcn -hdr errno -hdr fenv -hdr fpu_control -hdr ft2build -hdr getopt -hdr iconv -hdr inttypes -hdr malloc -hdr ndir -hdr netdb -hdr search -hdr stdbool -hdr stdint -hdr strings -hdr termios -hdr unistd - -sys types -sys mman -sys stat -sys select -sys fpu -sys ndir -cat{ }end - -# Specify internal structure of FILE. -# This is used to determine if more characters are waiting in the stream. -if mem - FILE._cnt stdio.h { -/* Define if FILE has _cnt field */ -#define HAVE_FILE_CNT 1 -} -elif mem - FILE._IO_read_end stdio.h { -/* Define if FILE has _IO_read_end field */ -#define HAVE_FILE_IO_READ_END 1 -} -elif mem - FILE.next stdio.h { -/* Define if FILE has next field */ -#define HAVE_FILE_NEXT 1 -} -elif mem - FILE._r stdio.h { -/* Define if FILE has _r field */ -#define HAVE_FILE_R 1 -} -else { -# error "Unknown field in FILE for remaining characters" -} -endif - -link{ - #include - #if HAVE_STDINT_H - #include - #endif - #if HAVE_INTTYPES_H - #include - #endif - #if HAVE_UNISTD_H - #include - #endif - intptr_t abc; - int main() {} -}end yes{ -/* Define if intptr_t is declared */ -#define HAVE_INTPTR_T 1 -}end - -compile{ - #include - iconv_t xx; -}end yes{ -/* Define if defines iconv_t. */ -#define HAVE_ICONV_T_DEF 1 -}end - -compile{ - #include - void foo() {fesetenv (FE_NONIEEE_ENV);} -}end yes{ -/* Define if FE_NONIEEE_ENV defined in . */ -#define FE_NONIEEE_ENV 1 -}end - -# libgd features -cat{ -/*******************************************************************/ -/* Undefine if you don't want the libgd features or don't have the */ -/* necessary 3rd party library. */ -/*******************************************************************/ -/* Define if the GD library has the GD_FONTCONFIG feature */ -#define HAVE_GD_FONTCONFIG 1 - -/* Define if the GD library has the GD_FREETYPE feature */ -#define HAVE_GD_FREETYPE 1 - -/* Define if the GD library has the GD_GIF feature */ -#define HAVE_GD_GIF 1 - -/* Define if the GD library has the GD_JPEG feature */ -#define HAVE_GD_JPEG 1 - -/* Define if the GD library has the GD_PNG feature */ -#define HAVE_GD_PNG 1 - -/* Define if either internal or external GD library is available */ -#define HAVE_LIBGD 1 -}end - -# 3rd party libraries features -cat{ -/*******************************************************************/ -/* Undefine if you don't have the necessary 3rd party library. */ -/*******************************************************************/ -/* Define if you have the jpeg library (-ljpeg). */ -#define HAVE_LIBJPEG 1 - -/* Define if you have the `m' library (-lm). */ -#define HAVE_LIBM 1 - -/* Define if you have the png library (-lpng). */ -#define HAVE_LIBPNG 1 - -/* Define if you have the freetype library (-lfreetype), */ -#define HAVE_LIBFREETYPE 1 -#define HAVE_FREETYPE2 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FT2BUILD_H 1 - -/* Define if you have the FONTCONFIG library */ -#define HAVE_LIBFONTCONFIG 1 - -/* Define if you have the z library (-lz). */ -#define HAVE_LIBZ 1 - -/* Define if you have the expat library (-lexpat). */ -#define HAVE_LIBEXPAT 1 - -/* Define if you have the xpm library (-lXpm). */ -/* At present, the xpm library isn't really used */ -/* #define HAVE_LIBXPM 1 */ -}end - -cat{ -/*******************************************************************/ -/* The following usually aren't changed. */ -/*******************************************************************/ -/* Define if you don't want on-demand plugin loading */ -#define DISABLE_LTDL 1 - -/* Define if you want the gd renderers (png, gif, etc ) */ -#define GD_RENDER 1 - -/* Default DPI. */ -#define DEFAULT_DPI 96 - -/* Define if you want SFDP. */ -#define SFDP 1 - -/* Define if you want to use the triangle library. */ -#define HAVE_TRIANGLE 1 - -#define VERSION "VVVV" - -/* Define if you have the pango library with cairo support */ -/* #define HAVE_PANGOCAIRO 1 */ - -/* Define if you want DIGCOLA */ -#define DIGCOLA 1 -/* Define if you want IPSEPCOLA */ -#define IPSEPCOLA 1 - -/* #define MOSEK 1 */ - -#ifndef DEFAULT_FONTPATH -# ifdef _UWIN -# define DEFAULT_FONTPATH "/win/fonts" -# define PATHSEPARATOR ":" -# else -# ifdef _WIN32 -# define DEFAULT_FONTPATH "C:/WINDOWS/FONTS;C:/WINNT/Fonts;C:/winnt/fonts" -# define PATHSEPARATOR ";" -# else -# define DEFAULT_FONTPATH "/usr/share/ttf:/usr/local/share/ttf:/usr/share/fonts/ttf:/usr/local/share/fonts/ttf:/usr/lib/fonts:/usr/local/lib/fonts:/usr/lib/fonts/ttf:/usr/local/lib/fonts/ttf:/usr/common/share/fonts/ttf:/usr/common/graphviz/lib/fonts/ttf:/windows/fonts:/dos/windows/fonts:/usr/add-on/share/ttf:/usr/openwin/lib/X11/fonts/TrueType:." -# define PATHSEPARATOR ":" -# endif -# endif -#endif -}end diff --git a/iffe b/iffe deleted file mode 100755 index 33021d9a9..000000000 --- a/iffe +++ /dev/null @@ -1,3603 +0,0 @@ -USAGE_LICENSE="[-author?Glenn Fowler ][-author?Phong Vo ][-copyright?Copyright (c) 1994-2004 AT&T Corp.][-license?http://www.research.att.com/sw/license/ast-open.html][--catalog?INIT]" -# Glenn Fowler & Phong Vo -# AT&T Labs Research -# -# test if feature exists -# this script is written to make it through all sh variants -# -# NOTE: .exe a.out suffix and [\\/] in path patterns for dos/nt - -case $-:$BASH_VERSION in -*x*:[0123456789]*) : bash set -x is broken :; set +ex ;; -esac - -command=iffe -version=2004-08-11 # update in USAGE too # - -pkg() # package -{ - case $1 in - '<') shift ;; - *) return ;; - esac - case $1 in - X|X11*) i="openwin" - case $1 in - X) set X11 ;; - esac - case $1 in - X11) case $# in - 1) set $1 6 5 4 ;; - esac - ;; - esac - ;; - *) i= - ;; - esac - pth="{ usr . - . contrib local $i - . share - . lib - $1" - i=$1 - while : - do shift - case $# in - 0) break ;; - esac - case $1 in - '>') shift; break ;; - esac - pth="$pth ${i}R$1 ${i}.$1" - done - pth="$pth . } $*" -} - -is() # op name -{ - case $verbose in - 1) case $complete in - 1) failure ;; - esac - oo=$1 - shift - case $1 in - ?*) yy=is - ii=$1 - complete=1 - case $oo in - cmd) mm="a command" ;; - dat) mm="a library data symbol" ;; - dfn) mm="a macro with extractable value" ;; - exp) mm="true" ;; - hdr) mm="a header" ;; - id) mm="an identifier" ;; - lcl) mm="a native header" ;; - key) mm="a reserved keyword" ;; - lib) mm="a library function" ;; - LIB) case $2 in - "") mm="a library" ;; - *) ii=$*; mm="a library group" ;; - esac - ;; - mac) mm="a macro" ;; - mem) mm="a member of $2" ;; - mth) mm="a math library symbol" ;; - nos) mm="a non-opaque struct" ;; - npt) mm="a symbol that needs a prototype" ;; - num) mm="a numeric constant or enum" ;; - nxt) mm="an include path for the native header" ;; - pth) mm="a file" ;; - run) yy="capture output of" mm= ;; - siz) mm="a type with known size" ;; - sym) mm="a typed variable" ;; - sys) mm="a system header" ;; - typ) mm="a type or typedef" ;; - val) yy="determine" mm="value" ;; - *) yy= mm= ;; - esac - case $ii in - [abcdefghijklmnopqrstuvwxyz]*[abcdefghijklmnopqrstuvwxyz]'{') ii="$ii ... }end" ;; - esac - $show "$command: test:" $yy $ii $mm "...$SHOW" >&$stderr - complete=1 - ;; - esac - ;; - esac -} - -success() -{ - case $1 in - -) shift - ;; - *) case $result in - UNKNOWN) result=SUCCESS ;; - esac - ;; - esac - case $complete:$verbose in - 1:1) case $suspended in - 1) suspended=0 - $show "$command: test:" $yy $ii $mm "...$SHOW" >&$stderr - ;; - esac - complete=0 - case $# in - 0) mm="yes" ;; - *) mm="'$*'" ;; - esac - case $debug in - 0) echo " $mm" >&$stderr ;; - *) echo "$command: ... $mm" >&$stderr ;; - esac - ;; - esac -} - -failure() -{ - case $1 in - -) shift ;; - *) result=FAILURE ;; - esac - case $complete:$verbose in - 1:1) case $suspended in - 1) suspended=0 - $show "$command: test:" $yy $ii $mm "...$SHOW" >&$stderr - ;; - esac - complete=0 - case $# in - 0) mm="no" ;; - *) mm=$* ;; - esac - case $debug in - 0) echo " $mm" >&$stderr ;; - *) echo "$command: ... $mm" >&$stderr ;; - esac - ;; - esac -} - -# report -# -# - ignore global status -# -0 normal sense -# -1 inverted sense if ! def -# status test status 0:success *:failure -# success success comment -# failure failure comment -# default default setting comment -# -# globals -# -# $not invert test sense -# $M test variable -# $m test macro -# $v default macro - -report() # [-] [-0] [-1] status value success failure default -{ - case $1 in - -) _report_ignore=$1 - shift - ;; - *) _report_ignore= - ;; - esac - _report_not=$not - case $1 in - -0) shift - ;; - -1) shift - case $def in - ''|-) case $_report_not in - 1) _report_not= ;; - *) _report_not=1 ;; - esac - ;; - esac - ;; - esac - _report_status=$1 - case $_report_ignore:$_report_status in - -:*) ;; - *:0) success $_report_ignore ;; - *) failure $_report_ignore ;; - esac - _report_value=$2 - case $_report_not in - 1) case $_report_status in - 0) _report_status=1 ;; - *) _report_status=0 ;; - esac - _report_success=$4 - _report_failure=$3 - ;; - *) _report_success=$3 - _report_failure=$4 - ;; - esac - _report_default=$5 - case $_report_status in - 0) case $M in - *-*) ;; - *) usr="$usr$nl#define $m $_report_value" - case $_report_success in - ''|-) ;; - *) echo "#define $m $_report_value /* $_report_success */" ;; - esac - eval $m=\'$_report_value\' - ;; - esac - ;; - *) case $M in - *-*) ;; - *) case $_report_failure in - ''|-) ;; - *) case $define$all$config$undef in - 1?1?|1??1)echo "#undef $m /* $_report_failure */" ;; - 11??) echo "#define $m 0 /* $_report_failure */" ;; - esac - ;; - esac - case $_report_default in - ''|-) ;; - *) case $define$set in - 1?*) echo "#define $v $set /* $_report_default */" ;; - esac - ;; - esac - eval $m=0 - ;; - esac - ;; - esac -} - -noisy() -{ - case $complete:$verbose in - 1:1) suspended=1 - echo >&$stderr - ;; - esac -} - -here_broken=0 - -copy() # output-file data -{ - case $shell in - ksh) case $1 in - -) print -r - "$2" ;; - *) print -r - "$2" > "$1" ;; - esac - ;; - *) case $1 in - -) if cat <&$stderr - ;; - esac - sh -c "cat < "$1" <&$stderr - ;; - esac - sh -c "cat > '$1' </dev/null <&$nullout - then posix_read=${tmp}r.exe - else echo "$command: cannot compile read -r workaround" >&$stderr - exit 1 - fi - ;; - esac - case `(set -f && set x * && echo $# && set +f) 2>/dev/null` in - 2) posix_noglob="set -f" posix_glob="set +f" ;; - *) case `(set -F && set x * && echo $# && set +F) 2>/dev/null` in - 2) posix_noglob="set -F" posix_glob="set +F" ;; - *) posix_noglob=":" posix_glob=":" ;; - esac - ;; - esac -} - -execute() -{ - if test "" != "$cross" - then crossexec $cross "$@" - _execute_=$? - elif test -d /NextDeveloper - then "$@" <&$nullin >&$nullout - _execute_=$? - "$@" <&$nullin | cat - else "$@" - _execute_=$? - fi - return $_execute_ -} - -exclude() -{ - case $excludes in - '') return 0 ;; - esac - for _exclude_var - do eval _exclude_old=\$$_exclude_var - case $_exclude_old in - *" -I"*);; - *) continue ;; - esac - _exclude_new= - _exclude_sep= - for _exclude_arg in $_exclude_old - do - for _exclude_dir in $excludes - do case $_exclude_arg in - -I$_exclude_dir|-I*/$_exclude_dir) - ;; - *) _exclude_new="$_exclude_new$_exclude_sep$_exclude_arg" - _exclude_sep=" " - ;; - esac - done - done - eval $_exclude_var=\$_exclude_new - case $debug in - 0) ;; - *) echo $command: exclude $_exclude_var: "$_exclude_old => $_exclude_new" >&$stderr - ;; - esac - done -} - -all=0 -binding="-dy -dn -Bdynamic -Bstatic -Wl,-ashared -Wl,-aarchive -call_shared -non_shared '' -static" -complete=0 -config=0 -defhdr= -define=1 -iff= -usr= -cross= -debug=0 -deflib= -dir=FEATURE -excludes= -executable="test -x" -exists="test -e" -gothdr= -gotlib= -idno= -idyes= -ifs=$IFS -in= -includes= -intrinsic= -libpaths="LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARY64_PATH LIBPATH SHLIB_PATH" - LD_LIBRARY_PATH_default=:/lib:/usr/lib - LD_LIBRARYN32_PATH_default=:/lib32:/usr/lib32 - LD_LIBRARY64_PATH_default=:/lib64:/usr/lib64 - LIBPATH_default=:/lib:/usr/lib - SHLIB_PATH_default=:/shlib:/usr/shlib:/lib:/usr/lib -nl=" -" -occ=cc -one= -out= -posix_read= -protoflags= -puthdr= -putlib= -pragma= -case $RANDOM in -$RANDOM)shell=bsh - ($executable .) 2>/dev/null || executable='test -r' - ($exists .) 2>/dev/null || exists='test -r' - ;; -*) case $BASH_VERSION in - ?*) shell=bash ;; - *) shell=ksh ;; - esac - ;; -esac -reallystatic= -reallystatictest= -regress= -static=. -statictest= -style=C -case $COTEMP in -"") case $HOSTNAME in - ""|?|??|???|????|????) - tmp=${HOSTNAME} - ;; - *) case $shell in - bsh) eval `echo $HOSTNAME | sed 's/\\(....\\).*/tmp=\\1/'` ;; - *) eval 'tmp=${HOSTNAME%${HOSTNAME#????}}' ;; - esac - ;; - esac - tmp=${tmp}$$ - ;; -*) tmp=$COTEMP - ;; -esac -case $tmp in -??????????*) - case $shell in - bsh) eval `echo $tmp | sed 's/\\(.........\\).*/tmp=\\1/'` ;; - *) eval 'tmp=${tmp%${tmp#?????????}}' ;; - esac - ;; -?????????) - ;; -????????) - tmp=F$tmp - ;; -esac -tmp=./$tmp -undef=0 -verbose=0 - -# options -- `-' for output to stdout otherwise usage - -case $1 in --) out=-; shift ;; -esac -set= - -case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in -0123) USAGE=$' -[-? -@(#)$Id$ -] -'$USAGE_LICENSE$' -[+NAME?iffe - C compilation environment feature probe] -[+DESCRIPTION?\biffe\b is a command interpreter that probes the C - compilation environment for features. A feature is any file, option - or symbol that controls or is controlled by the C compiler. \biffe\b - tests features by generating and compiling C programs and observing - the behavior of the C compiler and generated programs.] -[+?\biffe\b statements are line oriented. Statements may appear in the - operand list with the \b:\b operand or \bnewline\b as the line - delimiter. The standard input is read if there are no command - line statements or if \afile\a\b.iffe\b is omitted.] -[+?Though similar in concept to \bautoconf\b(1) and \bconfig\b(1), there - are fundamental differences. The latter tend to generate global - headers accessed by all components in a package, whereas \biffe\b is - aimed at localized, self contained feature testing.] -[+?Output is generated in \bFEATURE/\b\atest\a by default, where \atest\a is - the base name of \afile\a\b.iffe\b or the \biffe\b \brun\b - file operand. Output is first generated in a temporary file; the - output file is updated if it does not exist or if the temporary file - is different. If the first operand is \b-\b then the output is written - to the standard output and no update checks are done.] -[+?Files with suffixes \b.iffe\b and \b.iff\b are assumed to contain - \biffe\b statements.] -[a:all?Define failed test macros \b0\b. By default only successful test macros - are defined \b1\b.] -[c:cc?Sets the C compiler name and flags to be used in the feature - tests.]:[C-compiler-name [C-compiler-flags ...]]] -[C:config?Generate \bconfig\b(1) style \aHAVE_\a* macro names. This implies - \b--undef\b. Since \bconfig\b(1) has inconsistent naming conventions, - the \bexp\b op may be needed to translate from the (consistent) - \biffe\b names. Unless otherwise noted a \bconfig\b macro name - is the \biffe\b macro name prefixed with \bHAVE\b and converted to - upper case. \b--config\b is set by default if the command arguments - contain a \brun\b op on an input file with the base name \bconfig\b.] -[d:debug?Sets the debug level. Level 0 inhibits most - error messages, level 1 shows compiler messages, and - level 2 traces internal \biffe\b \bsh\b(1) actions and does - not remove core dumps on exit.]#[level] -[D:define?Successful test macro definitions are emitted. This is the default.] -[i:input?Sets the input file name to \afile\a, which - must contain \biffe\b statements.]:[file] -[I:include?Adds \b-I\b\adir\a to the C compiler flags.]:[dir] -[L:library?Adds \b-L\b\adir\a to the C compiler flags.]:[dir] -[o:output?Sets the output file name to \afile\a.]:[file] -[e:package?Sets the \bproto\b(1) package name to \aname\a.]:[name] -[p:prototyped?Emits \b#pragma prototyped\b at the top of the - output file. See \bproto\b(1).] -[P:pragma?Emits \b#pragma\b \atext\a at the top of the output file.]:[text] -[r:regress?Massage output for regression testing.] -[s:shell?Sets the internal shell name to \aname\a. Used for debugging - Bourne shell compatibility (otherwise \biffe\b uses \aksh\a constructs - if available). The supported names are \bksh\b, \bbsh\b, \bbash\b. - The default is determined by probing the shell at startup.]:[name] -[S:static?Sets the C compiler flags that force static linking. If not set - then \biffe\b probes the compiler to determine the flags. \biffe\b - must use static linking (no dlls) because on some systems missing - library symbols are only detected when referenced at runtime from - dynamically linked executables.]:[flags] -[u:undef?\b#undef\b failed test macros. By default only successful test macros - are defined \b1\b.] -[v:verbose?Produce a message line on the standard error for each test as - it is performed.] -[x:cross?Some tests compile an executable (\ba.out\b) and then run it. - If the C compiler is a cross compiler and the executable format is - incompatible with the execution environment then the generated - executables must be run in a different environment, possibly on - another host. \acrosstype\a is the HOSTTYPE for generated executables - (the \bpackage\b(1) command generates a consistent HOSTTYPE namespace). - Generated executables are run via \bcrossexec\b(1) with \acrosstype\a - as the first argument. \bcrossexec\b supports remote execution for - cross-compiled executables. See \bcrossexec\b(1) for - details.]:[crosstype] -[X:exclude?Removes \b-I\b\adir\a and \b-I\b*/\adir\a C compiler flags.]:[dir] - -[ - ] [ file.iffe | statement [ : statement ... ] ] - -[+SYNTAX?\biffe\b input consists of a sequence of statement lines. Statements - that span more than one line contain \abegin\a\b{\b as the last - operand (where \abegin\a is command specific) and zero - or more data lines terminated by a line containing - \b}end\b as the first operand. The statement syntax is: - [\aname\a \b=\b]] [\b!\b]] \atest\a[,\atest\a...]] [\b-\b]] - [\aarg\a[,\aarg\a...]]]] [\aprereq\a ...]] - [\abegin\a{ ... |\bend\b ...]] [= [\adefault\a]]]]. - \atest\as and \aarg\as may be combined, separated by commas, to perform - a set of tests on a set of arguments. \aname\a \b=\b before \atest\a - overrides the default test variable and macro name, and \b-\b after - \atest\a performs the test but does not define the test variable and - macro values. \b!\b before \atest\a inverts the test sense for \bif\b, - \belif\b, and \byes{\b and \bno{\b blocks.] -[+?\aprereq\as are used when applying the features tests and may be - combinations of:]{ - [+compiler options?\b-D\b*, \b-L\b*, etc.] - [+library references?\b-l\b*, *\b.a\b, etc. \b_LIB_\b\aname\a - is defined to be 1 if \b-l\b\aname\a is a library.] - [+header references?*\b.h\b. \a_dir_name\a is defined to be 1 - if \adir/name\a\b.h\b is a header, or if \adir\a is - omitted, \b_hdr_\b\aname\a is defined to be 1 if - \aname\a\b.h\b is a header.] - [+-?Prereq grouping mark; prereqs before the first \b-\b are - passed to all feature tests. Subsequent groups - are attempted in left-to-right order until the first - successful group is found.] - } -[+?\abegin\a\b{\b ... \b}end\b delimit multiline code blocks that override - or augment the default code provided by \biffe\b. User supplied code - blocks should be compatible with the K&R, ANSI, and C++ C language - dialects for maximal portability. In addition to all macro definitions - generated by previous tests, all generated code contains the - following at the top to hide dialect differences:]{ - [+#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)?] - [+#define _STD_ 1?] - [+#define _VOID_ void?] - [+#else?] - [+#define _STD_ 0?] - [+#define _VOID_ char?] - [+#endif?] - [+#if defined(__cplusplus)?] - [+#define _BEGIN_EXTERNS_ extern "C" {?] - [+#define _END_EXTERNS_ }?] - [+#else?] - [+#define _BEGIN_EXTERNS_?] - [+#define _END_EXTERNS_?] - [+#endif?] - [+#define _NIL_(x) ((x)0)?] - } -[+?= \adefault\a may be specified for the \bkey\b, \blib\b, \bmac\b, \bmth\b - and \btyp\b tests. If the test fails for \aarg\a then - \b#define\b \aarg\a \adefault\a is emitted. \bkey\b accepts multiple - \b= \b\adefault\a values; the first valid one is used.] -[+?Each test statement generates a portion of a C language header that contains - macro defintions, comments, and other text corresponding to the feature - tests. \b#ifndef _def_\b\aname\a\b_\b\adirectory\a ... - \b#endif\b guards the generated header from multiple \b#include\bs, - where \aname\a is determined by either the \brun\b statement input file - name if any, or the first \atest\a in the first statement, and \adirectory\a - is the basename component of either the \brun\b statement file, if any, - or the current working directory. The output file name is determined - in this order:]{ - [+-?If the first command line operand is \b-\b then the output - is written to the standard output.] - [+--output=\afile\a?Output is \afile\a.] - [+set out \afile\a?Output is \afile\a.] - [+[run]] [\adirectory\a/]]\abase\a[\a.suffix\a]]?Output is - \bFEATURE/\b\abase\a.] - } -[+?Generated \biffe\b headers are often referenced in C source as: - \b#include "FEATURE/\b\afile\a". The \bnmake\b(1) base rules contain - metarules for generating \bFEATURE/\b\afile\a from - \bfeatures/\b\afile\a[\asuffix\a]], where \asuffix\a may be omitted, - \b.c\b, or \b.sh\b (see the \brun\b test below). Because - \b#include\b prerequisites are automatically detected, \bnmake\b(1) - ensures that all prerequisite \biffe\b headers are generated before - compilation. Note that the directories are deliberately named - \bFEATURE\b and \bfeatures\b to keep case-ignorant file systems - happy.] -[+?The feature tests are:]{ - [+# \acomment\a?Comment line - ignored.] - [+cmd \aname\a?Defines \b_cmd_\b\aname\a if \aname\a is an executable - in one of the standard system directories (\b/bin, /etc, - /usr/bin, /usr/etc, /usr/ucb\b). - \b_\b\adirectory\a\b_\b\aname\a is defined for \adirectory\a - in which \aname\a is found (with \b/\b translated to \b_\b).] - [+dat \aname\a?Defines \b_dat_\b\aname\a if \aname\a is a data symbol - in the default libraries.] - [+def \aname\a?Equivalent to \bcmd,dat,hdr,key,lib,mth,sys,typ\b - \aname\a.] - [+dfn \aname\a?If \aname\a is a macro in the candidate headers then - a \b#define\b \aname\a \avalue\a statement is output for the - \avalue\a defined in the headers. The definition is \b#ifndef\b - guarded.] - [+exp \aname\a \aexpression\a?If \aexpression\a is a \"...\" string - then \aname\a is defined to be the string, else if the - \bexpr\b(1) evaluation of \aexpression\a is not 0 then \aname\a - is defined to be 1, otherwise \aname\a is defined to be 0. - Identifiers in \aexpression\a may be previously defined names - from other \biffe\b tests; undefined names evaluate to 0. - If \aname\a was defined in a previous successful test then - the current and subsequent \bexp\b test on \aname\a are - skipped. If \aname\a is \b-\b then the \aexpression\a is - simply evaluated.] - [+hdr \aname\a?Defines \b_hdr_\b\aname\a if the header - \b<\b\aname\a\b.h>\b exists. The \b--config\b macro name is - \bHAVE_\b\aNAME\a\b_H\b.] - [+if \astatement\a ... | \belif\b \astatement\a ... | \belse\b - | \bendif\b?Nested if-else test control.] - [+iff \aname\a?The generated header \b#ifndef-#endif\b macro guard is - \b_\b\aname\a\b_H\b.] - [+key \aname\a?Defines \b_key_\b\aname\a if \aname\a is a reserved - word (keyword).] - [+lcl \aname\a?Generates a \b#include\b statement for the native version - of the header \b<\b\aname\a\b.h>\b if it exists. Defines - \b_lcl_\b\aname\a on success. The \b--config\b macro name is - \bHAVE_\b\aNAME\a\b_H\b.] - [+lib \aname\a?Defines \b_lib_\b\aname\a if \aname\a is an external - symbol in the default libraries.] - [+mac \aname\a?Defines \b_mac_\b\aname\a if \aname\a is a macro.] - [+mem \astruct.member\a?Defines \b_mem_\b\amember\a\b_\b\astruct\a - if \amember\a is a member of the structure \astruct\a.] - [+mth \aname\a?Defines \b_mth_\b\aname\a if \aname\a is an external - symbol in the math library.] - [+nop \aname\a?If this is the first test then \aname\a may be used - to name the output file and/or the output header guard macro. - Otherwise this test is ignored.] - [+npt \aname\a?Defines \b_npt_\b\aname\a if the \aname\a symbol - requires a prototype. The \b--config\b macro name is - \bHAVE_\aNAME\a\b_DECL\b with the opposite sense.] - [+num \aname\a?Defines \b_num_\b\aname\a if \aname\a is a numeric - constant \aenum\a or \amacro\a.] - [+nxt \aname\a?Defines a string macro \b_nxt_\b\aname\a suitable for - a \b#include\b statement to include the next (on the include - path) or native version of the header \b<\b\aname\a\b.h>\b - if it exists. Also defines the \"...\" form - \b_nxt_\b\aname\a\b_str\b. The \b--config\b macro name is - \bHAVE_\b\aNAME\a\b_NEXT\b.] - [+one \aheader\a ...?Generates a \b#include\b statement for the first - header found in the \aheader\a list.] - [+pth \afile\a [ \adir\a ... | { \ag1\a - ... - \agn\a } | < \apkg\a [\aver\a ...]] > ]]?Defines - \b_pth_\b\afile\a, with embedded \b/\b chars translated to - \b_\b, to the path of the first instance of \afile\a in the - \adir\a directories. \b{\b ... \b}\b forms a directory list - from the cross-product of \b-\b separated directory groups - \ag1\a ... \agn\a. < ... > forms a directory list for the - package \apkg\a with optional versions. The \b--config\b macro - name is \aNAME\a\b_PATH\b.] - [+run \afile\a?Runs the tests in \afile\a based on the \afile\a - suffix:]{ - [+.c?\afile\a is compiled and executed and the output is copied - to the \biffe\b output file.] - [+.sh?\afile\a is executed as a shell script and the output is - copied to the \biffe\b output file.] - [+.iffe \bor no suffix?\afile\a contains \biffe\b - statements.] - } - [+set \aoption value\a?Sets option values. The options are described - above.] - [+siz \aname\a?Defines \b_siz_\b\aname\a to be \bsizeof\b(\aname\a) if - \aname\a is a type in any of \b, , - , \b. Any \b.\b characters in \aname\a are - translated to space before testing and are translated to \b_\b - in the output macro name.] - [+sym \aname\a?Defines \b_ary_\b\aname\a if \aname\a is an array, - \b_fun_\b\aname\a if \aname\a is a function pointer, - \b_ptr_\b\aname\a if \aname\a is a pointer, or - \b_reg_\b\aname\a if \aname\a is a scalar. In most cases - \aname\a is part of a macro expansion.] - [+sys \aname\a?Defines \b_sys_\b\aname\a if the header - \b\b exists. The \b--config\b macro name is - \bHAVE_SYS_\b\aNAME\a\b_H\b.] - [+tst \aname\a?A user defined test on name. A source block must be - supplied. Defines \b_\b\aname\a on success.] - [+typ \aname\a?Defines \b_typ_\b\aname\a if \aname\a is a type in any - of \b, , , \b. Any - \b.\b characters in \aname\a are translated to space before - testing and are translated to \b_\b in the output macro name.] - [+val \aname\a?The output of \becho\b \aname\a is written to the - output file.] - [+var \aname\a?A user defined test on name. A source block must be - supplied. Sets the \bexp\b variable \b_\b\aname\a on success - but does not define a macro.] - [+(\aexpression\a)?Equivalent to \bexp -\b \aexpression\a.] -} -[+?Code block names may be prefixed by \bno\b to invert the test sense. The - block names are:]{ - [+cat?The block is copied to the output file.] - [+compile?The block is compiled (\bcc -c\b).] - [+cross?The block is executed as a shell script using \bcrossexec\b(1) - if \b--cross\b is on, or on the local host otherwise, and the - output is copied to the output file. Test macros are not - exported to the script.] - [+execute?The block is compiled, linked, and executed. \b0\b exit - status means success.] - [+fail?If the test fails then the block text is evaluated by - \bsh\b(1).] - [+link?The block is compiled and linked (\bcc -o\b).] - [+macro?The block is preprocessed (\bcc -E\b) and lines containing - text bracketed by \b<<"\b ... \b">>\b (\aless-than less-than - double-quote ... double-quote greater-than greater-than\a) - are copied to the output file with the brackets omitted.] - [+no?If the test fails then the block text is copied to the - output file. Deprecated: use { \bif\b \belif\b \belse\b - \bendif\b } with unnamed \b{\b ... \b}\b blocks.] - [+note?If the test succeeds then the block is copied to the output - as a \b/*\b ... \b*/\b comment.] - [+output?The block is compiled, linked, and executed, and the output - is copied to the output file.] - [+pass?If the test succeeds then the block text is evaluated by - \bsh\b(1).] - [+preprocess?The block is preprocessed (\bcc -E\b).] - [+run?The block is executed as a shell script and the output is - copied to the output file. Successful test macros are also - defined as shell variables with value \b1\b and are available - within the block. Likewise, failed test macros are defined - as shell variables with value \b0\b.] - [+yes?If the test succeeds then the block text is copied to the output - file. \byes{\b ... \b}end\b is equivalent to the unnamed block - \b{\b ... \b}\b. Deprecated: use { \bif\b \belif\b \belse\b - \bendif\b } with unnamed \b{\b ... \b}\b blocks.] -} -[+SEE ALSO?\bautoconf\b(1), \bconfig\b(1), \bcrossexec\b(1), \bnmake\b(1), - \bpackage\b(1), \bproto\b(1), \bsh\b(1)] -' - while getopts -a "$command" "$USAGE" OPT - do case $OPT in - a) set="$set set all :" ;; - c) set="$set set cc $OPTARG :" ;; - C) set="$set set config :" ;; - d) set="$set set debug $OPTARG :" ;; - D) set="$set set define :" ;; - i) set="$set set input $OPTARG :" ;; - I) set="$set set include $OPTARG :" ;; - L) set="$set set library $OPTARG :" ;; - o) set="$set set output $OPTARG :" ;; - e) set="$set set package $OPTARG :" ;; - p) set="$set set prototyped :" ;; - P) set="$set set pragma $OPTARG :" ;; - r) set="$set set regress :" ;; - s) set="$set set shell $OPTARG :" ;; - S) set="$set set static $OPTARG :" ;; - u) set="$set set undef :" ;; - v) set="$set set verbose :" ;; - x) set="$set set cross $OPTARG :" ;; - X) set="$set set exclude $OPTARG :" ;; - esac - done - shift `expr $OPTIND - 1` - ;; -*) while : - do case $# in - 0) break ;; - esac - case $1 in - -) break - ;; - --) shift - break - ;; - --a|--al|--all) - REM=a - ;; - --cc=*) REM=c`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --co|--con|--conf|--confi|--config) - REM=C - ;; - --cr=*|--cro=*|--cros=*|--cross=*) - REM=x`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --d=*|--de=*|--deb=*|--debu=*|--debug=*) - REM=d`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --def|--defi|--defin|--define) - REM=D - ;; - --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*) - REM=X`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --inp=*|--inpu=*|--input=*) - REM=i`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --inc=*|--incl=*|--inclu=*|--includ=*|--include=*) - REM=I`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --l=*|--li=*|--lib=*|--libr=*|--libra=*|--librar=*|--library=*) - REM=L`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*) - REM=o`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*) - REM=e`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --pro|--prot|--proto|--protot|--prototy|--prototyp|--prototype|--prototyped) - REM=p - ;; - --pra=*|--prag=*|--pragma=*) - REM=P`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --r|--re|--reg|--regre|--regres|--regress) - REM=r - ;; - --sh=*|--she=*|--shel=*|--shell=*) - REM=s`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --st=*|--sta=*|--stat=*|--stati=*|--static=*) - REM=S`echo $1 | sed -e 's,[^=]*=,,'` - ;; - --u|--un|--und|--unde|--undef) - REM=u - ;; - --v|--ve|--ver|--verb|--verbo|--verbos|--verbose) - REM=v - ;; - --*) echo $command: $1: unknown option >&2 - exit 2 - ;; - -*) REM=`echo $1 | sed -e 's,-,,'` - ;; - *) break - ;; - esac - shift - while : - do case $REM in - '') break ;; - esac - eval `echo $REM | sed -e "s,\(.\)\(.*\),OPT='\1' REM='\2',"` - case $OPT in - [cdiILoePsSxX]) - case $REM in - '') case $# in - 0) echo $command: -$OPT: option argument expected >&2 - exit 1 - ;; - esac - OPTARG=$1 - shift - ;; - *) OPTARG=$REM - REM='' - ;; - esac - esac - case $OPT in - a) set="$set set all :" ;; - c) set="$set set cc $OPTARG :" ;; - C) set="$set set config :" ;; - d) set="$set set debug $OPTARG :" ;; - D) set="$set set define :" ;; - i) set="$set set input $OPTARG :" ;; - I) set="$set set include $OPTARG :" ;; - L) set="$set set library $OPTARG :" ;; - o) set="$set set output $OPTARG :" ;; - e) set="$set set package $OPTARG :" ;; - p) set="$set set prototyped :" ;; - P) set="$set set pragma $OPTARG :" ;; - r) set="$set set regress :" ;; - s) set="$set set shell $OPTARG :" ;; - S) set="$set set static $OPTARG :" ;; - u) set="$set set undef :" ;; - v) set="$set set verbose :" ;; - x) set="$set set cross $OPTARG :" ;; - X) set="$set set exclude $OPTARG :" ;; - *) echo "Usage: $command [-aCDpruv] [-c C-compiler-name [C-compiler-flags ...]] [-d level] - [-i file] [-o file] [-e name] [-P text] [-s shell-path] [-S[flags]] - [-x cross-exec-prefix] [-I dir] [-L dir] [-X dir] [ - ] - [ file.iffe | statement [ : statement ... ] ]" >&2 - exit 2 - ;; - esac - done - done - ;; -esac -case $1 in --) out=-; shift ;; -esac -case $# in -0) in=- ;; -esac -set -- $set "$@" -case " $* " in -*' set config '*|*' run config.'*|*' run '*' config.'*|*' run '*'/config.'*) - config=1 - ;; -esac - -# standard error to /dev/null unless debugging -# standard output to the current output file -# -# stdout original standard output -# stderr original standard error -# nullin /dev/null input -# nullout /dev/null output - -stdout=5 stderr=6 nullin=7 nullout=8 -eval "exec $nullin/dev/null $stdout>&1 $stderr>&2" -case " $* " in -*" set debug "[3456789]*) - ;; -*) eval "exec 2>&$nullout" - ;; -esac - -# prompt complications - -case `print -n aha /dev/null` in -aha) show='print -n' SHOW='' ;; -*) case `echo -n aha 2>/dev/null` in - -n*) show=echo SHOW='\c' ;; - *) show='echo -n' SHOW='' ;; - esac - ;; -esac - -# tmp files cleaned up on exit -# status: 0:success 1:failure 2:interrupt - -status=1 -case $debug in -2) core= - ;; -*) if (ulimit -c 0) >/dev/null 2>&1 - then ulimit -c 0 - core= - else core="core core.??*" - fi - ;; -esac -trap " - rm -f $core $tmp*.* - exit \$status -" 0 1 2 -if (:>$tmp.c) 2>/dev/null -then rm -f $tmp.c -else echo "$command: cannot create tmp files in current dir" >&2 - exit 1 -fi -status=2 - -# standard header for c source - -std='#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) -#define _STD_ 1 -#define _VOID_ void -#else -#define _STD_ 0 -#define _VOID_ char -#endif -#if defined(__cplusplus) -#define _BEGIN_EXTERNS_ extern "C" { -#define _END_EXTERNS_ } -#else -#define _BEGIN_EXTERNS_ -#define _END_EXTERNS_ -#endif -#define _NIL_(x) ((x)0)' -ext='#if !defined(stdin) && !defined(feof) && !defined(L_tmpnam) -_BEGIN_EXTERNS_ -#if _STD_ -extern int printf(const char*, ...); -#else -extern int printf(); -#endif -_END_EXTERNS_ -#endif' - -# loop on op [ arg [ ... ] ] [ : op [ arg [ ... ] ] ] - -argx=0 -cur=. -can= -cansep= -cctest= -file= -hdrtest= -ifelse=NONE -ifstack= -line=0 -while : -do case $in in - "") case $argx:$* in - 1:$argv);; - 1:*) argx=0 - set x $argv - shift - ;; - esac - ;; - *) if read lin - then case $shell in - ksh) let line=line+1 ;; - *) line=`expr $line + 1` ;; - esac - set x $lin - case $# in - 1) continue ;; - esac - else set x - fi - shift - ;; - esac - case $# in - 0) case $ifstack in - ?*) echo "$command: $file$line: missing endif" >&$stderr - exit 1 - ;; - esac - set set out + - ;; - esac - - # if nesting - - while : - do case $1 in - "if") ifstack="$ifelse:$ifstack" - case $ifelse in - KEEP|NONE) - ifelse=TEST - ;; - TEST) ;; - *) ifelse=DONE - ;; - esac - shift - ;; - "elif") case $ifelse in - SKIP) ifelse=TEST - ;; - TEST) ;; - *) ifelse=DONE - ;; - NONE) echo "$command: $file$line: $1: no matching if" >&$stderr - exit 1 - ;; - esac - shift - ;; - "else") case $ifelse in - KEEP) ifelse=DONE - ;; - SKIP|TEST) - ifelse=KEEP - ;; - NONE) echo "$command: $file$line: $1: no matching if" >&$stderr - exit 1 - ;; - esac - shift - ;; - "endif")case $ifelse in - NONE) echo "$command: $file$line: $1: no matching if" >&$stderr - exit 1 - ;; - esac - case $shell in - ksh) ifelse=${ifstack%%:*} - ifstack=${ifstack#*:} - ;; - *) eval `echo $ifstack | sed 's,\([^:]*\):\(.*\),ifelse=\1 ifstack=\2,'` - ;; - esac - shift - ;; - *) break - ;; - esac - done - - # check if "run xxx" is equivalent to "set in xxx" - - case $1 in - "("*) set exp - "$@" ;; - *.iffe|*.iff) set run "$@" ;; - esac - case $1 in - :) shift - continue - ;; - run) case $shell in - bsh) case $2 in - */*) x=`echo $2 | sed -e 's,.*[\\\\/],,'` ;; - *) x=$2 ;; - esac - ;; - *) eval 'x=${2##*[\\/]}' - ;; - esac - case $x in - *.iffe|*.iff) - set set in $2 ;; - *.*) ;; - *) set set in $2 ;; - esac - ;; - esac - - # set drops out early - - case $1 in - ""|"#"*)continue - ;; - set) shift - case $1 in - ""|"#"*)op= - ;; - *) arg= - op=$1 - case $op in - --*) case $shell in - bsh) op=`echo '' $op | sed 's/.*--//'` ;; - *) op=${op#--} ;; - esac - ;; - -*) case $op in - -??*) case $shell in - bsh) arg=`echo '' $op | sed 's/-.//'` - op=`echo '' $op | sed 's/\\(-.\\).*/\\1/'` - ;; - *) arg=${op#-?} - op=${op%$arg} - ;; - esac - ;; - esac - case $op in - a) op=all ;; - c) op=cc ;; - C) op=config ;; - d) op=debug ;; - D) op=define ;; - i) op=input ;; - I) op=include ;; - L) op=library ;; - o) op=output ;; - e) op=package ;; - p) op=prototyped ;; - P) op=pragma ;; - r) op=regress ;; - s) op=shell ;; - S) op=static ;; - u) op=undef ;; - v) op=verbose ;; - x) op=cross ;; - X) op=exclude ;; - esac - ;; - esac - shift - while : - do case $# in - 0) break ;; - esac - case $1 in - *" "*) shift - continue - ;; - ""|"#"*)break - ;; - :) shift - break - ;; - esac - case $arg in - "") arg=$1 ;; - *) arg="$arg $1" ;; - esac - shift - done - ;; - esac - case $op in - all) all=1 - continue - ;; - cc) occ= - for x in $arg - do case $occ in - "") case $x in - *=*) case $shell in - bsh) eval $x - export `echo $x | sed -e 's/=.*//'` - ;; - *) export $x - ;; - esac - ;; - *) occ=$x - ;; - esac - ;; - *) occ="$occ $x" - ;; - esac - done - exclude occ - continue - ;; - config) config=1 - continue - ;; - cross) case $arg in - ""|-) cross= ;; - *) cross="$arg" libpaths= ;; - esac - continue - ;; - debug) debug=$arg - case $arg in - 0) exec 2>&$nullout - set - - show=echo - SHOW= - ;; - ""|1) exec 2>&$stderr - set - - show=echo - SHOW= - ;; - 2|3) exec 2>&$stderr - case $shell in - ksh) eval 'PS4="${PS4%+*([ ])}+\$LINENO+ "' - esac - show=echo - SHOW= - set -x - ;; - *) echo "$command: $arg: debug levels are 0, 1, 2, 3" >&$stderr - ;; - esac - continue - ;; - define) define=1 - continue - ;; - exclude)case $arg in - ""|-) excludes= ;; - *) excludes="$excludes $arg" ;; - esac - exclude includes occ - continue - ;; - "in"|input) - case $arg in - "") in=- - ;; - *) in=$arg - if test ! -r $in - then echo "$command: $in: not found" >&$stderr - exit 1 - fi - exec < $in - file=$in: - case $out in - "") case $in in - *[.\\/]*) - case $shell in - bsh) eval `echo $in | sed -e 's,.*[\\\\/],,' -e 's/\\.[^.]*//' -e 's/^/out=/'` - ;; - *) eval 'out=${in##*[\\/]}' - eval 'out=${out%.*}' - ;; - esac - ;; - *) out=$in - ;; - esac - ;; - esac - ;; - esac - continue - ;; - include)case $arg in - ""|-) includes= ;; - *) includes="$includes -I$arg" ;; - esac - exclude includes - continue - ;; - library)for y in $libpaths - do eval $y=\"\$$y:\$arg\$${y}_default\" - eval export $y - done - continue - ;; - nodebug)exec 2>&$nullout - set - - continue - ;; - nodefine) - define=0 - continue - ;; - out|output) - out=$arg - defhdr= - usr= - deflib= - one= - puthdr= - putlib= - case $op in - output) continue ;; - esac - def= - test= - ;; - package)protoflags="$protoflags -e $arg" - continue - ;; - prototyped|noprototyped) - pragma="$pragma $op" - continue - ;; - pragma) pragma="$pragma $arg" - continue - ;; - regress)regress=1 - version=1995-03-19 - continue - ;; - shell) shell=$arg - continue - ;; - static) static=$arg - continue - ;; - undef) undef=1 - continue - ;; - verbose)verbose=1 - continue - ;; - *) echo "$command: $op: unknown option" >&$stderr - exit 1 - ;; - esac - ;; - *) case $2 in - '=') def=$1 - shift - shift - ;; - *) case $1 in - '-'|'?')def=- - shift - ;; - *) def= - ;; - esac - ;; - esac - case $1 in - '!') not=1 - shift - ;; - *) not= - ;; - esac - case $1 in - *'{') op=- - ;; - '('*) op=exp - case $def in - '') def=- ;; - esac - ;; - *) op=$1 - shift - ;; - esac - arg= - cc="$occ $includes" - fail= - hdr= - lib= - mac= - no= - note= - opt= - pass= - pth= - run= - set= - src= - test= - yes= - case $op in - pth) lst=$op ;; - *) lst=hdr ;; - esac - case $# in - 0) ;; - *) case $1 in - "#"*) set x - shift - ;; - *) case $op in - ref) ;; - *) case $1 in - '('*|*'{') - arg=- - ;; - '-') case $2 in - -*) arg=$1 - shift - ;; - *) def=- - shift - case $1 in - '('*|*'{') - arg=- - ;; - *) arg=$1 - case $# in - 0) ;; - *) shift ;; - esac - ;; - esac - ;; - esac - ;; - *) arg=$1 - shift - ;; - esac - ;; - esac - ;; - esac - case $1 in - '('*) while : - do case $# in - 0) break ;; - esac - case $1 in - *[.{}]*)break ;; - esac - case $test in - '') test=$1 ;; - *) test="$test $1" ;; - esac - shift - done - case $arg in - '') arg=- ;; - esac - case $op in - exp) case $def in - ''|'-') ;; - *) arg=$def ;; - esac - ;; - esac - ;; - esac - sline=$line - while : - do case $# in - 0) break ;; - esac - case $1 in - "") ;; - "#"*) set x - ;; - "=") shift - set=$* - case $set in - "") set=" " ;; - esac - while : - do case $# in - 0) break ;; - esac - shift - done - break - ;; - [abcdefghijklmnopqrstuvwxyz]*'{'|'{') - v=$1 - shift - x= - case $v in - "note{") - sep=" " ;; - *) sep=$nl ;; - esac - case $v in - '{') e='}' ;; - *) e='}end' ;; - esac - SEP= - while : - do case $# in - 0) case $posix_read in - '') checkread ;; - esac - case $in in - "") echo "$command: $file$line: missing }end" >&$stderr - exit 1 - ;; - esac - while : - do case $posix_read in - 1) read -r lin ;; - *) lin=`$posix_read` ;; - esac - case $? in - 0) case $shell in - ksh) let line=line+1 ;; - *) line=`expr $line + 1` ;; - esac - $posix_noglob - set x $lin - $posix_glob - case $2 in - $e) shift - break 2 - ;; - esac - x="$x$SEP$lin" - SEP=$sep - ;; - *) echo "$command: $file$line: missing $e" >&$stderr - exit 1 - ;; - esac - done - ;; - esac - case $1 in - $e) break - ;; - esac - x="$x$SEP$1" - SEP=$sep - shift - done - case $v in - 'note{');; - *) x="$x$nl" # \r\n bash needs this barf # ;; - esac - case $v in - 'fail{') fail=$x ;; - 'nofail{') pass=$x v='pass{' ;; - 'nopass{') fail=$x v='fail{' ;; - 'no{') no=$x ;; - 'note{') note=$x ;; - 'pass{') pass=$x ;; - 'test{') test=$x ;; - 'yes{'|'{') yes=$x ;; - *) src=$x run=$v ;; - esac - ;; - :) shift - break - ;; - *[\"\'\(\)\{\}\ \ ]*) - case $op in - pth) pth="$pth $1" - lst=pth - ;; - *) case $test in - '') test=$1 ;; - *) test="$test $1" ;; - esac - ;; - esac - ;; - -) case $2 in - [-+]l*) lst=lib ;; - -D*) lst=mac ;; - esac - case $lst in - hdr) hdr="$hdr $1" ;; - lib) lib="$lib $1" ;; - mac) mac="$mac $1" ;; - pth) pth="$pth $1" ;; - esac - ;; - -l*) lib="$lib $1" - lst=lib - ;; - +l*) case $shell in - bsh) x=`echo '' $1 | sed 's/.*+//'` ;; - *) eval 'x=${1#+}' ;; - esac - lib="$lib -$x" - lst=lib - ;; - -*|+*) case $op in - ref) cc="$cc $1" - occ="$occ $1" - case $1 in - -L*) case $shell in - ksh) x=${1#-L} ;; - *) x=`echo x$1 | sed 's,^x-L,,'` ;; - esac - for y in $libpaths - do eval $y=\"\$$y:\$x\$${y}_default\" - eval export $y - done - ;; - esac - ;; - run) opt="$opt $1" - ;; - *) case $1 in - -D*) mac="$mac $1" - lst=mac - ;; - *) cc="$cc $1" - ;; - esac - ;; - esac - ;; - *.[aAxX]|*.[dD][lL][lL]|*.[lL][iI][bB]) - lib="$lib $1" - lst=lib - ;; - *[.\\/]*) - case $op in - pth) pth="$pth $1" - lst=pth - ;; - *) hdr="$hdr $1" - lst=hdr - ;; - esac - ;; - *) case $op in - pth) pth="$pth $1" - lst=pth - ;; - *) case $test in - '') test=$1 ;; - *) test="$test $1" ;; - esac - ;; - esac - ;; - esac - shift - done - ;; - esac - ;; - esac - case $ifelse in - DONE|SKIP) continue ;; - esac - - # check for local package root directories - - case $PACKAGE_PATH in - ?*) for i in `echo $PACKAGE_PATH | sed 's,:, ,g'` - do if test -d $i/include - then cc="$cc -I$i/include" - occ="$occ -I$i/include" - fi - if test -d $i/lib - then cc="$cc -L$i/lib" - occ="$occ -L$i/lib" - for y in $libpaths - do eval $y=\"\$$y:\$i/lib\$${y}_default\" - eval export $y - done - fi - done - ;; - esac - case $cc in - "") cc="$occ $includes" ;; - esac - - # some ops allow no args - - case $arg in - '') case $op in - iff) arg=- ;; - esac - ;; - esac - - # save $* for ancient shells - - argx=1 - argv=$* - - # check the candidate macros - - case $mac in - ?*) case " $mac " in - *" - "*);; - *) cc="$cc $mac" - mac= - ;; - esac - ;; - esac - - # make sure $cc compiles C - - case $cctest in - "") echo "int i = 1;" > $tmp.c - if $cc -c $tmp.c <&$nullin >&$nullout - then echo "(;" > $tmp.c - if $cc -c $tmp.c <&$nullin >&$nullout - then cctest="should not compile '(;'" - fi - else cctest="should compile 'int i = 1;'" - fi - case $cctest in - "") cctest=0 - ;; - *) echo "$command: $cc: not a C compiler: $cctest" >&$stderr - exit 1 - ;; - esac - ;; - esac - - # check for global default headers (some cc -E insist on compiling) - - case $hdrtest in - '') hdrtest=1 - allinc= - for x in types - do case $config in - 0) c=_sys_${x} - ;; - 1) case $shell in - ksh) typeset -u u=$x ;; - *) u=`echo $x | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` ;; - esac - c=HAVE_SYS_${u}_H - ;; - esac - x=sys/$x.h - echo "${allinc}#include <$x>" > $tmp.c - is hdr $x - if $cc -E $tmp.c <&$nullin >&$nullout - then success - gothdr="$gothdr + $x" - can="$can$cansep#define $c 1 /* #include <$x> ok */" - cansep=$nl - eval $c=1 - allinc="${allinc}#include <$x>$nl" - else failure - gothdr="$gothdr - $x" - case $all$config$undef in - ?1?|??1)can="$can$cansep#undef $c /* #include <$x> not ok */" - cansep=$nl - ;; - 1??) can="$can$cansep#define $c 0 /* #include <$x> not ok */" - cansep=$nl - ;; - esac - fi - done - ;; - esac - - # add implicit headers/libraries before the checks - - case $op in - npt) hdr="sys/types.h stdlib.h unistd.h $hdr" - ;; - siz|typ)hdr="sys/types.h time.h sys/time.h sys/times.h stddef.h stdlib.h $hdr" - ;; - esac - - # check the candidate headers - - case $hdr in - ?*) z=$hdr - hdr= - hit=0 - for x in $z - do case $x in - -) case $hit in - 0) hit=1 ;; - 1) ;; - *) break ;; - esac - continue - ;; - *.h) case " $gothdr " in - *" - $x "*) - continue - ;; - *" + $x "*) - ;; - *) case $shell in - bsh) eval `echo $x | sed -e 's,^\\([^\\\\/]*\\).*[\\\\/]\\([^\\\\/]*\\)\$,\\1_\\2,' -e 's/\\..*//' -e 's/^/c=/'` - ;; - *) eval 'c=${x##*[\\/]}' - eval 'c=${c%%.*}' - case $x in - */*) eval 'c=${x%%[\\/]*}_${c}' ;; - esac - ;; - esac - case $config in - 0) case $x in - */*) c=_${c} ;; - *) c=_hdr_${c} ;; - esac - ;; - 1) case $shell in - ksh) typeset -u u=$c ;; - *) u=`echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` ;; - esac - c=HAVE_${u}_H - ;; - esac - echo "${allinc}#include <$x>" > $tmp.c - is hdr $x - if $cc -E $tmp.c <&$nullin >&$nullout - then success - gothdr="$gothdr + $x" - can="$can$cansep#define $c 1 /* #include <$x> ok */" - cansep=$nl - eval $c=1 - else failure - gothdr="$gothdr - $x" - case $all$config$undef in - ?1?|??1)can="$can$cansep#undef $c /* #include <$x> not ok */" - cansep=$nl - ;; - 1??) can="$can$cansep#define $c 0 /* #include <$x> not ok */" - cansep=$nl - ;; - esac - continue - fi - ;; - esac - ;; - *) test -r $x || continue - ;; - esac - hdr="$hdr $x" - case $hit in - 0) ;; - 1) hit=2 ;; - esac - done - ;; - esac - - # check the candidate libraries - - case $lib in - ?*) z=$lib - lib= - p= - hit=0 - echo "int main(){return(0);}" > $tmp.c - for x in $z - - do case $x in - -) case $hit in - 0) hit=1 - continue - ;; - esac - ;; - *) case $hit in - 0) p=$x - ;; - *) case $p in - '') p=$x ;; - *) p="$p $x" ;; - esac - continue - ;; - esac - ;; - esac - case " $gotlib " in - *"- $p "*) - p= - ;; - *"+ $p "*) - lib="$lib $p" - ;; - *) rm -f $tmp.exe - is LIB $p - if $cc -o $tmp.exe $tmp.c $p <&$nullin >&$nullout - then success - gotlib="$gotlib + $p" - lib="$lib $p" - e=0 - else failure - gotlib="$gotlib - $p" - e=1 - fi - y= - for x in $p - do case $shell in - bsh) c=`echo '' $x | sed 's, *-l,,'` ;; - *) eval 'c=${x#-l}' ;; - esac - case $c in - *[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*) - c=`echo '' $c | sed -e 's,.*[\\\\/],,' -e 's,\.[^.]*$,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' -e '/^lib./s,^lib,,'` - ;; - esac - case $config in - 0) case $e$p in - 0*' '*) case " $gotlib " in - *[-+]" $x "*) - ;; - *) can="$can$cansep#define _LIB_$c 1 /* $x is a library */" - cansep=$nl - eval _LIB_$c=1 - ;; - esac - ;; - esac - ;; - 1) case $shell in - ksh) typeset -u u=$c ;; - *) u=`echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` ;; - esac - c=$u - case $e in - 0*' '*) case " $gotlib " in - *[-+]" $x "*) - ;; - *) can="$can$cansep#define HAVE_${c}_LIB 1 /* $x is a library */" - cansep=$nl - eval HAVE_${c}_LIB=1 - ;; - esac - ;; - esac - ;; - esac - y=${y}_$c - done - case $config in - 0) c=_LIB${y} ;; - 1) c=HAVE${y}_LIB ;; - esac - case $p in - *' '*) q="a library group" ;; - *) q="a library" ;; - esac - case $e in - 0) can="$can$cansep#define $c 1 /* $p is $q */" - cansep=$nl - eval $c=1 - case $hit in - 1) break ;; - esac - ;; - 1) case $all$config$undef in - ?1?|??1)can="$can$cansep#undef $c /* $p is not $q */" - cansep=$nl - ;; - 1??) can="$can$cansep#define $c 0 /* $p is not $q */" - cansep=$nl - ;; - esac - eval $c=0 - ;; - esac - p= - ;; - esac - done - ;; - esac - - # last op precheck - - case $op in - ref) deflib="$deflib $lib" - defhdr="$defhdr $hdr" - continue - ;; - esac - IFS=" ," - case $shell in - bash) op=`echo $op` - arg=`echo $arg` - ;; - *) eval op=\"$op\" - eval arg=\"$arg\" - ;; - esac - IFS=$ifs - - # check for op aliases - - x= - for o in $op - do case $o in - def|default) x="$x cmd dat hdr key lib mth sys typ" ;; - *) x="$x $o" ;; - esac - done - - # loop on the ops o and args a - - result=UNKNOWN - for o in $x - do for a in $arg - do c= - case $a in - *[.\\/]*) - case $o in - hdr|lcl|nxt|pth|sys) - x=$a - case $x in - *.lcl|*.nxt) - case $o in - sys) x=sys/$x ;; - esac - case $shell in - bsh) eval `echo $x | sed -e 's,\\(.*\\)\.\\([^.]*\\),x=\\1 o=\\2,'` - ;; - *) o=${x##*.} - x=${x%.${o}} - ;; - esac - v=$x - ;; - esac - case $x in - *[\\/]*)case $shell in - bsh) eval `echo $x | sed -e 's,\\(.*\\)[\\\\//]\\(.*\\),p=\\1 v=\\2,'` - ;; - *) eval 'p=${x%/*}' - eval 'v=${x##*/}' - ;; - esac - ;; - *.*) case $shell in - bsh) eval `echo $x | sed -e 's,\\(.*\\)\\.\\(.*\\),p=\\1 v=\\2,'` - ;; - *) eval 'p=${x%.*}' - eval 'v=${x##*.}' - ;; - esac - ;; - *) p= - ;; - esac - case $o in - lcl|nxt) c=$v.$o ;; - *) c=$v ;; - esac - ;; - *) case $shell in - bsh) eval `echo $a | sed -e 's,.*[\\\\/],,' -e 's/\\(.*\\)\\.\\(.*\\)/p=\\1 v=\\2/'` - ;; - *) eval 'p=${a%.*}' - eval 'p=${p##*[\\/]}' - eval 'v=${a##*.}' - eval 'v=${v##*[\\/]}' - ;; - esac - ;; - esac - case $p in - '') f=${v} ;; - *) f=${p}/${v} ;; - esac - case $o in - run) v=$p - p= - m=_${v} - ;; - mem) case $p in - *.*) case $shell in - bsh) eval `echo $p | sed -e 's/\\([^.]*\\)\\.\\(.*\\)/p=\\1 m=\\2/'` - ;; - *) eval 'm=${p#*.}' - eval 'p=${p%%.*}' - ;; - esac - v=${m}.${v} - esac - case $config in - 0) m=_${v}_${p} ;; - 1) m=_${v}_in_${p} ;; - esac - ;; - *) case $p in - '') m=_${v} ;; - *) m=_${p}_${v} ;; - esac - ;; - esac - ;; - *) p= - v=$a - f=$a - m=_${v} - ;; - esac - case $c in - '') c=$v ;; - esac - M=$m - case $o in - out) case $a in - -) a=- - ;; - ?*) test="$a $test" - a= - ;; - esac - ;; - *) case " $idyes " in - *" $m "*) - i=1 - ;; - *) case " $idno " in - *" $m "*) - i=0 - ;; - *) case $m in - *'*') m=`echo "$m" | sed 's,\*,_ptr,g'` ;; - esac - case $m in - *[-+/\\]*) - i=0 - ;; - *[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*) - is id $m - copy $tmp.c "int $m = 0;" - if $cc -c $tmp.c - then success - - idyes="$idyes $m" - i=1 - else failure - - idno="$idno $m" - i=0 - fi - ;; - *) i=1 - ;; - esac - ;; - esac - case $i in - 0) case $o in - dat|dfn|key|lib|mac|mth|nos|npt|siz|sym|typ|val) - continue - ;; - esac - ;; - esac - ;; - esac - ;; - esac - case $m in - *[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*) - m=`echo "X$m" | sed -e 's,^.,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g'` - ;; - esac - - # check output redirection - - case $out in - $cur) ;; - *) case $cur in - $a|$c) ;; - *) case $cur in - .) ;; - -) case $iff in - ?*) echo "#endif" ;; - esac - ;; - *) case $iff in - ?*) echo "#endif" ;; - esac - exec >/dev/null - case $cur in - *[\\/]*|*.h) x=$cur ;; - *) x=$dir/$cur ;; - esac - case $style in - C) (proto -r $protoflags $tmp.h) >/dev/null 2>&1 - sed 's,/\*[^/]*\*/, ,g' $tmp.h > $tmp.c - sed 's,/\*[^/]*\*/, ,g' $x > $tmp.t - ;; - *) sed '/^#/d' $tmp.h > $tmp.c - sed '/^#/d' $x > $tmp.t - ;; - esac - if cmp -s $tmp.c $tmp.t - then rm -f $tmp.h - case $verbose in - 1) echo "$command: $x: unchanged" >&$stderr ;; - esac - else case $x in - ${dir}[\\/]$cur) test -d $dir || mkdir $dir || exit 1 ;; - esac - mv $tmp.h $x - fi - ;; - esac - case $out in - +) case $status in - 1) ;; - *) status=0 ;; - esac - exit $status - ;; - -) eval "exec >&$stdout" - ;; - *) exec >$tmp.h - ;; - esac - case $out in - "") case $a in - *[\\/]*|???????????????*) cur=$c ;; - *) cur=$a ;; - esac - ;; - *) cur=$out - ;; - esac - case $in in - ""|-|+) case $o in - run) x=" from $a" ;; - *) x= ;; - esac - ;; - *) x=" from $in" - ;; - esac - - # output header comments - - case $style in - C) - echo "/* : : generated$x by $command version $version : : */" - for x in $pragma - do echo "#pragma $x" - done - case $out in - ""|-|+) x=$m - ;; - *.*) case $shell in - bsh) eval `echo $in | sed -e 's,\\.,_,g' -e 's/^/x=/'` - ;; - *) i=$out - x=_ - while : - do case $i in - *.*) eval 'x=$x${i%%.*}_' - eval 'i=${i#*.}' - ;; - *) x=$x$i - break - ;; - esac - done - ;; - esac - ;; - *) x=_$out - ;; - esac - case $o in - iff) case $M in - ""|*-*) iff= ;; - *) iff=${m}_H ;; - esac - ;; - *) case $regress in - '') case $x in - *-*) ;; - *) x=`pwd | sed -e 's,.*[\\\\/],,' -e 's,\\..*,,' -e 's,^lib,,' -e 's,^,'${x}_',' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g'` - # ksh n+ bug workaround - case $x in - *[!_]*) ;; - *) x=_$$ ;; - esac - iff=_def${x} - ;; - esac - ;; - *) iff=_REGRESS - ;; - esac - ;; - esac - case $iff in - ?*) echo "#ifndef $iff" - echo "#define $iff 1" - ;; - esac - ;; - *) echo "# : : generated$x by $command version $version : : #" - ;; - esac - ;; - esac - ;; - esac - case $can in - ?*) case $define in - 1) echo "$can" ;; - esac - can= - cansep= - ;; - esac - - # set up the candidate include list - - inc= - for x in $defhdr $hdr - do case $x in - *.h) case $shell in - bsh) eval `echo $x | sed -e 's,^\\([^\\\\/]*\\).*[\\\\/]\\([^\\\\/]*\\)\$,\\1_\\2,' -e 's/\\..*//' -e 's/^/c=/'` - ;; - *) eval 'c=${x##*[\\/]}' - eval 'c=${c%%.*}' - case $x in - */*) eval 'c=${x%%[\\/]*}_${c}' ;; - esac - ;; - esac - case $config in - 0) case $x in - */*) c=_${c} ;; - *) c=_hdr_${c} ;; - esac - ;; - 1) case $shell in - ksh) typeset -u u=$c ;; - *) u=`echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` ;; - esac - c=HAVE_${u}_H - ;; - esac - case " $puthdr " in - *" $c "*) - ;; - *) puthdr="$puthdr $c" - usr="$usr$nl#define $c 1" - ;; - esac - inc="$inc -#include <$x>" - ;; - esac - done - - # set up the candidate lib list - - for x in $lib $deflib - do case $shell in - ksh) eval 'c=${x#-l}' ;; - *) c=`echo '' $x | sed 's, *-l,,'` ;; - esac - case $c in - *[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*) - c=`echo '' $c | sed -e 's,.*[\\\\/],,' -e 's,\.[^.]*$,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' -e '/^lib./s,^lib,,'` - ;; - esac - case $config in - 0) c=_LIB_${c} - ;; - 1) case $shell in - ksh) typeset -u u=$c ;; - *) u=`echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` ;; - esac - c=HAVE_${u}_LIB - ;; - esac - case " $putlib " in - *" $c "*) - ;; - *) putlib="$putlib $c" - usr="$usr$nl#define $c 1" - ;; - esac - done - - # src overrides builtin test - - case $config:$def in - 0:) case $o in - tst|var);; - *) m=_${o}${m} ;; - esac - ;; - 1:) case $o in - tst|var)m=${v} ;; - esac - case $shell in - ksh) typeset -u u=$m ;; - *) u=`echo $m | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` ;; - esac - case $o in - tst|var)case $m in - $u) ;; - *) case $m in - hdr_*|lib_*|sys_*) - case $shell in - ksh) u=${u#????} ;; - *) u=`echo $u | sed 's/....//'` ;; - esac - ;; - esac - m=HAVE_${u} - ;; - esac - ;; - dat) m=HAVE${u}_DATA ;; - hdr|lcl)m=HAVE${u}_H ;; - key) m=HAVE${u}_RESERVED ;; - mth) m=HAVE${u}_MATH ;; - npt) m=HAVE${u}_DECL ;; - pth) m=${u}_PATH - case $shell in - ksh) m=${m#_} ;; - *) m=`echo $m | sed 's,^_,,'` ;; - esac - ;; - nxt) m=HAVE${u}_NEXT ;; - siz) m=SIZEOF${u} ;; - sys) m=HAVE_SYS${u}_H ;; - *) m=HAVE${u} ;; - esac - ;; - *) m=$def - M=$m - ;; - esac - case $v in - *.*) pre= - for x in `echo $v | sed 's,\\., ,g'` - do pre="$pre -#undef $x" - done - ;; - *) case $o in - siz|typ)case $v in - char|short|int|long) - ;; - *) pre="#undef $v" - ;; - esac - ;; - *) pre="#undef $v" - ;; - esac - ;; - esac - case $src in - ?*) case $src in - *['<"'][Ss][Tt][Dd][Ii][Oo].[Hh]['">']*)EXT= ;; - *) EXT=$ext ;; - esac - copy $tmp.c "$std -$usr -$inc -$EXT -$src" - e=0 - is tst "${note:-$run}" - case $run in - cat*|nocat*) - copy - "$src" - ;; - cross*|nocross*) - copy $tmp.sh "$src" - chmod +x $tmp.sh - execute $tmp.sh <&$nullin || e=1 - ;; - run*|norun*) - (eval "$src") <&$nullin || e=1 - ;; - mac*|nomac*) - if $cc -E $tmp.c <&$nullin >$tmp.i - then sed -e '/<<[ ]*".*"[ ]*>>/!d' -e 's/<<[ ]*"//g' -e 's/"[ ]*>>//g' $tmp.i - else e=1 - fi - ;; - p*|nop*)$cc -DTEST=$p -DID=$v -E $tmp.c <&$nullin >&$nullout || e=1 - ;; - c*|noc*)$cc -DTEST=$p -DID=$v -c $tmp.c <&$nullin >&$nullout || e=1 - ;; - *) case $run in - s*|nos*)case $reallystatictest in - '') #UNDENT... - - reallystatictest=. - echo '#include -int main(){printf("hello");return(0);}' > ${tmp}s.c - rm -f ${tmp}s.exe - if $cc -c ${tmp}s.c <&$nullin >&$nullout && $cc -o ${tmp}s.exe ${tmp}s.o <&$nullin >&$nullout 2>${tmp}s.e && $executable ${tmp}s.exe - then e=`wc -l ${tmp}s.e` - eval set x x $binding - while : - do shift - shift - case $# in - 0) break ;; - esac - rm -f ${tmp}s.exe - $cc -o ${tmp}s.exe $1 ${tmp}s.o <&$nullin >&$nullout 2>${tmp}s.e && $executable ${tmp}s.exe || continue - case `wc -l ${tmp}s.e` in - $e) ;; - *) continue ;; - esac - d=`ls -s ${tmp}s.exe` - rm -f ${tmp}s.exe - $cc -o ${tmp}s.exe $2 ${tmp}s.o <&$nullin >&$nullout 2>${tmp}s.e && $executable ${tmp}s.exe || continue - case `wc -l ${tmp}s.e` in - $e) ;; - *) continue ;; - esac - case `ls -s ${tmp}s.exe` in - $d) ;; - *) reallystatic=$2 - set x - shift - break - ;; - esac - done - fi - rm -f ${tmp}s.* - #...INDENT - ;; - esac - ccflags=$reallystatic - ;; - *) ccflags= - ;; - esac - set x $mac - e=1 - while : - do o= - shift - while : - do case $# in - 0) break ;; - esac - case $1 in - -) break ;; - esac - o="$o $1" - shift - done - rm -f $tmp.exe - if $cc $ccflags $o -DTEST=$p -DID=$v -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$nullout && $executable $tmp.exe - then case $run in - - no[ls]*);; - [ls]*) e=0 && break ;; - noo*) execute $tmp.exe <&$nullin || break ;; - o*) execute $tmp.exe <&$nullin && e=0 && break ;; - no*) execute $tmp.exe <&$nullin >&$nullout || break ;; - *) execute $tmp.exe <&$nullin >&$nullout && e=0 && break ;; - - esac - else case $run in - no[els]*)e=1 && break ;; - esac - fi - case $# in - 0) case $run in - no*) e=0 ;; - esac - break - ;; - esac - done - ;; - esac - case $run in - no*) case $e in - 0) e=1 ;; - *) e=0 ;; - esac - ;; - esac - report $e 1 "${note:-$run\ passed}" "${note:-$run} failed" - continue - ;; - esac - - # initialize common builtin state - - case $o in - dat|lib|mth|run) - case $statictest in - "") statictest=FoobaR - copy $tmp.c " -$std -$usr -$ext -_BEGIN_EXTERNS_ -extern int $statictest; -_END_EXTERNS_ -int main(){char* i = (char*)&$statictest; return i!=0;} -" - rm -f $tmp.exe - if $cc -o $tmp.exe $tmp.c <&$nullin >&$nullout && $executable $tmp.exe - then case $static in - .) static= - echo '#include -int main(){printf("hello");return(0);}' > $tmp.c - rm -f $tmp.exe - if $cc -c $tmp.c <&$nullin >&$nullout && $cc -o $tmp.exe $tmp.o <&$nullin >&$nullout 2>$tmp.e && $executable $tmp.exe - then e=`wc -l $tmp.e` - eval set x x $binding - while : - do shift - shift - case $# in - 0) break ;; - esac - rm -f $tmp.exe - $cc -o $tmp.exe $1 $tmp.o <&$nullin >&$nullout 2>$tmp.e && $executable $tmp.exe || continue - case `wc -l $tmp.e` in - $e) ;; - *) continue ;; - esac - d=`ls -s $tmp.exe` - rm -f $tmp.exe - $cc -o $tmp.exe $2 $tmp.o <&$nullin >&$nullout 2>$tmp.e && $executable $tmp.exe || continue - case `wc -l $tmp.e` in - $e) ;; - *) continue ;; - esac - case `ls -s $tmp.exe` in - $d) ;; - *) static=$2 - set x - shift - break - ;; - esac - done - fi - ;; - esac - else static= - fi - ;; - esac - ;; - esac - - # builtin tests - - case $o in - cmd) case $p in - ?*) continue ;; - esac - k= - for j in "" usr - do case $j in - "") d= s= ;; - *) d=/$j s=_$j ;; - esac - for i in bin etc ucb - do if test -f $d/$i/$a - then case $k in - "") k=1 - case $M in - *-*) ;; - *) usr="$usr$nl#define $m 1" - case $define in - 1) echo "#define $m 1 /* $a in ?(/usr)/(bin|etc|ucb) */" ;; - esac - ;; - esac - ;; - esac - c=${s}_${i}_${v} - usr="$usr$nl#define $c 1" - case $define in - 1) echo "#define $c 1 /* $d/$i/$a found */" ;; - esac - fi - done - done - ;; - dat) case $p in - ?*) continue ;; - esac - { - copy - " -$std -$usr -$pre -" - case $inc in - ?*) echo "$inc" - ;; - *) echo "_BEGIN_EXTERNS_ -extern int $v; -_END_EXTERNS_" - ;; - esac - echo "$ext -#ifdef _DLL -#define _REF_ -#else -#define _REF_ & -#endif -int main(){char* i = (char*) _REF_ $v; return i!=0;}" - } > $tmp.c - is $o $v - rm -f $tmp.exe - $cc -c $tmp.c <&$nullin >&$nullout && - $cc $static -o $tmp.exe $tmp.o $lib $deflib <&$nullin >&$nullout && - $executable $tmp.exe - report $? 1 "$v in default lib(s)" "$v not in default lib(s)" - ;; - dfn) case $p in - ?*) continue ;; - esac - is dfn $v - echo "$pre -$inc -#ifdef $v -<<\"#ifndef $v\">> -<<\"#define $v\">> $v <<\"/* native $v */\">> -<<\"#endif\">> -#endif" > $tmp.c - if $cc -E $tmp.c <&$nullin >$tmp.i - then sed -e '/<<[ ]*".*"[ ]*>>/!d' -e 's/<<[ ]*"//g' -e 's/"[ ]*>>//g' $tmp.i > $tmp.t - if test -s $tmp.t - then success - cat $tmp.t - else failure - fi - else failure - fi - ;; - exp) case $test in - '') echo "$command: $file$sline: test expression expected for $o" >&$stderr - exit 1 - ;; - esac - case $a in - -|'') ;; - *) eval x='$'$a - case $x in - 1) continue ;; - esac - ;; - esac - case $test in - '"'*'"'|[01]) - case $a in - -|'') ;; - *) case $define$note in - 1) echo "#define $a $test" ;; - 1*) echo "#define $a $test /* $note */" ;; - esac - ;; - esac - ;; - *) case $note in - '') note=$test ;; - esac - case $test in - '') c=1 - ;; - *) is exp "$note" - x= - for i in `echo '' $test | sed 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_], & ,g'` - do case $i in - [\ \ ]) - ;; - [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]*) - x="$x \${$i:-0}" - ;; - '!') x="$x 0 =" - ;; - '&'|'|')case $x in - *"$i") ;; - *) x="$x \\$i" ;; - esac - ;; - *) x="$x \\$i" - ;; - esac - done - c=`eval expr $x 2>&$stderr` - ;; - esac - case $c in - 0) c=1 ;; - *) c=0 ;; - esac - M=$a - m=$a - report $c 1 "$note is true" "$note is false" - ;; - esac - ;; - hdr|lcl|nxt|sys) - case $o in - lcl|nxt)case $M in - *-*) continue ;; - esac - eval x='$'_$m - case $x in - ?*) continue ;; - esac - eval _$m=1 - is $o $f - echo "$pre -$inc -#include <$f.h>" > $tmp.c - case $f in - sys/*) e= ;; - *) e='-e /[\\\\\/]sys[\\\\\/]'$f'\\.h"/d' ;; - esac - if $cc -E $tmp.c <&$nullin >$tmp.i - then i=`sed -e '/^#[line ]*[0123456789][0123456789]*[ ][ ]*"[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:]*[\\\\\/].*[\\\\\/]'$f'\\.h"/!d' $e -e s'/.*"\\(.*\\)".*/\\1/' -e 's,\\\\,/,g' -e 's,///*,/,g' $tmp.i | sed 1q` - case $i in - [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]:[\\/]*) - ;; - */*/*) k=`echo "$i" | sed 's,.*/\([^/]*/[^/]*\)$,../\1,'` - echo "$pre -$inc -#include <$k>" > $tmp.c - if $cc -E $tmp.c <&$nullin >$tmp.i - then j=`sed -e '/^#[line ]*[0123456789][0123456789]*[ ][ ]*"[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:]*[\\\\\/].*[\\\\\/]'$f'\\.h"/!d' $e -e s'/.*"\\(.*\\)".*/\\1/' -e 's,\\\\,/,g' -e 's,///*,/,g' $tmp.i | sed 1q` - wi=`wc < "$i"` - wj=`wc < "$j"` - case $wi in - $wj) i=$k ;; - esac - fi - ;; - *) echo "$pre -$inc -#include <../include/$f.h>" > $tmp.c - if $cc -E $tmp.c <&$nullin >&$nullout - then i=../include/$f.h - fi - ;; - esac - else i= - fi - case $i in - [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]:[\\/]*|[\\/]*) - success - case $o in - lcl) echo "#if defined(__STDPP__directive)" - echo "__STDPP__directive pragma pp:hosted" - echo "#endif" - echo "#include <$i> /* the native <$f.h> */" - echo "#undef $m" - usr="$usr$nl#define $m 1" - echo "#define $m 1" - ;; - nxt) echo "#define $m <$i> /* include path for the native <$f.h> */" - echo "#define ${m}_str \"$i\" /* include string for the native <$f.h> */" - usr="$usr$nl#define $m <$i>$nl#define ${m}_str \"$i\"" - eval $m=\\\<$i\\\> - ;; - esac - break - ;; - ../*/*) success - case $o in - lcl) echo "#include <$i> /* the native <$f.h> */" - echo "#undef $m" - usr="$usr$nl#define $m 1" - echo "#define $m 1" - eval $m=1 - ;; - nxt) echo "#define $m <$i> /* include path for the native <$f.h> */" - echo "#define ${m}_str \"$i\" /* include string for the native <$f.h> */" - usr="$usr$nl#define $m <$i>$nl#define ${m}_str \"$i\"" - eval $m=\\\<$i\\\> - ;; - esac - break - ;; - *) failure - case $o in - lcl) case $all$config$undef in - ?1?|??1)echo "#undef $m /* no native <$f.h> */" ;; - 1??) echo "#define $m 0 /* no native <$f.h> */" ;; - esac - eval $m=0 - ;; - nxt) case $all$config$undef in - ?1?|??1)echo "#undef $m /* no include path for the native <$f.h> */" ;; - esac - ;; - esac - ;; - esac - ;; - *) case $o in - hdr) x=$f.h ;; - sys) x=sys/$f.h ;; - esac - case " $gothdr " in - *" - $x "*) - ;; - *" + $x "*) - ;; - *) echo "${allinc}#include <$x>" > $tmp.c - is hdr $x - if $cc -E $tmp.c <&$nullin >&$nullout - then success - gothdr="$gothdr + $x" - case $M in - *-*) ;; - *) case " $puthdr " in - *" $m "*) - ;; - *) puthdr="$puthdr $m" - usr="$usr$nl#define $m 1" - ;; - esac - case $define in - 1) echo "#define $m 1 /* #include <$x> ok */" ;; - esac - eval $m=1 - ;; - esac - else failure - gothdr="$gothdr - $x" - case $M in - *-*) ;; - *) case $define$all$config$undef in - 1?1?|1??1)echo "#undef $m /* #include <$x> not ok */" ;; - 11??) echo "#define $m 0 /* #include <$x> not ok */" ;; - esac - eval $m=0 - ;; - esac - fi - ;; - esac - continue - ;; - esac - ;; - iff) ;; - key) case $p in - ?*) continue ;; - esac - w=$v - while : - do is $o $w - echo "$pre -int f(){int $w = 1;return($w);}" > $tmp.c - if $cc -c $tmp.c <&$nullin >&$nullout - then failure - case $set in - *" ="|*" = "*) - set x $set - shift - w= - while : - do case $# in - 0) break ;; - esac - case $1 in - =) break ;; - esac - w="$w $1" - shift - done - case $1 in - =) shift - set=" $*" - ;; - *) set= - ;; - esac - continue - ;; - esac - report - 1 - "$w is not a reserved keyword" "default for reserved keyword $v" - else report 0 "$v is a reserved keyword" - - case $M in - *-*) ;; - *) case $define$w in - 1$v) ;; - 1*) echo "#define $v $w /* alternate for reserved keyword $v */" ;; - esac - ;; - esac - fi - break - done - ;; - lib|mth)case $p in - ?*) continue ;; - esac - case $v in - -) continue ;; - esac - is $o $v - copy $tmp.c " -$std -$usr -$pre -$inc -$ext -typedef int (*_IFFE_fun)(); -#ifdef _IFFE_extern -_BEGIN_EXTERNS_ -extern int $v(); -_END_EXTERNS_ -#endif -static _IFFE_fun i=(_IFFE_fun)$v;int main(){return(i==0);} -" - d=-D_IFFE_extern - if $cc -c $tmp.c <&$nullin >&$nullout - then d= - elif $cc $d -c $tmp.c <&$nullin >&$nullout - then : - else d=error - fi - if test error != "$d" - then rm -f $tmp.exe - if $cc $d $static -o $tmp.exe $tmp.o $lib $deflib <&$nullin >&$nullout && $executable $tmp.exe - then case $o in - lib) c=0 ;; - *) c=1 ;; - esac - report $c 1 "$v() in default lib(s)" "$v() not in default lib(s)" "default for function $v()" - else case $o in - mth) rm -f $tmp.exe - $cc $d $static -o $tmp.exe $tmp.o -lm <&$nullin >&$nullout && $executable $tmp.exe - report $? 1 "$v() in math lib" "$v() not in math lib" "default for function $v()" - ;; - *) report 1 1 - "$v() not in default lib(s)" "default for function $v()" - ;; - esac - fi - else case $intrinsic in - '') copy $tmp.c " -$std -$usr -$pre -$inc -$ext -_BEGIN_EXTERNS_ -extern int foo(); -_END_EXTERNS_ -static int ((*i)())=foo;int main(){return(i==0);} -" - $cc -c $tmp.c <&$nullin >&$nullout - intrinsic=$? - ;; - esac - case $o in - mth) report $intrinsic 1 "$v() in math lib" "$v() not in math lib" "default for function $v()" ;; - *) report $intrinsic 1 "$v() in default lib(s)" "$v() not in default lib(s)" "default for function $v()" ;; - esac - fi - ;; - mac) case $p in - ?*) continue ;; - esac - is mac $v - echo "$pre -$inc -#ifdef $v -'$m:$v' -#endif" > $tmp.c - $cc -E $tmp.c <&$nullin | grep -c "'$m:$v'" >&$nullout - report $? 1 "$v is a macro" "$v is not a macro" "default for macro $v" - ;; - mem) case $p in - ?*) eval i='$'_iffe_typedef_$p - case $i in - 0|1) ;; - *) echo "$pre -$inc -static $p i; -int n = sizeof(i);" > $tmp.c - is typ $p - if $cc -c $tmp.c <&$nullin >&$nullout - then success - - eval _iffe_typedef_$p=1 - i=1 - else failure - - eval _iffe_typedef_$p=0 - i=0 - fi - ;; - esac - case $i in - 0) i="$v is not a member of $p" p="struct $p" ;; - *) i=- ;; - esac - is mem $v "$p" - echo "$pre -$inc -static $p i; -int n = sizeof(i.$v);" > $tmp.c - $cc -c $tmp.c <&$nullin >&$nullout - report $? 1 "$v is a member of $p" "$i" - ;; - *) p=$v - eval i='$'_iffe_typedef_$p - case $i in - 0|1) ;; - *) echo "$pre -$inc -static $p i; -int n = sizeof(i);" > $tmp.c - is typ $p - if $cc -c $tmp.c <&$nullin >&$nullout - then success - - eval _iffe_typedef_$p=1 - i=1 - else failure - - eval _iffe_typedef_$p=0 - i=0 - fi - ;; - esac - case $i in - 0) i="$p is not a non-opaque struct" p="struct $p" ;; - *) i=- ;; - esac - is nos "$p" - echo "$pre -$inc -static $p i; -int n = sizeof(i);" > $tmp.c - if $cc -c $tmp.c <&$nullin >&$nullout - then echo "$pre -$inc -static $p i; -unsigned long f() { return (unsigned long)i; }" > $tmp.c - $cc -c $tmp.c <&$nullin >&$nullout - c=$? - else c=1 - fi - report $c 1 "$p is a non-opaque struct" "$i" - esac - ;; - nop) ;; - npt) is npt $v - copy $tmp.c " -$std -$usr -$pre -$inc -$ext -_BEGIN_EXTERNS_ -struct _iffe_struct { int _iffe_member; }; -extern struct _iffe_struct* $v (struct _iffe_struct*); -_END_EXTERNS_ -" - $cc -c $tmp.c <&$nullin >&$nullout - report -$config $? 1 "$v() needs a prototype" "$v() does not need a prototype" - ;; - num) is num $v - copy $tmp.c " -$std -$usr -$pre -$inc -$ext -_BEGIN_EXTERNS_ -int _iffe_int = $v / 2; -_END_EXTERNS_ -" - $cc -c $tmp.c <&$nullin >&$nullout - report $? 1 "$v is a numeric constant" "$v is not a numeric constant" - ;; - one) for i in $a $hdr - do x="#include <$i>" - case " $gothdr " in - *" - $i "*) - continue - ;; - *" + $i "*) - ;; - *) is hdr $x - echo "$x" > $tmp.c - if $cc -E $tmp.c <&$nullin >&$nullout - then success - gothdr="$gothdr + $x" - else failure - - gothdr="$gothdr - $x" - continue - fi - ;; - esac - case $one in - "") one=$x - ;; - *"$x"*) break - ;; - *) echo "$one" > $tmp.c - if $cc -E $tmp.c <&$nullin >$tmp.i - then c=$i - case $c in - *[\\/]*) c=`echo $c | sed 's,[\\\\/],[\\\\/],g'` ;; - esac - case `sed -e '/^#[line ]*1[ ][ ]*"[\\\\\/].*[\\\\\/]'$c'"/!d' $tmp.i` in - ?*) break ;; - esac - fi - one="$one$nl$x" - ;; - esac - echo "$x" - break - done - ;; - out|output) - ;; - pth) is pth $a - pkg $pth - tab=" " - e= - f= - for i in $pth - do case $i in - '{') e="${nl}}" - l= - x=i - v="\$${x}" - t=${nl}${tab} - b="fnd()${nl}{${t}for ${x} in" - ;; - '}') b="${b}${t}do${tab}if test -e ${v}/\${1}${t}${tab}${tab}then${tab}f=${v}/\${1}${t}${tab}${tab}${tab}return${t}${tab}${tab}fi" - e="${t}done${e}" - eval "${b}${e}" - fnd $a - case $f in - ?*) break ;; - esac - ;; - -) b="${b}${t}do${tab}test \"${v}\" = '' -o -d \"${v}\" &&${t}${tab}${tab}" - x=${x}i - v="${v}\$${x}" - b="${b}for ${x} in" - e="${t}done${e}" - t="${t}${tab}${tab}" - ;; - *) case $e in - '') if test -e ${i}/${a} - then f=${i}/${a} - break - fi - ;; - *) case $i in - /|.) b="${b} ''" ;; - *) b="${b} /${i}" ;; - esac - ;; - esac - ;; - esac - done - case $f in - '') case $set in - ' ') f=$a ;; - ?*) f=$set ;; - esac - ;; - esac - case $f in - '') c=1 - ;; - *) c=0 - f="\"$f\"" - ;; - esac - report $c "$f" "${note:-$a path}" "$a path not found" - ;; - run) is run $a - if test ! -r $a - then failure not found - case $verbose in - 0) echo "$command: $file$line: $a: not found" >&$stderr ;; - esac - exit 1 - fi - noisy - case $a in - *.c) rm -f $tmp.exe - cp $a $tmp.c - $cc -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$stderr 2>&$stderr && - $executable $tmp.exe && - execute $tmp.exe $opt <&$nullin - ;; - *.sh) { - cat < $tmp.sh - chmod +x $tmp.sh - ( . $tmp.sh ) <&$nullin - ;; - *) false - ;; - esac - case $? in - 0) success - ;; - *) failure cannot run - case $verbose in - 0) echo "$command: $file$line: $a: cannot run" >&$stderr ;; - esac - exit 1 - ;; - esac - ;; - siz) case $p in - "") x= ;; - *) x="$p " ;; - esac - is siz "$x$v" - { - case $p:$v in - long:*|*:*[_0123456789]int[_0123456789]*) - echo "$pre -$inc -#include -static $x$v i; -$x$v f() { -$x$v v; i = 1; v = i;" - echo "i = v * i; i = i / v; v = v + i; i = i - v;" - case $v in - float|double) ;; - *) echo "v <<= 4; i = v >> 2; i = 10; i = v % i; i |= v; v ^= i; i = 123; v &= i;" ;; - esac - echo "return v; }" - ;; - *) echo "$pre -$inc -struct xxx { $x$v mem; }; -static struct xxx v; -struct xxx* f() { return &v; }" - ;; - esac - case $x in - ""|"struct "|"union ") - echo "int g() { return 0; }" - ;; - *) echo "int g() { return sizeof($x$v)<=sizeof($v); }" ;; - esac - copy - " -int main() { - f(); - g(); - printf(\"%u\\n\", sizeof($x$v)); - return 0; -}" - } > $tmp.c - rm -f $tmp.exe $tmp.dat - if $cc -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$nullout && - $executable $tmp.exe && - execute $tmp.exe > $tmp.dat - then z=`cat $tmp.dat` - c=0 - else z=0 - c=1 - fi - report $c "$z" "sizeof($x$v)" "$x$v not a type with known size" - ;; - sym) case $test in - "") x=$v ;; - *) x=$test ;; - esac - echo "$pre -$inc -'=' $x '='" > $tmp.c - $cc -E $tmp.c <&$nullin \ - | sed \ - -e "/'='/!d" \ - -e "s/'='//g" \ - -e 's/[ ]//g' \ - -e 's/((([^()]*)))->/->/g' \ - -e 's/(([^()]*))->/->/g' \ - -e 's/([^()]*)->/->/g' \ - -e 's/\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\)\[/\ -ary \1[/g' \ - -e 's/\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\)(/\ -fun \1[/g' \ - -e 's/\*->\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]\)/->\ -ptr \1/g' \ - -e 's/->\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]\)/->\ -reg \1/g' \ - -e "/^$v\$/d" \ - -e 's/^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*$/\ -nam &/g' \ - | sed \ - -e '/^... /!d' \ - | sort \ - -u \ - | sed \ - -e 's/\(...\) \([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\).*/#ifndef _\1_'$v'\ -#define _\1_'$v' \2\ -#define _\1_'$v'_str "\2"\ -#endif/' - ;; - typ) case $p in - "") x= ;; - *) x="$p " ;; - esac - is typ "$x$v" - { - case $p:$v in - long:*|*:*[_0123456789]int[_0123456789]*) - echo "$pre -$inc -static $x$v i; -$x$v f() { -$x$v v; i = 1; v = i;" - echo "i = v * i; i = i / v; v = v + i; i = i - v;" - case $v in - float|double) ;; - *) echo "v <<= 4; i = v >> 2; i = 10; i = v % i; i |= v; v ^= i; i = 123; v &= i;" ;; - esac - echo "return v; }" - ;; - *) echo "$pre -$inc -struct xxx { $x$v mem; }; -static struct xxx v; -struct xxx* f() { return &v; }" - ;; - esac - case $x in - ""|"struct "|"union ") - echo "int main() { f(); return 0; }" ;; - *) echo "int main() { f(); return sizeof($x$v)<=sizeof($v); }" ;; - esac - } > $tmp.c - rm -f $tmp.exe - $cc -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$nullout && - $executable $tmp.exe && - execute $tmp.exe - report $? 1 "$x$v is a type" "$x$v is not a type" "default for type $x$v" - ;; - val) case $arg in - '"'*'"')echo $arg=\'$val\' ;; - *) echo $arg=\"$val\" ;; - esac - ;; - 0) result=FAILURE - ;; - 1) result=SUCCESS - ;; - :) ;; - -) ;; - *) echo "$command: $file$line: $o: unknown feature test" >&$stderr - status=1 - ;; - esac - done - done - case $not in - 1) case $result in - FAILURE) result=SUCCESS ;; - *) result=FAILURE ;; - esac - ;; - esac - case $result in - FAILURE) user_pf=$fail user_yn=$no ;; - *) user_pf=$pass user_yn=$yes ;; - esac - case $user_pf in - ?*) eval "$user_pf" <&$nullin ;; - esac - case $user_yn in - ?*) case $note in - ?*) case $user_yn in - *$nl*) user_yn="/* $note */$nl$user_yn" ;; - *) user_yn="$user_yn /* $note */" ;; - esac - ;; - esac - copy - "$user_yn" - ;; - esac - case $ifelse:$result in - TEST:SUCCESS) ifelse=KEEP ;; - TEST:*) ifelse=SKIP ;; - esac -done