asn1c/asn1c/tests/check-assembly.sh

77 lines
1.5 KiB
Bash
Executable File

#!/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
# Compute the .asn1 spec name by the given file name.
source=`echo "$1" | sed -e 's/.*\///'`
testno=`echo "$source" | cut -f2 -d'-' | cut -f1 -d'.'`
args=`echo "$source" | sed -e 's/\.c[c]*$//'`
testdir=test-${args}
OFS=$IFS
IFS="."
set $args
shift
IFS=$OFS
AFLAGS="$@"
touch ${testdir}-FAILED # Create this file to ease post mortem analysis
if [ ! -d $testdir ]; then
mkdir $testdir || exit $?
fi
cd $testdir || exit $?
rm -f ./$source 2>/dev/null
ln -fns ../$source || exit $?
asn_module=`echo ../../../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}
CXXFLAGS=\${COMMON_FLAGS} ${CXXFLAGS}
CC ?= ${CC}
all: check-executable
check-executable: compiled-module *.c*
@rm -f *.core
\$(CC) \$(CFLAGS) -o check-executable -lm *.c*
# Compile the corresponding .asn1 spec.
compiled-module: ${asn_module} ../../asn1c
../../asn1c -S ../../../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 || exit $?
rm -f ../${testdir}-FAILED
exit 0