diff options
Diffstat (limited to 'dmake/tests/misc-20')
-rwxr-xr-x | dmake/tests/misc-20 | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/dmake/tests/misc-20 b/dmake/tests/misc-20 new file mode 100755 index 000000000000..c25bf05d8342 --- /dev/null +++ b/dmake/tests/misc-20 @@ -0,0 +1,121 @@ +#!/bin/sh + +# 16.09.2007 Volker Quetschke +# Check that inferred makefiles for .INCLUDE do not disturb the dependency +# checking afterwards. +# (issue 81296) + +: ${DMAKEPROG:=dmake} +file1="mfile1.mk" +file2="my.c" +file3="my.obj" +file4="my.foo" +tmpfiles="$file1 $file2 $file3 $file4" + +trap '{ echo "trapped signal - removing temporary files" ; rm -rf $tmpfiles ; }' 1 2 3 15 + +# Remove files from prior failed run +rm -rf $tmpfiles + +# Remember to quote variables in generated makefiles( $ -> \$ ). +# Test 1 - from testcase t_81296_5.mk +cat > $file1 <<EOT +SHELL*:=/bin/sh +SHELLFLAGS*:=-ce + +# Test that my.c is build when my.foo is newer. + +# rules.mk --- +%.obj : %.c ; @+printf "\$@:" +# @sleep 1 + @touch \$@ + +%.dpo : %.c ; @+printf "incbuild:\$@:" +# @sleep 1 + +# target.mk --- +all : my.obj ; @echo all + +# If the file exist no inference is done for it. +.INCLUDE .IGNORE : my.dpo + +# When inference was run on the %.dpo with an existing +# %.c these rule gets ignored. +# local makefile.mk --- +%.c : %.foo ; @+printf "\$@:" +# @sleep 1 + @touch \$@ +EOT + +# Create test environment +touch my.c +sleep 1 +touch my.foo + +output1=`eval ${DMAKEPROG} -rf $file1 2>&1 ` +result1=$? + +if test $result1 = 0 -a "$output1" = "incbuild:my.dpo:my.c:my.obj:all"; then + echo "Subtest 1: OK" +else + echo "Subtest 1: Wrong result: $output1" + echo + result1=1 +fi + +# Remove files from prior run +rm -rf $tmpfiles +# Remember to quote variables in generated makefiles( $ -> \$ ). +# Test 2 - from testcase t_81296_6.mk +cat > $file1 <<EOT +SHELL*:=/bin/sh +SHELLFLAGS*:=-ce + +# Test that no circular dependency error is issued: +# $ rm -f my.* ; touch my.c ; ./dmake/dmake.exe -rf t_81296_6.mk + +# rules.mk --- +%.obj : %.c ; @+printf "\$@:" + @touch \$@ + +%.dpo : %.c ; @+printf "incbuild:\$@:" + +# target.mk --- +all : my.obj ; @echo all + +# If the file exist no inference is done for it. +.INCLUDE .IGNORE : my.dpo + +%.c : %.foo ; @+printf "\$@:" + @touch \$@ + +# This leads to a (wrong) circular dependency error +my.obj : my.c + +EOT + +# Create test environment +touch my.c +sleep 1 +touch my.foo + +output2=`eval ${DMAKEPROG} -rf $file1 2>&1 ` +result2=$? + +if test $result2 = 0 -a "$output2" = "incbuild:my.dpo:my.c:my.obj:all"; then + echo "Subtest 2: OK" +else + echo "Subtest 2: Wrong result: $output2" + echo + result2=1 +fi + + +if test $result1 -eq 0 -a $result2 -eq 0 ; then + echo "Success - Cleaning up" + rm -rf $tmpfiles + exit +else + echo "Failure!" + exit 1 +fi |