15155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#!/bin/sh 2811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasersrcversion='$MirOS: src/bin/mksh/Build.sh,v 1.645 2013/08/10 13:44:25 tg Exp $' 35155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#- 4c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 5c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# 2011, 2012, 2013 65155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Thorsten Glaser <tg@mirbsd.org> 75155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 85155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Provided that these terms and disclaimer and all copyright notices 95155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# are retained or reproduced in an accompanying document, permission 105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# is granted to deal in this work without restriction, including un- 115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# limited rights to use, publicly perform, distribute, sell, modify, 125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# merge, give away, or sublicence. 135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to 155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# the utmost extent permitted by applicable law, neither express nor 165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# implied; without malicious intent or gross negligence. In no event 175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# may a licensor, author or contributor be held liable for indirect, 185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# direct, other damage, loss, or other issues arising in any way out 195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# of dealing in the work, even if advised of the possibility of such 205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# damage or existence of a defect, except proven that it results out 215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# of said person's immediate fault when using the work as intended. 225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#- 235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# People analysing the output must whitelist conftest.c for any kind 245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# of compiler warning checks (mirtoconf is by design not quiet). 255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 26c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# Used environment documentation is at the end of this file. 275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruLC_ALL=C 295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruexport LC_ALL 305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 31811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserecho "For the build logs, demonstrate that /dev/null and /dev/tty exist:" 32811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserls -l /dev/null /dev/tty 33811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser 34c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercase $ZSH_VERSION:$VERSION in 35c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser:zsh*) ZSH_VERSION=2 ;; 36c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseresac 37c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 38c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test -n "${ZSH_VERSION+x}" && (emulate sh) >/dev/null 2>&1; then 39c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser emulate sh 40c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser NULLCMD=: 41c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 42c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 43c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test -d /usr/xpg4/bin/. >/dev/null 2>&1; then 44c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # Solaris: some of the tools have weird behaviour, use portable ones 45c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser PATH=/usr/xpg4/bin:$PATH 46c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser export PATH 47c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 48c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruv() { 505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e "$*" 515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval "$@" 525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruvv() { 555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru _c=$1 565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e "\$ $*" 2>&1 585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval "$@" >vv.out 2>&1 595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru sed "s^${_c} " <vv.out 605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruvq() { 635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval "$@" 645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 655155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurmf() { 675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for _f in "$@"; do 68c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $_f in 69811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser Build.sh|check.pl|check.t|dot.mkshrc|*.c|*.h|*.ico|*.1) ;; 70c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *) rm -f "$_f" ;; 715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruallu=QWERTYUIOPASDFGHJKLZXCVBNM 765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querualll=qwertyuiopasdfghjklzxcvbnm 775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querualln=0123456789 785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querualls=______________________________________________________________ 795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querunl=' 805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru' 815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutcfn=no 825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querubi= 835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruui= 845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruao= 855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufx= 865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querume=`basename "$0"` 875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruorig_CFLAGS=$CFLAGS 885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruphase=x 895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruoldish_ed=stdout-ed,no-stderr-ed 905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test -t 1; then 925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru bi='[1m' 935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ui='[4m' 945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ao='[0m' 955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruupper() { 985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo :"$@" | sed 's/^://' | tr $alll $allu 995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 1005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# clean up after ac_testrun() 1025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testdone() { 1035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval HAVE_$fu=$fv 1045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fr=no 1055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 0 = $fv || fr=yes 1065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e "$bi==> $fd...$ao $ui$fr$ao$fx" 1075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fx= 1085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 1095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# ac_cache label: sets f, fu, fv?=0 1115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_cache() { 1125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru f=$1 1135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fu=`upper $f` 1145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval fv=\$HAVE_$fu 1155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru case $fv in 1165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 0|1) 1175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fx=' (cached)' 1185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return 0 1195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 1205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 1215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fv=0 1225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return 1 1235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 1245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# ac_testinit label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput 1265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# returns 1 if value was cached/implied, 0 otherwise: call ac_testdone 1275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testinit() { 1285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if ac_cache $1; then 1295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$2" = x"!" && shift 1305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$2" = x"" || shift 1315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fd=${3-$f} 1325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testdone 1335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return 1 1345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 1355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fc=0 1365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test x"$2" = x""; then 1375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ft=1 1385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 1395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test x"$2" = x"!"; then 1405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fc=1 1415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 1425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 1435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval ft=\$HAVE_`upper $2` 1445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 1455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 1465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fd=${3-$f} 1475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test $fc = "$ft"; then 1485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fv=$2 1495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fx=' (implied)' 1505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testdone 1515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return 1 1525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 1535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e ... $fd 1545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return 0 1555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 1565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# pipe .c | ac_test[n] [!] label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput 158c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_testnnd() { 1595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test x"$1" = x"!"; then 1605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fr=1 1615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 1625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 1635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fr=0 1645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 165c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testinit "$@" || return 1 1665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cat >conftest.c 1675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv ']' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN conftest.c $LIBS $ccpr" 1685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $tcfn = no && test -f a.out && tcfn=a.out 1695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $tcfn = no && test -f a.exe && tcfn=a.exe 1705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $tcfn = no && test -f conftest && tcfn=conftest 1715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test -f $tcfn; then 1725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $fr || fv=1 1735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 1745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 0 = $fr || fv=1 1755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 1765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vscan= 1775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test $phase = u; then 1785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $ct = gcc && vscan='unrecogni[sz]ed' 1795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $ct = hpcc && vscan='unsupported' 1805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $ct = pcc && vscan='unsupported' 1815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $ct = sunpro && vscan='-e ignored -e turned.off' 1825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 1835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test -n "$vscan" && grep $vscan vv.out >/dev/null 2>&1 && fv=$fr 184c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser return 0 185c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser} 186c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_testn() { 187c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testnnd "$@" || return 1885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru rmf conftest.c conftest.o ${tcfn}* vv.out 1895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testdone 1905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 1915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# ac_ifcpp cppexpr [!] label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput 1935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_ifcpp() { 1945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru expr=$1; shift 1955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn "$@" <<-EOF 196811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser extern int thiswillneverbedefinedIhope(void); 1975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return ( 1985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #$expr 1995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 0 2005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #else 2015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru /* force a failure: expr is false */ 2025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru thiswillneverbedefinedIhope() 2035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 2045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ); } 2055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 2065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$1" = x"!" && shift 2075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru f=$1 2085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fu=`upper $f` 2095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval fv=\$HAVE_$fu 2105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$fv" = x"1" 2115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 2125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 21303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraadd_cppflags() { 21403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra CPPFLAGS="$CPPFLAGS $*" 21503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra} 21603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 2175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_cppflags() { 2185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$1" = x"" || fu=$1 2195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fv=$2 2205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$2" = x"" && eval fv=\$HAVE_$fu 22103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DHAVE_$fu=$fv 2225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 2235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 2245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test() { 2255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn "$@" 2265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_cppflags 2275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 2285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 22903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra# ac_flags [-] add varname cflags [text] [ldflags] 2305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_flags() { 2315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test x"$1" = x"-"; then 2325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 2335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru hf=1 2345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 2355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru hf=0 2365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 2375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fa=$1 2385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vn=$2 2395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru f=$3 2405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ft=$4 24103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fl=$5 2425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$ft" = x"" && ft="if $f can be used" 2435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_CFLAGS=$CFLAGS 2445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CFLAGS="$CFLAGS $f" 24503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra if test -n "$fl"; then 24603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra save_LDFLAGS=$LDFLAGS 24703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra LDFLAGS="$LDFLAGS $fl" 24803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fi 2495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test 1 = $hf; then 2505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn can_$vn '' "$ft" 2515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 2525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn can_$vn '' "$ft" <<-'EOF' 2535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru /* evil apo'stroph in comment test */ 2545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (0); } 2555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru EOF 2565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 2575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval fv=\$HAVE_CAN_`upper $vn` 25803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra if test -n "$fl"; then 25903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra test 11 = $fa$fv || LDFLAGS=$save_LDFLAGS 26003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fi 2615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 11 = $fa$fv || CFLAGS=$save_CFLAGS 2625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 2635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 2645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# ac_header [!] header [prereq ...] 2655155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header() { 2665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test x"$1" = x"!"; then 2675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru na=1 2685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 2695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 2705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru na=0 2715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 2725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru hf=$1; shift 2735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru hv=`echo "$hf" | tr -d '\012\015' | tr -c $alll$allu$alln $alls` 274c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo "/* NeXTstep bug workaround */" >x 2755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for i 2765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru do 277c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $i in 278c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser _time) 279c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#if HAVE_BOTH_TIME_H' >>x 280c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#include <sys/time.h>' >>x 281c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#include <time.h>' >>x 282c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#elif HAVE_SYS_TIME_H' >>x 283c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#include <sys/time.h>' >>x 284c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#elif HAVE_TIME_H' >>x 285c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#include <time.h>' >>x 286c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo '#endif' >>x 287c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 288c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *) 289c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo "#include <$i>" >>x 290c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 291c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 2925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 2935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "#include <$hf>" >>x 2945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo 'int main(void) { return (0); }' >>x 2955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn "$hv" "" "<$hf>" <x 2965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru rmf x 2975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $na || ac_cppflags 2985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 2995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 3005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddsrcs() { 301c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser addsrcs_s=0 302c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if test x"$1" = x"-s"; then 303c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # optstatic 304c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser addsrcs_s=1 305c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser shift 306c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 3075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test x"$1" = x"!"; then 3085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fr=0 3095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru shift 3105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 3115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fr=1 3125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 3135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eval i=\$$1 314c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if test $addsrcs_s = 1; then 315c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if test -f "$2" || test -f "$srcdir/$2"; then 316c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # always add $2, since it exists 317c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fr=1 318c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser i=1 319c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 320c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 3215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $fr = "$i" && case " $SRCS " in 3225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru *\ $2\ *) ;; 3235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru *) SRCS="$SRCS $2" ;; 3245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 3255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru} 3265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 3275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 328c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercurdir=`pwd` srcdir=`dirname "$0" 2>/dev/null` check_categories= 329c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertest -n "$srcdir" || srcdir=. # in case dirname does not exist 330c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserdstversion=`sed -n '/define MKSH_VERSION/s/^.*"\([^"]*\)".*$/\1/p' $srcdir/sh.h` 331c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseradd_cppflags -DMKSH_BUILDSH 3325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 3335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querue=echo 3345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querur=0 3355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querueq=0 3365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querupm=0 3375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucm=normal 3385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruoptflags=-std-compile-opts 3395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querulast= 340c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertfn= 341c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserlegacy=0 3425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 3435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufor i 3445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudo 3455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru case $last:$i in 34603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra c:combine|c:dragonegg|c:llvm|c:lto) 3475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cm=$i 3485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru last= 3495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru c:*) 3515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "$me: Unknown option -c '$i'!" >&2 3525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 1 3535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru o:*) 3555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru optflags=$i 3565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru last= 3575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 358c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser t:*) 359c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser tfn=$i 360c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser last= 361c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 3625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-c) 3635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru last=c 3645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3655155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-g) 3665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru # checker, debug, valgrind build 36703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DDEBUG 3685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CFLAGS="$CFLAGS -g3 -fno-builtin" 3695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-j) 3715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru pm=1 3725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 373c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser :-L) 374c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser legacy=1 375c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 376c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser :+L) 377c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser legacy=0 378c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 3795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-M) 3805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cm=makefile 3815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-O) 3835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru optflags=-std-compile-opts 3845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-o) 3865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru last=o 3875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-Q) 3895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru eq=1 3905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 3915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-r) 3925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru r=1 3935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 394c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser :-t) 395c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser last=t 396c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 3975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :-v) 3985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "Build.sh $srcversion" 3995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "for mksh $dstversion" 4005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 0 4015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 4025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :*) 4035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "$me: Unknown option '$i'!" >&2 4045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 1 4055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 4065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru *) 4075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "$me: Unknown option -'$last' '$i'!" >&2 4085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 1 4095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 4105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 4115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudone 4125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test -n "$last"; then 4135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "$me: Option -'$last' not followed by argument!" >&2 4145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 1 4155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 4165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 417c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertest -z "$tfn" && if test $legacy = 0; then 418c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser tfn=mksh 419c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserelse 420c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser tfn=lksh 421c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 422c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test -d $tfn || test -d $tfn.exe; then 423c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo "$me: Error: ./$tfn is a directory!" >&2 424c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser exit 1 425c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 426c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserrmf a.exe* a.out* conftest.c *core core.* lft ${tfn}* no *.bc *.ll *.o \ 427c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser Rebuild.sh signames.inc test.sh x vv.out 428c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 429c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserSRCS="lalloc.c eval.c exec.c expr.c funcs.c histrap.c jobs.c" 430c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserSRCS="$SRCS lex.c main.c misc.c shf.c syn.c tree.c var.c" 431c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 432c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test $legacy = 0; then 433c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser SRCS="$SRCS edit.c" 434c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser check_categories="$check_categories shell:legacy-no int:32" 435c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserelse 436c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser check_categories="$check_categories shell:legacy-yes" 437c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_LEGACY_MODE 438c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser HAVE_PERSISTENT_HISTORY=0 439c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser HAVE_ISSET_MKSH_CONSERVATIVE_FDS=1 # from sh.h 440c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 4415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 4425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test x"$srcdir" = x"."; then 4435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CPPFLAGS="-I. $CPPFLAGS" 4445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruelse 4455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CPPFLAGS="-I. -I'$srcdir' $CPPFLAGS" 4465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 447c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertest -n "$LDSTATIC" && if test -n "$LDFLAGS"; then 448c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser LDFLAGS="$LDFLAGS $LDSTATIC" 449c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserelse 450c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser LDFLAGS=$LDSTATIC 451c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 4525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 453c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test -z "$TARGET_OS"; then 454c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser x=`uname -s 2>/dev/null || uname` 455c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test x"$x" = x"`uname -n 2>/dev/null`" || TARGET_OS=$x 456c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 457c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test -z "$TARGET_OS"; then 45803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra echo "$me: Set TARGET_OS, your uname is broken!" >&2 45903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra exit 1 46003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condrafi 4615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruoswarn= 4625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruccpc=-Wc, 4635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruccpl=-Wl, 4645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutsts= 465811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserccpr='|| for _f in ${tcfn}*; do case $_f in Build.sh|check.pl|check.t|dot.mkshrc|*.c|*.h|*.ico|*.1) ;; *) rm -f "$_f" ;; esac; done' 4665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 46703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra# Evil hack 46803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraif test x"$TARGET_OS" = x"Android"; then 46903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories android" 47003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra TARGET_OS=Linux 47103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condrafi 47203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 473c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# Evil OS 474c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test x"$TARGET_OS" = x"Minix"; then 475c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo >&2 " 476c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserWARNING: additional checks before running Build.sh required! 477c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserYou can avoid these by calling Build.sh correctly, see below. 478c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser" 479c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cat >conftest.c <<'EOF' 480c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#include <sys/types.h> 481c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserconst char * 482c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#ifdef _NETBSD_SOURCE 483c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="Ninix3" 484c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#else 485c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="Minix3" 486c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#endif 487c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser; 488c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 489c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ct=unknown 490c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv ']' "${CC-cc} -E $CFLAGS $CPPFLAGS $NOWARN conftest.c | grep ct= | tr -d \\\\015 >x" 491c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sed 's/^/[ /' x 492c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser eval `cat x` 493c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rmf x vv.out 494c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $ct in 495c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser Minix3|Ninix3) 496c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo >&2 " 497c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserWarning: you set TARGET_OS to $TARGET_OS but that is ambiguous. 498c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserPlease set it to either Minix3 or Ninix3, whereas the latter is 499c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserall versions of Minix with even partial NetBSD(R) userland. The 500c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaservalue determined from your compiler for the current compilation 501c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser(which may be wrong) is: $ct 502c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser" 503c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser TARGET_OS=$ct 504c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 505c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *) 506c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo >&2 " 507c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserWarning: you set TARGET_OS to $TARGET_OS but that is ambiguous. 508c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserPlease set it to either Minix3 or Ninix3, whereas the latter is 509c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserall versions of Minix with even partial NetBSD(R) userland. The 510c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserproper value couldn't be determined, continue at your own risk. 511c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser" 512c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 513c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 514c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 515c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 5165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Configuration depending on OS revision, on OSes that need them 5175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $TARGET_OS in 518c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserNEXTSTEP) 519c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`hostinfo 2>&1 | \ 520c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser grep 'NeXT Mach [0-9][0-9.]*:' | \ 521c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sed 's/^.*NeXT Mach \([0-9][0-9.]*\):.*$/\1/'` 522c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 523c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserQNX|SCO_SV) 5245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r` 5255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 5275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 5285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Configuration depending on OS name 5295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $TARGET_OS in 530c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser386BSD) 531c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_CAN_OTWO=0} 532c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_SIGSETJMP 533c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_TYPEDEF_SIG_ATOMIC_T=int 534c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 535c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 5365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruAIX) 53703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_ALL_SOURCE 5385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 5395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruBeOS) 541c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $KSH_VERSION in 542c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *MIRBSD\ KSH*) 543c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; it has minor issues" 544c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 545c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *) 546c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; you must recompile mksh with" 547c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="$oswarn${nl}itself in a second stage" 548c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 549c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 550c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # BeOS has no real tty either 551c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_UNEMPLOYED 552c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_DISABLE_TTY_WARNING 553c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # BeOS doesn't have different UIDs and GIDs 554c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH__NO_SETEUGID 5555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruBSD/OS) 5575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 5585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 559c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserCoherent) 560c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; it has major issues" 561c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH__NO_SYMLINK 562c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser check_categories="$check_categories nosymlink" 563c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH__NO_SETEUGID 564c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 565c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_DISABLE_TTY_WARNING 566c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 5675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCYGWIN*) 5685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 5695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruDarwin) 571c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -D_DARWIN_C_SOURCE 5725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruDragonFly) 5745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruFreeBSD) 5765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 57703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy CondraFreeMiNT) 57803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra oswarn="; it has minor issues" 57903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_GNU_SOURCE 580c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 58103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra : ${HAVE_SETLOCALE_CTYPE=0} 58203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra ;; 5835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruGNU) 58403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra case $CC in 58503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *tendracc*) ;; 58603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *) add_cppflags -D_GNU_SOURCE ;; 58703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra esac 588c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # define MKSH__NO_PATH_MAX to use Hurd-only functions 589c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH__NO_PATH_MAX 5905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruGNU/kFreeBSD) 59203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra case $CC in 59303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *tendracc*) ;; 59403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *) add_cppflags -D_GNU_SOURCE ;; 59503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra esac 5965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 5975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHaiku) 598c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_ASSUME_UTF8; HAVE_ISSET_MKSH_ASSUME_UTF8=1 5995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHP-UX) 6015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruInterix) 6035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ccpc='-X ' 6045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ccpl='-Y ' 60503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_ALL_SOURCE 6065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${LIBS='-lcrypt'} 6075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 6085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruIRIX*) 6105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 6115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruLinux) 61303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra case $CC in 61403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *tendracc*) ;; 61503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *) add_cppflags -D_GNU_SOURCE ;; 61603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra esac 61703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DSETUID_CAN_FAIL_WITH_EAGAIN 6185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_REVOKE=0} 6195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 620c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserLynxOS) 621c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; it has minor issues" 622c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 6235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruMidnightBSD) 6245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 625c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMinix-vmd) 626c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH__NO_SETEUGID 627c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_UNEMPLOYED 628c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 629c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -D_MINIX_SOURCE 630c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oldish_ed=no-stderr-ed # no /bin/ed, maybe see below 631c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_SETLOCALE_CTYPE=0} 632c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 633c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMinix3) 63403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DMKSH_UNEMPLOYED 63503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DMKSH_CONSERVATIVE_FDS 63603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DMKSH_NO_LIMITS 63703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_POSIX_SOURCE -D_POSIX_1_SOURCE=2 -D_MINIX 6385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oldish_ed=no-stderr-ed # /usr/bin/ed(!) is broken 6395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 6405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruMirBSD) 6425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 64303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy CondraMSYS_*) 644c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_ASSUME_UTF8=0; HAVE_ISSET_MKSH_ASSUME_UTF8=1 645c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # almost same as CYGWIN* (from RT|Chatzilla) 646c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_SETLOCALE_CTYPE=0} 647c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # broken on this OE (from ir0nh34d) 648c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_STDINT_H=0} 64903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra ;; 6505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNetBSD) 6515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 652c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserNEXTSTEP) 653c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -D_NEXT_SOURCE 654c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -D_POSIX_SOURCE 655c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${AWK=gawk} ${CC=cc -posix} 656c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_SIGSETJMP 657c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # NeXTstep cannot get a controlling tty 658c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_UNEMPLOYED 659c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $TARGET_OSREV in 660c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 4.2*) 661c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # OpenStep 4.2 is broken by default 662c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; it needs libposix.a" 663c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 664c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 665c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 666c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 667c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserNinix3) 668c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # similar to Minix3 669c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_UNEMPLOYED 670c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 671c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_LIMITS 672c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # but no idea what else could be needed 673c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; it has unknown issues" 674c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 6755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruOpenBSD) 6765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 6775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruOSF1) 6795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru HAVE_SIG_T=0 # incompatible 68003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_OSF_SOURCE 68103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_POSIX_C_SOURCE=200112L 68203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_XOPEN_SOURCE=600 68303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_XOPEN_SOURCE_EXTENDED 6845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 6855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruPlan9) 68703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_POSIX_SOURCE 68803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_LIMITS_EXTENSION 68903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_BSD_EXTENSION 69003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_SUSV2_SOURCE 691c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_ASSUME_UTF8; HAVE_ISSET_MKSH_ASSUME_UTF8=1 692c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_CMDLINE_EDITING 693811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser add_cppflags -DMKSH__NO_SETEUGID 6945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oswarn=' and will currently not work' 69503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -DMKSH_UNEMPLOYED 696811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser # this is for detecting kencc 697811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser add_cppflags -DMKSH_MAYBE_KENCC 6985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 6995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruPW32*) 7005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru HAVE_SIG_T=0 # incompatible 7015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oswarn=' and will currently not work' 7025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 7035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruQNX) 70503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D__NO_EXT_QNX 706c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -D__EXT_UNIX_MISC 7075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru case $TARGET_OSREV in 7085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru [012345].*|6.[0123].*|6.4.[01]) 7095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oldish_ed=no-stderr-ed # oldish /bin/ed is broken 7105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 7125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 7135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 714c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserSCO_SV) 715c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $TARGET_OSREV in 716c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 3.2*) 717c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # SCO OpenServer 5 718c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_UNEMPLOYED 719c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 720c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 5*) 721c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # SCO OpenServer 6 722c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 723c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *) 724c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn='; this is an unknown version of' 725c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="$oswarn$nl$TARGET_OS ${TARGET_OSREV}, please tell me what to do" 726c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 727c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 728c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 729c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_SYS_SIGLIST=0} ${HAVE__SYS_SIGLIST=0} 730c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 731c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserskyos) 732c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn="; it has minor issues" 733c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 7345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruSunOS) 73503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_BSD_SOURCE 73603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D__EXTENSIONS__ 7375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusyllable) 73903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_GNU_SOURCE 740c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_SIGSUSPEND 7415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oswarn=' and will currently not work' 7425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruULTRIX) 7445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${CC=cc -YPOSIX} 745c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_TYPEDEF_SSIZE_T=int 746c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 7475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 7485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 749c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserUnixWare|UNIX_SV) 750c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # SCO UnixWare 751c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_CONSERVATIVE_FDS 752c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_SYS_SIGLIST=0} ${HAVE__SYS_SIGLIST=0} 753c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 7545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruUWIN*) 7555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ccpc='-Yc,' 7565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ccpl='-Yl,' 7575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru tsts=" 3<>/dev/tty" 7585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oswarn="; it will compile, but the target" 7595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oswarn="$oswarn${nl}platform itself is very flakey/unreliable" 7605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_SETLOCALE_CTYPE=0} 7615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 762c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser_svr4) 763c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # generic target for SVR4 Unix with uname -s = uname -n 764c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # this duplicates the * target below 765c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser oswarn='; it may or may not work' 766c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r` 767c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 7685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru*) 7695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru oswarn='; it may or may not work' 770c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r` 7715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 7735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 77403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra: ${HAVE_MKNOD=0} 77503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 776811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser: ${AWK=awk} ${CC=cc} ${NROFF=nroff} ${SIZE=size} 7775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest 0 = $r && echo | $NROFF -v 2>&1 | grep GNU >/dev/null 2>&1 && \ 7785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru NROFF="$NROFF -c" 7795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 7805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# this aids me in tracing FTBFSen without access to the buildd 7815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e "Hi from$ao $bi$srcversion$ao on:" 7825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $TARGET_OS in 78303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy CondraAIX) 78403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra vv '|' "oslevel >&2" 78503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra vv '|' "uname -a >&2" 78603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra ;; 7875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruDarwin) 7885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "hwprefs machine_type os_type os_class >&2" 7895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "uname -a >&2" 7905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruIRIX*) 7925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "uname -a >&2" 7935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "hinv -v >&2" 7945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 7955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruOSF1) 7965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "uname -a >&2" 7975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "/usr/sbin/sizer -v >&2" 7985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 799c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserSCO_SV|UnixWare|UNIX_SV) 800c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "uname -a >&2" 801c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "uname -X >&2" 802c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 8035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru*) 8045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "uname -a >&2" 8055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 8065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 8075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest -z "$oswarn" || echo >&2 " 8085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruWarning: mksh has not yet been ported to or tested on your 8095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruoperating system '$TARGET_OS'$oswarn. If you can provide 8105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querua shell account to the developer, this may improve; please 8115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudrop us a success or failure notice or even send in diffs. 8125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru" 813c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser$e "$bi$me: Building the MirBSD Korn Shell$ao $ui$dstversion$ao on $TARGET_OS ${TARGET_OSREV}..." 8145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 8155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 8165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Begin of mirtoconf checks 8175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 8185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e $bi$me: Scanning for functions... please ignore any errors.$ao 8195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 8205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 8215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Compiler: which one? 8225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 8235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# notes: 8245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# - ICC defines __GNUC__ too 8255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# - GCC defines __hpux too 8265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# - LLVM+clang defines __GNUC__ too 8275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# - nwcc defines __GNUC__ too 8285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCPP="$CC -E" 8295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e ... which compiler seems to be used 8305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucat >conftest.c <<'EOF' 831c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserconst char * 8325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#if defined(__ICC) || defined(__INTEL_COMPILER) 833c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="icc" 8345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__xlC__) || defined(__IBMC__) 835c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="xlc" 8365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__SUNPRO_C) 837c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="sunpro" 8385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__ACK__) 839c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="ack" 8405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__BORLANDC__) 841c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="bcc" 8425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__WATCOMC__) 843c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="watcom" 8445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__MWERKS__) 845c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="metrowerks" 8465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__HP_cc) 847c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="hpcc" 8485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__DECC) || (defined(__osf__) && !defined(__GNUC__)) 849c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="dec" 8505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__PGI) 851c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="pgi" 8525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__DMC__) 853c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="dmc" 8545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(_MSC_VER) 855c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="msc" 8565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) 857c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="adsp" 8585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__IAR_SYSTEMS_ICC__) 859c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="iar" 8605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(SDCC) 861c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="sdcc" 8625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__PCC__) 863c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="pcc" 8645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__TenDRA__) 865c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="tendra" 8665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__TINYC__) 867c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="tcc" 8685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__llvm__) && defined(__clang__) 869c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="clang" 8705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__NWCC__) 871c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="nwcc" 8725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__GNUC__) 873c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="gcc" 8745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(_COMPILER_VERSION) 875c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="mipspro" 8765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__sgi) 877c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="mipspro" 8785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__hpux) || defined(__hpua) 879c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="hpcc" 8805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(__ultrix) 881c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="ucode" 882c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#elif defined(__USLC__) 883c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="uslc" 884c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#elif defined(__LCC__) 885c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="lcc" 886811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser#elif defined(MKSH_MAYBE_KENCC) 887811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser/* and none of the above matches */ 888811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserct="kencc" 889c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#else 890c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct="unknown" 891c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#endif 892c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser; 893c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserconst char * 894c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#if defined(__KLIBC__) 895c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseret="klibc" 8965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#else 897c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseret="unknown" 8985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#endif 899c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser; 9005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 901c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserct=untested 902c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseret=untested 903c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaservv ']' "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c | \ 904c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sed -n '/^ *[ce]t *= */s/^ *\([ce]t\) *= */\1=/p' | tr -d \\\\015 >x" 9055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querused 's/^/[ /' x 9065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querueval `cat x` 9075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurmf x vv.out 9085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruecho 'int main(void) { return (0); }' >conftest.c 9095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $ct in 9105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruack) 9115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru # work around "the famous ACK const bug" 9125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CPPFLAGS="-Dconst= $CPPFLAGS" 9135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruadsp) 9155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 'Warning: Analog Devices C++ compiler for Blackfin, TigerSHARC 9165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru and SHARC (21000) DSPs detected. This compiler has not yet 9175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru been tested for compatibility with mksh. Continue at your 9185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru own risk, please report success/failure to the developers.' 9195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querubcc) 9215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 "Warning: Borland C++ Builder detected. This compiler might 9225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru produce broken executables. Continue at your own risk, 9235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru please report success/failure to the developers." 9245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruclang) 9265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru # does not work with current "ccc" compiler driver 9275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version" 928c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # one of these two works, for now 9295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "${CLANG-clang} -version" 930c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "${CLANG-clang} --version" 9315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru # ensure compiler and linker are in sync unless overridden 9325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru case $CCC_CC:$CCC_LD in 9335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru :*) ;; 9345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru *:) CCC_LD=$CCC_CC; export CCC_LD ;; 9355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 9365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudec) 9385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V" 9395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -Wl,-V conftest.c $LIBS" 9405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudmc) 9425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 "Warning: Digital Mars Compiler detected. When running under" 9435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 " UWIN, mksh tends to be unstable due to the limitations" 9445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 " of this platform. Continue at your own risk," 9455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 " please report success/failure to the developers." 9465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querugcc) 9485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS" 9495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' 'echo `$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS \ 9505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru -dumpmachine` gcc`$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN \ 9515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $LIBS -dumpversion`' 9525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruhpcc) 9545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS" 9555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruiar) 9575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 'Warning: IAR Systems (http://www.iar.com) compiler for embedded 9585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru systems detected. This unsupported compiler has not yet 9595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru been tested for compatibility with mksh. Continue at your 9605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru own risk, please report success/failure to the developers.' 9615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruicc) 9635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V" 9645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 965811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserkencc) 966811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS" 967811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 968c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserlcc) 969c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS" 970c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -D__inline__=__inline 971c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 9725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querumetrowerks) 9735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 'Warning: Metrowerks C compiler detected. This has not yet 9745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru been tested for compatibility with mksh. Continue at your 9755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru own risk, please report success/failure to the developers.' 9765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querumipspro) 9785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version" 9795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querumsc) 9815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ccpr= # errorlevels are not reliable 9825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru case $TARGET_OS in 9835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru Interix) 9845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if [[ -n $C89_COMPILER ]]; then 9855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru C89_COMPILER=`ntpath2posix -c "$C89_COMPILER"` 9865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 9875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru C89_COMPILER=CL.EXE 9885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 9895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if [[ -n $C89_LINKER ]]; then 9905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru C89_LINKER=`ntpath2posix -c "$C89_LINKER"` 9915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 9925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru C89_LINKER=LINK.EXE 9935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 9945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$C89_COMPILER /HELP >&2" 9955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$C89_LINKER /LINK >&2" 9965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 9985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 9995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querunwcc) 10005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version" 10015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querupcc) 10035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -v" 10045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querupgi) 10065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 'Warning: PGI detected. This unknown compiler has not yet 10075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru been tested for compatibility with mksh. Continue at your 10085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru own risk, please report success/failure to the developers.' 10095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusdcc) 10115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo >&2 'Warning: sdcc (http://sdcc.sourceforge.net), the small devices 10125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru C compiler for embedded systems detected. This has not yet 10135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru been tested for compatibility with mksh. Continue at your 10145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru own risk, please report success/failure to the developers.' 10155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusunpro) 10175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS" 10185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutcc) 10205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -v" 10215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutendra) 10235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V 2>&1 | \ 10245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fgrep -i -e version -e release" 10255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruucode) 10275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V" 10285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -Wl,-V conftest.c $LIBS" 10295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 1030c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseruslc) 1031c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $TARGET_OS:$TARGET_OSREV in 1032c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser SCO_SV:3.2*) 1033c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # SCO OpenServer 5 1034c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser CFLAGS="$CFLAGS -g" 1035c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : ${HAVE_CAN_OTWO=0} ${HAVE_CAN_OPTIMISE=0} 1036c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1037c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 1038c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS" 1039c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 10405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruwatcom) 1041c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS" 10425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruxlc) 104403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -qversion" 10455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -qversion=verbose" 10465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "ld -V" 10475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru*) 1049c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test x"$ct" = x"untested" && $e "!!! detecting preprocessor failed" 10505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ct=unknown 1051c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv "$CC --version" 1052c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS" 1053c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS" 10545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 10565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $cm in 10575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudragonegg|llvm) 10585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv '|' "llc -version" 10595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 10605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 1061c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercase $et in 1062c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserklibc) 1063c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_LIMITS 1064c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1065c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserunknown) 1066c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # nothing special detected, don’t worry 1067c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser unset et 1068c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1069c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser*) 1070c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # huh? 1071c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1072c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseresac 1073c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser$e "$bi==> which compiler seems to be used...$ao $ui$ct${et+ on $et}$ao" 10745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurmf conftest.c conftest.o conftest a.out* a.exe* vv.out 10755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 10765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 10775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Compiler: works as-is, with -Wno-error and -Werror 10785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 10795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusave_NOWARN=$NOWARN 10805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNOWARN= 10815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruDOWARN= 10825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_flags 0 compiler_works '' 'if the compiler works' 10835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest 1 = $HAVE_CAN_COMPILER_WORKS || exit 1 10845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_COMPILER_KNOWN=0 10855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest $ct = unknown || HAVE_COMPILER_KNOWN=1 10865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif ac_ifcpp 'if 0' compiler_fails '' \ 10875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 'if the compiler does not fail correctly'; then 10885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_CFLAGS=$CFLAGS 10895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_CAN_DELEXE=x} 1090811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser case $ct in 1091811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser dec) 10925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CFLAGS="$CFLAGS ${ccpl}-non_shared" 10935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn can_delexe compiler_fails 0 'for the -non_shared linker option' <<-EOF 10945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (0); } 10955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru EOF 1096811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1097811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser dmc) 1098811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser CFLAGS="$CFLAGS ${ccpl}/DELEXECUTABLE" 1099811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_testn can_delexe compiler_fails 0 'for the /DELEXECUTABLE linker option' <<-EOF 1100811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser int main(void) { return (0); } 1101811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser EOF 1102811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1103811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser *) 11045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 1 1105811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1106811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser esac 11075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CAN_DELEXE || CFLAGS=$save_CFLAGS 11085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn compiler_still_fails '' 'if the compiler still does not fail correctly' <<-EOF 11095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru EOF 11105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_COMPILER_STILL_FAILS && exit 1 11115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 11125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif ac_ifcpp 'ifdef __TINYC__' couldbe_tcc '!' compiler_known 0 \ 11135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 'if this could be tcc'; then 11145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ct=tcc 11155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru CPP='cpp -D__TINYC__' 1116c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser HAVE_COMPILER_KNOWN=1 11175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 11185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1119811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasercase $ct in 1120811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserbcc) 1121811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser save_NOWARN="${ccpc}-w" 1122811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser DOWARN="${ccpc}-w!" 1123811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1124811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserdec) 1125811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser # -msg_* flags not used yet, or is -w2 correct? 1126811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1127811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserdmc) 1128811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser save_NOWARN="${ccpc}-w" 1129811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser DOWARN="${ccpc}-wx" 1130811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1131811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserhpcc) 11325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_NOWARN= 11335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru DOWARN=+We 1134811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1135811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserkencc) 1136811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser save_NOWARN= 1137811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser DOWARN= 1138811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1139811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasermipspro) 11405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_NOWARN= 11415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru DOWARN="-diag_error 1-10000" 1142811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1143811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasermsc) 11445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_NOWARN="${ccpc}/w" 11455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru DOWARN="${ccpc}/WX" 1146811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1147811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasersunpro) 1148811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser test x"$save_NOWARN" = x"" && save_NOWARN='-errwarn=%none' 1149811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 0 errwarnnone "$save_NOWARN" 1150811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser test 1 = $HAVE_CAN_ERRWARNNONE || save_NOWARN= 1151811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 0 errwarnall "-errwarn=%all" 1152811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser test 1 = $HAVE_CAN_ERRWARNALL && DOWARN="-errwarn=%all" 1153811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1154811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasertendra) 11555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_NOWARN=-w 1156811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1157811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserucode) 11585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru save_NOWARN= 11595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru DOWARN=-w2 1160811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1161811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserwatcom) 1162c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser save_NOWARN= 1163c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser DOWARN=-Wc,-we 1164811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1165811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserxlc) 1166811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser save_NOWARN=-qflag=i:e 1167811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser DOWARN=-qflag=i:i 1168811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1169811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser*) 11705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test x"$save_NOWARN" = x"" && save_NOWARN=-Wno-error 11715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 0 wnoerror "$save_NOWARN" 11725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CAN_WNOERROR || save_NOWARN= 11735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 0 werror -Werror 11745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CAN_WERROR && DOWARN=-Werror 1175811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser test $ct = icc && DOWARN="$DOWARN -wd1419" 1176811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1177811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaseresac 11785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNOWARN=$save_NOWARN 11795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 11805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 11815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Compiler: extra flags (-O2 -f* -W* etc.) 11825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 11835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querui=`echo :"$orig_CFLAGS" | sed 's/^://' | tr -c -d $alll$allu$alln` 11845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# optimisation: only if orig_CFLAGS is empty 1185811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasertest x"$i" = x"" && case $ct in 1186811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserhpcc) 1187811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser phase=u 1188811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 otwo +O2 1189811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser phase=x 1190811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1191811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserkencc|tcc|tendra) 1192811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser # no special optimisation 1193811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1194811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasersunpro) 11955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cat >x <<-'EOF' 11965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (0); } 11975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define __IDSTRING_CONCAT(l,p) __LINTED__ ## l ## _ ## p 11985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define __IDSTRING_EXPAND(l,p) __IDSTRING_CONCAT(l,p) 11995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define pad void __IDSTRING_EXPAND(__LINE__,x)(void) { } 12005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru EOF 12015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru yes pad | head -n 256 >>x 12025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags - 1 otwo -xO2 <x 12035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru rmf x 1204811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1205811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserxlc) 12065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 othree "-O3 -qstrict" 12075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CAN_OTHREE || ac_flags 1 otwo -O2 1208811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1209811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser*) 12105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 otwo -O2 12115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CAN_OTWO || ac_flags 1 optimise -O 1212811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1213811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaseresac 12145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# other flags: just add them if they are supported 12155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querui=0 1216811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasercase $ct in 1217811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserbcc) 1218811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 strpool "${ccpc}-d" 'if string pooling can be enabled' 1219811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1220811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserclang) 1221811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser i=1 1222811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1223811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserdec) 1224811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 0 verb -verbose 1225811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 rodata -readonly_strings 1226811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1227811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserdmc) 1228811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 decl "${ccpc}-r" 'for strict prototype checks' 1229811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 schk "${ccpc}-s" 'for stack overflow checking' 1230811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1231811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasergcc) 12325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru # The following tests run with -Werror (gcc only) if possible 12335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru NOWARN=$DOWARN; phase=u 1234811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 wnodeprecateddecls -Wno-deprecated-declarations 1235c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # mksh is not written in CFrustFrust! 1236c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_flags 1 no_eh_frame -fno-asynchronous-unwind-tables 12375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 fnostrictaliasing -fno-strict-aliasing 12385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 fstackprotectorall -fstack-protector-all 123903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra test $cm = dragonegg && case " $CC $CFLAGS $LDFLAGS " in 124003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *\ -fplugin=*dragonegg*) ;; 124103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra *) ac_flags 1 fplugin_dragonegg -fplugin=dragonegg ;; 124203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra esac 1243811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser case $cm in 1244811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser combine) 124503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fv=0 124603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra checks='7 8' 1247811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1248811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser lto) 1249811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser fv=0 1250811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser checks='1 2 3 4 5 6 7 8' 1251811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1252811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser *) 125303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fv=1 1254811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1255811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser esac 125603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra test $fv = 1 || for what in $checks; do 125703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra test $fv = 1 && break 125803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra case $what in 125903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 1) t_cflags='-flto=jobserver' 126003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_ldflags='-fuse-linker-plugin' 126103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=1 t_name=fltojs_lp ;; 126203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 2) t_cflags='-flto=jobserver' t_ldflags='' 126303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=1 t_name=fltojs_nn ;; 126403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 3) t_cflags='-flto=jobserver' 126503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_ldflags='-fno-use-linker-plugin -fwhole-program' 126603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=1 t_name=fltojs_np ;; 126703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 4) t_cflags='-flto' 126803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_ldflags='-fuse-linker-plugin' 126903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=1 t_name=fltons_lp ;; 127003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 5) t_cflags='-flto' t_ldflags='' 127103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=1 t_name=fltons_nn ;; 127203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 6) t_cflags='-flto' 127303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_ldflags='-fno-use-linker-plugin -fwhole-program' 127403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=1 t_name=fltons_np ;; 127503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 7) t_cflags='-fwhole-program --combine' t_ldflags='' 127603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra t_use=0 t_name=combine cm=combine ;; 127703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra 8) fv=1 cm=normal ;; 127803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra esac 127903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra test $fv = 1 && break 128003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra ac_flags $t_use $t_name "$t_cflags" \ 128103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra "if gcc supports $t_cflags $t_ldflags" "$t_ldflags" 128203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra done 12835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru i=1 1284811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1285811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserhpcc) 12865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru phase=u 1287c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # probably not needed 1288c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #ac_flags 1 agcc -Agcc 'for support of GCC extensions' 12895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru phase=x 1290811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1291811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasericc) 1292811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 fnobuiltinsetmode -fno-builtin-setmode 1293811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 fnostrictaliasing -fno-strict-aliasing 1294811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 fstacksecuritycheck -fstack-security-check 1295811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser i=1 1296811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1297811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasermipspro) 12985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 fullwarn -fullwarn 'for remark output support' 1299811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1300811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasermsc) 13015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 strpool "${ccpc}/GF" 'if string pooling can be enabled' 13025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo 'int main(void) { char test[64] = ""; return (*test); }' >x 13035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags - 1 stackon "${ccpc}/GZ" 'if stack checks can be enabled' <x 13045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags - 1 stckall "${ccpc}/Ge" 'stack checks for all functions' <x 13055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags - 1 secuchk "${ccpc}/GS" 'for compiler security checks' <x 13065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru rmf x 13075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 wall "${ccpc}/Wall" 'to enable all warnings' 13085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 wp64 "${ccpc}/Wp64" 'to enable 64-bit warnings' 1309811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1310811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasernwcc) 1311811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser i=1 1312811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser #broken# ac_flags 1 ssp -stackprotect 1313811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1314811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasersunpro) 1315811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser phase=u 1316811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 v -v 1317811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 ipo -xipo 'for cross-module optimisation' 1318811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser phase=x 1319811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1320811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasertcc) 1321811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser : #broken# ac_flags 1 boundschk -b 1322811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1323811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasertendra) 1324811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 0 ysystem -Ysystem 1325811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser test 1 = $HAVE_CAN_YSYSTEM && CPPFLAGS="-Ysystem $CPPFLAGS" 1326811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ac_flags 1 extansi -Xa 1327811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1328811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserxlc) 13295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 rodata "-qro -qroconst -qroptr" 13305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 rtcheck -qcheck=all 1331c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #ac_flags 1 rtchkc -qextchk # reported broken 13325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 wformat "-qformat=all -qformat=nozln" 13335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #ac_flags 1 wp64 -qwarn64 # too verbose for now 1334811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 1335811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaseresac 13365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# flags common to a subset of compilers (run with -Werror on gcc) 13375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test 1 = $i; then 13385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_flags 1 wall -Wall 1339c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_flags 1 fwrapv -fwrapv 13405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 13415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 134203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraphase=x 13435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# The following tests run with -Werror or similar (all compilers) if possible 13445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNOWARN=$DOWARN 13455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest $ct = pcc && phase=u 13465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 13475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 13485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Compiler: check for stuff that only generates warnings 13495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 135003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_test attribute_bounded '' 'for __attribute__((__bounded__))' <<-'EOF' 135103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) 1352811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser extern int thiswillneverbedefinedIhope(void); 135303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra /* force a failure: TenDRA and gcc 1.42 have false positive here */ 13545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (thiswillneverbedefinedIhope()); } 13555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #else 13565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <string.h> 13575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #undef __attribute__ 13585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int xcopy(const void *, void *, size_t) 135903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra __attribute__((__bounded__ (__buffer__, 1, 3))) 136003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra __attribute__((__bounded__ (__buffer__, 2, 3))); 13615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char *av[]) { return (xcopy(av[0], av[--ac], 1)); } 13625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int xcopy(const void *s, void *d, size_t n) { 1363c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser /* 1364c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser * if memmove does not exist, we are not on a system 1365c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser * with GCC with __bounded__ attribute either so poo 1366c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser */ 13675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru memmove(d, s, n); return ((int)n); 13685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru } 13695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 13705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 137103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_test attribute_format '' 'for __attribute__((__format__))' <<-'EOF' 137203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) 1373811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser extern int thiswillneverbedefinedIhope(void); 137403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra /* force a failure: TenDRA and gcc 1.42 have false positive here */ 13755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (thiswillneverbedefinedIhope()); } 13765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #else 137703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #define fprintf printfoo 13785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stdio.h> 13795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #undef __attribute__ 138003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #undef fprintf 138103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra extern int fprintf(FILE *, const char *format, ...) 138203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra __attribute__((__format__ (__printf__, 2, 3))); 138303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra int main(int ac, char **av) { return (fprintf(stderr, "%s%d", *av, ac)); } 13845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 13855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 138603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_test attribute_noreturn '' 'for __attribute__((__noreturn__))' <<-'EOF' 138703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) 1388811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser extern int thiswillneverbedefinedIhope(void); 138903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra /* force a failure: TenDRA and gcc 1.42 have false positive here */ 13905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (thiswillneverbedefinedIhope()); } 13915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #else 13925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stdlib.h> 13935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #undef __attribute__ 139403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra void fnord(void) __attribute__((__noreturn__)); 13955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { fnord(); } 13965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru void fnord(void) { exit(0); } 13975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 13985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 139903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_test attribute_unused '' 'for __attribute__((__unused__))' <<-'EOF' 140003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) 1401811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser extern int thiswillneverbedefinedIhope(void); 140203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra /* force a failure: TenDRA and gcc 1.42 have false positive here */ 14035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (thiswillneverbedefinedIhope()); } 14045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #else 140503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra int main(int ac __attribute__((__unused__)), char **av 140603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra __attribute__((__unused__))) { return (0); } 14075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 14085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 140903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_test attribute_used '' 'for __attribute__((__used__))' <<-'EOF' 141003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) 1411811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser extern int thiswillneverbedefinedIhope(void); 141203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra /* force a failure: TenDRA and gcc 1.42 have false positive here */ 14135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (thiswillneverbedefinedIhope()); } 14145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #else 141503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra static const char fnord[] __attribute__((__used__)) = "42"; 14165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (0); } 14175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 14185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 14195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 14205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# End of tests run with -Werror 14215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNOWARN=$save_NOWARN 14225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruphase=x 14235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 14245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 14255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# mksh: flavours (full/small mksh, omit certain stuff) 14265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 14275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif ac_ifcpp 'ifdef MKSH_SMALL' isset_MKSH_SMALL '' \ 14285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru "if a reduced-feature mksh is requested"; then 14295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_NICE=0} 14305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru : ${HAVE_PERSISTENT_HISTORY=0} 143103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories smksh" 14325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru HAVE_ISSET_MKSH_CONSERVATIVE_FDS=1 # from sh.h 14335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 1434811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserac_ifcpp 'if defined(MKSH_BINSHPOSIX) || defined(MKSH_BINSHREDUCED)' \ 1435811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser isset_MKSH_BINSH '' 'if invoking as sh should be handled specially' && \ 143603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories binsh" 14375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_ifcpp 'ifdef MKSH_UNEMPLOYED' isset_MKSH_UNEMPLOYED '' \ 14385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru "if mksh will be built without job control" && \ 143903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories arge" 144003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_ifcpp 'ifdef MKSH_NOPROSPECTOFWORK' isset_MKSH_NOPROSPECTOFWORK '' \ 144103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra "if mksh will be built without job signals" && \ 144203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories arge nojsig" 14435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_ifcpp 'ifdef MKSH_ASSUME_UTF8' isset_MKSH_ASSUME_UTF8 '' \ 14445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 'if the default UTF-8 mode is specified' && : ${HAVE_SETLOCALE_CTYPE=0} 14455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_ifcpp 'ifdef MKSH_CONSERVATIVE_FDS' isset_MKSH_CONSERVATIVE_FDS '' \ 14465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 'if traditional/conservative fd use is requested' && \ 144703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories convfds" 1448c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#ac_ifcpp 'ifdef MKSH_DISABLE_DEPRECATED' isset_MKSH_DISABLE_DEPRECATED '' \ 1449c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# "if deprecated features are to be omitted" && \ 1450c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# check_categories="$check_categories nodeprecated" 1451c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#ac_ifcpp 'ifdef MKSH_DISABLE_EXPERIMENTAL' isset_MKSH_DISABLE_EXPERIMENTAL '' \ 1452c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# "if experimental features are to be omitted" && \ 1453c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# check_categories="$check_categories noexperimental" 1454c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_ifcpp 'ifdef MKSH_MIDNIGHTBSD01ASH_COMPAT' isset_MKSH_MIDNIGHTBSD01ASH_COMPAT '' \ 1455c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 'if the MidnightBSD 0.1 ash compatibility mode is requested' && \ 1456c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser check_categories="$check_categories mnbsdash" 14575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 14585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 14595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Environment: headers 14605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 1461c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_header sys/time.h sys/types.h 1462c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_header time.h sys/types.h 1463c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertest "11" = "$HAVE_SYS_TIME_H$HAVE_TIME_H" || HAVE_BOTH_TIME_H=0 1464c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test both_time_h '' 'whether <sys/time.h> and <time.h> can both be included' <<-'EOF' 1465c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/types.h> 1466c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/time.h> 1467c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <time.h> 1468c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { struct tm tm; return ((int)sizeof(tm)); } 1469c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 147003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_header sys/bsdtypes.h 147103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_header sys/file.h sys/types.h 14725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header sys/mkdev.h sys/types.h 14735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header sys/mman.h sys/types.h 147403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_header sys/param.h 1475c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_header sys/resource.h sys/types.h _time 147603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_header sys/select.h sys/types.h 14775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header sys/sysmacros.h 147803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_header bstring.h 14795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header grp.h sys/types.h 14805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header libgen.h 14815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header libutil.h sys/types.h 14825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header paths.h 14835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header stdint.h stdarg.h 148403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra# include strings.h only if compatible with string.h 148503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_header strings.h sys/types.h string.h 1486c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_header termios.h 14875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header ulimit.h sys/types.h 14885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_header values.h 14895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 14905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 14915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Environment: definitions 14925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 14935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruecho '#include <sys/types.h> 14945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru/* check that off_t can represent 2^63-1 correctly, thx FSF */ 14955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#define LARGE_OFF_T (((off_t)1 << 62) - 1 + ((off_t)1 << 62)) 14965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruint off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && 14975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; 14985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruint main(void) { return (0); }' >lft.c 14995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testn can_lfs '' "for large file support" <lft.c 15005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusave_CPPFLAGS=$CPPFLAGS 150103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraadd_cppflags -D_FILE_OFFSET_BITS=64 15025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testn can_lfs_sus '!' can_lfs 0 "... with -D_FILE_OFFSET_BITS=64" <lft.c 15035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test 0 = $HAVE_CAN_LFS_SUS; then 150403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra CPPFLAGS=$save_CPPFLAGS 150503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -D_LARGE_FILES=1 15065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn can_lfs_aix '!' can_lfs 0 "... with -D_LARGE_FILES=1" <lft.c 15075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CAN_LFS_AIX || CPPFLAGS=$save_CPPFLAGS 15085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 15095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurmf lft* # end of large file support test 15105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 15115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 15125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Environment: types 15135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 15145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test can_inttypes '!' stdint_h 1 "for standard 32-bit integer types" <<-'EOF' 15155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 15175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char **av) { return ((uint32_t)(ptrdiff_t)*av + (int32_t)ac); } 15185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test can_ucbints '!' can_inttypes 1 "for UCB 32-bit integer types" <<-'EOF' 15205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 15225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char **av) { return ((u_int32_t)(ptrdiff_t)*av + (int32_t)ac); } 15235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test can_int8type '!' stdint_h 1 "for standard 8-bit integer type" <<-'EOF' 15255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 15275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char **av) { return ((uint8_t)(ptrdiff_t)av[ac]); } 15285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test can_ucbint8 '!' can_int8type 1 "for UCB 8-bit integer type" <<-'EOF' 15305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 15325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char **av) { return ((u_int8_t)(ptrdiff_t)av[ac]); } 15335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 15355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test rlim_t <<-'EOF' 15365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 1537c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_BOTH_TIME_H 1538c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/time.h> 1539c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <time.h> 1540c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #elif HAVE_SYS_TIME_H 15415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/time.h> 1542c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #elif HAVE_TIME_H 1543c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <time.h> 1544c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1545c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_SYS_RESOURCE_H 15465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/resource.h> 1547c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 15485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <unistd.h> 15495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return ((int)(rlim_t)0); } 15505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 15525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# only testn: added later below 15535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testn sig_t <<-'EOF' 15545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <signal.h> 15565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 1557811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser volatile sig_t foo = (sig_t)0; 1558811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser int main(void) { return (foo == (sig_t)0); } 15595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 15615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testn sighandler_t '!' sig_t 0 <<-'EOF' 15625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <signal.h> 15645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 1565811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser volatile sighandler_t foo = (sighandler_t)0; 1566811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser int main(void) { return (foo == (sighandler_t)0); } 15675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test 1 = $HAVE_SIGHANDLER_T; then 156903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -Dsig_t=sighandler_t 15705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru HAVE_SIG_T=1 15715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 15725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 15735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testn __sighandler_t '!' sig_t 0 <<-'EOF' 15745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 15755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <signal.h> 15765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 1577811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser volatile __sighandler_t foo = (__sighandler_t)0; 1578811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser int main(void) { return (foo == (__sighandler_t)0); } 15795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 15805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test 1 = $HAVE___SIGHANDLER_T; then 158103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -Dsig_t=__sighandler_t 15825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru HAVE_SIG_T=1 15835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 15845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 158503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condratest 1 = $HAVE_SIG_T || add_cppflags -Dsig_t=nosig_t 15865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_cppflags SIG_T 15875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 15885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 1589c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# check whether whatever we use for the final link will succeed 1590c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# 1591c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test $cm = makefile; then 1592c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser : nothing to check 1593c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserelse 1594c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser HAVE_LINK_WORKS=x 1595c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testinit link_works '' 'checking if the final link command may succeed' 1596c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fv=1 1597c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cat >conftest.c <<-'EOF' 1598c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define EXTERN 1599c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1600c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1601811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser __RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.645 2013/08/10 13:44:25 tg Exp $"); 1602c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { printf("Hello, World!\n"); return (0); } 1603c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1604c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $cm in 1605c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser llvm) 1606c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser v "$CC $CFLAGS $CPPFLAGS $NOWARN -emit-llvm -c conftest.c" || fv=0 1607c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rmf $tfn.s 1608c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "llvm-link -o - conftest.o | opt $optflags | llc -o $tfn.s" || fv=0 1609c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn $tfn.s $LIBS $ccpr" 1610c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1611c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser dragonegg) 1612c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser v "$CC $CFLAGS $CPPFLAGS $NOWARN -S -flto conftest.c" || fv=0 1613c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "mv conftest.s conftest.ll" 1614c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "llvm-as conftest.ll" || fv=0 1615c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rmf $tfn.s 1616c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "llvm-link -o - conftest.bc | opt $optflags | llc -o $tfn.s" || fv=0 1617c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn $tfn.s $LIBS $ccpr" 1618c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1619c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser combine) 1620c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser v "$CC $CFLAGS $CPPFLAGS $LDFLAGS -fwhole-program --combine $NOWARN -o $tcfn conftest.c $LIBS $ccpr" 1621c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1622c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser lto|normal) 1623c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cm=normal 1624c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser v "$CC $CFLAGS $CPPFLAGS $NOWARN -c conftest.c" || fv=0 1625c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn conftest.o $LIBS $ccpr" 1626c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ;; 1627c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 1628c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test -f $tcfn || fv=0 1629c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testdone 1630c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $fv = 1 || exit 1 1631c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 1632c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1633c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# 1634c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# Environment: errors and signals 16355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 16365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest x"NetBSD" = x"$TARGET_OS" && $e Ignore the compatibility warning. 16375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1638c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_testn sys_errlist '' "the sys_errlist[] array and sys_nerr" <<-'EOF' 1639c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern const int sys_nerr; 1640c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern const char * const sys_errlist[]; 1641c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (*sys_errlist[sys_nerr - 1]); } 1642c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1643c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_testn _sys_errlist '!' sys_errlist 0 "the _sys_errlist[] array and _sys_nerr" <<-'EOF' 1644c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern const int _sys_nerr; 1645c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern const char * const _sys_errlist[]; 1646c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (*_sys_errlist[_sys_nerr - 1]); } 1647c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1648c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test 1 = "$HAVE__SYS_ERRLIST"; then 1649c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -Dsys_nerr=_sys_nerr 1650c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -Dsys_errlist=_sys_errlist 1651c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser HAVE_SYS_ERRLIST=1 1652c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 1653c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_cppflags SYS_ERRLIST 1654c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 16555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufor what in name list; do 16565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru uwhat=`upper $what` 16575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn sys_sig$what '' "the sys_sig${what}[] array" <<-EOF 1658c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern const char * const sys_sig${what}[]; 16595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (sys_sig${what}[0][0]); } 16605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru EOF 16615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testn _sys_sig$what '!' sys_sig$what 0 "the _sys_sig${what}[] array" <<-EOF 1662c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern const char * const _sys_sig${what}[]; 16635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (_sys_sig${what}[0][0]); } 16645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru EOF 166503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra eval uwhat_v=\$HAVE__SYS_SIG$uwhat 166603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra if test 1 = "$uwhat_v"; then 166703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra add_cppflags -Dsys_sig$what=_sys_sig$what 166803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra eval HAVE_SYS_SIG$uwhat=1 16695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 16705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_cppflags SYS_SIG$uwhat 16715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudone 16725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 16735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 16745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Environment: library functions 16755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 1676c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test flock <<-'EOF' 16775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 1678c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <fcntl.h> 1679c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #undef flock 168003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if HAVE_SYS_FILE_H 16815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/file.h> 168203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #endif 1683c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (flock(0, LOCK_EX | LOCK_UN)); } 1684c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1685c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1686c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test lock_fcntl '!' flock 1 'whether we can lock files with fcntl' <<-'EOF' 16875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <fcntl.h> 1688c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #undef flock 1689c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { 1690c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser struct flock lks; 1691c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser lks.l_type = F_WRLCK | F_UNLCK; 1692c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser return (fcntl(0, F_SETLKW, &lks)); 1693c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser } 16945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 16955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 16965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test getrusage <<-'EOF' 16975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define MKSH_INCLUDES_ONLY 16985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include "sh.h" 16995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { 17005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru struct rusage ru; 17015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return (getrusage(RUSAGE_SELF, &ru) + 17025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru getrusage(RUSAGE_CHILDREN, &ru)); 17035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru } 17045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1706c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test gettimeofday <<-'EOF' 1707c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1708c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1709c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { struct timeval tv; return (gettimeofday(&tv, NULL)); } 1710c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1711c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 17125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test killpg <<-'EOF' 17135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <signal.h> 17145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char *av[]) { return (av[0][killpg(123, ac)]); } 17155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1717c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test memmove <<-'EOF' 1718c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/types.h> 1719c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <stddef.h> 1720c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <string.h> 1721c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_STRINGS_H 1722c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <strings.h> 1723c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1724c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(int ac, char *av[]) { 1725c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser return (*(int *)(void *)memmove(av[0], av[1], ac)); 1726c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser } 1727c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1728c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 17295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test mknod '' 'if to use mknod(), makedev() and friends' <<-'EOF' 17305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define MKSH_INCLUDES_ONLY 17315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include "sh.h" 17325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char *av[]) { 17335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru dev_t dv; 17345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru dv = makedev((unsigned int)ac, (unsigned int)av[0][0]); 17355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru return (mknod(av[0], (mode_t)0, dv) ? (int)major(dv) : 17365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru (int)minor(dv)); 17375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru } 17385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1740c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test mmap lock_fcntl 0 'for mmap and munmap' <<-'EOF' 1741c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/types.h> 1742c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_SYS_FILE_H 1743c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/file.h> 1744c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1745c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_SYS_MMAN_H 1746c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/mman.h> 1747c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1748c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <stddef.h> 17495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stdlib.h> 1750c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return ((void *)mmap(NULL, (size_t)0, 1751c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser PROT_READ, MAP_PRIVATE, 0, (off_t)0) == (void *)NULL ? 1 : 1752c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser munmap(NULL, 0)); } 17535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 17555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test nice <<-'EOF' 17565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <unistd.h> 17575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (nice(4)); } 17585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 17605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test revoke <<-'EOF' 17615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 17625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #if HAVE_LIBUTIL_H 17635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <libutil.h> 17645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 17655155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <unistd.h> 17665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char *av[]) { return (ac + revoke(av[0])); } 17675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 17695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test setlocale_ctype '' 'setlocale(LC_CTYPE, "")' <<-'EOF' 17705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <locale.h> 17715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 17725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return ((int)(ptrdiff_t)(void *)setlocale(LC_CTYPE, "")); } 17735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 17755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test langinfo_codeset setlocale_ctype 0 'nl_langinfo(CODESET)' <<-'EOF' 17765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <langinfo.h> 17775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <stddef.h> 17785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return ((int)(ptrdiff_t)(void *)nl_langinfo(CODESET)); } 17795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 17805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 178103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condraac_test select <<-'EOF' 17825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 1783c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_BOTH_TIME_H 1784c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/time.h> 1785c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <time.h> 1786c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #elif HAVE_SYS_TIME_H 178703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <sys/time.h> 1788c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #elif HAVE_TIME_H 1789c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <time.h> 1790c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 179103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if HAVE_SYS_BSDTYPES_H 179203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <sys/bsdtypes.h> 179303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #endif 179403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if HAVE_SYS_SELECT_H 179503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <sys/select.h> 17965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 179703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if HAVE_BSTRING_H 179803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <bstring.h> 179903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #endif 180003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <stddef.h> 180103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <stdlib.h> 180203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <string.h> 180303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #if HAVE_STRINGS_H 180403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <strings.h> 180503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #endif 180603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra #include <unistd.h> 180703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra int main(void) { 180803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra struct timeval tv = { 1, 200000 }; 180903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fd_set fds; FD_ZERO(&fds); FD_SET(0, &fds); 181003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra return (select(FD_SETSIZE, &fds, NULL, NULL, &tv)); 181103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra } 18125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 18135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 18145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test setresugid <<-'EOF' 18155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 18165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <unistd.h> 1817811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser int main(void) { return (setresuid(0,0,0) + setresgid(0,0,0)); } 18185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 18195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 18205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test setgroups setresugid 0 <<-'EOF' 18215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <sys/types.h> 18225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #if HAVE_GRP_H 18235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <grp.h> 18245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #endif 18255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <unistd.h> 18265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { gid_t gid = 0; return (setgroups(0, &gid)); } 18275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 18285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1829c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test x"$et" = x"klibc"; then 1830c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1831c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testn __rt_sigsuspend '' 'whether klibc uses RT signals' <<-'EOF' 1832c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1833c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1834c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern int __rt_sigsuspend(const sigset_t *, size_t); 1835c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (__rt_sigsuspend(NULL, 0)); } 1836c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1837c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1838c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # no? damn! legacy crap ahead! 1839c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1840c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testn __sigsuspend_s '!' __rt_sigsuspend 1 \ 1841c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 'whether sigsuspend is usable (1/2)' <<-'EOF' 1842c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1843c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1844c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern int __sigsuspend_s(sigset_t); 1845c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (__sigsuspend_s(0)); } 1846c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1847c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_testn __sigsuspend_xxs '!' __sigsuspend_s 1 \ 1848c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 'whether sigsuspend is usable (2/2)' <<-'EOF' 1849c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1850c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1851c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern int __sigsuspend_xxs(int, int, sigset_t); 1852c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (__sigsuspend_xxs(0, 0, 0)); } 1853c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1854c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1855c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if test "000" = "$HAVE___RT_SIGSUSPEND$HAVE___SIGSUSPEND_S$HAVE___SIGSUSPEND_XXS"; then 1856c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # no usable sigsuspend(), use pause() *ugh* 1857c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser add_cppflags -DMKSH_NO_SIGSUSPEND 1858c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 1859c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 1860c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1861c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test strerror '!' sys_errlist 0 <<-'EOF' 1862c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser extern char *strerror(int); 1863c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(int ac, char *av[]) { return (*strerror(*av[ac])); } 1864c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1865c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1866c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test strsignal '!' sys_siglist 0 <<-'EOF' 18675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <string.h> 1868c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <signal.h> 1869c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (strsignal(1)[0]); } 18705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 18715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 18725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_test strlcpy <<-'EOF' 18735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include <string.h> 18745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(int ac, char *av[]) { return (strlcpy(*av, av[1], 18755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru (size_t)ac)); } 18765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 18775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 18785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 18795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# check headers for declarations 18805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 1881c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test flock_decl flock 1 'for declaration of flock()' <<-'EOF' 1882c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1883c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1884c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #if HAVE_SYS_FILE_H 1885c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include <sys/file.h> 1886c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1887c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return ((flock)(0, 0)); } 1888c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1889c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test revoke_decl revoke 1 'for declaration of revoke()' <<-'EOF' 18905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define MKSH_INCLUDES_ONLY 18915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include "sh.h" 1892c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return ((revoke)("")); } 18935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 1894c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test sys_errlist_decl sys_errlist 0 "for declaration of sys_errlist[] and sys_nerr" <<-'EOF' 18955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define MKSH_INCLUDES_ONLY 18965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include "sh.h" 1897c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (*sys_errlist[sys_nerr - 1]); } 18985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 1899c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_test sys_siglist_decl sys_siglist 0 'for declaration of sys_siglist[]' <<-'EOF' 19005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #define MKSH_INCLUDES_ONLY 19015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru #include "sh.h" 19025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru int main(void) { return (sys_siglist[0][0]); } 19035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 19045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 19055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 19065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# other checks 19075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 19085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufd='if to use persistent history' 1909c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_cache PERSISTENT_HISTORY || case $HAVE_MMAP$HAVE_FLOCK$HAVE_LOCK_FCNTL in 1910c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser11*|101) fv=1 ;; 1911c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseresac 191203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condratest 1 = $fv || check_categories="$check_categories no-histfile" 19135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_testdone 19145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruac_cppflags 19155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 1916c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasersave_CFLAGS=$CFLAGS 1917c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserac_testn compile_time_asserts_$$ '' 'whether compile-time assertions pass' <<-'EOF' 1918c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1919c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1920c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #ifndef CHAR_BIT 1921c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define CHAR_BIT 8 /* defuse this test on really legacy systems */ 1922c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1923c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser struct ctasserts { 1924c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define cta(name, assertion) char name[(assertion) ? 1 : -1] 1925c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* this one should be defined by the standard */ 1926c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(char_is_1_char, (sizeof(char) == 1) && (sizeof(signed char) == 1) && 1927c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (sizeof(unsigned char) == 1)); 1928c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(char_is_8_bits, ((CHAR_BIT) == 8) && ((int)(unsigned char)0xFF == 0xFF) && 1929c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ((int)(unsigned char)0x100 == 0) && ((int)(unsigned char)(int)-1 == 0xFF)); 1930c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* the next assertion is probably not really needed */ 1931c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(short_is_2_char, sizeof(short) == 2); 1932c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(short_size_no_matter_of_signedness, sizeof(short) == sizeof(unsigned short)); 1933c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* the next assertion is probably not really needed */ 1934c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(int_is_4_char, sizeof(int) == 4); 1935c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(int_size_no_matter_of_signedness, sizeof(int) == sizeof(unsigned int)); 1936c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1937c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(long_ge_int, sizeof(long) >= sizeof(int)); 1938c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(long_size_no_matter_of_signedness, sizeof(long) == sizeof(unsigned long)); 1939c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1940c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#ifndef MKSH_LEGACY_MODE 1941c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* the next assertion is probably not really needed */ 1942c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ari_is_4_char, sizeof(mksh_ari_t) == 4); 1943811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser/* but this is */ 1944c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ari_has_31_bit, 0 < (mksh_ari_t)(((((mksh_ari_t)1 << 15) << 15) - 1) * 2 + 1)); 1945c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* the next assertion is probably not really needed */ 1946c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(uari_is_4_char, sizeof(mksh_uari_t) == 4); 1947c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* but the next three are; we REQUIRE unsigned integer wraparound */ 1948c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(uari_has_31_bit, 0 < (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 2 + 1)); 1949c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(uari_has_32_bit, 0 < (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 3)); 1950c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(uari_wrap_32_bit, 1951c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 3) > 1952c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (mksh_uari_t)(((((mksh_uari_t)1 << 15) << 15) - 1) * 4 + 4)); 1953811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser#define NUM 22 1954811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser#else 1955811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser#define NUM 16 1956c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#endif 1957c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* these are always required */ 1958c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ari_is_signed, (mksh_ari_t)-1 < (mksh_ari_t)0); 1959c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(uari_is_unsigned, (mksh_uari_t)-1 > (mksh_uari_t)0); 1960811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser/* we require these to have the precisely same size and assume 2s complement */ 1961811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasercta(ari_size_no_matter_of_signedness, sizeof(mksh_ari_t) == sizeof(mksh_uari_t)); 1962c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1963c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(sizet_size_no_matter_of_signedness, sizeof(ssize_t) == sizeof(size_t)); 1964c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ptrdifft_sizet_same_size, sizeof(ptrdiff_t) == sizeof(size_t)); 1965c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ptrdifft_voidptr_same_size, sizeof(ptrdiff_t) == sizeof(void *)); 1966c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ptrdifft_funcptr_same_size, sizeof(ptrdiff_t) == sizeof(void (*)(void))); 1967c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/* our formatting routines assume this */ 1968c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercta(ptr_fits_in_long, sizeof(ptrdiff_t) <= sizeof(long)); 1969811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser/* for struct alignment people */ 1970811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser char padding[64 - NUM]; 1971c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser }; 1972811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserchar ctasserts_dblcheck[sizeof(struct ctasserts) == 64 ? 1 : -1]; 1973c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (sizeof(ctasserts_dblcheck)); } 1974c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1975c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserCFLAGS=$save_CFLAGS 1976c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasereval test 1 = \$HAVE_COMPILE_TIME_ASSERTS_$$ || exit 1 1977c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1978c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# 1979c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# extra checks for legacy mksh 1980c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# 1981c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test $legacy = 1; then 1982c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_test long_32bit '' 'whether long is 32 bit wide' <<-'EOF' 1983c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1984c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1985c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #ifndef CHAR_BIT 1986c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define CHAR_BIT 0 1987c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 1988c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser struct ctasserts { 1989c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define cta(name, assertion) char name[(assertion) ? 1 : -1] 1990c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cta(char_is_8_bits, (CHAR_BIT) == 8); 1991c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cta(long_is_32_bits, sizeof(long) == 4); 1992c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser }; 1993c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (sizeof(struct ctasserts)); } 1994c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 1995c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 1996c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser ac_test long_64bit '!' long_32bit 0 'whether long is 64 bit wide' <<-'EOF' 1997c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define MKSH_INCLUDES_ONLY 1998c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #include "sh.h" 1999c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #ifndef CHAR_BIT 2000c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define CHAR_BIT 0 2001c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #endif 2002c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser struct ctasserts { 2003c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser #define cta(name, assertion) char name[(assertion) ? 1 : -1] 2004c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cta(char_is_8_bits, (CHAR_BIT) == 8); 2005c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser cta(long_is_64_bits, sizeof(long) == 8); 2006c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser }; 2007c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser int main(void) { return (sizeof(struct ctasserts)); } 2008c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOF 2009c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2010c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $HAVE_LONG_32BIT$HAVE_LONG_64BIT in 2011c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 10) check_categories="$check_categories int:32" ;; 2012c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 01) check_categories="$check_categories int:64" ;; 2013c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *) check_categories="$check_categories int:u" ;; 2014c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 2015c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserfi 2016c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2017c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser# 20185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Compiler: Praeprocessor (only if needed) 20195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 20205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest 0 = $HAVE_SYS_SIGNAME && if ac_testinit cpp_dd '' \ 20215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 'checking if the C Preprocessor supports -dD'; then 20225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo '#define foo bar' >conftest.c 20235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vv ']' "$CPP $CFLAGS $CPPFLAGS $NOWARN -dD conftest.c >x" 20245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru grep '#define foo bar' x >/dev/null 2>&1 && fv=1 20255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru rmf conftest.c x vv.out 20265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ac_testdone 20275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 20285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 20295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 20305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# End of mirtoconf checks 20315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# 20325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e ... done. 20335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 20345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Some operating systems have ancient versions of ed(1) writing 20355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# the character count to standard output; cope for that 20365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruecho wq >x 20375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querued x <x 2>/dev/null | grep 3 >/dev/null 2>&1 && \ 203803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra check_categories="$check_categories $oldish_ed" 20395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurmf x vv.out 20405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 20415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test 0 = $HAVE_SYS_SIGNAME; then 20425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test 1 = $HAVE_CPP_DD; then 20435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e Generating list of signal names... 20445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 20455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e No list of signal names available via cpp. Falling back... 20465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 2047c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sigseenone=: 2048c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sigseentwo=: 20495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo '#include <signal.h> 20505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#ifndef NSIG 20515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#if defined(_NSIG) 20525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#define NSIG _NSIG 20535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#elif defined(SIGMAX) 20545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#define NSIG (SIGMAX+1) 2055c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#elif defined(_SIGMAX) 2056c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#define NSIG (_SIGMAX+1) 20575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#endif 20585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#endif 2059c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserint 2060c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasermksh_cfg= NSIG 2061c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser;' >conftest.c 2062c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # GNU sed 2.03 segfaults when optimising this to sed -n 20635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru NSIG=`vq "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c" | \ 2064c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser grep '^ *mksh_cfg *=' | \ 2065c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sed 's/^ *mksh_cfg *=[ ]*\([()0-9x+-][()0-9x+ -]*\).*$/\1/'` 20665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru case $NSIG in 2067c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *mksh_cfg*) $e "Error: NSIG='$NSIG'"; NSIG=0 ;; 2068c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *[\ \(\)+-]*) NSIG=`"$AWK" "BEGIN { print $NSIG }" </dev/null` ;; 20695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 20705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru printf=printf 20715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru (printf hallo) >/dev/null 2>&1 || printf=echo 2072c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser test $printf = echo || test "`printf %d 42`" = 42 || printf=echo 20735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $printf = echo || NSIG=`printf %d "$NSIG" 2>/dev/null` 20745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $printf "NSIG=$NSIG ... " 2075c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sigs="INT SEGV ABRT KILL ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL" 2076c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sigs="$sigs INFO IO IOT LOST PIPE PROF PWR QUIT RESV SAK STOP SYS TERM" 20775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru sigs="$sigs TRAP TSTP TTIN TTOU URG USR1 USR2 VTALRM WINCH XCPU XFSZ" 20785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 1 = $HAVE_CPP_DD && test $NSIG -gt 1 && sigs="$sigs "`vq \ 20795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru "$CPP $CFLAGS $CPPFLAGS $NOWARN -dD conftest.c" | \ 2080c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser grep '[ ]SIG[A-Z0-9][A-Z0-9]*[ ]' | \ 2081c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sed 's/^.*[ ]SIG\([A-Z0-9][A-Z0-9]*\)[ ].*$/\1/' | sort` 20825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $NSIG -gt 1 || sigs= 20835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for name in $sigs; do 2084c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $sigseenone in 2085c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser *:$name:*) continue ;; 2086c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser esac 2087c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sigseenone=$sigseenone$name: 20885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo '#include <signal.h>' >conftest.c 2089c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo int >>conftest.c 2090c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo mksh_cfg= SIG$name >>conftest.c 2091c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo ';' >>conftest.c 2092c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # GNU sed 2.03 croaks on optimising this, too 20935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru vq "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c" | \ 2094c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser grep '^ *mksh_cfg *=' | \ 2095c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sed 's/^ *mksh_cfg *=[ ]*\([0-9][0-9x]*\).*$/:\1 '$name/ 2096c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser done | sed -n '/^:[^ ]/s/^://p' | while read nr name; do 20975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $printf = echo || nr=`printf %d "$nr" 2>/dev/null` 20985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $nr -gt 0 && test $nr -le $NSIG || continue 2099c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser case $sigseentwo in 21005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru *:$nr:*) ;; 21015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru *) echo " { \"$name\", $nr }," 2102c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser sigseentwo=$sigseentwo$nr: 21035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $printf "$name=$nr " >&2 21045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 21055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru esac 21065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 2>&1 >signames.inc 21075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru rmf conftest.c 21085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e done. 21095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 21105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 2111c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseraddsrcs -s '!' HAVE_STRLCPY strlcpy.c 21125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddsrcs USE_PRINTF_BUILTIN printf.c 211303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condratest 1 = "$USE_PRINTF_BUILTIN" && add_cppflags -DMKSH_PRINTF_BUILTIN 21145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest 1 = "$HAVE_CAN_VERB" && CFLAGS="$CFLAGS -verbose" 2115c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertest -n "$LDSTATIC" && add_cppflags -DMKSH_OPTSTATIC 2116811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaseradd_cppflags -DMKSH_BUILD_R=481 21175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 21185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e $bi$me: Finished configuration testing, now producing output.$ao 21195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 21205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufiles= 21215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruobjs= 21225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusp= 2123c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercase $tcfn in 2124c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasera.exe) mkshexe=$tfn.exe ;; 2125c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser*) mkshexe=$tfn ;; 2126c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseresac 21275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $curdir in 2128c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser*\ *) mkshshebang="#!./$mkshexe" ;; 2129c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser*) mkshshebang="#!$curdir/$mkshexe" ;; 21305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 2131c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercat >test.sh <<-EOF 2132c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser $mkshshebang 21335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru LC_ALL=C PATH='$PATH'; export LC_ALL PATH 21345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test -n "\$KSH_VERSION" || exit 1 213503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra set -A check_categories -- $check_categories 2136c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser pflag='$curdir/$mkshexe' 213703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra sflag='$srcdir/check.t' 2138c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser usee=0 Pflag=0 Sflag=0 uset=0 vflag=1 xflag=0 2139c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser while getopts "C:e:fPp:QSs:t:v" ch; do case \$ch { 214003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (C) check_categories[\${#check_categories[*]}]=\$OPTARG ;; 214103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (e) usee=1; eflag=\$OPTARG ;; 2142c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (f) check_categories[\${#check_categories[*]}]=fastbox ;; 214303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (P) Pflag=1 ;; 2144c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (+P) Pflag=0 ;; 214503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (p) pflag=\$OPTARG ;; 2146c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (Q) vflag=0 ;; 2147c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (+Q) vflag=1 ;; 2148c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (S) Sflag=1 ;; 2149c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (+S) Sflag=0 ;; 215003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (s) sflag=\$OPTARG ;; 215103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (t) uset=1; tflag=\$OPTARG ;; 215203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (v) vflag=1 ;; 2153c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (+v) vflag=0 ;; 215403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (*) xflag=1 ;; 215503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra } 215603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra done 215703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra shift \$((OPTIND - 1)) 2158c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser set -A args -- '$srcdir/check.pl' -p "\$pflag" 215903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra x= 216003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra for y in "\${check_categories[@]}"; do 216103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra x=\$x,\$y 216203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra done 216303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra if [[ -n \$x ]]; then 216403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra args[\${#args[*]}]=-C 216503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra args[\${#args[*]}]=\${x#,} 216603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fi 216703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra if (( usee )); then 216803ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra args[\${#args[*]}]=-e 216903ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra args[\${#args[*]}]=\$eflag 217003ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fi 217103ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (( Pflag )) && args[\${#args[*]}]=-P 217203ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra if (( uset )); then 217303ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra args[\${#args[*]}]=-t 217403ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra args[\${#args[*]}]=\$tflag 217503ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra fi 217603ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (( vflag )) && args[\${#args[*]}]=-v 217703ebf06f4e1112a0e9533b93062d169232c4cbfeGeremy Condra (( xflag )) && args[\${#args[*]}]=-x # force usage by synerr 21785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru print Testing mksh for conformance: 2179c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fgrep -e MirOS: -e MIRBSD "\$sflag" 21805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru print "This shell is actually:\\n\\t\$KSH_VERSION" 21815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru print 'test.sh built for mksh $dstversion' 21825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cstr='\$os = defined \$^O ? \$^O : "unknown";' 21835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cstr="\$cstr"'print \$os . ", Perl version " . \$];' 21845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for perli in \$PERL perl5 perl no; do 2185c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if [[ \$perli = no ]]; then 2186c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser print Cannot find a working Perl interpreter, aborting. 2187c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser exit 1 2188c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 2189c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser print "Trying Perl interpreter '\$perli'..." 2190c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser perlos=\$(\$perli -e "\$cstr") 2191c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rv=\$? 2192c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser print "Errorlevel \$rv, running on '\$perlos'" 2193c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if (( rv )); then 2194c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser print "=> not using" 2195c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser continue 2196c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 2197c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser if [[ -n \$perlos ]]; then 2198c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser print "=> using it" 2199c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser break 2200c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser fi 2201c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser done 2202c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (( Sflag )) || echo + \$perli "\${args[@]}" -s "\$sflag" "\$@" 2203c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (( Sflag )) || exec \$perli "\${args[@]}" -s "\$sflag" "\$@"$tsts 2204c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser # use of the -S option for check.t split into multiple chunks 2205c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rv=0 2206c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser for s in "\$sflag".*; do 2207c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo + \$perli "\${args[@]}" -s "\$s" "\$@" 2208c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser \$perli "\${args[@]}" -s "\$s" "\$@"$tsts 2209c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rc=\$? 2210c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser (( rv = rv ? rv : rc )) 22115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 2212c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser exit \$rv 22135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 22145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruchmod 755 test.sh 2215811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasercase $cm in 2216811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserdragonegg) 22175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru emitbc="-S -flto" 2218811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 2219811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserllvm) 2220811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser emitbc="-emit-llvm -c" 2221811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 2222811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser*) 22235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru emitbc=-c 2224811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser ;; 2225811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaseresac 2226c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserecho ": # work around NeXTstep bug" >Rebuild.sh 2227c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserecho set -x >>Rebuild.sh 22285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufor file in $SRCS; do 22295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru op=`echo x"$file" | sed 's/^x\(.*\)\.c$/\1./'` 22305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test -f $file || file=$srcdir/$file 22315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru files="$files$sp$file" 22325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru sp=' ' 22335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "$CC $CFLAGS $CPPFLAGS $emitbc $file || exit 1" >>Rebuild.sh 22345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test $cm = dragonegg; then 22355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "mv ${op}s ${op}ll" >>Rebuild.sh 22365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru echo "llvm-as ${op}ll || exit 1" >>Rebuild.sh 22375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru objs="$objs$sp${op}bc" 22385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru else 22395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru objs="$objs$sp${op}o" 22405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 22415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudone 22425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $cm in 22435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudragonegg|llvm) 2244c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo "rm -f $tfn.s" >>Rebuild.sh 2245c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser echo "llvm-link -o - $objs | opt $optflags | llc -o $tfn.s" >>Rebuild.sh 2246c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser lobjs=$tfn.s 22475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 22485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru*) 22495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru lobjs=$objs 22505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 22515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 22525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruecho tcfn=$mkshexe >>Rebuild.sh 22535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruecho "$CC $CFLAGS $LDFLAGS -o \$tcfn $lobjs $LIBS $ccpr" >>Rebuild.sh 2254811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserecho "test -f \$tcfn || exit 1; $SIZE \$tcfn" >>Rebuild.sh 22555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test $cm = makefile; then 22565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru extras='emacsfn.h sh.h sh_flags.h var_spec.h' 22575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test 0 = $HAVE_SYS_SIGNAME && extras="$extras signames.inc" 22585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru cat >Makefrag.inc <<EOF 22595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Makefile fragment for building mksh $dstversion 22605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 22615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruPROG= $mkshexe 22625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruMAN= mksh.1 22635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruSRCS= $SRCS 22645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruSRCS_FP= $files 22655155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruOBJS_BP= $objs 22665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruINDSRCS= $extras 22675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNONSRCS_INST= dot.mkshrc \$(MAN) 22685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruNONSRCS_NOINST= Build.sh Makefile Rebuild.sh check.pl check.t test.sh 22695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCC= $CC 22705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCFLAGS= $CFLAGS 22715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCPPFLAGS= $CPPFLAGS 22725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruLDFLAGS= $LDFLAGS 22735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruLIBS= $LIBS 22745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 22755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# not BSD make only: 22765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#VPATH= $srcdir 22775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#all: \$(PROG) 22785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#\$(PROG): \$(OBJS_BP) 22795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# \$(CC) \$(CFLAGS) \$(LDFLAGS) -o \$@ \$(OBJS_BP) \$(LIBS) 22805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#\$(OBJS_BP): \$(SRCS_FP) \$(NONSRCS) 22815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#.c.o: 22825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# \$(CC) \$(CFLAGS) \$(CPPFLAGS) -c \$< 22835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 22845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# for all make variants: 2285c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser#REGRESS_FLAGS= -f 22865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#regress: 22875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# ./test.sh \$(REGRESS_FLAGS) 2288c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasercheck_categories=$check_categories 22895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru 22905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# for BSD make only: 22915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#.PATH: $srcdir 22925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#.include <bsd.prog.mk> 22935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruEOF 22945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e 22955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e Generated Makefrag.inc successfully. 22965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru exit 0 22975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 22985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruif test $cm = combine; then 22995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru objs="-o $mkshexe" 23005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for file in $SRCS; do 23015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test -f $file || file=$srcdir/$file 23025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru objs="$objs $file" 23035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 23045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru emitbc="-fwhole-program --combine" 23055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru v "$CC $CFLAGS $CPPFLAGS $LDFLAGS $emitbc $objs $LIBS $ccpr" 23065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruelif test 1 = $pm; then 23075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for file in $SRCS; do 23085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test -f $file || file=$srcdir/$file 23095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru v "$CC $CFLAGS $CPPFLAGS $emitbc $file" & 23105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 23115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru wait 23125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruelse 23135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru for file in $SRCS; do 23145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test $cm = dragonegg && \ 23155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru op=`echo x"$file" | sed 's/^x\(.*\)\.c$/\1./'` 23165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru test -f $file || file=$srcdir/$file 23175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru v "$CC $CFLAGS $CPPFLAGS $emitbc $file" || exit 1 23185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru if test $cm = dragonegg; then 23195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru v "mv ${op}s ${op}ll" 23205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru v "llvm-as ${op}ll" || exit 1 23215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru fi 23225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru done 23235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 23245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucase $cm in 23255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querudragonegg|llvm) 2326c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rmf $tfn.s 2327c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser v "llvm-link -o - $objs | opt $optflags | llc -o $tfn.s" 23285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru ;; 23295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruesac 23305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutcfn=$mkshexe 23315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest $cm = combine || v "$CC $CFLAGS $LDFLAGS -o $tcfn $lobjs $LIBS $ccpr" 23325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest -f $tcfn || exit 1 2333c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glasertest 1 = $r || v "$NROFF -mdoc <'$srcdir/mksh.1' >$tfn.cat1" || \ 2334c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser rmf $tfn.cat1 2335811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glasertest 0 = $eq && v $SIZE $tcfn 23365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querui=install 23375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest -f /usr/ucb/$i && i=/usr/ucb/$i 23385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest 1 = $eq && e=: 23395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e 23405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e Installing the shell: 2341c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser$e "# $i -c -s -o root -g bin -m 555 $tfn /bin/$tfn" 2342811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserif test $legacy = 0; then 2343811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser $e "# grep -x /bin/$tfn /etc/shells >/dev/null || echo /bin/$tfn >>/etc/shells" 2344811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser $e "# $i -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/" 2345811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaserfi 23465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e 23475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e Installing the manual: 2348c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserif test -f $tfn.cat1; then 2349c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser $e "# $i -c -o root -g bin -m 444 $tfn.cat1" \ 2350c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser "/usr/share/man/cat1/$tfn.0" 23515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru $e or 23525155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querufi 2353811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten Glaser$e "# $i -c -o root -g bin -m 444 $tfn.1 /usr/share/man/man1/$tfn.1" 23545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e 23555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e Run the regression test suite: ./test.sh 23565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru$e Please also read the sample file dot.mkshrc and the fine manual. 23575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruexit 0 2358c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2359c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser: <<'EOD' 2360c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2361c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser=== Environment used === 2362c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2363c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser==== build environment ==== 2364c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserAWK default: awk 2365c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserCC default: cc 2366c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserCFLAGS if empty, defaults to -xO2 or +O2 2367c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser or -O3 -qstrict or -O2, per compiler 2368c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserCPPFLAGS default empty 2369c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserLDFLAGS default empty; added before sources 2370c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserLDSTATIC set this to '-static'; default unset 2371c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserLIBS default empty; added after sources 2372c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser [Interix] default: -lcrypt (XXX still needed?) 2373c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserNOWARN -Wno-error or similar 2374c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserNROFF default: nroff 2375c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserTARGET_OS default: $(uname -s || uname) 2376c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserTARGET_OSREV [QNX] default: $(uname -r) 2377c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2378c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser==== feature selectors ==== 2379c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserUSE_PRINTF_BUILTIN 1 to include (unsupported) printf(1) as builtin 2380c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser===== general format ===== 2381c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserHAVE_STRLEN ac_test 2382c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserHAVE_STRING_H ac_header 2383c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserHAVE_CAN_FSTACKPROTECTORALL ac_flags 2384c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2385c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser==== cpp definitions ==== 2386c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserDEBUG dont use in production, wants gcc, implies: 2387c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserDEBUG_LEAKS enable freeing resources before exiting 2388c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSHRC_PATH "~/.mkshrc" (do not change) 2389c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_A4PB force use of arc4random_pushb 2390c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_ASSUME_UTF8 (0=disabled, 1=enabled; default: unset) 2391811a575c0f6a5ef00a921d14c1830ef5ae1bd796Thorsten GlaserMKSH_BINSHPOSIX if */sh or */-sh, enable set -o posix 2392c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_BINSHREDUCED if */sh or */-sh, enable set -o sh 2393c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_CLRTOEOL_STRING "\033[K" 2394c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_CLS_STRING "\033[;H\033[J" 2395c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_CONSERVATIVE_FDS fd 0-9 for scripts, shell only up to 31 2396c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DEFAULT_EXECSHELL "/bin/sh" (do not change) 2397c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DEFAULT_PROFILEDIR "/etc" (do not change) 2398c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DEFAULT_TMPDIR "/tmp" (do not change) 2399c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DISABLE_DEPRECATED disable code paths scheduled for later removal 2400c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DISABLE_EXPERIMENTAL disable code not yet comfy for (LTS) snapshots 2401c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DISABLE_TTY_WARNING shut up warning about ctty if OS cant be fixed 2402c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_DONT_EMIT_IDSTRING omit RCS IDs from binary 2403c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_MIDNIGHTBSD01ASH_COMPAT set -o sh: additional compatibility quirk 2404c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NOPROSPECTOFWORK disable jobs, co-processes, etc. (do not use) 2405c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NOPWNAM skip PAM calls, for -static on eglibc, Solaris 2406c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NO_CMDLINE_EDITING disable command line editing code entirely 2407c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NO_DEPRECATED_WARNING omit warning when deprecated stuff is run 2408c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NO_EXTERNAL_CAT omit hack to skip cat builtin when flags passed 2409c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NO_LIMITS omit ulimit code 2410c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NO_SIGSETJMP define if sigsetjmp is broken or not available 2411c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_NO_SIGSUSPEND use sigprocmask+pause instead of sigsuspend 2412c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_SMALL omit some code, optimise hard for size (slower) 2413c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_SMALL_BUT_FAST disable some hard-for-size optim. (modern sys.) 2414c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_S_NOVI=1 disable Vi editing mode (default if MKSH_SMALL) 2415c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_TYPEDEF_SIG_ATOMIC_T define to e.g. 'int' if sig_atomic_t is missing 2416c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_TYPEDEF_SSIZE_T define to e.g. 'long' if your OS has no ssize_t 2417c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_UNEMPLOYED disable job control (but not jobs/co-processes) 2418c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2419c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser=== generic installation instructions === 2420c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2421c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserSet CC and possibly CFLAGS, CPPFLAGS, LDFLAGS, LIBS. If cross-compiling, 2422c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaseralso set TARGET_OS. To disable tests, set e.g. HAVE_STRLCPY=0; to enable 2423c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserthem, set to a value other than 0 or 1. Ensure /bin/ed is installed. For 2424c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserMKSH_SMALL but with Vi mode, add -DMKSH_S_NOVI=0 to CPPFLAGS as well. 2425c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2426c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserNormally, the following command is what you want to run, then: 2427c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser$ (sh Build.sh -r -c lto && ./test.sh -f) 2>&1 | tee log 2428c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2429c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserCopy dot.mkshrc to /etc/skel/.mkshrc; install mksh into $prefix/bin; or 2430c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser/bin; install the manpage, if omitting the -r flag a catmanpage is made 2431c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserusing $NROFF. Consider using a forward script as /etc/skel/.mkshrc like 2432c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserhttps://www.mirbsd.org/cvs.cgi/contrib/hosted/tg/deb/mksh/debian/.mkshrc?rev=HEAD 2433c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaserand put dot.mkshrc as /etc/mkshrc so users need not keep up their HOME. 2434c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten Glaser 2435c2dc5def5e2273bb1d78b4ba032a3903dd0f980cThorsten GlaserEOD 2436