Blame Build.sh

Packit Service 95ac19
#!/bin/sh
Packit Service 95ac19
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.731 2018/01/13 21:38:06 tg Exp $'
Packit Service 95ac19
#-
Packit Service 95ac19
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
Packit Service 95ac19
#		2011, 2012, 2013, 2014, 2015, 2016, 2017
Packit Service 95ac19
#	mirabilos <m@mirbsd.org>
Packit Service 95ac19
#
Packit Service 95ac19
# Provided that these terms and disclaimer and all copyright notices
Packit Service 95ac19
# are retained or reproduced in an accompanying document, permission
Packit Service 95ac19
# is granted to deal in this work without restriction, including un-
Packit Service 95ac19
# limited rights to use, publicly perform, distribute, sell, modify,
Packit Service 95ac19
# merge, give away, or sublicence.
Packit Service 95ac19
#
Packit Service 95ac19
# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
Packit Service 95ac19
# the utmost extent permitted by applicable law, neither express nor
Packit Service 95ac19
# implied; without malicious intent or gross negligence. In no event
Packit Service 95ac19
# may a licensor, author or contributor be held liable for indirect,
Packit Service 95ac19
# direct, other damage, loss, or other issues arising in any way out
Packit Service 95ac19
# of dealing in the work, even if advised of the possibility of such
Packit Service 95ac19
# damage or existence of a defect, except proven that it results out
Packit Service 95ac19
# of said person's immediate fault when using the work as intended.
Packit Service 95ac19
#-
Packit Service 95ac19
# People analysing the output must whitelist conftest.c for any kind
Packit Service 95ac19
# of compiler warning checks (mirtoconf is by design not quiet).
Packit Service 95ac19
#
Packit Service 95ac19
# Used environment documentation is at the end of this file.
Packit Service 95ac19
Packit Service 95ac19
LC_ALL=C
Packit Service 95ac19
export LC_ALL
Packit Service 95ac19
Packit Service 95ac19
case $ZSH_VERSION:$VERSION in
Packit Service 95ac19
:zsh*) ZSH_VERSION=2 ;;
Packit Service 95ac19
esac
Packit Service 95ac19
Packit Service 95ac19
if test -n "${ZSH_VERSION+x}" && (emulate sh) >/dev/null 2>&1; then
Packit Service 95ac19
	emulate sh
Packit Service 95ac19
	NULLCMD=:
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
if test -d /usr/xpg4/bin/. >/dev/null 2>&1; then
Packit Service 95ac19
	# Solaris: some of the tools have weird behaviour, use portable ones
Packit Service 95ac19
	PATH=/usr/xpg4/bin:$PATH
Packit Service 95ac19
	export PATH
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
nl='
Packit Service 95ac19
'
Packit Service 95ac19
safeIFS='	'
Packit Service 95ac19
safeIFS=" $safeIFS$nl"
Packit Service 95ac19
IFS=$safeIFS
Packit Service 95ac19
allu=QWERTYUIOPASDFGHJKLZXCVBNM
Packit Service 95ac19
alll=qwertyuiopasdfghjklzxcvbnm
Packit Service 95ac19
alln=0123456789
Packit Service 95ac19
alls=______________________________________________________________
Packit Service 95ac19
Packit Service 95ac19
case `echo a | tr '\201' X` in
Packit Service 95ac19
X)
Packit Service 95ac19
	# EBCDIC build system
Packit Service 95ac19
	lfcr='\n\r'
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	lfcr='\012\015'
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
Packit Service 95ac19
genopt_die() {
Packit Service 95ac19
	if test -n "$1"; then
Packit Service 95ac19
		echo >&2 "E: $*"
Packit Service 95ac19
		echo >&2 "E: in '$srcfile': '$line'"
Packit Service 95ac19
	else
Packit Service 95ac19
		echo >&2 "E: invalid input in '$srcfile': '$line'"
Packit Service 95ac19
	fi
Packit Service 95ac19
	rm -f "$bn.gen"
Packit Service 95ac19
	exit 1
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
genopt_soptc() {
Packit Service 95ac19
	optc=`echo "$line" | sed 's/^[<>]\(.\).*$/\1/'`
Packit Service 95ac19
	test x"$optc" = x'|' && return
Packit Service 95ac19
	optclo=`echo "$optc" | tr $allu $alll`
Packit Service 95ac19
	if test x"$optc" = x"$optclo"; then
Packit Service 95ac19
		islo=1
Packit Service 95ac19
	else
Packit Service 95ac19
		islo=0
Packit Service 95ac19
	fi
Packit Service 95ac19
	sym=`echo "$line" | sed 's/^[<>]/|/'`
Packit Service 95ac19
	o_str=$o_str$nl"<$optclo$islo$sym"
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
genopt_scond() {
Packit Service 95ac19
	case x$cond in
Packit Service 95ac19
	x)
Packit Service 95ac19
		cond=
Packit Service 95ac19
		;;
Packit Service 95ac19
	x*' '*)
Packit Service 95ac19
		cond=`echo "$cond" | sed 's/^ //'`
Packit Service 95ac19
		cond="#if $cond"
Packit Service 95ac19
		;;
Packit Service 95ac19
	x'!'*)
Packit Service 95ac19
		cond=`echo "$cond" | sed 's/^!//'`
Packit Service 95ac19
		cond="#ifndef $cond"
Packit Service 95ac19
		;;
Packit Service 95ac19
	x*)
Packit Service 95ac19
		cond="#ifdef $cond"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
do_genopt() {
Packit Service 95ac19
	srcfile=$1
Packit Service 95ac19
	test -f "$srcfile" || genopt_die Source file \$srcfile not set.
Packit Service 95ac19
	bn=`basename "$srcfile" | sed 's/.opt$//'`
Packit Service 95ac19
	o_hdr='/* +++ GENERATED FILE +++ DO NOT EDIT +++ */'
Packit Service 95ac19
	o_gen=
Packit Service 95ac19
	o_str=
Packit Service 95ac19
	o_sym=
Packit Service 95ac19
	ddefs=
Packit Service 95ac19
	state=0
Packit Service 95ac19
	exec <"$srcfile"
Packit Service 95ac19
	IFS=
Packit Service 95ac19
	while IFS= read line; do
Packit Service 95ac19
		IFS=$safeIFS
Packit Service 95ac19
		case $state:$line in
Packit Service 95ac19
		2:'|'*)
Packit Service 95ac19
			# end of input
Packit Service 95ac19
			o_sym=`echo "$line" | sed 's/^.//'`
Packit Service 95ac19
			o_gen=$o_gen$nl"#undef F0"
Packit Service 95ac19
			o_gen=$o_gen$nl"#undef FN"
Packit Service 95ac19
			o_gen=$o_gen$ddefs
Packit Service 95ac19
			state=3
Packit Service 95ac19
			;;
Packit Service 95ac19
		1:@@)
Packit Service 95ac19
			# start of data block
Packit Service 95ac19
			o_gen=$o_gen$nl"#endif"
Packit Service 95ac19
			o_gen=$o_gen$nl"#ifndef F0"
Packit Service 95ac19
			o_gen=$o_gen$nl"#define F0 FN"
Packit Service 95ac19
			o_gen=$o_gen$nl"#endif"
Packit Service 95ac19
			state=2
Packit Service 95ac19
			;;
Packit Service 95ac19
		*:@@*)
Packit Service 95ac19
			genopt_die ;;
Packit Service 95ac19
		0:/\*-|0:\ \**|0:)
Packit Service 95ac19
			o_hdr=$o_hdr$nl$line
Packit Service 95ac19
			;;
Packit Service 95ac19
		0:@*|1:@*)
Packit Service 95ac19
			# start of a definition block
Packit Service 95ac19
			sym=`echo "$line" | sed 's/^@//'`
Packit Service 95ac19
			if test $state = 0; then
Packit Service 95ac19
				o_gen=$o_gen$nl"#if defined($sym)"
Packit Service 95ac19
			else
Packit Service 95ac19
				o_gen=$o_gen$nl"#elif defined($sym)"
Packit Service 95ac19
			fi
Packit Service 95ac19
			ddefs="$ddefs$nl#undef $sym"
Packit Service 95ac19
			state=1
Packit Service 95ac19
			;;
Packit Service 95ac19
		0:*|3:*)
Packit Service 95ac19
			genopt_die ;;
Packit Service 95ac19
		1:*)
Packit Service 95ac19
			# definition line
Packit Service 95ac19
			o_gen=$o_gen$nl$line
Packit Service 95ac19
			;;
Packit Service 95ac19
		2:'<'*'|'*)
Packit Service 95ac19
			genopt_soptc
Packit Service 95ac19
			;;
Packit Service 95ac19
		2:'>'*'|'*)
Packit Service 95ac19
			genopt_soptc
Packit Service 95ac19
			cond=`echo "$line" | sed 's/^[^|]*|//'`
Packit Service 95ac19
			genopt_scond
Packit Service 95ac19
			case $optc in
Packit Service 95ac19
			'|') optc=0 ;;
Packit Service 95ac19
			*) optc=\'$optc\' ;;
Packit Service 95ac19
			esac
Packit Service 95ac19
			IFS= read line || genopt_die Unexpected EOF
Packit Service 95ac19
			IFS=$safeIFS
Packit Service 95ac19
			test -n "$cond" && o_gen=$o_gen$nl"$cond"
Packit Service 95ac19
			o_gen=$o_gen$nl"$line, $optc)"
Packit Service 95ac19
			test -n "$cond" && o_gen=$o_gen$nl"#endif"
Packit Service 95ac19
			;;
Packit Service 95ac19
		esac
Packit Service 95ac19
	done
Packit Service 95ac19
	case $state:$o_sym in
Packit Service 95ac19
	3:) genopt_die Expected optc sym at EOF ;;
Packit Service 95ac19
	3:*) ;;
Packit Service 95ac19
	*) genopt_die Missing EOF marker ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	echo "$o_str" | sort | while IFS='|' read x opts cond; do
Packit Service 95ac19
		IFS=$safeIFS
Packit Service 95ac19
		test -n "$x" || continue
Packit Service 95ac19
		genopt_scond
Packit Service 95ac19
		test -n "$cond" && echo "$cond"
Packit Service 95ac19
		echo "\"$opts\""
Packit Service 95ac19
		test -n "$cond" && echo "#endif"
Packit Service 95ac19
	done | {
Packit Service 95ac19
		echo "$o_hdr"
Packit Service 95ac19
		echo "#ifndef $o_sym$o_gen"
Packit Service 95ac19
		echo "#else"
Packit Service 95ac19
		cat
Packit Service 95ac19
		echo "#undef $o_sym"
Packit Service 95ac19
		echo "#endif"
Packit Service 95ac19
	} >"$bn.gen"
Packit Service 95ac19
	IFS=$safeIFS
Packit Service 95ac19
	return 0
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
if test x"$BUILDSH_RUN_GENOPT" = x"1"; then
Packit Service 95ac19
	set x -G "$srcfile"
Packit Service 95ac19
	shift
Packit Service 95ac19
fi
Packit Service 95ac19
if test x"$1" = x"-G"; then
Packit Service 95ac19
	do_genopt "$2"
Packit Service 95ac19
	exit $?
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
echo "For the build logs, demonstrate that /dev/null and /dev/tty exist:"
Packit Service 95ac19
ls -l /dev/null /dev/tty
Packit Service 95ac19
Packit Service 95ac19
v() {
Packit Service 95ac19
	$e "$*"
Packit Service 95ac19
	eval "$@"
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
vv() {
Packit Service 95ac19
	_c=$1
Packit Service 95ac19
	shift
Packit Service 95ac19
	$e "\$ $*" 2>&1
Packit Service 95ac19
	eval "$@" >vv.out 2>&1
Packit Service 95ac19
	sed "s?^?${_c} ?" 
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
vq() {
Packit Service 95ac19
	eval "$@"
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
rmf() {
Packit Service 95ac19
	for _f in "$@"; do
Packit Service 95ac19
		case $_f in
Packit Service 95ac19
		Build.sh|check.pl|check.t|dot.mkshrc|*.1|*.c|*.h|*.ico|*.opt) ;;
Packit Service 95ac19
		*) rm -f "$_f" ;;
Packit Service 95ac19
		esac
Packit Service 95ac19
	done
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
tcfn=no
Packit Service 95ac19
bi=
Packit Service 95ac19
ui=
Packit Service 95ac19
ao=
Packit Service 95ac19
fx=
Packit Service 95ac19
me=`basename "$0"`
Packit Service 95ac19
orig_CFLAGS=$CFLAGS
Packit Service 95ac19
phase=x
Packit Service 95ac19
oldish_ed=stdout-ed,no-stderr-ed
Packit Service 95ac19
Packit Service 95ac19
if test -t 1; then
Packit Service 95ac19
	bi='?[1m'
Packit Service 95ac19
	ui='?[4m'
Packit Service 95ac19
	ao='?[0m'
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
upper() {
Packit Service 95ac19
	echo :"$@" | sed 's/^://' | tr $alll $allu
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# clean up after ac_testrun()
Packit Service 95ac19
ac_testdone() {
Packit Service 95ac19
	eval HAVE_$fu=$fv
Packit Service 95ac19
	fr=no
Packit Service 95ac19
	test 0 = $fv || fr=yes
Packit Service 95ac19
	$e "$bi==> $fd...$ao $ui$fr$ao$fx"
Packit Service 95ac19
	fx=
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# ac_cache label: sets f, fu, fv?=0
Packit Service 95ac19
ac_cache() {
Packit Service 95ac19
	f=$1
Packit Service 95ac19
	fu=`upper $f`
Packit Service 95ac19
	eval fv=\$HAVE_$fu
Packit Service 95ac19
	case $fv in
Packit Service 95ac19
	0|1)
Packit Service 95ac19
		fx=' (cached)'
Packit Service 95ac19
		return 0
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	fv=0
Packit Service 95ac19
	return 1
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# ac_testinit label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput
Packit Service 95ac19
# returns 1 if value was cached/implied, 0 otherwise: call ac_testdone
Packit Service 95ac19
ac_testinit() {
Packit Service 95ac19
	if ac_cache $1; then
Packit Service 95ac19
		test x"$2" = x"!" && shift
Packit Service 95ac19
		test x"$2" = x"" || shift
Packit Service 95ac19
		fd=${3-$f}
Packit Service 95ac19
		ac_testdone
Packit Service 95ac19
		return 1
Packit Service 95ac19
	fi
Packit Service 95ac19
	fc=0
Packit Service 95ac19
	if test x"$2" = x""; then
Packit Service 95ac19
		ft=1
Packit Service 95ac19
	else
Packit Service 95ac19
		if test x"$2" = x"!"; then
Packit Service 95ac19
			fc=1
Packit Service 95ac19
			shift
Packit Service 95ac19
		fi
Packit Service 95ac19
		eval ft=\$HAVE_`upper $2`
Packit Service 95ac19
		shift
Packit Service 95ac19
	fi
Packit Service 95ac19
	fd=${3-$f}
Packit Service 95ac19
	if test $fc = "$ft"; then
Packit Service 95ac19
		fv=$2
Packit Service 95ac19
		fx=' (implied)'
Packit Service 95ac19
		ac_testdone
Packit Service 95ac19
		return 1
Packit Service 95ac19
	fi
Packit Service 95ac19
	$e ... $fd
Packit Service 95ac19
	return 0
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# pipe .c | ac_test[n] [!] label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput
Packit Service 95ac19
ac_testnnd() {
Packit Service 95ac19
	if test x"$1" = x"!"; then
Packit Service 95ac19
		fr=1
Packit Service 95ac19
		shift
Packit Service 95ac19
	else
Packit Service 95ac19
		fr=0
Packit Service 95ac19
	fi
Packit Service 95ac19
	ac_testinit "$@" || return 1
Packit Service 95ac19
	cat >conftest.c
Packit Service 95ac19
	vv ']' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN conftest.c $LIBS $ccpr"
Packit Service 95ac19
	test $tcfn = no && test -f a.out && tcfn=a.out
Packit Service 95ac19
	test $tcfn = no && test -f a.exe && tcfn=a.exe
Packit Service 95ac19
	test $tcfn = no && test -f conftest.exe && tcfn=conftest.exe
Packit Service 95ac19
	test $tcfn = no && test -f conftest && tcfn=conftest
Packit Service 95ac19
	if test -f $tcfn; then
Packit Service 95ac19
		test 1 = $fr || fv=1
Packit Service 95ac19
	else
Packit Service 95ac19
		test 0 = $fr || fv=1
Packit Service 95ac19
	fi
Packit Service 95ac19
	vscan=
Packit Service 95ac19
	if test $phase = u; then
Packit Service 95ac19
		test $ct = gcc && vscan='unrecogni[sz]ed'
Packit Service 95ac19
		test $ct = hpcc && vscan='unsupported'
Packit Service 95ac19
		test $ct = pcc && vscan='unsupported'
Packit Service 95ac19
		test $ct = sunpro && vscan='-e ignored -e turned.off'
Packit Service 95ac19
	fi
Packit Service 95ac19
	test -n "$vscan" && grep $vscan vv.out >/dev/null 2>&1 && fv=$fr
Packit Service 95ac19
	return 0
Packit Service 95ac19
}
Packit Service 95ac19
ac_testn() {
Packit Service 95ac19
	ac_testnnd "$@" || return
Packit Service 95ac19
	rmf conftest.c conftest.o ${tcfn}* vv.out
Packit Service 95ac19
	ac_testdone
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# ac_ifcpp cppexpr [!] label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput
Packit Service 95ac19
ac_ifcpp() {
Packit Service 95ac19
	expr=$1; shift
Packit Service 95ac19
	ac_testn "$@" <<-EOF
Packit Service 95ac19
		#include <unistd.h>
Packit Service 95ac19
		extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
		int main(void) { return (isatty(0) +
Packit Service 95ac19
		#$expr
Packit Service 95ac19
		    0
Packit Service 95ac19
		#else
Packit Service 95ac19
		/* force a failure: expr is false */
Packit Service 95ac19
		    thiswillneverbedefinedIhope()
Packit Service 95ac19
		#endif
Packit Service 95ac19
		    ); }
Packit Service 95ac19
EOF
Packit Service 95ac19
	test x"$1" = x"!" && shift
Packit Service 95ac19
	f=$1
Packit Service 95ac19
	fu=`upper $f`
Packit Service 95ac19
	eval fv=\$HAVE_$fu
Packit Service 95ac19
	test x"$fv" = x"1"
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
add_cppflags() {
Packit Service 95ac19
	CPPFLAGS="$CPPFLAGS $*"
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
ac_cppflags() {
Packit Service 95ac19
	test x"$1" = x"" || fu=$1
Packit Service 95ac19
	fv=$2
Packit Service 95ac19
	test x"$2" = x"" && eval fv=\$HAVE_$fu
Packit Service 95ac19
	add_cppflags -DHAVE_$fu=$fv
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
ac_test() {
Packit Service 95ac19
	ac_testn "$@"
Packit Service 95ac19
	ac_cppflags
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# ac_flags [-] add varname cflags [text] [ldflags]
Packit Service 95ac19
ac_flags() {
Packit Service 95ac19
	if test x"$1" = x"-"; then
Packit Service 95ac19
		shift
Packit Service 95ac19
		hf=1
Packit Service 95ac19
	else
Packit Service 95ac19
		hf=0
Packit Service 95ac19
	fi
Packit Service 95ac19
	fa=$1
Packit Service 95ac19
	vn=$2
Packit Service 95ac19
	f=$3
Packit Service 95ac19
	ft=$4
Packit Service 95ac19
	fl=$5
Packit Service 95ac19
	test x"$ft" = x"" && ft="if $f can be used"
Packit Service 95ac19
	save_CFLAGS=$CFLAGS
Packit Service 95ac19
	CFLAGS="$CFLAGS $f"
Packit Service 95ac19
	if test -n "$fl"; then
Packit Service 95ac19
		save_LDFLAGS=$LDFLAGS
Packit Service 95ac19
		LDFLAGS="$LDFLAGS $fl"
Packit Service 95ac19
	fi
Packit Service 95ac19
	if test 1 = $hf; then
Packit Service 95ac19
		ac_testn can_$vn '' "$ft"
Packit Service 95ac19
	else
Packit Service 95ac19
		ac_testn can_$vn '' "$ft" <<-'EOF'
Packit Service 95ac19
			/* evil apo'stroph in comment test */
Packit Service 95ac19
			#include <unistd.h>
Packit Service 95ac19
			int main(void) { return (isatty(0)); }
Packit Service 95ac19
		EOF
Packit Service 95ac19
	fi
Packit Service 95ac19
	eval fv=\$HAVE_CAN_`upper $vn`
Packit Service 95ac19
	if test -n "$fl"; then
Packit Service 95ac19
		test 11 = $fa$fv || LDFLAGS=$save_LDFLAGS
Packit Service 95ac19
	fi
Packit Service 95ac19
	test 11 = $fa$fv || CFLAGS=$save_CFLAGS
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
# ac_header [!] header [prereq ...]
Packit Service 95ac19
ac_header() {
Packit Service 95ac19
	if test x"$1" = x"!"; then
Packit Service 95ac19
		na=1
Packit Service 95ac19
		shift
Packit Service 95ac19
	else
Packit Service 95ac19
		na=0
Packit Service 95ac19
	fi
Packit Service 95ac19
	hf=$1; shift
Packit Service 95ac19
	hv=`echo "$hf" | tr -d "$lfcr" | tr -c $alll$allu$alln $alls`
Packit Service 95ac19
	echo "/* NeXTstep bug workaround */" >x
Packit Service 95ac19
	for i
Packit Service 95ac19
	do
Packit Service 95ac19
		case $i in
Packit Service 95ac19
		_time)
Packit Service 95ac19
			echo '#if HAVE_BOTH_TIME_H' >>x
Packit Service 95ac19
			echo '#include <sys/time.h>' >>x
Packit Service 95ac19
			echo '#include <time.h>' >>x
Packit Service 95ac19
			echo '#elif HAVE_SYS_TIME_H' >>x
Packit Service 95ac19
			echo '#include <sys/time.h>' >>x
Packit Service 95ac19
			echo '#elif HAVE_TIME_H' >>x
Packit Service 95ac19
			echo '#include <time.h>' >>x
Packit Service 95ac19
			echo '#endif' >>x
Packit Service 95ac19
			;;
Packit Service 95ac19
		*)
Packit Service 95ac19
			echo "#include <$i>" >>x
Packit Service 95ac19
			;;
Packit Service 95ac19
		esac
Packit Service 95ac19
	done
Packit Service 95ac19
	echo "#include <$hf>" >>x
Packit Service 95ac19
	echo '#include <unistd.h>' >>x
Packit Service 95ac19
	echo 'int main(void) { return (isatty(0)); }' >>x
Packit Service 95ac19
	ac_testn "$hv" "" "<$hf>" 
Packit Service 95ac19
	rmf x
Packit Service 95ac19
	test 1 = $na || ac_cppflags
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
addsrcs() {
Packit Service 95ac19
	if test x"$1" = x"!"; then
Packit Service 95ac19
		fr=0
Packit Service 95ac19
		shift
Packit Service 95ac19
	else
Packit Service 95ac19
		fr=1
Packit Service 95ac19
	fi
Packit Service 95ac19
	eval i=\$$1
Packit Service 95ac19
	test $fr = "$i" && case " $SRCS " in
Packit Service 95ac19
	*\ $2\ *)	;;
Packit Service 95ac19
	*)		SRCS="$SRCS $2" ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
}
Packit Service 95ac19
Packit Service 95ac19
Packit Service 95ac19
curdir=`pwd` srcdir=`dirname "$0" 2>/dev/null`
Packit Service 95ac19
case x$srcdir in
Packit Service 95ac19
x)
Packit Service 95ac19
	srcdir=.
Packit Service 95ac19
	;;
Packit Service 95ac19
*\ *|*"	"*|*"$nl"*)
Packit Service 95ac19
	echo >&2 Source directory should not contain space or tab or newline.
Packit Service 95ac19
	echo >&2 Errors may occur.
Packit Service 95ac19
	;;
Packit Service 95ac19
*"'"*)
Packit Service 95ac19
	echo Source directory must not contain single quotes.
Packit Service 95ac19
	exit 1
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
dstversion=`sed -n '/define MKSH_VERSION/s/^.*"\([^"]*\)".*$/\1/p' "$srcdir/sh.h"`
Packit Service 95ac19
add_cppflags -DMKSH_BUILDSH
Packit Service 95ac19
Packit Service 95ac19
e=echo
Packit Service 95ac19
r=0
Packit Service 95ac19
eq=0
Packit Service 95ac19
pm=0
Packit Service 95ac19
cm=normal
Packit Service 95ac19
optflags=-std-compile-opts
Packit Service 95ac19
check_categories=
Packit Service 95ac19
last=
Packit Service 95ac19
tfn=
Packit Service 95ac19
legacy=0
Packit Service 95ac19
textmode=0
Packit Service 95ac19
ebcdic=false
Packit Service 95ac19
Packit Service 95ac19
for i
Packit Service 95ac19
do
Packit Service 95ac19
	case $last:$i in
Packit Service 95ac19
	c:combine|c:dragonegg|c:llvm|c:lto)
Packit Service 95ac19
		cm=$i
Packit Service 95ac19
		last=
Packit Service 95ac19
		;;
Packit Service 95ac19
	c:*)
Packit Service 95ac19
		echo "$me: Unknown option -c '$i'!" >&2
Packit Service 95ac19
		exit 1
Packit Service 95ac19
		;;
Packit Service 95ac19
	o:*)
Packit Service 95ac19
		optflags=$i
Packit Service 95ac19
		last=
Packit Service 95ac19
		;;
Packit Service 95ac19
	t:*)
Packit Service 95ac19
		tfn=$i
Packit Service 95ac19
		last=
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-c)
Packit Service 95ac19
		last=c
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-E)
Packit Service 95ac19
		ebcdic=true
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-G)
Packit Service 95ac19
		echo "$me: Do not call me with '-G'!" >&2
Packit Service 95ac19
		exit 1
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-g)
Packit Service 95ac19
		# checker, debug, valgrind build
Packit Service 95ac19
		add_cppflags -DDEBUG
Packit Service 95ac19
		CFLAGS="$CFLAGS -g3 -fno-builtin"
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-j)
Packit Service 95ac19
		pm=1
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-L)
Packit Service 95ac19
		legacy=1
Packit Service 95ac19
		;;
Packit Service 95ac19
	:+L)
Packit Service 95ac19
		legacy=0
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-M)
Packit Service 95ac19
		cm=makefile
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-O)
Packit Service 95ac19
		optflags=-std-compile-opts
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-o)
Packit Service 95ac19
		last=o
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-Q)
Packit Service 95ac19
		eq=1
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-r)
Packit Service 95ac19
		r=1
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-T)
Packit Service 95ac19
		textmode=1
Packit Service 95ac19
		;;
Packit Service 95ac19
	:+T)
Packit Service 95ac19
		textmode=0
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-t)
Packit Service 95ac19
		last=t
Packit Service 95ac19
		;;
Packit Service 95ac19
	:-v)
Packit Service 95ac19
		echo "Build.sh $srcversion"
Packit Service 95ac19
		echo "for mksh $dstversion"
Packit Service 95ac19
		exit 0
Packit Service 95ac19
		;;
Packit Service 95ac19
	:*)
Packit Service 95ac19
		echo "$me: Unknown option '$i'!" >&2
Packit Service 95ac19
		exit 1
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		echo "$me: Unknown option -'$last' '$i'!" >&2
Packit Service 95ac19
		exit 1
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
done
Packit Service 95ac19
if test -n "$last"; then
Packit Service 95ac19
	echo "$me: Option -'$last' not followed by argument!" >&2
Packit Service 95ac19
	exit 1
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
test -z "$tfn" && if test $legacy = 0; then
Packit Service 95ac19
	tfn=mksh
Packit Service 95ac19
else
Packit Service 95ac19
	tfn=lksh
Packit Service 95ac19
fi
Packit Service 95ac19
if test -d $tfn || test -d $tfn.exe; then
Packit Service 95ac19
	echo "$me: Error: ./$tfn is a directory!" >&2
Packit Service 95ac19
	exit 1
Packit Service 95ac19
fi
Packit Service 95ac19
rmf a.exe* a.out* conftest.c conftest.exe* *core core.* ${tfn}* *.bc *.dbg \
Packit Service 95ac19
    *.ll *.o *.gen *.cat1 Rebuild.sh lft no signames.inc test.sh x vv.out
Packit Service 95ac19
Packit Service 95ac19
SRCS="lalloc.c edit.c eval.c exec.c expr.c funcs.c histrap.c jobs.c"
Packit Service 95ac19
SRCS="$SRCS lex.c main.c misc.c shf.c syn.c tree.c var.c"
Packit Service 95ac19
Packit Service 95ac19
if test $legacy = 0; then
Packit Service 95ac19
	check_categories="$check_categories shell:legacy-no int:32"
Packit Service 95ac19
else
Packit Service 95ac19
	check_categories="$check_categories shell:legacy-yes"
Packit Service 95ac19
	add_cppflags -DMKSH_LEGACY_MODE
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
if $ebcdic; then
Packit Service 95ac19
	add_cppflags -DMKSH_EBCDIC
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
if test $textmode = 0; then
Packit Service 95ac19
	check_categories="$check_categories shell:textmode-no shell:binmode-yes"
Packit Service 95ac19
else
Packit Service 95ac19
	check_categories="$check_categories shell:textmode-yes shell:binmode-no"
Packit Service 95ac19
	add_cppflags -DMKSH_WITH_TEXTMODE
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
if test x"$srcdir" = x"."; then
Packit Service 95ac19
	CPPFLAGS="-I. $CPPFLAGS"
Packit Service 95ac19
else
Packit Service 95ac19
	CPPFLAGS="-I. -I'$srcdir' $CPPFLAGS"
Packit Service 95ac19
fi
Packit Service 95ac19
test -n "$LDSTATIC" && if test -n "$LDFLAGS"; then
Packit Service 95ac19
	LDFLAGS="$LDFLAGS $LDSTATIC"
Packit Service 95ac19
else
Packit Service 95ac19
	LDFLAGS=$LDSTATIC
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
if test -z "$TARGET_OS"; then
Packit Service 95ac19
	x=`uname -s 2>/dev/null || uname`
Packit Service 95ac19
	test x"$x" = x"`uname -n 2>/dev/null`" || TARGET_OS=$x
Packit Service 95ac19
fi
Packit Service 95ac19
if test -z "$TARGET_OS"; then
Packit Service 95ac19
	echo "$me: Set TARGET_OS, your uname is broken!" >&2
Packit Service 95ac19
	exit 1
Packit Service 95ac19
fi
Packit Service 95ac19
oswarn=
Packit Service 95ac19
ccpc=-Wc,
Packit Service 95ac19
ccpl=-Wl,
Packit Service 95ac19
tsts=
Packit Service 95ac19
ccpr='|| for _f in ${tcfn}*; do case $_f in Build.sh|check.pl|check.t|dot.mkshrc|*.1|*.c|*.h|*.ico|*.opt) ;; *) rm -f "$_f" ;; esac; done'
Packit Service 95ac19
Packit Service 95ac19
# Evil hack
Packit Service 95ac19
if test x"$TARGET_OS" = x"Android"; then
Packit Service 95ac19
	check_categories="$check_categories android"
Packit Service 95ac19
	TARGET_OS=Linux
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
# Evil OS
Packit Service 95ac19
if test x"$TARGET_OS" = x"Minix"; then
Packit Service 95ac19
	echo >&2 "
Packit Service 95ac19
WARNING: additional checks before running Build.sh required!
Packit Service 95ac19
You can avoid these by calling Build.sh correctly, see below.
Packit Service 95ac19
"
Packit Service 95ac19
	cat >conftest.c <<'EOF'
Packit Service 95ac19
#include <sys/types.h>
Packit Service 95ac19
const char *
Packit Service 95ac19
#ifdef _NETBSD_SOURCE
Packit Service 95ac19
ct="Ninix3"
Packit Service 95ac19
#else
Packit Service 95ac19
ct="Minix3"
Packit Service 95ac19
#endif
Packit Service 95ac19
;
Packit Service 95ac19
EOF
Packit Service 95ac19
	ct=unknown
Packit Service 95ac19
	vv ']' "${CC-cc} -E $CFLAGS $CPPFLAGS $NOWARN conftest.c | grep ct= | tr -d \\\\015 >x"
Packit Service 95ac19
	sed 's/^/[ /' x
Packit Service 95ac19
	eval `cat x`
Packit Service 95ac19
	rmf x vv.out
Packit Service 95ac19
	case $ct in
Packit Service 95ac19
	Minix3|Ninix3)
Packit Service 95ac19
		echo >&2 "
Packit Service 95ac19
Warning: you set TARGET_OS to $TARGET_OS but that is ambiguous.
Packit Service 95ac19
Please set it to either Minix3 or Ninix3, whereas the latter is
Packit Service 95ac19
all versions of Minix with even partial NetBSD(R) userland. The
Packit Service 95ac19
value determined from your compiler for the current compilation
Packit Service 95ac19
(which may be wrong) is: $ct
Packit Service 95ac19
"
Packit Service 95ac19
		TARGET_OS=$ct
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		echo >&2 "
Packit Service 95ac19
Warning: you set TARGET_OS to $TARGET_OS but that is ambiguous.
Packit Service 95ac19
Please set it to either Minix3 or Ninix3, whereas the latter is
Packit Service 95ac19
all versions of Minix with even partial NetBSD(R) userland. The
Packit Service 95ac19
proper value couldn't be determined, continue at your own risk.
Packit Service 95ac19
"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
# Configuration depending on OS revision, on OSes that need them
Packit Service 95ac19
case $TARGET_OS in
Packit Service 95ac19
NEXTSTEP)
Packit Service 95ac19
	test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`hostinfo 2>&1 | \
Packit Service 95ac19
	    grep 'NeXT Mach [0-9][0-9.]*:' | \
Packit Service 95ac19
	    sed 's/^.*NeXT Mach \([0-9][0-9.]*\):.*$/\1/'`
Packit Service 95ac19
	;;
Packit Service 95ac19
QNX|SCO_SV)
Packit Service 95ac19
	test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r`
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
Packit Service 95ac19
# Configuration depending on OS name
Packit Service 95ac19
case $TARGET_OS in
Packit Service 95ac19
386BSD)
Packit Service 95ac19
	: "${HAVE_CAN_OTWO=0}"
Packit Service 95ac19
	add_cppflags -DMKSH_NO_SIGSETJMP
Packit Service 95ac19
	add_cppflags -DMKSH_TYPEDEF_SIG_ATOMIC_T=int
Packit Service 95ac19
	;;
Packit Service 95ac19
AIX)
Packit Service 95ac19
	add_cppflags -D_ALL_SOURCE
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
BeOS)
Packit Service 95ac19
	case $KSH_VERSION in
Packit Service 95ac19
	*MIRBSD\ KSH*)
Packit Service 95ac19
		oswarn="; it has minor issues"
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		oswarn="; you must recompile mksh with"
Packit Service 95ac19
		oswarn="$oswarn${nl}itself in a second stage"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	# BeOS has no real tty either
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	add_cppflags -DMKSH_DISABLE_TTY_WARNING
Packit Service 95ac19
	# BeOS doesn't have different UIDs and GIDs
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SETEUGID
Packit Service 95ac19
	;;
Packit Service 95ac19
BSD/OS)
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
Coherent)
Packit Service 95ac19
	oswarn="; it has major issues"
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SYMLINK
Packit Service 95ac19
	check_categories="$check_categories nosymlink"
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SETEUGID
Packit Service 95ac19
	add_cppflags -DMKSH_DISABLE_TTY_WARNING
Packit Service 95ac19
	;;
Packit Service 95ac19
CYGWIN*)
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
Darwin)
Packit Service 95ac19
	add_cppflags -D_DARWIN_C_SOURCE
Packit Service 95ac19
	;;
Packit Service 95ac19
DragonFly)
Packit Service 95ac19
	;;
Packit Service 95ac19
FreeBSD)
Packit Service 95ac19
	;;
Packit Service 95ac19
FreeMiNT)
Packit Service 95ac19
	oswarn="; it has minor issues"
Packit Service 95ac19
	add_cppflags -D_GNU_SOURCE
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
GNU)
Packit Service 95ac19
	case $CC in
Packit Service 95ac19
	*tendracc*) ;;
Packit Service 95ac19
	*) add_cppflags -D_GNU_SOURCE ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	add_cppflags -DSETUID_CAN_FAIL_WITH_EAGAIN
Packit Service 95ac19
	# define MKSH__NO_PATH_MAX to use Hurd-only functions
Packit Service 95ac19
	add_cppflags -DMKSH__NO_PATH_MAX
Packit Service 95ac19
	;;
Packit Service 95ac19
GNU/kFreeBSD)
Packit Service 95ac19
	case $CC in
Packit Service 95ac19
	*tendracc*) ;;
Packit Service 95ac19
	*) add_cppflags -D_GNU_SOURCE ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	add_cppflags -DSETUID_CAN_FAIL_WITH_EAGAIN
Packit Service 95ac19
	;;
Packit Service 95ac19
Haiku)
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=0
Packit Service 95ac19
	;;
Packit Service 95ac19
Harvey)
Packit Service 95ac19
	add_cppflags -D_POSIX_SOURCE
Packit Service 95ac19
	add_cppflags -D_LIMITS_EXTENSION
Packit Service 95ac19
	add_cppflags -D_BSD_EXTENSION
Packit Service 95ac19
	add_cppflags -D_SUSV2_SOURCE
Packit Service 95ac19
	add_cppflags -D_GNU_SOURCE
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=0
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SYMLINK
Packit Service 95ac19
	check_categories="$check_categories nosymlink"
Packit Service 95ac19
	add_cppflags -DMKSH_NO_CMDLINE_EDITING
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SETEUGID
Packit Service 95ac19
	oswarn=' and will currently not work'
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	add_cppflags -DMKSH_NOPROSPECTOFWORK
Packit Service 95ac19
	# these taken from Harvey-OS github and need re-checking
Packit Service 95ac19
	add_cppflags -D_setjmp=setjmp -D_longjmp=longjmp
Packit Service 95ac19
	: "${HAVE_CAN_NO_EH_FRAME=0}"
Packit Service 95ac19
	: "${HAVE_CAN_FNOSTRICTALIASING=0}"
Packit Service 95ac19
	: "${HAVE_CAN_FSTACKPROTECTORSTRONG=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
HP-UX)
Packit Service 95ac19
	;;
Packit Service 95ac19
Interix)
Packit Service 95ac19
	ccpc='-X '
Packit Service 95ac19
	ccpl='-Y '
Packit Service 95ac19
	add_cppflags -D_ALL_SOURCE
Packit Service 95ac19
	: "${LIBS=-lcrypt}"
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
IRIX*)
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
Jehanne)
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=0
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SYMLINK
Packit Service 95ac19
	check_categories="$check_categories nosymlink"
Packit Service 95ac19
	add_cppflags -DMKSH_NO_CMDLINE_EDITING
Packit Service 95ac19
	add_cppflags -DMKSH_DISABLE_REVOKE_WARNING
Packit Service 95ac19
	add_cppflags '-D_PATH_DEFPATH=\"/cmd\"'
Packit Service 95ac19
	add_cppflags '-DMKSH_DEFAULT_EXECSHELL=\"/cmd/mksh\"'
Packit Service 95ac19
	add_cppflags '-DMKSH_DEFAULT_PROFILEDIR=\"/cfg/mksh\"'
Packit Service 95ac19
	add_cppflags '-DMKSH_ENVDIR=\"/env\"'
Packit Service 95ac19
	SRCS="$SRCS jehanne.c"
Packit Service 95ac19
	;;
Packit Service 95ac19
Linux)
Packit Service 95ac19
	case $CC in
Packit Service 95ac19
	*tendracc*) ;;
Packit Service 95ac19
	*) add_cppflags -D_GNU_SOURCE ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	add_cppflags -DSETUID_CAN_FAIL_WITH_EAGAIN
Packit Service 95ac19
	: "${HAVE_REVOKE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
LynxOS)
Packit Service 95ac19
	oswarn="; it has minor issues"
Packit Service 95ac19
	;;
Packit Service 95ac19
MidnightBSD)
Packit Service 95ac19
	;;
Packit Service 95ac19
Minix-vmd)
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SETEUGID
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	add_cppflags -D_MINIX_SOURCE
Packit Service 95ac19
	oldish_ed=no-stderr-ed		# no /bin/ed, maybe see below
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
Minix3)
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	add_cppflags -DMKSH_NO_LIMITS
Packit Service 95ac19
	add_cppflags -D_POSIX_SOURCE -D_POSIX_1_SOURCE=2 -D_MINIX
Packit Service 95ac19
	oldish_ed=no-stderr-ed		# /usr/bin/ed(!) is broken
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
MirBSD)
Packit Service 95ac19
	;;
Packit Service 95ac19
MSYS_*)
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8=0
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	# almost same as CYGWIN* (from RT|Chatzilla)
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	# broken on this OE (from ir0nh34d)
Packit Service 95ac19
	: "${HAVE_STDINT_H=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
NetBSD)
Packit Service 95ac19
	;;
Packit Service 95ac19
NEXTSTEP)
Packit Service 95ac19
	add_cppflags -D_NEXT_SOURCE
Packit Service 95ac19
	add_cppflags -D_POSIX_SOURCE
Packit Service 95ac19
	: "${AWK=gawk}"
Packit Service 95ac19
	: "${CC=cc -posix}"
Packit Service 95ac19
	add_cppflags -DMKSH_NO_SIGSETJMP
Packit Service 95ac19
	# NeXTstep cannot get a controlling tty
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	case $TARGET_OSREV in
Packit Service 95ac19
	4.2*)
Packit Service 95ac19
		# OpenStep 4.2 is broken by default
Packit Service 95ac19
		oswarn="; it needs libposix.a"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	;;
Packit Service 95ac19
Ninix3)
Packit Service 95ac19
	# similar to Minix3
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	add_cppflags -DMKSH_NO_LIMITS
Packit Service 95ac19
	# but no idea what else could be needed
Packit Service 95ac19
	oswarn="; it has unknown issues"
Packit Service 95ac19
	;;
Packit Service 95ac19
OpenBSD)
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
OS/2)
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8=0
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_TERMIOS_H=0
Packit Service 95ac19
	HAVE_MKNOD=0	# setmode() incompatible
Packit Service 95ac19
	oswarn="; it is being ported"
Packit Service 95ac19
	check_categories="$check_categories nosymlink"
Packit Service 95ac19
	: "${CC=gcc}"
Packit Service 95ac19
	: "${SIZE=: size}"
Packit Service 95ac19
	SRCS="$SRCS os2.c"
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	add_cppflags -DMKSH_NOPROSPECTOFWORK
Packit Service 95ac19
	add_cppflags -DMKSH_NO_LIMITS
Packit Service 95ac19
	add_cppflags -DMKSH_DOSPATH
Packit Service 95ac19
	if test $textmode = 0; then
Packit Service 95ac19
		x='dis'
Packit Service 95ac19
		y='standard OS/2 tools'
Packit Service 95ac19
	else
Packit Service 95ac19
		x='en'
Packit Service 95ac19
		y='standard Unix mksh and other tools'
Packit Service 95ac19
	fi
Packit Service 95ac19
	echo >&2 "
Packit Service 95ac19
OS/2 Note: mksh can be built with or without 'textmode'.
Packit Service 95ac19
Without 'textmode' it will behave like a standard Unix utility,
Packit Service 95ac19
compatible to mksh on all other platforms, using only ASCII LF
Packit Service 95ac19
(0x0A) as line ending character. This is supported by the mksh
Packit Service 95ac19
upstream developer.
Packit Service 95ac19
With 'textmode', mksh will be modified to behave more like other
Packit Service 95ac19
OS/2 utilities, supporting ASCII CR+LF (0x0D 0x0A) as line ending
Packit Service 95ac19
at the cost of deviation from standard mksh. This is supported by
Packit Service 95ac19
the mksh-os2 porter.
Packit Service 95ac19
Packit Service 95ac19
] You are currently compiling with textmode ${x}abled, introducing
Packit Service 95ac19
] incompatibilities with $y.
Packit Service 95ac19
"
Packit Service 95ac19
	;;
Packit Service 95ac19
OS/390)
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8=0
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	: "${CC=xlc}"
Packit Service 95ac19
	: "${SIZE=: size}"
Packit Service 95ac19
	add_cppflags -DMKSH_FOR_Z_OS
Packit Service 95ac19
	add_cppflags -D_ALL_SOURCE
Packit Service 95ac19
	oswarn='; EBCDIC support is incomplete'
Packit Service 95ac19
	;;
Packit Service 95ac19
OSF1)
Packit Service 95ac19
	HAVE_SIG_T=0	# incompatible
Packit Service 95ac19
	add_cppflags -D_OSF_SOURCE
Packit Service 95ac19
	add_cppflags -D_POSIX_C_SOURCE=200112L
Packit Service 95ac19
	add_cppflags -D_XOPEN_SOURCE=600
Packit Service 95ac19
	add_cppflags -D_XOPEN_SOURCE_EXTENDED
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
Plan9)
Packit Service 95ac19
	add_cppflags -D_POSIX_SOURCE
Packit Service 95ac19
	add_cppflags -D_LIMITS_EXTENSION
Packit Service 95ac19
	add_cppflags -D_BSD_EXTENSION
Packit Service 95ac19
	add_cppflags -D_SUSV2_SOURCE
Packit Service 95ac19
	add_cppflags -DMKSH_ASSUME_UTF8
Packit Service 95ac19
	HAVE_ISSET_MKSH_ASSUME_UTF8=1
Packit Service 95ac19
	HAVE_ISOFF_MKSH_ASSUME_UTF8=0
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SYMLINK
Packit Service 95ac19
	check_categories="$check_categories nosymlink"
Packit Service 95ac19
	add_cppflags -DMKSH_NO_CMDLINE_EDITING
Packit Service 95ac19
	add_cppflags -DMKSH__NO_SETEUGID
Packit Service 95ac19
	oswarn=' and will currently not work'
Packit Service 95ac19
	add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
	# this is for detecting kencc
Packit Service 95ac19
	add_cppflags -DMKSH_MAYBE_KENCC
Packit Service 95ac19
	;;
Packit Service 95ac19
PW32*)
Packit Service 95ac19
	HAVE_SIG_T=0	# incompatible
Packit Service 95ac19
	oswarn=' and will currently not work'
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
QNX)
Packit Service 95ac19
	add_cppflags -D__NO_EXT_QNX
Packit Service 95ac19
	add_cppflags -D__EXT_UNIX_MISC
Packit Service 95ac19
	case $TARGET_OSREV in
Packit Service 95ac19
	[012345].*|6.[0123].*|6.4.[01])
Packit Service 95ac19
		oldish_ed=no-stderr-ed		# oldish /bin/ed is broken
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
SCO_SV)
Packit Service 95ac19
	case $TARGET_OSREV in
Packit Service 95ac19
	3.2*)
Packit Service 95ac19
		# SCO OpenServer 5
Packit Service 95ac19
		add_cppflags -DMKSH_UNEMPLOYED
Packit Service 95ac19
		;;
Packit Service 95ac19
	5*)
Packit Service 95ac19
		# SCO OpenServer 6
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		oswarn='; this is an unknown version of'
Packit Service 95ac19
		oswarn="$oswarn$nl$TARGET_OS ${TARGET_OSREV}, please tell me what to do"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	: "${HAVE_SYS_SIGLIST=0}${HAVE__SYS_SIGLIST=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
skyos)
Packit Service 95ac19
	oswarn="; it has minor issues"
Packit Service 95ac19
	;;
Packit Service 95ac19
SunOS)
Packit Service 95ac19
	add_cppflags -D_BSD_SOURCE
Packit Service 95ac19
	add_cppflags -D__EXTENSIONS__
Packit Service 95ac19
	;;
Packit Service 95ac19
syllable)
Packit Service 95ac19
	add_cppflags -D_GNU_SOURCE
Packit Service 95ac19
	add_cppflags -DMKSH_NO_SIGSUSPEND
Packit Service 95ac19
	oswarn=' and will currently not work'
Packit Service 95ac19
	;;
Packit Service 95ac19
ULTRIX)
Packit Service 95ac19
	: "${CC=cc -YPOSIX}"
Packit Service 95ac19
	add_cppflags -DMKSH_TYPEDEF_SSIZE_T=int
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
UnixWare|UNIX_SV)
Packit Service 95ac19
	# SCO UnixWare
Packit Service 95ac19
	: "${HAVE_SYS_SIGLIST=0}${HAVE__SYS_SIGLIST=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
UWIN*)
Packit Service 95ac19
	ccpc='-Yc,'
Packit Service 95ac19
	ccpl='-Yl,'
Packit Service 95ac19
	tsts=" 3<>/dev/tty"
Packit Service 95ac19
	oswarn="; it will compile, but the target"
Packit Service 95ac19
	oswarn="$oswarn${nl}platform itself is very flakey/unreliable"
Packit Service 95ac19
	: "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
	;;
Packit Service 95ac19
_svr4)
Packit Service 95ac19
	# generic target for SVR4 Unix with uname -s = uname -n
Packit Service 95ac19
	# this duplicates the * target below
Packit Service 95ac19
	oswarn='; it may or may not work'
Packit Service 95ac19
	test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r`
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	oswarn='; it may or may not work'
Packit Service 95ac19
	test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r`
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
Packit Service 95ac19
: "${HAVE_MKNOD=0}"
Packit Service 95ac19
Packit Service 95ac19
: "${AWK=awk}${CC=cc}${NROFF=nroff}${SIZE=size}"
Packit Service 95ac19
test 0 = $r && echo | $NROFF -v 2>&1 | grep GNU >/dev/null 2>&1 && \
Packit Service 95ac19
    echo | $NROFF -c >/dev/null 2>&1 && NROFF="$NROFF -c"
Packit Service 95ac19
Packit Service 95ac19
# this aids me in tracing FTBFSen without access to the buildd
Packit Service 95ac19
$e "Hi from$ao $bi$srcversion$ao on:"
Packit Service 95ac19
case $TARGET_OS in
Packit Service 95ac19
AIX)
Packit Service 95ac19
	vv '|' "oslevel >&2"
Packit Service 95ac19
	vv '|' "uname -a >&2"
Packit Service 95ac19
	;;
Packit Service 95ac19
Darwin)
Packit Service 95ac19
	vv '|' "hwprefs machine_type os_type os_class >&2"
Packit Service 95ac19
	vv '|' "sw_vers >&2"
Packit Service 95ac19
	vv '|' "system_profiler SPSoftwareDataType SPHardwareDataType >&2"
Packit Service 95ac19
	vv '|' "/bin/sh --version >&2"
Packit Service 95ac19
	vv '|' "xcodebuild -version >&2"
Packit Service 95ac19
	vv '|' "uname -a >&2"
Packit Service 95ac19
	vv '|' "sysctl kern.version hw.machine hw.model hw.memsize hw.availcpu hw.cpufrequency hw.byteorder hw.cpu64bit_capable >&2"
Packit Service 95ac19
	;;
Packit Service 95ac19
IRIX*)
Packit Service 95ac19
	vv '|' "uname -a >&2"
Packit Service 95ac19
	vv '|' "hinv -v >&2"
Packit Service 95ac19
	;;
Packit Service 95ac19
OSF1)
Packit Service 95ac19
	vv '|' "uname -a >&2"
Packit Service 95ac19
	vv '|' "/usr/sbin/sizer -v >&2"
Packit Service 95ac19
	;;
Packit Service 95ac19
SCO_SV|UnixWare|UNIX_SV)
Packit Service 95ac19
	vv '|' "uname -a >&2"
Packit Service 95ac19
	vv '|' "uname -X >&2"
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	vv '|' "uname -a >&2"
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
test -z "$oswarn" || echo >&2 "
Packit Service 95ac19
Warning: mksh has not yet been ported to or tested on your
Packit Service 95ac19
operating system '$TARGET_OS'$oswarn. If you can provide
Packit Service 95ac19
a shell account to the developer, this may improve; please
Packit Service 95ac19
drop us a success or failure notice or even send in diffs.
Packit Service 95ac19
"
Packit Service 95ac19
$e "$bi$me: Building the MirBSD Korn Shell$ao $ui$dstversion$ao on $TARGET_OS ${TARGET_OSREV}..."
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Start of mirtoconf checks
Packit Service 95ac19
#
Packit Service 95ac19
$e $bi$me: Scanning for functions... please ignore any errors.$ao
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Compiler: which one?
Packit Service 95ac19
#
Packit Service 95ac19
# notes:
Packit Service 95ac19
# - ICC defines __GNUC__ too
Packit Service 95ac19
# - GCC defines __hpux too
Packit Service 95ac19
# - LLVM+clang defines __GNUC__ too
Packit Service 95ac19
# - nwcc defines __GNUC__ too
Packit Service 95ac19
CPP="$CC -E"
Packit Service 95ac19
$e ... which compiler type seems to be used
Packit Service 95ac19
cat >conftest.c <<'EOF'
Packit Service 95ac19
const char *
Packit Service 95ac19
#if defined(__ICC) || defined(__INTEL_COMPILER)
Packit Service 95ac19
ct="icc"
Packit Service 95ac19
#elif defined(__xlC__) || defined(__IBMC__)
Packit Service 95ac19
ct="xlc"
Packit Service 95ac19
#elif defined(__SUNPRO_C)
Packit Service 95ac19
ct="sunpro"
Packit Service 95ac19
#elif defined(__ACK__)
Packit Service 95ac19
ct="ack"
Packit Service 95ac19
#elif defined(__BORLANDC__)
Packit Service 95ac19
ct="bcc"
Packit Service 95ac19
#elif defined(__WATCOMC__)
Packit Service 95ac19
ct="watcom"
Packit Service 95ac19
#elif defined(__MWERKS__)
Packit Service 95ac19
ct="metrowerks"
Packit Service 95ac19
#elif defined(__HP_cc)
Packit Service 95ac19
ct="hpcc"
Packit Service 95ac19
#elif defined(__DECC) || (defined(__osf__) && !defined(__GNUC__))
Packit Service 95ac19
ct="dec"
Packit Service 95ac19
#elif defined(__PGI)
Packit Service 95ac19
ct="pgi"
Packit Service 95ac19
#elif defined(__DMC__)
Packit Service 95ac19
ct="dmc"
Packit Service 95ac19
#elif defined(_MSC_VER)
Packit Service 95ac19
ct="msc"
Packit Service 95ac19
#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
Packit Service 95ac19
ct="adsp"
Packit Service 95ac19
#elif defined(__IAR_SYSTEMS_ICC__)
Packit Service 95ac19
ct="iar"
Packit Service 95ac19
#elif defined(SDCC)
Packit Service 95ac19
ct="sdcc"
Packit Service 95ac19
#elif defined(__PCC__)
Packit Service 95ac19
ct="pcc"
Packit Service 95ac19
#elif defined(__TenDRA__)
Packit Service 95ac19
ct="tendra"
Packit Service 95ac19
#elif defined(__TINYC__)
Packit Service 95ac19
ct="tcc"
Packit Service 95ac19
#elif defined(__llvm__) && defined(__clang__)
Packit Service 95ac19
ct="clang"
Packit Service 95ac19
#elif defined(__NWCC__)
Packit Service 95ac19
ct="nwcc"
Packit Service 95ac19
#elif defined(__GNUC__)
Packit Service 95ac19
ct="gcc"
Packit Service 95ac19
#elif defined(_COMPILER_VERSION)
Packit Service 95ac19
ct="mipspro"
Packit Service 95ac19
#elif defined(__sgi)
Packit Service 95ac19
ct="mipspro"
Packit Service 95ac19
#elif defined(__hpux) || defined(__hpua)
Packit Service 95ac19
ct="hpcc"
Packit Service 95ac19
#elif defined(__ultrix)
Packit Service 95ac19
ct="ucode"
Packit Service 95ac19
#elif defined(__USLC__)
Packit Service 95ac19
ct="uslc"
Packit Service 95ac19
#elif defined(__LCC__)
Packit Service 95ac19
ct="lcc"
Packit Service 95ac19
#elif defined(MKSH_MAYBE_KENCC)
Packit Service 95ac19
/* and none of the above matches */
Packit Service 95ac19
ct="kencc"
Packit Service 95ac19
#else
Packit Service 95ac19
ct="unknown"
Packit Service 95ac19
#endif
Packit Service 95ac19
;
Packit Service 95ac19
const char *
Packit Service 95ac19
#if defined(__KLIBC__) && !defined(__OS2__)
Packit Service 95ac19
et="klibc"
Packit Service 95ac19
#else
Packit Service 95ac19
et="unknown"
Packit Service 95ac19
#endif
Packit Service 95ac19
;
Packit Service 95ac19
EOF
Packit Service 95ac19
ct=untested
Packit Service 95ac19
et=untested
Packit Service 95ac19
vv ']' "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c | \
Packit Service 95ac19
    sed -n '/^ *[ce]t *= */s/^ *\([ce]t\) *= */\1=/p' | tr -d \\\\015 >x"
Packit Service 95ac19
sed 's/^/[ /' x
Packit Service 95ac19
eval `cat x`
Packit Service 95ac19
rmf x vv.out
Packit Service 95ac19
cat >conftest.c <<'EOF'
Packit Service 95ac19
#include <unistd.h>
Packit Service 95ac19
int main(void) { return (isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
case $ct in
Packit Service 95ac19
ack)
Packit Service 95ac19
	# work around "the famous ACK const bug"
Packit Service 95ac19
	CPPFLAGS="-Dconst= $CPPFLAGS"
Packit Service 95ac19
	;;
Packit Service 95ac19
adsp)
Packit Service 95ac19
	echo >&2 'Warning: Analog Devices C++ compiler for Blackfin, TigerSHARC
Packit Service 95ac19
    and SHARC (21000) DSPs detected. This compiler has not yet
Packit Service 95ac19
    been tested for compatibility with mksh. Continue at your
Packit Service 95ac19
    own risk, please report success/failure to the developers.'
Packit Service 95ac19
	;;
Packit Service 95ac19
bcc)
Packit Service 95ac19
	echo >&2 "Warning: Borland C++ Builder detected. This compiler might
Packit Service 95ac19
    produce broken executables. Continue at your own risk,
Packit Service 95ac19
    please report success/failure to the developers."
Packit Service 95ac19
	;;
Packit Service 95ac19
clang)
Packit Service 95ac19
	# does not work with current "ccc" compiler driver
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version"
Packit Service 95ac19
	# one of these two works, for now
Packit Service 95ac19
	vv '|' "${CLANG-clang} -version"
Packit Service 95ac19
	vv '|' "${CLANG-clang} --version"
Packit Service 95ac19
	# ensure compiler and linker are in sync unless overridden
Packit Service 95ac19
	case $CCC_CC:$CCC_LD in
Packit Service 95ac19
	:*)	;;
Packit Service 95ac19
	*:)	CCC_LD=$CCC_CC; export CCC_LD ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	: "${HAVE_STRING_POOLING=i1}"
Packit Service 95ac19
	;;
Packit Service 95ac19
dec)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V"
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -Wl,-V conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
dmc)
Packit Service 95ac19
	echo >&2 "Warning: Digital Mars Compiler detected. When running under"
Packit Service 95ac19
	echo >&2 "    UWIN, mksh tends to be unstable due to the limitations"
Packit Service 95ac19
	echo >&2 "    of this platform. Continue at your own risk,"
Packit Service 95ac19
	echo >&2 "    please report success/failure to the developers."
Packit Service 95ac19
	;;
Packit Service 95ac19
gcc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
Packit Service 95ac19
	vv '|' 'echo `$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS \
Packit Service 95ac19
	    -dumpmachine` gcc`$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN \
Packit Service 95ac19
	    $LIBS -dumpversion`'
Packit Service 95ac19
	: "${HAVE_STRING_POOLING=i2}"
Packit Service 95ac19
	;;
Packit Service 95ac19
hpcc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
iar)
Packit Service 95ac19
	echo >&2 'Warning: IAR Systems (http://www.iar.com) compiler for embedded
Packit Service 95ac19
    systems detected. This unsupported compiler has not yet
Packit Service 95ac19
    been tested for compatibility with mksh. Continue at your
Packit Service 95ac19
    own risk, please report success/failure to the developers.'
Packit Service 95ac19
	;;
Packit Service 95ac19
icc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V"
Packit Service 95ac19
	;;
Packit Service 95ac19
kencc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
lcc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
Packit Service 95ac19
	add_cppflags -D__inline__=__inline
Packit Service 95ac19
	;;
Packit Service 95ac19
metrowerks)
Packit Service 95ac19
	echo >&2 'Warning: Metrowerks C compiler detected. This has not yet
Packit Service 95ac19
    been tested for compatibility with mksh. Continue at your
Packit Service 95ac19
    own risk, please report success/failure to the developers.'
Packit Service 95ac19
	;;
Packit Service 95ac19
mipspro)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version"
Packit Service 95ac19
	;;
Packit Service 95ac19
msc)
Packit Service 95ac19
	ccpr=		# errorlevels are not reliable
Packit Service 95ac19
	case $TARGET_OS in
Packit Service 95ac19
	Interix)
Packit Service 95ac19
		if [[ -n $C89_COMPILER ]]; then
Packit Service 95ac19
			C89_COMPILER=`ntpath2posix -c "$C89_COMPILER"`
Packit Service 95ac19
		else
Packit Service 95ac19
			C89_COMPILER=CL.EXE
Packit Service 95ac19
		fi
Packit Service 95ac19
		if [[ -n $C89_LINKER ]]; then
Packit Service 95ac19
			C89_LINKER=`ntpath2posix -c "$C89_LINKER"`
Packit Service 95ac19
		else
Packit Service 95ac19
			C89_LINKER=LINK.EXE
Packit Service 95ac19
		fi
Packit Service 95ac19
		vv '|' "$C89_COMPILER /HELP >&2"
Packit Service 95ac19
		vv '|' "$C89_LINKER /LINK >&2"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	;;
Packit Service 95ac19
nwcc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version"
Packit Service 95ac19
	;;
Packit Service 95ac19
pcc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -v"
Packit Service 95ac19
	;;
Packit Service 95ac19
pgi)
Packit Service 95ac19
	echo >&2 'Warning: PGI detected. This unknown compiler has not yet
Packit Service 95ac19
    been tested for compatibility with mksh. Continue at your
Packit Service 95ac19
    own risk, please report success/failure to the developers.'
Packit Service 95ac19
	;;
Packit Service 95ac19
sdcc)
Packit Service 95ac19
	echo >&2 'Warning: sdcc (http://sdcc.sourceforge.net), the small devices
Packit Service 95ac19
    C compiler for embedded systems detected. This has not yet
Packit Service 95ac19
    been tested for compatibility with mksh. Continue at your
Packit Service 95ac19
    own risk, please report success/failure to the developers.'
Packit Service 95ac19
	;;
Packit Service 95ac19
sunpro)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
tcc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -v"
Packit Service 95ac19
	;;
Packit Service 95ac19
tendra)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V 2>&1 | \
Packit Service 95ac19
	    grep -F -i -e version -e release"
Packit Service 95ac19
	;;
Packit Service 95ac19
ucode)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V"
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -Wl,-V conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
uslc)
Packit Service 95ac19
	case $TARGET_OS:$TARGET_OSREV in
Packit Service 95ac19
	SCO_SV:3.2*)
Packit Service 95ac19
		# SCO OpenServer 5
Packit Service 95ac19
		CFLAGS="$CFLAGS -g"
Packit Service 95ac19
		: "${HAVE_CAN_OTWO=0}${HAVE_CAN_OPTIMISE=0}"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
watcom)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
xlc)
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -qversion"
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -qversion=verbose"
Packit Service 95ac19
	vv '|' "ld -V"
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	test x"$ct" = x"untested" && $e "!!! detecting preprocessor failed"
Packit Service 95ac19
	ct=unknown
Packit Service 95ac19
	vv "$CC --version"
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
Packit Service 95ac19
	vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
case $cm in
Packit Service 95ac19
dragonegg|llvm)
Packit Service 95ac19
	vv '|' "llc -version"
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
etd=" on $et"
Packit Service 95ac19
case $et in
Packit Service 95ac19
klibc)
Packit Service 95ac19
	add_cppflags -DMKSH_NO_LIMITS
Packit Service 95ac19
	;;
Packit Service 95ac19
unknown)
Packit Service 95ac19
	# nothing special detected, don’t worry
Packit Service 95ac19
	etd=
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	# huh?
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
$e "$bi==> which compiler type seems to be used...$ao $ui$ct$etd$ao"
Packit Service 95ac19
rmf conftest.c conftest.o conftest a.out* a.exe* conftest.exe* vv.out
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Compiler: works as-is, with -Wno-error and -Werror
Packit Service 95ac19
#
Packit Service 95ac19
save_NOWARN=$NOWARN
Packit Service 95ac19
NOWARN=
Packit Service 95ac19
DOWARN=
Packit Service 95ac19
ac_flags 0 compiler_works '' 'if the compiler works'
Packit Service 95ac19
test 1 = $HAVE_CAN_COMPILER_WORKS || exit 1
Packit Service 95ac19
HAVE_COMPILER_KNOWN=0
Packit Service 95ac19
test $ct = unknown || HAVE_COMPILER_KNOWN=1
Packit Service 95ac19
if ac_ifcpp 'if 0' compiler_fails '' \
Packit Service 95ac19
    'if the compiler does not fail correctly'; then
Packit Service 95ac19
	save_CFLAGS=$CFLAGS
Packit Service 95ac19
	: "${HAVE_CAN_DELEXE=x}"
Packit Service 95ac19
	case $ct in
Packit Service 95ac19
	dec)
Packit Service 95ac19
		CFLAGS="$CFLAGS ${ccpl}-non_shared"
Packit Service 95ac19
		ac_testn can_delexe compiler_fails 0 'for the -non_shared linker option' <<-EOF
Packit Service 95ac19
			#include <unistd.h>
Packit Service 95ac19
			int main(void) { return (isatty(0)); }
Packit Service 95ac19
		EOF
Packit Service 95ac19
		;;
Packit Service 95ac19
	dmc)
Packit Service 95ac19
		CFLAGS="$CFLAGS ${ccpl}/DELEXECUTABLE"
Packit Service 95ac19
		ac_testn can_delexe compiler_fails 0 'for the /DELEXECUTABLE linker option' <<-EOF
Packit Service 95ac19
			#include <unistd.h>
Packit Service 95ac19
			int main(void) { return (isatty(0)); }
Packit Service 95ac19
		EOF
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		exit 1
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	test 1 = $HAVE_CAN_DELEXE || CFLAGS=$save_CFLAGS
Packit Service 95ac19
	ac_testn compiler_still_fails '' 'if the compiler still does not fail correctly' <<-EOF
Packit Service 95ac19
	EOF
Packit Service 95ac19
	test 1 = $HAVE_COMPILER_STILL_FAILS && exit 1
Packit Service 95ac19
fi
Packit Service 95ac19
if ac_ifcpp 'ifdef __TINYC__' couldbe_tcc '!' compiler_known 0 \
Packit Service 95ac19
    'if this could be tcc'; then
Packit Service 95ac19
	ct=tcc
Packit Service 95ac19
	CPP='cpp -D__TINYC__'
Packit Service 95ac19
	HAVE_COMPILER_KNOWN=1
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
case $ct in
Packit Service 95ac19
bcc)
Packit Service 95ac19
	save_NOWARN="${ccpc}-w"
Packit Service 95ac19
	DOWARN="${ccpc}-w!"
Packit Service 95ac19
	;;
Packit Service 95ac19
dec)
Packit Service 95ac19
	# -msg_* flags not used yet, or is -w2 correct?
Packit Service 95ac19
	;;
Packit Service 95ac19
dmc)
Packit Service 95ac19
	save_NOWARN="${ccpc}-w"
Packit Service 95ac19
	DOWARN="${ccpc}-wx"
Packit Service 95ac19
	;;
Packit Service 95ac19
hpcc)
Packit Service 95ac19
	save_NOWARN=
Packit Service 95ac19
	DOWARN=+We
Packit Service 95ac19
	;;
Packit Service 95ac19
kencc)
Packit Service 95ac19
	save_NOWARN=
Packit Service 95ac19
	DOWARN=
Packit Service 95ac19
	;;
Packit Service 95ac19
mipspro)
Packit Service 95ac19
	save_NOWARN=
Packit Service 95ac19
	DOWARN="-diag_error 1-10000"
Packit Service 95ac19
	;;
Packit Service 95ac19
msc)
Packit Service 95ac19
	save_NOWARN="${ccpc}/w"
Packit Service 95ac19
	DOWARN="${ccpc}/WX"
Packit Service 95ac19
	;;
Packit Service 95ac19
sunpro)
Packit Service 95ac19
	test x"$save_NOWARN" = x"" && save_NOWARN='-errwarn=%none'
Packit Service 95ac19
	ac_flags 0 errwarnnone "$save_NOWARN"
Packit Service 95ac19
	test 1 = $HAVE_CAN_ERRWARNNONE || save_NOWARN=
Packit Service 95ac19
	ac_flags 0 errwarnall "-errwarn=%all"
Packit Service 95ac19
	test 1 = $HAVE_CAN_ERRWARNALL && DOWARN="-errwarn=%all"
Packit Service 95ac19
	;;
Packit Service 95ac19
tendra)
Packit Service 95ac19
	save_NOWARN=-w
Packit Service 95ac19
	;;
Packit Service 95ac19
ucode)
Packit Service 95ac19
	save_NOWARN=
Packit Service 95ac19
	DOWARN=-w2
Packit Service 95ac19
	;;
Packit Service 95ac19
watcom)
Packit Service 95ac19
	save_NOWARN=
Packit Service 95ac19
	DOWARN=-Wc,-we
Packit Service 95ac19
	;;
Packit Service 95ac19
xlc)
Packit Service 95ac19
	case $TARGET_OS in
Packit Service 95ac19
	OS/390)
Packit Service 95ac19
		save_NOWARN=-qflag=e
Packit Service 95ac19
		DOWARN=-qflag=i
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		save_NOWARN=-qflag=i:e
Packit Service 95ac19
		DOWARN=-qflag=i:i
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	test x"$save_NOWARN" = x"" && save_NOWARN=-Wno-error
Packit Service 95ac19
	ac_flags 0 wnoerror "$save_NOWARN"
Packit Service 95ac19
	test 1 = $HAVE_CAN_WNOERROR || save_NOWARN=
Packit Service 95ac19
	ac_flags 0 werror -Werror
Packit Service 95ac19
	test 1 = $HAVE_CAN_WERROR && DOWARN=-Werror
Packit Service 95ac19
	test $ct = icc && DOWARN="$DOWARN -wd1419"
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
NOWARN=$save_NOWARN
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Compiler: extra flags (-O2 -f* -W* etc.)
Packit Service 95ac19
#
Packit Service 95ac19
i=`echo :"$orig_CFLAGS" | sed 's/^://' | tr -c -d $alll$allu$alln`
Packit Service 95ac19
# optimisation: only if orig_CFLAGS is empty
Packit Service 95ac19
test x"$i" = x"" && case $ct in
Packit Service 95ac19
hpcc)
Packit Service 95ac19
	phase=u
Packit Service 95ac19
	ac_flags 1 otwo +O2
Packit Service 95ac19
	phase=x
Packit Service 95ac19
	;;
Packit Service 95ac19
kencc|tcc|tendra)
Packit Service 95ac19
	# no special optimisation
Packit Service 95ac19
	;;
Packit Service 95ac19
sunpro)
Packit Service 95ac19
	cat >x <<-'EOF'
Packit Service 95ac19
		#include <unistd.h>
Packit Service 95ac19
		int main(void) { return (isatty(0)); }
Packit Service 95ac19
		#define __IDSTRING_CONCAT(l,p)	__LINTED__ ## l ## _ ## p
Packit Service 95ac19
		#define __IDSTRING_EXPAND(l,p)	__IDSTRING_CONCAT(l,p)
Packit Service 95ac19
		#define pad			void __IDSTRING_EXPAND(__LINE__,x)(void) { }
Packit Service 95ac19
	EOF
Packit Service 95ac19
	yes pad | head -n 256 >>x
Packit Service 95ac19
	ac_flags - 1 otwo -xO2 
Packit Service 95ac19
	rmf x
Packit Service 95ac19
	;;
Packit Service 95ac19
xlc)
Packit Service 95ac19
	ac_flags 1 othree "-O3 -qstrict"
Packit Service 95ac19
	test 1 = $HAVE_CAN_OTHREE || ac_flags 1 otwo -O2
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	ac_flags 1 otwo -O2
Packit Service 95ac19
	test 1 = $HAVE_CAN_OTWO || ac_flags 1 optimise -O
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
# other flags: just add them if they are supported
Packit Service 95ac19
i=0
Packit Service 95ac19
case $ct in
Packit Service 95ac19
bcc)
Packit Service 95ac19
	ac_flags 1 strpool "${ccpc}-d" 'if string pooling can be enabled'
Packit Service 95ac19
	;;
Packit Service 95ac19
clang)
Packit Service 95ac19
	i=1
Packit Service 95ac19
	;;
Packit Service 95ac19
dec)
Packit Service 95ac19
	ac_flags 0 verb -verbose
Packit Service 95ac19
	ac_flags 1 rodata -readonly_strings
Packit Service 95ac19
	;;
Packit Service 95ac19
dmc)
Packit Service 95ac19
	ac_flags 1 decl "${ccpc}-r" 'for strict prototype checks'
Packit Service 95ac19
	ac_flags 1 schk "${ccpc}-s" 'for stack overflow checking'
Packit Service 95ac19
	;;
Packit Service 95ac19
gcc)
Packit Service 95ac19
	# The following tests run with -Werror (gcc only) if possible
Packit Service 95ac19
	NOWARN=$DOWARN; phase=u
Packit Service 95ac19
	ac_flags 1 wnodeprecateddecls -Wno-deprecated-declarations
Packit Service 95ac19
	# mksh is not written in CFrustFrust!
Packit Service 95ac19
	ac_flags 1 no_eh_frame -fno-asynchronous-unwind-tables
Packit Service 95ac19
	ac_flags 1 fnostrictaliasing -fno-strict-aliasing
Packit Service 95ac19
	ac_flags 1 fstackprotectorstrong -fstack-protector-strong
Packit Service 95ac19
	test 1 = $HAVE_CAN_FSTACKPROTECTORSTRONG || \
Packit Service 95ac19
	    ac_flags 1 fstackprotectorall -fstack-protector-all
Packit Service 95ac19
	test $cm = dragonegg && case " $CC $CFLAGS $LDFLAGS " in
Packit Service 95ac19
	*\ -fplugin=*dragonegg*) ;;
Packit Service 95ac19
	*) ac_flags 1 fplugin_dragonegg -fplugin=dragonegg ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	case $cm in
Packit Service 95ac19
	combine)
Packit Service 95ac19
		fv=0
Packit Service 95ac19
		checks='7 8'
Packit Service 95ac19
		;;
Packit Service 95ac19
	lto)
Packit Service 95ac19
		fv=0
Packit Service 95ac19
		checks='1 2 3 4 5 6 7 8'
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		fv=1
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	test $fv = 1 || for what in $checks; do
Packit Service 95ac19
		test $fv = 1 && break
Packit Service 95ac19
		case $what in
Packit Service 95ac19
		1)	t_cflags='-flto=jobserver'
Packit Service 95ac19
			t_ldflags='-fuse-linker-plugin'
Packit Service 95ac19
			t_use=1 t_name=fltojs_lp ;;
Packit Service 95ac19
		2)	t_cflags='-flto=jobserver' t_ldflags=''
Packit Service 95ac19
			t_use=1 t_name=fltojs_nn ;;
Packit Service 95ac19
		3)	t_cflags='-flto=jobserver'
Packit Service 95ac19
			t_ldflags='-fno-use-linker-plugin -fwhole-program'
Packit Service 95ac19
			t_use=1 t_name=fltojs_np ;;
Packit Service 95ac19
		4)	t_cflags='-flto'
Packit Service 95ac19
			t_ldflags='-fuse-linker-plugin'
Packit Service 95ac19
			t_use=1 t_name=fltons_lp ;;
Packit Service 95ac19
		5)	t_cflags='-flto' t_ldflags=''
Packit Service 95ac19
			t_use=1 t_name=fltons_nn ;;
Packit Service 95ac19
		6)	t_cflags='-flto'
Packit Service 95ac19
			t_ldflags='-fno-use-linker-plugin -fwhole-program'
Packit Service 95ac19
			t_use=1 t_name=fltons_np ;;
Packit Service 95ac19
		7)	t_cflags='-fwhole-program --combine' t_ldflags=''
Packit Service 95ac19
			t_use=0 t_name=combine cm=combine ;;
Packit Service 95ac19
		8)	fv=1 cm=normal ;;
Packit Service 95ac19
		esac
Packit Service 95ac19
		test $fv = 1 && break
Packit Service 95ac19
		ac_flags $t_use $t_name "$t_cflags" \
Packit Service 95ac19
		    "if gcc supports $t_cflags $t_ldflags" "$t_ldflags"
Packit Service 95ac19
	done
Packit Service 95ac19
	ac_flags 1 data_abi_align -malign-data=abi
Packit Service 95ac19
	i=1
Packit Service 95ac19
	;;
Packit Service 95ac19
hpcc)
Packit Service 95ac19
	phase=u
Packit Service 95ac19
	# probably not needed
Packit Service 95ac19
	#ac_flags 1 agcc -Agcc 'for support of GCC extensions'
Packit Service 95ac19
	phase=x
Packit Service 95ac19
	;;
Packit Service 95ac19
icc)
Packit Service 95ac19
	ac_flags 1 fnobuiltinsetmode -fno-builtin-setmode
Packit Service 95ac19
	ac_flags 1 fnostrictaliasing -fno-strict-aliasing
Packit Service 95ac19
	ac_flags 1 fstacksecuritycheck -fstack-security-check
Packit Service 95ac19
	i=1
Packit Service 95ac19
	;;
Packit Service 95ac19
mipspro)
Packit Service 95ac19
	ac_flags 1 fullwarn -fullwarn 'for remark output support'
Packit Service 95ac19
	;;
Packit Service 95ac19
msc)
Packit Service 95ac19
	ac_flags 1 strpool "${ccpc}/GF" 'if string pooling can be enabled'
Packit Service 95ac19
	echo 'int main(void) { char test[64] = ""; return (*test); }' >x
Packit Service 95ac19
	ac_flags - 1 stackon "${ccpc}/GZ" 'if stack checks can be enabled' 
Packit Service 95ac19
	ac_flags - 1 stckall "${ccpc}/Ge" 'stack checks for all functions' 
Packit Service 95ac19
	ac_flags - 1 secuchk "${ccpc}/GS" 'for compiler security checks' 
Packit Service 95ac19
	rmf x
Packit Service 95ac19
	ac_flags 1 wall "${ccpc}/Wall" 'to enable all warnings'
Packit Service 95ac19
	ac_flags 1 wp64 "${ccpc}/Wp64" 'to enable 64-bit warnings'
Packit Service 95ac19
	;;
Packit Service 95ac19
nwcc)
Packit Service 95ac19
	#broken# ac_flags 1 ssp -stackprotect
Packit Service 95ac19
	i=1
Packit Service 95ac19
	;;
Packit Service 95ac19
pcc)
Packit Service 95ac19
	ac_flags 1 fstackprotectorall -fstack-protector-all
Packit Service 95ac19
	i=1
Packit Service 95ac19
	;;
Packit Service 95ac19
sunpro)
Packit Service 95ac19
	phase=u
Packit Service 95ac19
	ac_flags 1 v -v
Packit Service 95ac19
	ac_flags 1 ipo -xipo 'for cross-module optimisation'
Packit Service 95ac19
	phase=x
Packit Service 95ac19
	;;
Packit Service 95ac19
tcc)
Packit Service 95ac19
	: #broken# ac_flags 1 boundschk -b
Packit Service 95ac19
	;;
Packit Service 95ac19
tendra)
Packit Service 95ac19
	ac_flags 0 ysystem -Ysystem
Packit Service 95ac19
	test 1 = $HAVE_CAN_YSYSTEM && CPPFLAGS="-Ysystem $CPPFLAGS"
Packit Service 95ac19
	ac_flags 1 extansi -Xa
Packit Service 95ac19
	;;
Packit Service 95ac19
xlc)
Packit Service 95ac19
	case $TARGET_OS in
Packit Service 95ac19
	OS/390)
Packit Service 95ac19
		# On IBM z/OS, the following are warnings by default:
Packit Service 95ac19
		# CCN3296: #include file <foo.h> not found.
Packit Service 95ac19
		# CCN3944: Attribute "__foo__" is not supported and is ignored.
Packit Service 95ac19
		# CCN3963: The attribute "foo" is not a valid variable attribute and is ignored.
Packit Service 95ac19
		ac_flags 1 halton '-qhaltonmsg=CCN3296 -qhaltonmsg=CCN3944 -qhaltonmsg=CCN3963'
Packit Service 95ac19
		# CCN3290: Unknown macro name FOO on #undef directive.
Packit Service 95ac19
		# CCN4108: The use of keyword '__attribute__' is non-portable.
Packit Service 95ac19
		ac_flags 1 supprss '-qsuppress=CCN3290 -qsuppress=CCN4108'
Packit Service 95ac19
		;;
Packit Service 95ac19
	*)
Packit Service 95ac19
		ac_flags 1 rodata '-qro -qroconst -qroptr'
Packit Service 95ac19
		ac_flags 1 rtcheck -qcheck=all
Packit Service 95ac19
		#ac_flags 1 rtchkc -qextchk	# reported broken
Packit Service 95ac19
		ac_flags 1 wformat '-qformat=all -qformat=nozln'
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	#ac_flags 1 wp64 -qwarn64	# too verbose for now
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
# flags common to a subset of compilers (run with -Werror on gcc)
Packit Service 95ac19
if test 1 = $i; then
Packit Service 95ac19
	ac_flags 1 wall -Wall
Packit Service 95ac19
	ac_flags 1 fwrapv -fwrapv
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
# “on demand” means: GCC version >= 4
Packit Service 95ac19
fd='if to rely on compiler for string pooling'
Packit Service 95ac19
ac_cache string_pooling || case $HAVE_STRING_POOLING in
Packit Service 95ac19
2) fx=' (on demand, cached)' ;;
Packit Service 95ac19
i1) fv=1 ;;
Packit Service 95ac19
i2) fv=2; fx=' (on demand)' ;;
Packit Service 95ac19
esac
Packit Service 95ac19
ac_testdone
Packit Service 95ac19
test x"$HAVE_STRING_POOLING" = x"0" || ac_cppflags
Packit Service 95ac19
Packit Service 95ac19
phase=x
Packit Service 95ac19
# The following tests run with -Werror or similar (all compilers) if possible
Packit Service 95ac19
NOWARN=$DOWARN
Packit Service 95ac19
test $ct = pcc && phase=u
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Compiler: check for stuff that only generates warnings
Packit Service 95ac19
#
Packit Service 95ac19
ac_test attribute_bounded '' 'for __attribute__((__bounded__))' <<-'EOF'
Packit Service 95ac19
	#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
Packit Service 95ac19
	extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
	/* force a failure: TenDRA and gcc 1.42 have false positive here */
Packit Service 95ac19
	int main(void) { return (thiswillneverbedefinedIhope()); }
Packit Service 95ac19
	#else
Packit Service 95ac19
	#include <string.h>
Packit Service 95ac19
	#undef __attribute__
Packit Service 95ac19
	int xcopy(const void *, void *, size_t)
Packit Service 95ac19
	    __attribute__((__bounded__(__buffer__, 1, 3)))
Packit Service 95ac19
	    __attribute__((__bounded__(__buffer__, 2, 3)));
Packit Service 95ac19
	int main(int ac, char *av[]) { return (xcopy(av[0], av[--ac], 1)); }
Packit Service 95ac19
	int xcopy(const void *s, void *d, size_t n) {
Packit Service 95ac19
		/*
Packit Service 95ac19
		 * if memmove does not exist, we are not on a system
Packit Service 95ac19
		 * with GCC with __bounded__ attribute either so poo
Packit Service 95ac19
		 */
Packit Service 95ac19
		memmove(d, s, n); return ((int)n);
Packit Service 95ac19
	}
Packit Service 95ac19
	#endif
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test attribute_format '' 'for __attribute__((__format__))' <<-'EOF'
Packit Service 95ac19
	#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
Packit Service 95ac19
	extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
	/* force a failure: TenDRA and gcc 1.42 have false positive here */
Packit Service 95ac19
	int main(void) { return (thiswillneverbedefinedIhope()); }
Packit Service 95ac19
	#else
Packit Service 95ac19
	#define fprintf printfoo
Packit Service 95ac19
	#include <stdio.h>
Packit Service 95ac19
	#undef __attribute__
Packit Service 95ac19
	#undef fprintf
Packit Service 95ac19
	extern int fprintf(FILE *, const char *format, ...)
Packit Service 95ac19
	    __attribute__((__format__(__printf__, 2, 3)));
Packit Service 95ac19
	int main(int ac, char **av) { return (fprintf(stderr, "%s%d", *av, ac)); }
Packit Service 95ac19
	#endif
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test attribute_noreturn '' 'for __attribute__((__noreturn__))' <<-'EOF'
Packit Service 95ac19
	#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
Packit Service 95ac19
	extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
	/* force a failure: TenDRA and gcc 1.42 have false positive here */
Packit Service 95ac19
	int main(void) { return (thiswillneverbedefinedIhope()); }
Packit Service 95ac19
	#else
Packit Service 95ac19
	#include <stdlib.h>
Packit Service 95ac19
	#undef __attribute__
Packit Service 95ac19
	void fnord(void) __attribute__((__noreturn__));
Packit Service 95ac19
	int main(void) { fnord(); }
Packit Service 95ac19
	void fnord(void) { exit(0); }
Packit Service 95ac19
	#endif
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test attribute_pure '' 'for __attribute__((__pure__))' <<-'EOF'
Packit Service 95ac19
	#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
Packit Service 95ac19
	extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
	/* force a failure: TenDRA and gcc 1.42 have false positive here */
Packit Service 95ac19
	int main(void) { return (thiswillneverbedefinedIhope()); }
Packit Service 95ac19
	#else
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	#undef __attribute__
Packit Service 95ac19
	int foo(const char *) __attribute__((__pure__));
Packit Service 95ac19
	int main(int ac, char **av) { return (foo(av[ac - 1]) + isatty(0)); }
Packit Service 95ac19
	int foo(const char *s) { return ((int)s[0]); }
Packit Service 95ac19
	#endif
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test attribute_unused '' 'for __attribute__((__unused__))' <<-'EOF'
Packit Service 95ac19
	#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
Packit Service 95ac19
	extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
	/* force a failure: TenDRA and gcc 1.42 have false positive here */
Packit Service 95ac19
	int main(void) { return (thiswillneverbedefinedIhope()); }
Packit Service 95ac19
	#else
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	#undef __attribute__
Packit Service 95ac19
	int main(int ac __attribute__((__unused__)), char **av
Packit Service 95ac19
	    __attribute__((__unused__))) { return (isatty(0)); }
Packit Service 95ac19
	#endif
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test attribute_used '' 'for __attribute__((__used__))' <<-'EOF'
Packit Service 95ac19
	#if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
Packit Service 95ac19
	extern int thiswillneverbedefinedIhope(void);
Packit Service 95ac19
	/* force a failure: TenDRA and gcc 1.42 have false positive here */
Packit Service 95ac19
	int main(void) { return (thiswillneverbedefinedIhope()); }
Packit Service 95ac19
	#else
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	#undef __attribute__
Packit Service 95ac19
	static const char fnord[] __attribute__((__used__)) = "42";
Packit Service 95ac19
	int main(void) { return (isatty(0)); }
Packit Service 95ac19
	#endif
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
# End of tests run with -Werror
Packit Service 95ac19
NOWARN=$save_NOWARN
Packit Service 95ac19
phase=x
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# mksh: flavours (full/small mksh, omit certain stuff)
Packit Service 95ac19
#
Packit Service 95ac19
if ac_ifcpp 'ifdef MKSH_SMALL' isset_MKSH_SMALL '' \
Packit Service 95ac19
    "if a reduced-feature mksh is requested"; then
Packit Service 95ac19
	: "${HAVE_NICE=0}"
Packit Service 95ac19
	: "${HAVE_PERSISTENT_HISTORY=0}"
Packit Service 95ac19
	check_categories="$check_categories smksh"
Packit Service 95ac19
fi
Packit Service 95ac19
ac_ifcpp 'if defined(MKSH_BINSHPOSIX) || defined(MKSH_BINSHREDUCED)' \
Packit Service 95ac19
    isset_MKSH_BINSH '' 'if invoking as sh should be handled specially' && \
Packit Service 95ac19
    check_categories="$check_categories binsh"
Packit Service 95ac19
ac_ifcpp 'ifdef MKSH_UNEMPLOYED' isset_MKSH_UNEMPLOYED '' \
Packit Service 95ac19
    "if mksh will be built without job control" && \
Packit Service 95ac19
    check_categories="$check_categories arge"
Packit Service 95ac19
ac_ifcpp 'ifdef MKSH_NOPROSPECTOFWORK' isset_MKSH_NOPROSPECTOFWORK '' \
Packit Service 95ac19
    "if mksh will be built without job signals" && \
Packit Service 95ac19
    check_categories="$check_categories arge nojsig"
Packit Service 95ac19
ac_ifcpp 'ifdef MKSH_ASSUME_UTF8' isset_MKSH_ASSUME_UTF8 '' \
Packit Service 95ac19
    'if the default UTF-8 mode is specified' && : "${HAVE_SETLOCALE_CTYPE=0}"
Packit Service 95ac19
ac_ifcpp 'if !MKSH_ASSUME_UTF8' isoff_MKSH_ASSUME_UTF8 \
Packit Service 95ac19
    isset_MKSH_ASSUME_UTF8 0 \
Packit Service 95ac19
    'if the default UTF-8 mode is disabled' && \
Packit Service 95ac19
    check_categories="$check_categories noutf8"
Packit Service 95ac19
#ac_ifcpp 'ifdef MKSH_DISABLE_DEPRECATED' isset_MKSH_DISABLE_DEPRECATED '' \
Packit Service 95ac19
#    "if deprecated features are to be omitted" && \
Packit Service 95ac19
#    check_categories="$check_categories nodeprecated"
Packit Service 95ac19
#ac_ifcpp 'ifdef MKSH_DISABLE_EXPERIMENTAL' isset_MKSH_DISABLE_EXPERIMENTAL '' \
Packit Service 95ac19
#    "if experimental features are to be omitted" && \
Packit Service 95ac19
#    check_categories="$check_categories noexperimental"
Packit Service 95ac19
ac_ifcpp 'ifdef MKSH_MIDNIGHTBSD01ASH_COMPAT' isset_MKSH_MIDNIGHTBSD01ASH_COMPAT '' \
Packit Service 95ac19
    'if the MidnightBSD 0.1 ash compatibility mode is requested' && \
Packit Service 95ac19
    check_categories="$check_categories mnbsdash"
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Environment: headers
Packit Service 95ac19
#
Packit Service 95ac19
ac_header sys/time.h sys/types.h
Packit Service 95ac19
ac_header time.h sys/types.h
Packit Service 95ac19
test "11" = "$HAVE_SYS_TIME_H$HAVE_TIME_H" || HAVE_BOTH_TIME_H=0
Packit Service 95ac19
ac_test both_time_h '' 'whether <sys/time.h> and <time.h> can both be included' <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <sys/time.h>
Packit Service 95ac19
	#include <time.h>
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { struct tm tm; return ((int)sizeof(tm) + isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_header sys/bsdtypes.h
Packit Service 95ac19
ac_header sys/file.h sys/types.h
Packit Service 95ac19
ac_header sys/mkdev.h sys/types.h
Packit Service 95ac19
ac_header sys/mman.h sys/types.h
Packit Service 95ac19
ac_header sys/param.h
Packit Service 95ac19
ac_header sys/resource.h sys/types.h _time
Packit Service 95ac19
ac_header sys/select.h sys/types.h
Packit Service 95ac19
ac_header sys/sysmacros.h
Packit Service 95ac19
ac_header bstring.h
Packit Service 95ac19
ac_header grp.h sys/types.h
Packit Service 95ac19
ac_header io.h
Packit Service 95ac19
ac_header libgen.h
Packit Service 95ac19
ac_header libutil.h sys/types.h
Packit Service 95ac19
ac_header paths.h
Packit Service 95ac19
ac_header stdint.h stdarg.h
Packit Service 95ac19
# include strings.h only if compatible with string.h
Packit Service 95ac19
ac_header strings.h sys/types.h string.h
Packit Service 95ac19
ac_header termios.h
Packit Service 95ac19
ac_header ulimit.h sys/types.h
Packit Service 95ac19
ac_header values.h
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Environment: definitions
Packit Service 95ac19
#
Packit Service 95ac19
echo '#include <sys/types.h>
Packit Service 95ac19
#include <unistd.h>
Packit Service 95ac19
/* check that off_t can represent 2^63-1 correctly, thx FSF */
Packit Service 95ac19
#define LARGE_OFF_T ((((off_t)1 << 31) << 31) - 1 + (((off_t)1 << 31) << 31))
Packit Service 95ac19
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 &&
Packit Service 95ac19
    LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];
Packit Service 95ac19
int main(void) { return (isatty(0)); }' >lft.c
Packit Service 95ac19
ac_testn can_lfs '' "for large file support" 
Packit Service 95ac19
save_CPPFLAGS=$CPPFLAGS
Packit Service 95ac19
add_cppflags -D_FILE_OFFSET_BITS=64
Packit Service 95ac19
ac_testn can_lfs_sus '!' can_lfs 0 "... with -D_FILE_OFFSET_BITS=64" 
Packit Service 95ac19
if test 0 = $HAVE_CAN_LFS_SUS; then
Packit Service 95ac19
	CPPFLAGS=$save_CPPFLAGS
Packit Service 95ac19
	add_cppflags -D_LARGE_FILES=1
Packit Service 95ac19
	ac_testn can_lfs_aix '!' can_lfs 0 "... with -D_LARGE_FILES=1" 
Packit Service 95ac19
	test 1 = $HAVE_CAN_LFS_AIX || CPPFLAGS=$save_CPPFLAGS
Packit Service 95ac19
fi
Packit Service 95ac19
rm -f lft.c
Packit Service 95ac19
rmf lft*	# end of large file support test
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Environment: types
Packit Service 95ac19
#
Packit Service 95ac19
ac_test can_inttypes '!' stdint_h 1 "for standard 32-bit integer types" <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	int main(int ac, char **av) { return ((uint32_t)(size_t)*av + (int32_t)ac); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test can_ucbints '!' can_inttypes 1 "for UCB 32-bit integer types" <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	int main(int ac, char **av) { return ((u_int32_t)(size_t)*av + (int32_t)ac); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test can_int8type '!' stdint_h 1 "for standard 8-bit integer type" <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	int main(int ac, char **av) { return ((uint8_t)(size_t)av[ac]); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test can_ucbint8 '!' can_int8type 1 "for UCB 8-bit integer type" <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	int main(int ac, char **av) { return ((u_int8_t)(size_t)av[ac]); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test rlim_t <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#if HAVE_BOTH_TIME_H
Packit Service 95ac19
	#include <sys/time.h>
Packit Service 95ac19
	#include <time.h>
Packit Service 95ac19
	#elif HAVE_SYS_TIME_H
Packit Service 95ac19
	#include <sys/time.h>
Packit Service 95ac19
	#elif HAVE_TIME_H
Packit Service 95ac19
	#include <time.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#if HAVE_SYS_RESOURCE_H
Packit Service 95ac19
	#include <sys/resource.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { return (((int)(rlim_t)0) + isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
# only testn: added later below
Packit Service 95ac19
ac_testn sig_t <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <signal.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	volatile sig_t foo = (sig_t)0;
Packit Service 95ac19
	int main(void) { return (foo == (sig_t)0); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_testn sighandler_t '!' sig_t 0 <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <signal.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	volatile sighandler_t foo = (sighandler_t)0;
Packit Service 95ac19
	int main(void) { return (foo == (sighandler_t)0); }
Packit Service 95ac19
EOF
Packit Service 95ac19
if test 1 = $HAVE_SIGHANDLER_T; then
Packit Service 95ac19
	add_cppflags -Dsig_t=sighandler_t
Packit Service 95ac19
	HAVE_SIG_T=1
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
ac_testn __sighandler_t '!' sig_t 0 <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <signal.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	volatile __sighandler_t foo = (__sighandler_t)0;
Packit Service 95ac19
	int main(void) { return (foo == (__sighandler_t)0); }
Packit Service 95ac19
EOF
Packit Service 95ac19
if test 1 = $HAVE___SIGHANDLER_T; then
Packit Service 95ac19
	add_cppflags -Dsig_t=__sighandler_t
Packit Service 95ac19
	HAVE_SIG_T=1
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
test 1 = $HAVE_SIG_T || add_cppflags -Dsig_t=nosig_t
Packit Service 95ac19
ac_cppflags SIG_T
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# check whether whatever we use for the final link will succeed
Packit Service 95ac19
#
Packit Service 95ac19
if test $cm = makefile; then
Packit Service 95ac19
	: nothing to check
Packit Service 95ac19
else
Packit Service 95ac19
	HAVE_LINK_WORKS=x
Packit Service 95ac19
	ac_testinit link_works '' 'checking if the final link command may succeed'
Packit Service 95ac19
	fv=1
Packit Service 95ac19
	cat >conftest.c <<-EOF
Packit Service 95ac19
		#define EXTERN
Packit Service 95ac19
		#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
		#include "sh.h"
Packit Service 95ac19
		__RCSID("$srcversion");
Packit Service 95ac19
		int main(void) { printf("Hello, World!\\n"); return (isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
	case $cm in
Packit Service 95ac19
	llvm)
Packit Service 95ac19
		v "$CC $CFLAGS $CPPFLAGS $NOWARN -emit-llvm -c conftest.c" || fv=0
Packit Service 95ac19
		rmf $tfn.s
Packit Service 95ac19
		test $fv = 0 || v "llvm-link -o - conftest.o | opt $optflags | llc -o $tfn.s" || fv=0
Packit Service 95ac19
		test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn $tfn.s $LIBS $ccpr"
Packit Service 95ac19
		;;
Packit Service 95ac19
	dragonegg)
Packit Service 95ac19
		v "$CC $CFLAGS $CPPFLAGS $NOWARN -S -flto conftest.c" || fv=0
Packit Service 95ac19
		test $fv = 0 || v "mv conftest.s conftest.ll"
Packit Service 95ac19
		test $fv = 0 || v "llvm-as conftest.ll" || fv=0
Packit Service 95ac19
		rmf $tfn.s
Packit Service 95ac19
		test $fv = 0 || v "llvm-link -o - conftest.bc | opt $optflags | llc -o $tfn.s" || fv=0
Packit Service 95ac19
		test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn $tfn.s $LIBS $ccpr"
Packit Service 95ac19
		;;
Packit Service 95ac19
	combine)
Packit Service 95ac19
		v "$CC $CFLAGS $CPPFLAGS $LDFLAGS -fwhole-program --combine $NOWARN -o $tcfn conftest.c $LIBS $ccpr"
Packit Service 95ac19
		;;
Packit Service 95ac19
	lto|normal)
Packit Service 95ac19
		cm=normal
Packit Service 95ac19
		v "$CC $CFLAGS $CPPFLAGS $NOWARN -c conftest.c" || fv=0
Packit Service 95ac19
		test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn conftest.o $LIBS $ccpr"
Packit Service 95ac19
		;;
Packit Service 95ac19
	esac
Packit Service 95ac19
	test -f $tcfn || fv=0
Packit Service 95ac19
	ac_testdone
Packit Service 95ac19
	test $fv = 1 || exit 1
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Environment: errors and signals
Packit Service 95ac19
#
Packit Service 95ac19
test x"NetBSD" = x"$TARGET_OS" && $e Ignore the compatibility warning.
Packit Service 95ac19
Packit Service 95ac19
ac_testn sys_errlist '' "the sys_errlist[] array and sys_nerr" <<-'EOF'
Packit Service 95ac19
	extern const int sys_nerr;
Packit Service 95ac19
	extern const char * const sys_errlist[];
Packit Service 95ac19
	extern int isatty(int);
Packit Service 95ac19
	int main(void) { return (*sys_errlist[sys_nerr - 1] + isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_testn _sys_errlist '!' sys_errlist 0 "the _sys_errlist[] array and _sys_nerr" <<-'EOF'
Packit Service 95ac19
	extern const int _sys_nerr;
Packit Service 95ac19
	extern const char * const _sys_errlist[];
Packit Service 95ac19
	extern int isatty(int);
Packit Service 95ac19
	int main(void) { return (*_sys_errlist[_sys_nerr - 1] + isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
if test 1 = "$HAVE__SYS_ERRLIST"; then
Packit Service 95ac19
	add_cppflags -Dsys_nerr=_sys_nerr
Packit Service 95ac19
	add_cppflags -Dsys_errlist=_sys_errlist
Packit Service 95ac19
	HAVE_SYS_ERRLIST=1
Packit Service 95ac19
fi
Packit Service 95ac19
ac_cppflags SYS_ERRLIST
Packit Service 95ac19
Packit Service 95ac19
for what in name list; do
Packit Service 95ac19
	uwhat=`upper $what`
Packit Service 95ac19
	ac_testn sys_sig$what '' "the sys_sig${what}[] array" <<-EOF
Packit Service 95ac19
		extern const char * const sys_sig${what}[];
Packit Service 95ac19
		extern int isatty(int);
Packit Service 95ac19
		int main(void) { return (sys_sig${what}[0][0] + isatty(0)); }
Packit Service 95ac19
	EOF
Packit Service 95ac19
	ac_testn _sys_sig$what '!' sys_sig$what 0 "the _sys_sig${what}[] array" <<-EOF
Packit Service 95ac19
		extern const char * const _sys_sig${what}[];
Packit Service 95ac19
		extern int isatty(int);
Packit Service 95ac19
		int main(void) { return (_sys_sig${what}[0][0] + isatty(0)); }
Packit Service 95ac19
	EOF
Packit Service 95ac19
	eval uwhat_v=\$HAVE__SYS_SIG$uwhat
Packit Service 95ac19
	if test 1 = "$uwhat_v"; then
Packit Service 95ac19
		add_cppflags -Dsys_sig$what=_sys_sig$what
Packit Service 95ac19
		eval HAVE_SYS_SIG$uwhat=1
Packit Service 95ac19
	fi
Packit Service 95ac19
	ac_cppflags SYS_SIG$uwhat
Packit Service 95ac19
done
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Environment: library functions
Packit Service 95ac19
#
Packit Service 95ac19
ac_test flock <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <fcntl.h>
Packit Service 95ac19
	#undef flock
Packit Service 95ac19
	#if HAVE_SYS_FILE_H
Packit Service 95ac19
	#include <sys/file.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	int main(void) { return (flock(0, LOCK_EX | LOCK_UN)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test lock_fcntl '!' flock 1 'whether we can lock files with fcntl' <<-'EOF'
Packit Service 95ac19
	#include <fcntl.h>
Packit Service 95ac19
	#undef flock
Packit Service 95ac19
	int main(void) {
Packit Service 95ac19
		struct flock lks;
Packit Service 95ac19
		lks.l_type = F_WRLCK | F_UNLCK;
Packit Service 95ac19
		return (fcntl(0, F_SETLKW, &lks));
Packit Service 95ac19
	}
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test getrusage <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	int main(void) {
Packit Service 95ac19
		struct rusage ru;
Packit Service 95ac19
		return (getrusage(RUSAGE_SELF, &ru) +
Packit Service 95ac19
		    getrusage(RUSAGE_CHILDREN, &ru);;
Packit Service 95ac19
	}
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test getsid <<-'EOF'
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { return ((int)getsid(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test gettimeofday <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	int main(void) { struct timeval tv; return (gettimeofday(&tv, NULL)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test killpg <<-'EOF'
Packit Service 95ac19
	#include <signal.h>
Packit Service 95ac19
	int main(int ac, char *av[]) { return (av[0][killpg(123, ac)]); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test memmove <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	#include <string.h>
Packit Service 95ac19
	#if HAVE_STRINGS_H
Packit Service 95ac19
	#include <strings.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	int main(int ac, char *av[]) {
Packit Service 95ac19
		return (*(int *)(void *)memmove(av[0], av[1], (size_t)ac));
Packit Service 95ac19
	}
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test mknod '' 'if to use mknod(), makedev() and friends' <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	int main(int ac, char *av[]) {
Packit Service 95ac19
		dev_t dv;
Packit Service 95ac19
		dv = makedev((unsigned int)ac, (unsigned int)av[0][0]);
Packit Service 95ac19
		return (mknod(av[0], (mode_t)0, dv) ? (int)major(dv) :
Packit Service 95ac19
		    (int)minor(dv));
Packit Service 95ac19
	}
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test mmap lock_fcntl 0 'for mmap and munmap' <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#if HAVE_SYS_FILE_H
Packit Service 95ac19
	#include <sys/file.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#if HAVE_SYS_MMAN_H
Packit Service 95ac19
	#include <sys/mman.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	#include <stdlib.h>
Packit Service 95ac19
	int main(void) { return ((void *)mmap(NULL, (size_t)0,
Packit Service 95ac19
	    PROT_READ, MAP_PRIVATE, 0, (off_t)0) == (void *)NULL ? 1 :
Packit Service 95ac19
	    munmap(NULL, 0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test ftruncate mmap 0 'for ftruncate' <<-'EOF'
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { return (ftruncate(0, 0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test nice <<-'EOF'
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { return (nice(4)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test revoke <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#if HAVE_LIBUTIL_H
Packit Service 95ac19
	#include <libutil.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(int ac, char *av[]) { return (ac + revoke(av[0])); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test setlocale_ctype '' 'setlocale(LC_CTYPE, "")' <<-'EOF'
Packit Service 95ac19
	#include <locale.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	int main(void) { return ((int)(size_t)(void *)setlocale(LC_CTYPE, "")); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test langinfo_codeset setlocale_ctype 0 'nl_langinfo(CODESET)' <<-'EOF'
Packit Service 95ac19
	#include <langinfo.h>
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	int main(void) { return ((int)(size_t)(void *)nl_langinfo(CODESET)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test select <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#if HAVE_BOTH_TIME_H
Packit Service 95ac19
	#include <sys/time.h>
Packit Service 95ac19
	#include <time.h>
Packit Service 95ac19
	#elif HAVE_SYS_TIME_H
Packit Service 95ac19
	#include <sys/time.h>
Packit Service 95ac19
	#elif HAVE_TIME_H
Packit Service 95ac19
	#include <time.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#if HAVE_SYS_BSDTYPES_H
Packit Service 95ac19
	#include <sys/bsdtypes.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#if HAVE_SYS_SELECT_H
Packit Service 95ac19
	#include <sys/select.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#if HAVE_BSTRING_H
Packit Service 95ac19
	#include <bstring.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#include <stddef.h>
Packit Service 95ac19
	#include <stdlib.h>
Packit Service 95ac19
	#include <string.h>
Packit Service 95ac19
	#if HAVE_STRINGS_H
Packit Service 95ac19
	#include <strings.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) {
Packit Service 95ac19
		struct timeval tv = { 1, 200000 };
Packit Service 95ac19
		fd_set fds; FD_ZERO(&fds); FD_SET(0, &fds);
Packit Service 95ac19
		return (select(FD_SETSIZE, &fds, NULL, NULL, &tv));
Packit Service 95ac19
	}
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test setresugid <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { return (setresuid(0,0,0) + setresgid(0,0,0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test setgroups setresugid 0 <<-'EOF'
Packit Service 95ac19
	#include <sys/types.h>
Packit Service 95ac19
	#if HAVE_GRP_H
Packit Service 95ac19
	#include <grp.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	#include <unistd.h>
Packit Service 95ac19
	int main(void) { gid_t gid = 0; return (setgroups(0, &gid)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
if test x"$et" = x"klibc"; then
Packit Service 95ac19
Packit Service 95ac19
	ac_testn __rt_sigsuspend '' 'whether klibc uses RT signals' <<-'EOF'
Packit Service 95ac19
		#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
		#include "sh.h"
Packit Service 95ac19
		extern int __rt_sigsuspend(const sigset_t *, size_t);
Packit Service 95ac19
		int main(void) { return (__rt_sigsuspend(NULL, 0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
	# no? damn! legacy crap ahead!
Packit Service 95ac19
Packit Service 95ac19
	ac_testn __sigsuspend_s '!' __rt_sigsuspend 1 \
Packit Service 95ac19
	    'whether sigsuspend is usable (1/2)' <<-'EOF'
Packit Service 95ac19
		#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
		#include "sh.h"
Packit Service 95ac19
		extern int __sigsuspend_s(sigset_t);
Packit Service 95ac19
		int main(void) { return (__sigsuspend_s(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
	ac_testn __sigsuspend_xxs '!' __sigsuspend_s 1 \
Packit Service 95ac19
	    'whether sigsuspend is usable (2/2)' <<-'EOF'
Packit Service 95ac19
		#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
		#include "sh.h"
Packit Service 95ac19
		extern int __sigsuspend_xxs(int, int, sigset_t);
Packit Service 95ac19
		int main(void) { return (__sigsuspend_xxs(0, 0, 0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
	if test "000" = "$HAVE___RT_SIGSUSPEND$HAVE___SIGSUSPEND_S$HAVE___SIGSUSPEND_XXS"; then
Packit Service 95ac19
		# no usable sigsuspend(), use pause() *ugh*
Packit Service 95ac19
		add_cppflags -DMKSH_NO_SIGSUSPEND
Packit Service 95ac19
	fi
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
ac_test strerror '!' sys_errlist 0 <<-'EOF'
Packit Service 95ac19
	extern char *strerror(int);
Packit Service 95ac19
	int main(int ac, char *av[]) { return (*strerror(*av[ac])); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test strsignal '!' sys_siglist 0 <<-'EOF'
Packit Service 95ac19
	#include <string.h>
Packit Service 95ac19
	#include <signal.h>
Packit Service 95ac19
	int main(void) { return (strsignal(1)[0]); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
ac_test strlcpy <<-'EOF'
Packit Service 95ac19
	#include <string.h>
Packit Service 95ac19
	int main(int ac, char *av[]) { return (strlcpy(*av, av[1],
Packit Service 95ac19
	    (size_t)ac)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# check headers for declarations
Packit Service 95ac19
#
Packit Service 95ac19
ac_test flock_decl flock 1 'for declaration of flock()' <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	#if HAVE_SYS_FILE_H
Packit Service 95ac19
	#include <sys/file.h>
Packit Service 95ac19
	#endif
Packit Service 95ac19
	int main(void) { return ((flock)(0, 0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test revoke_decl revoke 1 'for declaration of revoke()' <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	int main(void) { return ((revoke)("")); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test sys_errlist_decl sys_errlist 0 "for declaration of sys_errlist[] and sys_nerr" <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	int main(void) { return (*sys_errlist[sys_nerr - 1] + isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
ac_test sys_siglist_decl sys_siglist 0 'for declaration of sys_siglist[]' <<-'EOF'
Packit Service 95ac19
	#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
	#include "sh.h"
Packit Service 95ac19
	int main(void) { return (sys_siglist[0][0] + isatty(0)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# other checks
Packit Service 95ac19
#
Packit Service 95ac19
fd='if to use persistent history'
Packit Service 95ac19
ac_cache PERSISTENT_HISTORY || case $HAVE_FTRUNCATE$HAVE_MMAP$HAVE_FLOCK$HAVE_LOCK_FCNTL in
Packit Service 95ac19
111*|1101) fv=1 ;;
Packit Service 95ac19
esac
Packit Service 95ac19
test 1 = $fv || check_categories="$check_categories no-histfile"
Packit Service 95ac19
ac_testdone
Packit Service 95ac19
ac_cppflags
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# extra checks for legacy mksh
Packit Service 95ac19
#
Packit Service 95ac19
if test $legacy = 1; then
Packit Service 95ac19
	ac_test long_32bit '' 'whether long is 32 bit wide' <<-'EOF'
Packit Service 95ac19
		#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
		#include "sh.h"
Packit Service 95ac19
		#ifndef CHAR_BIT
Packit Service 95ac19
		#define CHAR_BIT 0
Packit Service 95ac19
		#endif
Packit Service 95ac19
		struct ctasserts {
Packit Service 95ac19
		#define cta(name, assertion) char name[(assertion) ? 1 : -1]
Packit Service 95ac19
			cta(char_is_8_bits, (CHAR_BIT) == 8);
Packit Service 95ac19
			cta(long_is_32_bits, sizeof(long) == 4);
Packit Service 95ac19
		};
Packit Service 95ac19
		int main(void) { return (sizeof(struct ctasserts)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
	ac_test long_64bit '!' long_32bit 0 'whether long is 64 bit wide' <<-'EOF'
Packit Service 95ac19
		#define MKSH_INCLUDES_ONLY
Packit Service 95ac19
		#include "sh.h"
Packit Service 95ac19
		#ifndef CHAR_BIT
Packit Service 95ac19
		#define CHAR_BIT 0
Packit Service 95ac19
		#endif
Packit Service 95ac19
		struct ctasserts {
Packit Service 95ac19
		#define cta(name, assertion) char name[(assertion) ? 1 : -1]
Packit Service 95ac19
			cta(char_is_8_bits, (CHAR_BIT) == 8);
Packit Service 95ac19
			cta(long_is_64_bits, sizeof(long) == 8);
Packit Service 95ac19
		};
Packit Service 95ac19
		int main(void) { return (sizeof(struct ctasserts)); }
Packit Service 95ac19
EOF
Packit Service 95ac19
Packit Service 95ac19
	case $HAVE_LONG_32BIT$HAVE_LONG_64BIT in
Packit Service 95ac19
	10) check_categories="$check_categories int:32" ;;
Packit Service 95ac19
	01) check_categories="$check_categories int:64" ;;
Packit Service 95ac19
	*) check_categories="$check_categories int:u" ;;
Packit Service 95ac19
	esac
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# Compiler: Praeprocessor (only if needed)
Packit Service 95ac19
#
Packit Service 95ac19
test 0 = $HAVE_SYS_SIGNAME && if ac_testinit cpp_dd '' \
Packit Service 95ac19
    'checking if the C Preprocessor supports -dD'; then
Packit Service 95ac19
	echo '#define foo bar' >conftest.c
Packit Service 95ac19
	vv ']' "$CPP $CFLAGS $CPPFLAGS $NOWARN -dD conftest.c >x"
Packit Service 95ac19
	grep '#define foo bar' x >/dev/null 2>&1 && fv=1
Packit Service 95ac19
	rmf conftest.c x vv.out
Packit Service 95ac19
	ac_testdone
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
#
Packit Service 95ac19
# End of mirtoconf checks
Packit Service 95ac19
#
Packit Service 95ac19
$e ... done.
Packit Service 95ac19
Packit Service 95ac19
# Some operating systems have ancient versions of ed(1) writing
Packit Service 95ac19
# the character count to standard output; cope for that
Packit Service 95ac19
echo wq >x
Packit Service 95ac19
ed x <x 2>/dev/null | grep 3 >/dev/null 2>&1 && \
Packit Service 95ac19
    check_categories="$check_categories $oldish_ed"
Packit Service 95ac19
rmf x vv.out
Packit Service 95ac19
Packit Service 95ac19
if test 0 = $HAVE_SYS_SIGNAME; then
Packit Service 95ac19
	if test 1 = $HAVE_CPP_DD; then
Packit Service 95ac19
		$e Generating list of signal names...
Packit Service 95ac19
	else
Packit Service 95ac19
		$e No list of signal names available via cpp. Falling back...
Packit Service 95ac19
	fi
Packit Service 95ac19
	sigseenone=:
Packit Service 95ac19
	sigseentwo=:
Packit Service 95ac19
	echo '#include <signal.h>
Packit Service 95ac19
#if defined(NSIG_MAX)
Packit Service 95ac19
#define cfg_NSIG NSIG_MAX
Packit Service 95ac19
#elif defined(NSIG)
Packit Service 95ac19
#define cfg_NSIG NSIG
Packit Service 95ac19
#elif defined(_NSIG)
Packit Service 95ac19
#define cfg_NSIG _NSIG
Packit Service 95ac19
#elif defined(SIGMAX)
Packit Service 95ac19
#define cfg_NSIG (SIGMAX + 1)
Packit Service 95ac19
#elif defined(_SIGMAX)
Packit Service 95ac19
#define cfg_NSIG (_SIGMAX + 1)
Packit Service 95ac19
#else
Packit Service 95ac19
/*XXX better error out, see sh.h */
Packit Service 95ac19
#define cfg_NSIG 64
Packit Service 95ac19
#endif
Packit Service 95ac19
int
Packit Service 95ac19
mksh_cfg= cfg_NSIG
Packit Service 95ac19
;' >conftest.c
Packit Service 95ac19
	# GNU sed 2.03 segfaults when optimising this to sed -n
Packit Service 95ac19
	NSIG=`vq "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c" | \
Packit Service 95ac19
	    grep -v '^#' | \
Packit Service 95ac19
	    sed '/mksh_cfg.*= *$/{
Packit Service 95ac19
		N
Packit Service 95ac19
		s/\n/ /
Packit Service 95ac19
		}' | \
Packit Service 95ac19
	    grep '^ *mksh_cfg *=' | \
Packit Service 95ac19
	    sed 's/^ *mksh_cfg *=[	 ]*\([()0-9x+-][()0-9x+	 -]*\).*$/\1/'`
Packit Service 95ac19
	case $NSIG in
Packit Service 95ac19
	*mksh_cfg*) $e "Error: NSIG='$NSIG'"; NSIG=0 ;;
Packit Service 95ac19
	*[\ \(\)+-]*) NSIG=`"$AWK" "BEGIN { print $NSIG }" 
Packit Service 95ac19
	esac
Packit Service 95ac19
	printf=printf
Packit Service 95ac19
	(printf hallo) >/dev/null 2>&1 || printf=echo
Packit Service 95ac19
	test $printf = echo || test "`printf %d 42`" = 42 || printf=echo
Packit Service 95ac19
	test $printf = echo || NSIG=`printf %d "$NSIG" 2>/dev/null`
Packit Service 95ac19
	$printf "NSIG=$NSIG ... "
Packit Service 95ac19
	sigs="ABRT FPE ILL INT SEGV TERM ALRM BUS CHLD CONT HUP KILL PIPE QUIT"
Packit Service 95ac19
	sigs="$sigs STOP TSTP TTIN TTOU USR1 USR2 POLL PROF SYS TRAP URG VTALRM"
Packit Service 95ac19
	sigs="$sigs XCPU XFSZ INFO WINCH EMT IO DIL LOST PWR SAK CLD IOT STKFLT"
Packit Service 95ac19
	sigs="$sigs ABND DCE DUMP IOERR TRACE DANGER THCONT THSTOP RESV UNUSED"
Packit Service 95ac19
	test 1 = $HAVE_CPP_DD && test $NSIG -gt 1 && sigs="$sigs "`vq \
Packit Service 95ac19
	    "$CPP $CFLAGS $CPPFLAGS $NOWARN -dD conftest.c" | \
Packit Service 95ac19
	    grep '[	 ]SIG[A-Z0-9][A-Z0-9]*[	 ]' | \
Packit Service 95ac19
	    sed 's/^.*[	 ]SIG\([A-Z0-9][A-Z0-9]*\)[	 ].*$/\1/' | sort`
Packit Service 95ac19
	test $NSIG -gt 1 || sigs=
Packit Service 95ac19
	for name in $sigs; do
Packit Service 95ac19
		case $sigseenone in
Packit Service 95ac19
		*:$name:*) continue ;;
Packit Service 95ac19
		esac
Packit Service 95ac19
		sigseenone=$sigseenone$name:
Packit Service 95ac19
		echo '#include <signal.h>' >conftest.c
Packit Service 95ac19
		echo int >>conftest.c
Packit Service 95ac19
		echo mksh_cfg= SIG$name >>conftest.c
Packit Service 95ac19
		echo ';' >>conftest.c
Packit Service 95ac19
		# GNU sed 2.03 croaks on optimising this, too
Packit Service 95ac19
		vq "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c" | \
Packit Service 95ac19
		    grep -v '^#' | \
Packit Service 95ac19
		    sed '/mksh_cfg.*= *$/{
Packit Service 95ac19
			N
Packit Service 95ac19
			s/\n/ /
Packit Service 95ac19
			}' | \
Packit Service 95ac19
		    grep '^ *mksh_cfg *=' | \
Packit Service 95ac19
		    sed 's/^ *mksh_cfg *=[	 ]*\([0-9][0-9x]*\).*$/:\1 '$name/
Packit Service 95ac19
	done | sed -n '/^:[^ ]/s/^://p' | while read nr name; do
Packit Service 95ac19
		test $printf = echo || nr=`printf %d "$nr" 2>/dev/null`
Packit Service 95ac19
		test $nr -gt 0 && test $nr -lt $NSIG || continue
Packit Service 95ac19
		case $sigseentwo in
Packit Service 95ac19
		*:$nr:*) ;;
Packit Service 95ac19
		*)	echo "		{ \"$name\", $nr },"
Packit Service 95ac19
			sigseentwo=$sigseentwo$nr:
Packit Service 95ac19
			$printf "$name=$nr " >&2
Packit Service 95ac19
			;;
Packit Service 95ac19
		esac
Packit Service 95ac19
	done 2>&1 >signames.inc
Packit Service 95ac19
	rmf conftest.c
Packit Service 95ac19
	$e done.
Packit Service 95ac19
fi
Packit Service 95ac19
Packit Service 95ac19
addsrcs '!' HAVE_STRLCPY strlcpy.c
Packit Service 95ac19
addsrcs USE_PRINTF_BUILTIN printf.c
Packit Service 95ac19
test 1 = "$USE_PRINTF_BUILTIN" && add_cppflags -DMKSH_PRINTF_BUILTIN
Packit Service 95ac19
test 1 = "$HAVE_CAN_VERB" && CFLAGS="$CFLAGS -verbose"
Packit Service 95ac19
add_cppflags -DMKSH_BUILD_R=563
Packit Service 95ac19
Packit Service 95ac19
$e $bi$me: Finished configuration testing, now producing output.$ao
Packit Service 95ac19
Packit Service 95ac19
files=
Packit Service 95ac19
objs=
Packit Service 95ac19
sp=
Packit Service 95ac19
case $tcfn in
Packit Service 95ac19
a.exe|conftest.exe)
Packit Service 95ac19
	mkshexe=$tfn.exe
Packit Service 95ac19
	add_cppflags -DMKSH_EXE_EXT
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	mkshexe=$tfn
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
case $curdir in
Packit Service 95ac19
*\ *)	mkshshebang="#!./$mkshexe" ;;
Packit Service 95ac19
*)	mkshshebang="#!$curdir/$mkshexe" ;;
Packit Service 95ac19
esac
Packit Service 95ac19
cat >test.sh <<-EOF
Packit Service 95ac19
	$mkshshebang
Packit Service 95ac19
	LC_ALL=C PATH='$PATH'; export LC_ALL PATH
Packit Service 95ac19
	test -n "\$KSH_VERSION" || exit 1
Packit Service 95ac19
	set -A check_categories -- $check_categories
Packit Service 95ac19
	pflag='$curdir/$mkshexe'
Packit Service 95ac19
	sflag='$srcdir/check.t'
Packit Service 95ac19
	usee=0 useU=0 Pflag=0 Sflag=0 uset=0 vflag=1 xflag=0
Packit Service 95ac19
	while getopts "C:e:fPp:QSs:t:U:v" ch; do case \$ch {
Packit Service 95ac19
	(C)	check_categories[\${#check_categories[*]}]=\$OPTARG ;;
Packit Service 95ac19
	(e)	usee=1; eflag=\$OPTARG ;;
Packit Service 95ac19
	(f)	check_categories[\${#check_categories[*]}]=fastbox ;;
Packit Service 95ac19
	(P)	Pflag=1 ;;
Packit Service 95ac19
	(+P)	Pflag=0 ;;
Packit Service 95ac19
	(p)	pflag=\$OPTARG ;;
Packit Service 95ac19
	(Q)	vflag=0 ;;
Packit Service 95ac19
	(+Q)	vflag=1 ;;
Packit Service 95ac19
	(S)	Sflag=1 ;;
Packit Service 95ac19
	(+S)	Sflag=0 ;;
Packit Service 95ac19
	(s)	sflag=\$OPTARG ;;
Packit Service 95ac19
	(t)	uset=1; tflag=\$OPTARG ;;
Packit Service 95ac19
	(U)	useU=1; Uflag=\$OPTARG ;;
Packit Service 95ac19
	(v)	vflag=1 ;;
Packit Service 95ac19
	(+v)	vflag=0 ;;
Packit Service 95ac19
	(*)	xflag=1 ;;
Packit Service 95ac19
	}
Packit Service 95ac19
	done
Packit Service 95ac19
	shift \$((OPTIND - 1))
Packit Service 95ac19
	set -A args -- '$srcdir/check.pl' -p "\$pflag"
Packit Service 95ac19
	if $ebcdic; then
Packit Service 95ac19
		args[\${#args[*]}]=-E
Packit Service 95ac19
	fi
Packit Service 95ac19
	x=
Packit Service 95ac19
	for y in "\${check_categories[@]}"; do
Packit Service 95ac19
		x=\$x,\$y
Packit Service 95ac19
	done
Packit Service 95ac19
	if [[ -n \$x ]]; then
Packit Service 95ac19
		args[\${#args[*]}]=-C
Packit Service 95ac19
		args[\${#args[*]}]=\${x#,}
Packit Service 95ac19
	fi
Packit Service 95ac19
	if (( usee )); then
Packit Service 95ac19
		args[\${#args[*]}]=-e
Packit Service 95ac19
		args[\${#args[*]}]=\$eflag
Packit Service 95ac19
	fi
Packit Service 95ac19
	(( Pflag )) && args[\${#args[*]}]=-P
Packit Service 95ac19
	if (( uset )); then
Packit Service 95ac19
		args[\${#args[*]}]=-t
Packit Service 95ac19
		args[\${#args[*]}]=\$tflag
Packit Service 95ac19
	fi
Packit Service 95ac19
	if (( useU )); then
Packit Service 95ac19
		args[\${#args[*]}]=-U
Packit Service 95ac19
		args[\${#args[*]}]=\$Uflag
Packit Service 95ac19
	fi
Packit Service 95ac19
	(( vflag )) && args[\${#args[*]}]=-v
Packit Service 95ac19
	(( xflag )) && args[\${#args[*]}]=-x	# force usage by synerr
Packit Service 95ac19
	if [[ -n \$TMPDIR && -d \$TMPDIR/. ]]; then
Packit Service 95ac19
		args[\${#args[*]}]=-T
Packit Service 95ac19
		args[\${#args[*]}]=\$TMPDIR
Packit Service 95ac19
	fi
Packit Service 95ac19
	print Testing mksh for conformance:
Packit Service 95ac19
	grep -F -e Mir''OS: -e MIRBSD "\$sflag"
Packit Service 95ac19
	print "This shell is actually:\\n\\t\$KSH_VERSION"
Packit Service 95ac19
	print 'test.sh built for mksh $dstversion'
Packit Service 95ac19
	cstr='\$os = defined \$^O ? \$^O : "unknown";'
Packit Service 95ac19
	cstr="\$cstr"'print \$os . ", Perl version " . \$];'
Packit Service 95ac19
	for perli in \$PERL perl5 perl no; do
Packit Service 95ac19
		if [[ \$perli = no ]]; then
Packit Service 95ac19
			print Cannot find a working Perl interpreter, aborting.
Packit Service 95ac19
			exit 1
Packit Service 95ac19
		fi
Packit Service 95ac19
		print "Trying Perl interpreter '\$perli'..."
Packit Service 95ac19
		perlos=\$(\$perli -e "\$cstr")
Packit Service 95ac19
		rv=\$?
Packit Service 95ac19
		print "Errorlevel \$rv, running on '\$perlos'"
Packit Service 95ac19
		if (( rv )); then
Packit Service 95ac19
			print "=> not using"
Packit Service 95ac19
			continue
Packit Service 95ac19
		fi
Packit Service 95ac19
		if [[ -n \$perlos ]]; then
Packit Service 95ac19
			print "=> using it"
Packit Service 95ac19
			break
Packit Service 95ac19
		fi
Packit Service 95ac19
	done
Packit Service 95ac19
	(( Sflag )) || echo + \$perli "\${args[@]}" -s "\$sflag" "\$@"
Packit Service 95ac19
	(( Sflag )) || exec \$perli "\${args[@]}" -s "\$sflag" "\$@"$tsts
Packit Service 95ac19
	# use of the -S option for check.t split into multiple chunks
Packit Service 95ac19
	rv=0
Packit Service 95ac19
	for s in "\$sflag".*; do
Packit Service 95ac19
		echo + \$perli "\${args[@]}" -s "\$s" "\$@"
Packit Service 95ac19
		\$perli "\${args[@]}" -s "\$s" "\$@"$tsts
Packit Service 95ac19
		rc=\$?
Packit Service 95ac19
		(( rv = rv ? rv : rc ))
Packit Service 95ac19
	done
Packit Service 95ac19
	exit \$rv
Packit Service 95ac19
EOF
Packit Service 95ac19
chmod 755 test.sh
Packit Service 95ac19
case $cm in
Packit Service 95ac19
dragonegg)
Packit Service 95ac19
	emitbc="-S -flto"
Packit Service 95ac19
	;;
Packit Service 95ac19
llvm)
Packit Service 95ac19
	emitbc="-emit-llvm -c"
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	emitbc=-c
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
echo ": # work around NeXTstep bug" >Rebuild.sh
Packit Service 95ac19
cd "$srcdir"
Packit Service 95ac19
optfiles=`echo *.opt`
Packit Service 95ac19
cd "$curdir"
Packit Service 95ac19
for file in $optfiles; do
Packit Service 95ac19
	echo "echo + Running genopt on '$file'..."
Packit Service 95ac19
	echo "(srcfile='$srcdir/$file'; BUILDSH_RUN_GENOPT=1; . '$srcdir/Build.sh')"
Packit Service 95ac19
done >>Rebuild.sh
Packit Service 95ac19
echo set -x >>Rebuild.sh
Packit Service 95ac19
for file in $SRCS; do
Packit Service 95ac19
	op=`echo x"$file" | sed 's/^x\(.*\)\.c$/\1./'`
Packit Service 95ac19
	test -f $file || file=$srcdir/$file
Packit Service 95ac19
	files="$files$sp$file"
Packit Service 95ac19
	sp=' '
Packit Service 95ac19
	echo "$CC $CFLAGS $CPPFLAGS $emitbc $file || exit 1" >>Rebuild.sh
Packit Service 95ac19
	if test $cm = dragonegg; then
Packit Service 95ac19
		echo "mv ${op}s ${op}ll" >>Rebuild.sh
Packit Service 95ac19
		echo "llvm-as ${op}ll || exit 1" >>Rebuild.sh
Packit Service 95ac19
		objs="$objs$sp${op}bc"
Packit Service 95ac19
	else
Packit Service 95ac19
		objs="$objs$sp${op}o"
Packit Service 95ac19
	fi
Packit Service 95ac19
done
Packit Service 95ac19
case $cm in
Packit Service 95ac19
dragonegg|llvm)
Packit Service 95ac19
	echo "rm -f $tfn.s" >>Rebuild.sh
Packit Service 95ac19
	echo "llvm-link -o - $objs | opt $optflags | llc -o $tfn.s" >>Rebuild.sh
Packit Service 95ac19
	lobjs=$tfn.s
Packit Service 95ac19
	;;
Packit Service 95ac19
*)
Packit Service 95ac19
	lobjs=$objs
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
echo tcfn=$mkshexe >>Rebuild.sh
Packit Service 95ac19
echo "$CC $CFLAGS $LDFLAGS -o \$tcfn $lobjs $LIBS $ccpr" >>Rebuild.sh
Packit Service 95ac19
echo "test -f \$tcfn || exit 1; $SIZE \$tcfn" >>Rebuild.sh
Packit Service 95ac19
if test $cm = makefile; then
Packit Service 95ac19
	extras='emacsfn.h exprtok.h rlimits.opt sh.h sh_flags.opt var_spec.h'
Packit Service 95ac19
	test 0 = $HAVE_SYS_SIGNAME && extras="$extras signames.inc"
Packit Service 95ac19
	gens= genq=
Packit Service 95ac19
	for file in $optfiles; do
Packit Service 95ac19
		genf=`basename "$file" | sed 's/.opt$/.gen/'`
Packit Service 95ac19
		gens="$gens $genf"
Packit Service 95ac19
		genq="$genq$nl$genf: $srcdir/Build.sh $srcdir/$file
Packit Service 95ac19
			srcfile=$srcdir/$file; BUILDSH_RUN_GENOPT=1; . $srcdir/Build.sh"
Packit Service 95ac19
	done
Packit Service 95ac19
	cat >Makefrag.inc <
Packit Service 95ac19
# Makefile fragment for building mksh $dstversion
Packit Service 95ac19
Packit Service 95ac19
PROG=		$mkshexe
Packit Service 95ac19
MAN=		mksh.1
Packit Service 95ac19
SRCS=		$SRCS
Packit Service 95ac19
SRCS_FP=	$files
Packit Service 95ac19
OBJS_BP=	$objs
Packit Service 95ac19
INDSRCS=	$extras
Packit Service 95ac19
NONSRCS_INST=	dot.mkshrc \$(MAN)
Packit Service 95ac19
NONSRCS_NOINST=	Build.sh Makefile Rebuild.sh check.pl check.t test.sh
Packit Service 95ac19
CC=		$CC
Packit Service 95ac19
CFLAGS=		$CFLAGS
Packit Service 95ac19
CPPFLAGS=	$CPPFLAGS
Packit Service 95ac19
LDFLAGS=	$LDFLAGS
Packit Service 95ac19
LIBS=		$LIBS
Packit Service 95ac19
Packit Service 95ac19
.depend \$(OBJS_BP):$gens$genq
Packit Service 95ac19
Packit Service 95ac19
# not BSD make only:
Packit Service 95ac19
#VPATH=		$srcdir
Packit Service 95ac19
#all: \$(PROG)
Packit Service 95ac19
#\$(PROG): \$(OBJS_BP)
Packit Service 95ac19
#	\$(CC) \$(CFLAGS) \$(LDFLAGS) -o \$@ \$(OBJS_BP) \$(LIBS)
Packit Service 95ac19
#\$(OBJS_BP): \$(SRCS_FP) \$(NONSRCS)
Packit Service 95ac19
#.c.o:
Packit Service 95ac19
#	\$(CC) \$(CFLAGS) \$(CPPFLAGS) -c \$<
Packit Service 95ac19
Packit Service 95ac19
# for all make variants:
Packit Service 95ac19
#REGRESS_FLAGS=	-f
Packit Service 95ac19
#regress:
Packit Service 95ac19
#	./test.sh \$(REGRESS_FLAGS)
Packit Service 95ac19
check_categories=$check_categories
Packit Service 95ac19
Packit Service 95ac19
# for BSD make only:
Packit Service 95ac19
#.PATH: $srcdir
Packit Service 95ac19
#.include <bsd.prog.mk>
Packit Service 95ac19
EOF
Packit Service 95ac19
	$e
Packit Service 95ac19
	$e Generated Makefrag.inc successfully.
Packit Service 95ac19
	exit 0
Packit Service 95ac19
fi
Packit Service 95ac19
for file in $optfiles; do
Packit Service 95ac19
	$e "+ Running genopt on '$file'..."
Packit Service 95ac19
	do_genopt "$srcdir/$file" || exit 1
Packit Service 95ac19
done
Packit Service 95ac19
if test $cm = combine; then
Packit Service 95ac19
	objs="-o $mkshexe"
Packit Service 95ac19
	for file in $SRCS; do
Packit Service 95ac19
		test -f $file || file=$srcdir/$file
Packit Service 95ac19
		objs="$objs $file"
Packit Service 95ac19
	done
Packit Service 95ac19
	emitbc="-fwhole-program --combine"
Packit Service 95ac19
	v "$CC $CFLAGS $CPPFLAGS $LDFLAGS $emitbc $objs $LIBS $ccpr"
Packit Service 95ac19
elif test 1 = $pm; then
Packit Service 95ac19
	for file in $SRCS; do
Packit Service 95ac19
		test -f $file || file=$srcdir/$file
Packit Service 95ac19
		v "$CC $CFLAGS $CPPFLAGS $emitbc $file" &
Packit Service 95ac19
	done
Packit Service 95ac19
	wait
Packit Service 95ac19
else
Packit Service 95ac19
	for file in $SRCS; do
Packit Service 95ac19
		test $cm = dragonegg && \
Packit Service 95ac19
		    op=`echo x"$file" | sed 's/^x\(.*\)\.c$/\1./'`
Packit Service 95ac19
		test -f $file || file=$srcdir/$file
Packit Service 95ac19
		v "$CC $CFLAGS $CPPFLAGS $emitbc $file" || exit 1
Packit Service 95ac19
		if test $cm = dragonegg; then
Packit Service 95ac19
			v "mv ${op}s ${op}ll"
Packit Service 95ac19
			v "llvm-as ${op}ll" || exit 1
Packit Service 95ac19
		fi
Packit Service 95ac19
	done
Packit Service 95ac19
fi
Packit Service 95ac19
case $cm in
Packit Service 95ac19
dragonegg|llvm)
Packit Service 95ac19
	rmf $tfn.s
Packit Service 95ac19
	v "llvm-link -o - $objs | opt $optflags | llc -o $tfn.s"
Packit Service 95ac19
	;;
Packit Service 95ac19
esac
Packit Service 95ac19
tcfn=$mkshexe
Packit Service 95ac19
test $cm = combine || v "$CC $CFLAGS $LDFLAGS -o $tcfn $lobjs $LIBS $ccpr"
Packit Service 95ac19
test -f $tcfn || exit 1
Packit Service 95ac19
test 1 = $r || v "$NROFF -mdoc <'$srcdir/lksh.1' >lksh.cat1" || rmf lksh.cat1
Packit Service 95ac19
test 1 = $r || v "$NROFF -mdoc <'$srcdir/mksh.1' >mksh.cat1" || rmf mksh.cat1
Packit Service 95ac19
test 0 = $eq && v $SIZE $tcfn
Packit Service 95ac19
i=install
Packit Service 95ac19
test -f /usr/ucb/$i && i=/usr/ucb/$i
Packit Service 95ac19
test 1 = $eq && e=:
Packit Service 95ac19
$e
Packit Service 95ac19
$e Installing the shell:
Packit Service 95ac19
$e "# $i -c -s -o root -g bin -m 555 $tfn /bin/$tfn"
Packit Service 95ac19
if test $legacy = 0; then
Packit Service 95ac19
	$e "# grep -x /bin/$tfn /etc/shells >/dev/null || echo /bin/$tfn >>/etc/shells"
Packit Service 95ac19
	$e "# $i -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/"
Packit Service 95ac19
fi
Packit Service 95ac19
$e
Packit Service 95ac19
$e Installing the manual:
Packit Service 95ac19
if test -f mksh.cat1; then
Packit Service 95ac19
	$e "# $i -c -o root -g bin -m 444 lksh.cat1" \
Packit Service 95ac19
	    "/usr/share/man/cat1/lksh.0"
Packit Service 95ac19
	$e "# $i -c -o root -g bin -m 444 mksh.cat1" \
Packit Service 95ac19
	    "/usr/share/man/cat1/mksh.0"
Packit Service 95ac19
	$e or
Packit Service 95ac19
fi
Packit Service 95ac19
$e "# $i -c -o root -g bin -m 444 lksh.1 mksh.1 /usr/share/man/man1/"
Packit Service 95ac19
$e
Packit Service 95ac19
$e Run the regression test suite: ./test.sh
Packit Service 95ac19
$e Please also read the sample file dot.mkshrc and the fine manual.
Packit Service 95ac19
exit 0
Packit Service 95ac19
Packit Service 95ac19
: <<'EOD'
Packit Service 95ac19
Packit Service 95ac19
=== Environment used ===
Packit Service 95ac19
Packit Service 95ac19
==== build environment ====
Packit Service 95ac19
AWK				default: awk
Packit Service 95ac19
CC				default: cc
Packit Service 95ac19
CFLAGS				if empty, defaults to -xO2 or +O2
Packit Service 95ac19
				or -O3 -qstrict or -O2, per compiler
Packit Service 95ac19
CPPFLAGS			default empty
Packit Service 95ac19
LDFLAGS				default empty; added before sources
Packit Service 95ac19
LDSTATIC			set this to '-static'; default unset
Packit Service 95ac19
LIBS				default empty; added after sources
Packit Service 95ac19
				[Interix] default: -lcrypt (XXX still needed?)
Packit Service 95ac19
NOWARN				-Wno-error or similar
Packit Service 95ac19
NROFF				default: nroff
Packit Service 95ac19
TARGET_OS			default: $(uname -s || uname)
Packit Service 95ac19
TARGET_OSREV			[QNX] default: $(uname -r)
Packit Service 95ac19
Packit Service 95ac19
==== feature selectors ====
Packit Service 95ac19
USE_PRINTF_BUILTIN		1 to include (unsupported) printf(1) as builtin
Packit Service 95ac19
===== general format =====
Packit Service 95ac19
HAVE_STRLEN			ac_test
Packit Service 95ac19
HAVE_STRING_H			ac_header
Packit Service 95ac19
HAVE_CAN_FSTACKPROTECTORALL	ac_flags
Packit Service 95ac19
Packit Service 95ac19
==== cpp definitions ====
Packit Service 95ac19
DEBUG				dont use in production, wants gcc, implies:
Packit Service 95ac19
DEBUG_LEAKS			enable freeing resources before exiting
Packit Service 95ac19
MKSHRC_PATH			"~/.mkshrc" (do not change)
Packit Service 95ac19
MKSH_A4PB			force use of arc4random_pushb
Packit Service 95ac19
MKSH_ASSUME_UTF8		(0=disabled, 1=enabled; default: unset)
Packit Service 95ac19
MKSH_BINSHPOSIX			if */sh or */-sh, enable set -o posix
Packit Service 95ac19
MKSH_BINSHREDUCED		if */sh or */-sh, enable set -o sh
Packit Service 95ac19
MKSH_CLS_STRING			KSH_ESC_STRING "[;H" KSH_ESC_STRING "[J"
Packit Service 95ac19
MKSH_DEFAULT_EXECSHELL		"/bin/sh" (do not change)
Packit Service 95ac19
MKSH_DEFAULT_PROFILEDIR		"/etc" (do not change)
Packit Service 95ac19
MKSH_DEFAULT_TMPDIR		"/tmp" (do not change)
Packit Service 95ac19
MKSH_DISABLE_DEPRECATED		disable code paths scheduled for later removal
Packit Service 95ac19
MKSH_DISABLE_EXPERIMENTAL	disable code not yet comfy for (LTS) snapshots
Packit Service 95ac19
MKSH_DISABLE_TTY_WARNING	shut up warning about ctty if OS cant be fixed
Packit Service 95ac19
MKSH_DONT_EMIT_IDSTRING		omit RCS IDs from binary
Packit Service 95ac19
MKSH_EARLY_LOCALE_TRACKING	track utf8-mode from POSIX locale, for SuSE
Packit Service 95ac19
MKSH_MIDNIGHTBSD01ASH_COMPAT	set -o sh: additional compatibility quirk
Packit Service 95ac19
MKSH_NOPROSPECTOFWORK		disable jobs, co-processes, etc. (do not use)
Packit Service 95ac19
MKSH_NOPWNAM			skip PAM calls, for -static on glibc or Solaris
Packit Service 95ac19
MKSH_NO_CMDLINE_EDITING		disable command line editing code entirely
Packit Service 95ac19
MKSH_NO_DEPRECATED_WARNING	omit warning when deprecated stuff is run
Packit Service 95ac19
MKSH_NO_LIMITS			omit ulimit code
Packit Service 95ac19
MKSH_NO_SIGSETJMP		define if sigsetjmp is broken or not available
Packit Service 95ac19
MKSH_NO_SIGSUSPEND		use sigprocmask+pause instead of sigsuspend
Packit Service 95ac19
MKSH_SMALL			omit some code, optimise hard for size (slower)
Packit Service 95ac19
MKSH_SMALL_BUT_FAST		disable some hard-for-size optim. (modern sys.)
Packit Service 95ac19
MKSH_S_NOVI=1			disable Vi editing mode (default if MKSH_SMALL)
Packit Service 95ac19
MKSH_TYPEDEF_SIG_ATOMIC_T	define to e.g. 'int' if sig_atomic_t is missing
Packit Service 95ac19
MKSH_TYPEDEF_SSIZE_T		define to e.g. 'long' if your OS has no ssize_t
Packit Service 95ac19
MKSH_UNEMPLOYED			disable job control (but not jobs/co-processes)
Packit Service 95ac19
Packit Service 95ac19
=== generic installation instructions ===
Packit Service 95ac19
Packit Service 95ac19
Set CC and possibly CFLAGS, CPPFLAGS, LDFLAGS, LIBS. If cross-compiling,
Packit Service 95ac19
also set TARGET_OS. To disable tests, set e.g. HAVE_STRLCPY=0; to enable
Packit Service 95ac19
them, set to a value other than 0 or 1. Ensure /bin/ed is installed. For
Packit Service 95ac19
MKSH_SMALL but with Vi mode, add -DMKSH_S_NOVI=0 to CPPFLAGS as well.
Packit Service 95ac19
Packit Service 95ac19
Normally, the following command is what you want to run, then:
Packit Service 95ac19
$ (sh Build.sh -r -c lto && ./test.sh -f) 2>&1 | tee log
Packit Service 95ac19
Packit Service 95ac19
Copy dot.mkshrc to /etc/skel/.mkshrc; install mksh into $prefix/bin; or
Packit Service 95ac19
/bin; install the manpage, if omitting the -r flag a catmanpage is made
Packit Service 95ac19
using $NROFF. Consider using a forward script as /etc/skel/.mkshrc like
Packit Service 95ac19
http://anonscm.debian.org/cgit/collab-maint/mksh.git/plain/debian/.mkshrc
Packit Service 95ac19
and put dot.mkshrc as /etc/mkshrc so users need not keep up their HOME.
Packit Service 95ac19
Packit Service 95ac19
You may also want to install the lksh binary (also as /bin/sh) built by:
Packit Service 95ac19
$ CPPFLAGS="$CPPFLAGS -DMKSH_BINSHPOSIX" sh Build.sh -L -r -c lto
Packit Service 95ac19
Packit Service 95ac19
EOD