Skip to content
Snippets Groups Projects
Commit ffa71587 authored by Lev Walkin's avatar Lev Walkin
Browse files

better dependency tracking

parent fc0d66f0
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,11 @@
# 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'.'`
......@@ -17,45 +22,68 @@ 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 $?
ln -fs ../$source || exit $?
# Compile the corresponding .asn1 spec.
set -x
../../asn1c \
-S ../../../skeletons \
-Wdebug-compiler "$@" \
../../../tests/${testno}-*.asn1 || exit $?
set +x
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}
SRCS=`echo *.c*`
OBJS1=\${SRCS:.c=.o}
OBJS=\${OBJS1:.cc=.o}
check-executable: \${OBJS}
\$(CC) \$(CFLAGS) -o check-executable \$(OBJS)
.SUFFIXES:
.SUFFIXES: .c .cc .o
.c.o:
\$(CC) \$(CFLAGS) -o \$@ -c \$<
.cc.o:
\$(CXX) \$(CXXFLAGS) -o \$@ -c \$<
check: check-executable
all: check-executable
check-executable: compiled-module object-files
\$(CC) \$(CFLAGS) -o check-executable *.o
# Cannot track dependencies automatically because files are not known beforehand
object-files: *.c*
@for sfile in *.c; do \\
ofile=\`echo "\$\$sfile" | sed -e 's/\.c[c]*\$\$/.o/'\`; \\
if [ "\$\$sfile" -nt "\$\$ofile" ]; then \\
echo "\$(CC) \$(CFLAGS) -o \$\$ofile -c \$\$sfile"; \\
\$(CC) \$(CFLAGS) -o \$\$ofile -c \$\$sfile; \\
fi; \\
done
@for sfile in *.cc; do \\
ofile=\`echo "\$\$sfile" | sed -e 's/\.c[c]*\$\$/.o/'\`; \\
if [ "\$\$sfile" -nt "\$\$ofile" ]; then \\
echo "\$(CXX) \$(CXXFLAGS) -o \$\$ofile -c \$\$sfile";\\
\$(CXX) \$(CXXFLAGS) -o \$\$ofile -c \$\$sfile; \\
fi; \\
done
@touch object-files
# Compile the corresponding .asn1 spec.
compiled-module: ${asn_module} ../../asn1c
../../asn1c -S ../../../skeletons -Wdebug-compiler \\
${AFLAGS} ${asn_module}
@touch compiled-module
check-succeeded: check-executable
@rm -f check-succeeded
./check-executable
@touch check-succeeded
check: check-succeeded
clean:
@rm -f *.o
EOM
# Perform building and checking
make check || exit $?
# Perform building and checking
make check || exit $?
# Uncomment this to jeopardize debugging
# make clean
rm -f ../${testdir}-FAILED
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment