123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- ########################################################################
- # #
- # This software is part of the ast package #
- # Copyright (c) 1994-2011 AT&T Intellectual Property #
- # and is licensed under the #
- # Eclipse Public License, Version 1.0 #
- # by AT&T Intellectual Property #
- # #
- # A copy of the License is available at #
- # http://www.eclipse.org/org/documents/epl-v10.html #
- # (with md5 checksum b35adb5213ca9657e911e9befb180842) #
- # #
- # Information and Software Systems Research #
- # AT&T Research #
- # Florham Park NJ #
- # #
- # Glenn Fowler <gsf@research.att.com> #
- # #
- ########################################################################
- ### this script contains archaic constructs that work with all sh variants ###
- # mamprobe - generate MAM cc probe info
- # Glenn Fowler <gsf@research.att.com>
- (command set -o posix) 2>/dev/null && set -o posix
- command=mamprobe
- bins=`
- (
- userPATH=$PATH
- PATH=/run/current-system/sw/bin:/usr/xpg7/bin:/usr/xpg6/bin:/usr/xpg4/bin:/bin:/usr/bin:$PATH
- getconf PATH 2>/dev/null && echo "$userPATH" || echo /bin:/usr/bin:/sbin:/usr/sbin:"$userPATH"
- ) | sed 's/:/ /g'
- ` || exit
- # check the options
- opt=
- case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
- 0123) USAGE=$'
- [-?
- @(#)$Id: mamprobe (AT&T Labs Research) 2011-02-11 $
- ]
- [+NAME?mamprobe - generate MAM cc probe info]
- [+DESCRIPTION?\bmamprobe\b generates MAM (make abstract machine) \bcc\b(1)
- probe information for use by \bmamake\b(1). \acc-path\a is the
- absolute path of the probed compiler and \ainfo-file\a is where
- the information is placed. \ainfo-file\a is usually
- \b$INSTALLROOT/lib/probe/C/mam/\b\ahash\a, where \ahash\a is a hash
- of \acc-path\a. Any \ainfo-file\a directories are created if needed.
- If \ainfo-file\a is \b-\b then the probe information is written to
- the standard output.]
- [+?\bmamprobe\b and \bmamake\b are used in the bootstrap phase of
- \bpackage\b(1) installation before \bnmake\b(1) is built. The
- probed variable names are the \bnmake\b(1) names with a \bmam_\b
- prefix, \bCC\b converted to \bcc\b, and \b.\b converted to \b_\b.
- Additional variables are:]{
- [+_hosttype_?the \bpackage\b(1) host type]
- [+mam_cc_L?\b-L\b\adir\a supported]
- [+STDCAT?command to execute for \bcat\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- [+STDCHMOD?command to execute for \bchmod\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- [+STDCMP?command to execute for \bcmp\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- [+STDCP?command to execute for \bcp\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- [+STDED?command to execute for \bed\b(1) or \bex\b(1)]
- [+STDEDFLAGS?flags for \bSTDED\b]
- [+STDLN?command to execute for \bln\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- [+STDMV?command to execute for \bmv\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- [+STDRM?command to execute for \brm\b(1); prefixed by
- \bexecrate\b(1) on \b.exe\b challenged systems]
- }
- [d:debug?Enable probe script debug trace.]
- info-file cc-path
- [+SEE ALSO?\bexecrate\b(1), \bpackage\b(1), \bmamake\b(1), \bnmake\b(1),
- \bprobe\b(1)]
- '
- while getopts -a "$command" "$USAGE" OPT
- do case $OPT in
- d) opt=-d ;;
- esac
- done
- shift `expr $OPTIND - 1`
- ;;
- *) while :
- do case $# in
- 0) break ;;
- esac
- case $1 in
- --) shift
- break
- ;;
- -) break
- ;;
- -d) opt=-d
- ;;
- -*) echo $command: $1: unknown option >&2
- ;;
- *) break
- ;;
- esac
- set ''
- break
- done
- ;;
- esac
- # check the args
- case $1 in
- -) ;;
- /*) ;;
- *) set '' ;;
- esac
- case $2 in
- /*) ;;
- *) set '' ;;
- esac
- case $# in
- 0|1) echo "Usage: $command info-file cc-path" >&2; exit 2 ;;
- esac
- info=$1
- shift
- cc=$*
- # find the make probe script
- ifs=${IFS-'
- '}
- IFS=:
- set $PATH
- IFS=$ifs
- script=lib/probe/C/make/probe
- while :
- do case $# in
- 0) echo "$0: ../$script: probe script not found on PATH" >&2
- exit 1
- ;;
- esac
- case $1 in
- '') continue ;;
- esac
- makeprobe=`echo $1 | sed 's,[^/]*$,'$script,`
- if test -x $makeprobe
- then break
- fi
- shift
- done
- # create the info dir if necessary
- case $info in
- /*) i=X$info
- ifs=${IFS-'
- '}
- IFS=/
- set $i
- IFS=$ifs
- while :
- do i=$1
- shift
- case $i in
- X) break ;;
- esac
- done
- case $info in
- //*) path=/ ;;
- *) path= ;;
- esac
- while :
- do case $# in
- 0|1) break ;;
- esac
- comp=$1
- shift
- case $comp in
- '') continue ;;
- esac
- path=$path/$comp
- if test ! -d $path
- then mkdir $path || exit
- fi
- done
- ;;
- esac
- # generate info in a tmp file and rename when finished
- case $info in
- -) ;;
- *) tmp=${TMPDIR:-/tmp}/mam$$
- trap "exec >/dev/null; rm -f $tmp" 0 1 2 3 15
- exec > $tmp
- echo "probing C language processor $cc for mam information" >&2
- ;;
- esac
- echo "note generated by $0 for $cc"
- (
- set '' $opt $cc
- shift
- . $makeprobe "$@"
- case " $CC_DIALECT " in
- *" -L "*) echo "CC.L = 1" ;;
- esac
- ) | sed \
- -e '/^CC\./!d' \
- -e 's/^CC./setv mam_cc_/' \
- -e 's/^\([^=.]*\)\./\1_/' \
- -e 's/^\([^=.]*\)\./\1_/' \
- -e 's/ =//' \
- -e 's/\$("\([^"]*\)")/\1/g' \
- -e 's/\$(\([^)]*\))/${\1}/g' \
- -e 's/\${CC\./${mam_cc_}/g'
- echo 'setv _hosttype_ ${mam_cc_HOSTTYPE}'
- # STD* are standard commands/flags with possible execrate(1)
- if (
- ed <<!
- q
- !
- ) < /dev/null > /dev/null 2>&1
- then STDED=ed
- else STDED=ex
- fi
- STDEDFLAGS=-
- set STDCAT cat STDCHMOD chmod STDCMP cmp STDCP cp STDLN ln STDMV mv STDRM rm
- while :
- do case $# in
- 0|1) break ;;
- esac
- p=$2
- for d in $bins
- do if test -x $d/$p
- then p=$d/$p
- break
- fi
- done
- eval $1=\$p
- shift
- shift
- done
- if execrate
- then for n in STDCAT STDCHMOD STDCMP STDCP STDLN STDMV STDRM
- do eval $n=\"execrate \$$n\"
- done
- fi
- for n in STDCAT STDCHMOD STDCMP STDCP STDED STDEDFLAGS STDLN STDMV STDRM
- do eval echo setv \$n \$$n
- done
- # all done
- case $info in
- -) ;;
- *) exec >/dev/null
- test -f "$info" && rm -f "$info"
- cp "$tmp" "$info"
- chmod -w "$info"
- ;;
- esac
|