forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			454 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			454 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#! /bin/sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This is a script for the use of PCRE2 maintainers. It configures and rebuilds
							 | 
						||
| 
								 | 
							
								# PCRE2 with a variety of configuration options, and in each case runs the
							 | 
						||
| 
								 | 
							
								# tests to ensure that all goes well. Every possible combination would take far
							 | 
						||
| 
								 | 
							
								# too long, so we use a representative sample. This script should be run in the
							 | 
						||
| 
								 | 
							
								# PCRE2 source directory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# While debugging, it is sometimes useful to be able to cut out some of the
							 | 
						||
| 
								 | 
							
								# tests, in order to run those that are giving errors. The following options
							 | 
						||
| 
								 | 
							
								# do this:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# -noasan         skip the test that uses -fsanitize=address
							 | 
						||
| 
								 | 
							
								# -nousan         skip the test that uses -fsanitize=undefined
							 | 
						||
| 
								 | 
							
								# -nodebug        skip the test that uses --enable-debug
							 | 
						||
| 
								 | 
							
								# -nojit          skip all JIT tests
							 | 
						||
| 
								 | 
							
								# -nojitmain      skip non-valgrind JIT tests
							 | 
						||
| 
								 | 
							
								# -nojitvalgrind  skip JIT tests with valgrind
							 | 
						||
| 
								 | 
							
								# -nomain         skip all the main (non-JIT) set of tests
							 | 
						||
| 
								 | 
							
								# -nomainvalgrind skip the main (non-JIT) valgrind tests
							 | 
						||
| 
								 | 
							
								# -notmp          skip the test in a temporary directory
							 | 
						||
| 
								 | 
							
								# -novalgrind     skip all the valgrind tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Alternatively, if any of those names are given with '+' instead of '-no',
							 | 
						||
| 
								 | 
							
								# only those groups named with '+' are run (e.g. +jit). If -dummy is given,
							 | 
						||
| 
								 | 
							
								# no tests are actually run - this provides a means of testing the selectors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The -v option causes a call to 'pcre2test -C' to happen for each
							 | 
						||
| 
								 | 
							
								# configuration.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								useasan=1
							 | 
						||
| 
								 | 
							
								useusan=1
							 | 
						||
| 
								 | 
							
								usedebug=1
							 | 
						||
| 
								 | 
							
								usejit=1
							 | 
						||
| 
								 | 
							
								usejitvalgrind=1
							 | 
						||
| 
								 | 
							
								usemain=1
							 | 
						||
| 
								 | 
							
								usemainvalgrind=1
							 | 
						||
| 
								 | 
							
								usetmp=1
							 | 
						||
| 
								 | 
							
								usevalgrind=1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								dummy=0
							 | 
						||
| 
								 | 
							
								seenplus=0
							 | 
						||
| 
								 | 
							
								verbose=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								while [ $# -gt 0 ] ; do
							 | 
						||
| 
								 | 
							
								  case $1 in
							 | 
						||
| 
								 | 
							
								    +*) if [ $seenplus -eq 0 ]; then
							 | 
						||
| 
								 | 
							
								          useasan=0
							 | 
						||
| 
								 | 
							
								          useusan=0
							 | 
						||
| 
								 | 
							
								          usedebug=0
							 | 
						||
| 
								 | 
							
								          usejit=0
							 | 
						||
| 
								 | 
							
								          usejitvalgrind=0
							 | 
						||
| 
								 | 
							
								          usemain=0
							 | 
						||
| 
								 | 
							
								          usemainvalgrind=0
							 | 
						||
| 
								 | 
							
								          usetmp=0
							 | 
						||
| 
								 | 
							
								          seenplus=1
							 | 
						||
| 
								 | 
							
								        fi;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  case $1 in
							 | 
						||
| 
								 | 
							
								    -dummy)          dummy=1;;
							 | 
						||
| 
								 | 
							
								    -v)              verbose=1;;
							 | 
						||
| 
								 | 
							
								    -noasan)         useasan=0;;
							 | 
						||
| 
								 | 
							
								    -nousan)         useusan=0;;
							 | 
						||
| 
								 | 
							
								    -nodebug)        usedebug=0;;
							 | 
						||
| 
								 | 
							
								    -nojit)          usejit=0; usejitvalgrind=0;;
							 | 
						||
| 
								 | 
							
								    -nojitmain)      usejit=0;;
							 | 
						||
| 
								 | 
							
								    -nojitvalgrind)  usejitvalgrind=0;;
							 | 
						||
| 
								 | 
							
								    -nomain)         usemain=0; usemainvalgrind=0;;
							 | 
						||
| 
								 | 
							
								    -nomainvalgrind) usemainvalgrind=0;;
							 | 
						||
| 
								 | 
							
								    -notmp)          usetmp=0;;
							 | 
						||
| 
								 | 
							
								    -novalgrind)     usevalgrind=0;;
							 | 
						||
| 
								 | 
							
								    +asan)           useasan=1;;
							 | 
						||
| 
								 | 
							
								    +usan)           useusan=1;;
							 | 
						||
| 
								 | 
							
								    +debug)          usedebug=1;;
							 | 
						||
| 
								 | 
							
								    +jit)            usejit=1; usejitvalgrind=1;;
							 | 
						||
| 
								 | 
							
								    +jitmain)        usejit=1;;
							 | 
						||
| 
								 | 
							
								    +jitvalgrind)    usejitvalgrind=1;;
							 | 
						||
| 
								 | 
							
								    +main)           usemain=1; usemainvalgrind=1;;
							 | 
						||
| 
								 | 
							
								    +mainvalgrind)   usemainvalgrind=1;;
							 | 
						||
| 
								 | 
							
								    +tmp)            usetmp=1;;
							 | 
						||
| 
								 | 
							
								    +valgrind)       usevalgrind=1; usejitvalgrind=1; usemainvalgrind=1;;
							 | 
						||
| 
								 | 
							
								    *)               echo "Unknown option '$1'"; exit 1;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								  shift
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $usejitvalgrind -eq 0 -a $usemainvalgrind -eq 0 ] ; then
							 | 
						||
| 
								 | 
							
								  usevalgrind=0
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This is in case the caller has set aliases (as I do - PH)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								unset cp ls mv rm
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This is a temporary directory for testing out-of-line builds
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tmp=/tmp/pcre2testing
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Don't bother with compiler optimization for most tests; it just slows down
							 | 
						||
| 
								 | 
							
								# compilation a lot (and running the tests themselves is quick). However, one
							 | 
						||
| 
								 | 
							
								# special test turns optimization on, because it can provoke some compiler
							 | 
						||
| 
								 | 
							
								# warnings.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CFLAGS="-g"
							 | 
						||
| 
								 | 
							
								OFLAGS="-O0"
							 | 
						||
| 
								 | 
							
								ISGCC=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If the compiler is gcc, add a lot of warning switches.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cc --version >/tmp/pcre2ccversion 2>/dev/null
							 | 
						||
| 
								 | 
							
								if [ $? -eq 0 ] && grep GCC /tmp/pcre2ccversion >/dev/null; then
							 | 
						||
| 
								 | 
							
								  ISGCC=1
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wall"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wno-overlength-strings"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wpointer-arith"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wwrite-strings"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wundef -Wshadow"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wmissing-field-initializers"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wunused-parameter"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wextra -Wformat"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wbad-function-cast"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wmissing-declarations"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wnested-externs"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -pedantic"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wuninitialized"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wmaybe-uninitialized" 
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wmissing-prototypes"
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS -Wstrict-prototypes"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								rm -f /tmp/pcre2ccversion
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This function runs a single test with the set of configuration options that
							 | 
						||
| 
								 | 
							
								# are in $opts. The source directory must be set in srcdir. The function must
							 | 
						||
| 
								 | 
							
								# be defined as "runtest()" not "function runtest()" in order to run on
							 | 
						||
| 
								 | 
							
								# Solaris.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								runtest()
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								  rm -f $srcdir/pcre2test $srcdir/pcre2grep $srcdir/pcre2_jit_test
							 | 
						||
| 
								 | 
							
								  testcount=`expr $testcount + 1`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ "$opts" = "" ] ; then
							 | 
						||
| 
								 | 
							
								    echo "[$testcount/$testtotal] Configuring with: default settings"
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    echo "[$testcount/$testtotal] Configuring with:"
							 | 
						||
| 
								 | 
							
								    echo "  $opts"
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ $dummy -eq 1 ]; then return; fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  CFLAGS="$CFLAGS" \
							 | 
						||
| 
								 | 
							
								    $srcdir/configure $opts >/dev/null 2>teststderrM
							 | 
						||
| 
								 | 
							
								  if [ $? -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo " "
							 | 
						||
| 
								 | 
							
								    echo "******** Error while configuring ********"
							 | 
						||
| 
								 | 
							
								    cat teststderrM
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# There is an infelicity in the Autotools world (as of October 2015) which
							 | 
						||
| 
								 | 
							
								# causes the message
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ar: `u' modifier ignored since `D' is the default (see `U')
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# to be output while linking. This triggers an unwanted error report from this
							 | 
						||
| 
								 | 
							
								# script, because it expects no stderr output while making. To get round this
							 | 
						||
| 
								 | 
							
								# we filter the stderr output through sed, removing all occurrences of the
							 | 
						||
| 
								 | 
							
								# above lines. Just for paranoia, check that sed is available before doing
							 | 
						||
| 
								 | 
							
								# this.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  echo "Making"
							 | 
						||
| 
								 | 
							
								  make -j >/dev/null 2>teststderrM
							 | 
						||
| 
								 | 
							
								  makeRC=$?
							 | 
						||
| 
								 | 
							
								  if command -v sed >/dev/null 2>&1 ; then
							 | 
						||
| 
								 | 
							
								    sed "/\`u' modifier ignored since \`D' is the default/ d" \
							 | 
						||
| 
								 | 
							
								      teststderrM > teststderrMM
							 | 
						||
| 
								 | 
							
								    mv -f teststderrMM teststderrM
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  if [ $makeRC -ne 0 -o -s teststderrM ]; then
							 | 
						||
| 
								 | 
							
								    echo " "
							 | 
						||
| 
								 | 
							
								    echo "******** Errors or warnings while making ********"
							 | 
						||
| 
								 | 
							
								    echo " "
							 | 
						||
| 
								 | 
							
								    cat teststderrM
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ $verbose -eq 1 ]; then
							 | 
						||
| 
								 | 
							
								    ./pcre2test -C
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ./pcre2test -C jit >/dev/null
							 | 
						||
| 
								 | 
							
								  jit=$?
							 | 
						||
| 
								 | 
							
								  ./pcre2test -C pcre2-8 >/dev/null
							 | 
						||
| 
								 | 
							
								  pcre2_8=$?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  echo "Running PCRE2 library tests $withvalgrind"
							 | 
						||
| 
								 | 
							
								  $srcdir/RunTest $valgrind >teststdoutM 2>teststderrM
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ $? -ne 0 -o -s teststderrM ]; then
							 | 
						||
| 
								 | 
							
								    echo " "
							 | 
						||
| 
								 | 
							
								    echo "**** Test failed ****"
							 | 
						||
| 
								 | 
							
								    if [ -s teststderrM ] ; then
							 | 
						||
| 
								 | 
							
								      cat teststderrM
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								      cat teststdoutM
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ $pcre2_8 -gt 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "Running pcre2grep tests $withvalgrind"
							 | 
						||
| 
								 | 
							
								    $srcdir/RunGrepTest $valgrind >teststdoutM 2>teststderrM
							 | 
						||
| 
								 | 
							
								    if [ $? -ne 0 -o -s teststderrM ]; then
							 | 
						||
| 
								 | 
							
								      echo " "
							 | 
						||
| 
								 | 
							
								      echo "**** Test failed ****"
							 | 
						||
| 
								 | 
							
								      cat teststderrM
							 | 
						||
| 
								 | 
							
								      cat teststdoutM
							 | 
						||
| 
								 | 
							
								      exit 1
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    echo "Skipping pcre2grep tests: 8-bit library not compiled"
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ "$jit" -gt 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "Running JIT regression tests $withvalgrind"
							 | 
						||
| 
								 | 
							
								    $jrvalgrind $srcdir/pcre2_jit_test >teststdoutM 2>teststderrM
							 | 
						||
| 
								 | 
							
								    if [ $? -ne 0 -o -s teststderrM ]; then
							 | 
						||
| 
								 | 
							
								      echo " "
							 | 
						||
| 
								 | 
							
								      echo "**** Test failed ****"
							 | 
						||
| 
								 | 
							
								      cat teststderrM
							 | 
						||
| 
								 | 
							
								      cat teststdoutM
							 | 
						||
| 
								 | 
							
								      exit 1
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    echo "Skipping JIT regression tests: JIT is not enabled"
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Update the total count whenever a new test is added; it is used to show
							 | 
						||
| 
								 | 
							
								# progess as each test is run.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								testtotal=`expr 17 \* $usemain + \
							 | 
						||
| 
								 | 
							
								  1 \* $usemain \* $usedebug + \
							 | 
						||
| 
								 | 
							
								  1 \* $usetmp + \
							 | 
						||
| 
								 | 
							
								  1 \* $ISGCC \* $usemain + \
							 | 
						||
| 
								 | 
							
								  1 \* $ISGCC \* $usemain \* $useasan + \
							 | 
						||
| 
								 | 
							
								  1 \* $ISGCC \* $usemain \* $useusan + \
							 | 
						||
| 
								 | 
							
								  13 \* $usejit + \
							 | 
						||
| 
								 | 
							
								  2 \* $usemainvalgrind + \
							 | 
						||
| 
								 | 
							
								  2 \* $usejitvalgrind`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								testcount=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $testtotal -eq 0 ] ; then
							 | 
						||
| 
								 | 
							
								  echo "** No tests selected"
							 | 
						||
| 
								 | 
							
								  exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								valgrind=
							 | 
						||
| 
								 | 
							
								jrvalgrind=
							 | 
						||
| 
								 | 
							
								withvalgrind=
							 | 
						||
| 
								 | 
							
								srcdir=.
							 | 
						||
| 
								 | 
							
								export srcdir
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $usejit -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								  enable_jit=--enable-jit
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								  enable_jit=
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If gcc is in use, run a maximally configured test with -O2, because that can
							 | 
						||
| 
								 | 
							
								# throw up warnings that are not detected with -O0. Then run a second test with
							 | 
						||
| 
								 | 
							
								# -fsanitize=address, which also may throw up new warnings as well as checking
							 | 
						||
| 
								 | 
							
								# things at runtime. Finally, run another test using -fsanitize=undefined
							 | 
						||
| 
								 | 
							
								# -std-gnu99 to check for runtime actions that are not well defined. However,
							 | 
						||
| 
								 | 
							
								# we also use -fno-sanitize=shift to avoid warnings for shifts of negative
							 | 
						||
| 
								 | 
							
								# numbers, which occur in src/pcre2_jit_compile.c.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $ISGCC -ne 0 -a $usemain -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								  echo "---------- Maximally configured test with -O2 ----------"
							 | 
						||
| 
								 | 
							
								  SAVECFLAGS="$CFLAGS"
							 | 
						||
| 
								 | 
							
								  CFLAGS="-O2 $CFLAGS"
							 | 
						||
| 
								 | 
							
								  echo "CFLAGS=$CFLAGS"
							 | 
						||
| 
								 | 
							
								  opts="--disable-shared $enable_jit --enable-pcre2-16 --enable-pcre2-32"
							 | 
						||
| 
								 | 
							
								  runtest
							 | 
						||
| 
								 | 
							
								  if [ $useasan -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "---------- Maximally configured test with -fsanitize=address ----------"
							 | 
						||
| 
								 | 
							
								# Following a kernel change, sanitize address doesn't work unless the extra
							 | 
						||
| 
								 | 
							
								# PIE options are also set.
							 | 
						||
| 
								 | 
							
								    CFLAGS="$OFLAGS $SAVECFLAGS -no-pie -fno-PIE -fsanitize=address"
							 | 
						||
| 
								 | 
							
								    echo "CFLAGS=$CFLAGS"
							 | 
						||
| 
								 | 
							
								    opts="--disable-shared $enable_jit --enable-pcre2-16 --enable-pcre2-32"
							 | 
						||
| 
								 | 
							
								    runtest
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								# This also seems to be the case for sanitize undefined.   
							 | 
						||
| 
								 | 
							
								  if [ $useusan -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "------- Maximally configured test with -fsanitize=undefined -fno-sanitize=shift -fno-sanitize=alignment -std=gnu99 -------"
							 | 
						||
| 
								 | 
							
								    CFLAGS="$OFLAGS $SAVECFLAGS -no-pie -fno-PIE -fsanitize=undefined -fno-sanitize=shift -fno-sanitize=alignment -std=gnu99"
							 | 
						||
| 
								 | 
							
								    echo "CFLAGS=$CFLAGS"
							 | 
						||
| 
								 | 
							
								    opts="--disable-shared $enable_jit --enable-pcre2-16 --enable-pcre2-32"
							 | 
						||
| 
								 | 
							
								    runtest
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  CFLAGS="$OFLAGS $SAVECFLAGS"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This set of tests builds PCRE2 and runs the tests with a variety of configure
							 | 
						||
| 
								 | 
							
								# options, in the current (source) directory. The empty configuration builds
							 | 
						||
| 
								 | 
							
								# with all the default settings. As well as testing that these options work, we
							 | 
						||
| 
								 | 
							
								# use --disable-shared or --disable-static except for the default test (which
							 | 
						||
| 
								 | 
							
								# builds both) to save a bit of time by building only one version of the
							 | 
						||
| 
								 | 
							
								# library for the subsequent tests.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "---------- CFLAGS for the remaining tests ----------"
							 | 
						||
| 
								 | 
							
								echo "CFLAGS=$CFLAGS"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $usemain -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								  if [ $usedebug -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "---------- Maximally configured test with --enable-debug ----------"
							 | 
						||
| 
								 | 
							
								    opts="--disable-shared $enable_jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug"
							 | 
						||
| 
								 | 
							
								    runtest
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  echo "---------- Non-JIT tests in the current directory ----------"
							 | 
						||
| 
								 | 
							
								  for opts in \
							 | 
						||
| 
								 | 
							
								    "" \
							 | 
						||
| 
								 | 
							
								    "--disable-static" \
							 | 
						||
| 
								 | 
							
								    "--disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --disable-shared --enable-never-backslash-C" \
							 | 
						||
| 
								 | 
							
								    "--with-link-size=3 --disable-shared --disable-pcre2grep-callout" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-rebuild-chartables --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-newline-is-any --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-newline-is-cr --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-newline-is-crlf --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-newline-is-anycrlf --enable-bsr-anycrlf --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-newline-is-any --disable-static" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-pcre2-16" \
							 | 
						||
| 
								 | 
							
								    "--enable-pcre2-16 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-pcre2-32" \
							 | 
						||
| 
								 | 
							
								    "--enable-pcre2-32 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-pcre2-32 --enable-pcre2-16 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-pcre2-32 --enable-pcre2-16 --disable-pcre2-8 --disable-shared"
							 | 
						||
| 
								 | 
							
								  do
							 | 
						||
| 
								 | 
							
								    runtest
							 | 
						||
| 
								 | 
							
								  done
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Now run the JIT tests unless disabled
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $usejit -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								  echo "---------- JIT tests in the current directory ----------"
							 | 
						||
| 
								 | 
							
								  for opts in \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-jit --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --with-link-size=3 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-16 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-jit --enable-pcre2-16 --disable-pcre2-8 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-16 --disable-pcre2-8 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-16 --with-link-size=3 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-16 --with-link-size=4 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-32 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--disable-unicode --enable-jit --enable-pcre2-32 --disable-pcre2-8 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-32 --disable-pcre2-8 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-32 --with-link-size=4 --disable-shared" \
							 | 
						||
| 
								 | 
							
								    "--enable-jit --enable-pcre2-32 --enable-pcre2-16 --disable-pcre2-8 --enable-newline-is-anycrlf --enable-bsr-anycrlf --disable-shared"
							 | 
						||
| 
								 | 
							
								  do
							 | 
						||
| 
								 | 
							
								    runtest
							 | 
						||
| 
								 | 
							
								  done
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Now re-run some of the tests under valgrind.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $usevalgrind -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								  echo "---------- Tests in the current directory using valgrind ----------"
							 | 
						||
| 
								 | 
							
								  valgrind=valgrind
							 | 
						||
| 
								 | 
							
								  withvalgrind="with valgrind"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ $usemainvalgrind -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    for opts in \
							 | 
						||
| 
								 | 
							
								      "--disable-shared" \
							 | 
						||
| 
								 | 
							
								      "--with-link-size=3 --enable-pcre2-16 --enable-pcre2-32 --disable-shared"
							 | 
						||
| 
								 | 
							
								    do
							 | 
						||
| 
								 | 
							
								      opts="--enable-valgrind $opts"
							 | 
						||
| 
								 | 
							
								      runtest
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ $usejitvalgrind -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    jrvalgrind="valgrind --tool=memcheck -q --smc-check=all-non-file --suppressions=$srcdir/testdata/valgrind-jit.supp" 
							 | 
						||
| 
								 | 
							
								    for opts in \
							 | 
						||
| 
								 | 
							
								      "--enable-jit --disable-shared" \
							 | 
						||
| 
								 | 
							
								      "--enable-jit --enable-pcre2-16 --enable-pcre2-32"
							 | 
						||
| 
								 | 
							
								    do
							 | 
						||
| 
								 | 
							
								      opts="--enable-valgrind $opts"
							 | 
						||
| 
								 | 
							
								      runtest
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								valgrind=
							 | 
						||
| 
								 | 
							
								jrvalgrind=
							 | 
						||
| 
								 | 
							
								withvalgrind=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Clean up the distribution and then do at least one build and test in a
							 | 
						||
| 
								 | 
							
								# directory other than the source directory. It doesn't work unless the
							 | 
						||
| 
								 | 
							
								# source directory is cleaned up first.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ -f Makefile ]; then
							 | 
						||
| 
								 | 
							
								  echo "Running 'make distclean'"
							 | 
						||
| 
								 | 
							
								  make distclean >/dev/null 2>&1
							 | 
						||
| 
								 | 
							
								  if [ $? -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "** 'make distclean' failed"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "---------- End of tests in the source directory ----------"
							 | 
						||
| 
								 | 
							
								echo "Removing teststdoutM and teststderrM"
							 | 
						||
| 
								 | 
							
								rm -rf teststdoutM teststderrM
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ $usetmp -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								  echo "---------- Tests in the $tmp directory ----------"
							 | 
						||
| 
								 | 
							
								  srcdir=`pwd`
							 | 
						||
| 
								 | 
							
								  export srcdir
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ ! -e $tmp ]; then
							 | 
						||
| 
								 | 
							
								    mkdir $tmp
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if [ ! -d $tmp ]; then
							 | 
						||
| 
								 | 
							
								    echo "** Failed to create $tmp or it is not a directory"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  cd $tmp
							 | 
						||
| 
								 | 
							
								  if [ $? -ne 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "** Failed to cd to $tmp"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for opts in \
							 | 
						||
| 
								 | 
							
								    "--disable-shared"
							 | 
						||
| 
								 | 
							
								  do
							 | 
						||
| 
								 | 
							
								    runtest
							 | 
						||
| 
								 | 
							
								  done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  echo "Removing $tmp"
							 | 
						||
| 
								 | 
							
								  rm -rf $tmp
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "---------- All done ----------"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# End
							 |