blob: 82245f0c1f85a532e62d104257929f7fa5f11193 [file] [log] [blame]
#!/bin/sh
#
# This script is designed to quickly create lots of files in underlying
# test-* directories, do lots of other magic stuff and exit cleanly.
#
if [ "x$1" = "x" ]; then
echo "Usage: $0 <check-NN.c>"
exit
fi
set -e
# Compute the .asn1 spec name by the given file name.
source_full=$1
source_short=`echo "$source_full" | sed -e 's/.*\///'`
testno=`echo "$source_short" | cut -f2 -d'-' | cut -f1 -d'.'`
args=`echo "$source_short" | sed -e 's/\.c[c]*$//'`
testdir=test-${args}
OFS=$IFS
IFS="."
set $args
shift
IFS=$OFS
AFLAGS="$@"
# Assume the test fails. Will be removed when it passes well.
touch ${testdir}-FAILED
mkdir -p $testdir
cd $testdir
rm -f $source_short
ln -fns ../$source_full
asn_module=`echo ../${top_srcdir}/tests/${testno}-*.asn1`
# Create a Makefile for the project.
cat > Makefile <<EOM
# This file is autogenerated by ../$0
COMMON_FLAGS= -I. -DEMIT_ASN_DEBUG
CFLAGS = \${COMMON_FLAGS} ${CFLAGS} -g -O0
CPPFLAGS = -DSRCDIR=../${srcdir}
CXXFLAGS = \${COMMON_FLAGS} ${CXXFLAGS}
CC ?= ${CC}
all: check-executable
check-executable: compiled-module *.c*
@rm -f *.core
\$(CC) \$(CPPFLAGS) \$(CFLAGS) -o check-executable *.c* -lm
# Compile the corresponding .asn1 spec.
compiled-module: ${asn_module} ../${top_builddir}/asn1c/asn1c
../${top_builddir}/asn1c/asn1c -S ../${top_srcdir}/skeletons -Wdebug-compiler \\
${AFLAGS} ${asn_module}
rm -f converter-sample.c
@touch compiled-module
check-succeeded: check-executable
@rm -f check-succeeded
./check-executable
@touch check-succeeded
check: check-succeeded
clean:
@rm -f *.o check-executable
EOM
# Perform building and checking
make check
# Make sure the test is not marked as failed any longer.
rm -f ../${testdir}-FAILED