summaryrefslogtreecommitdiff
path: root/dmake/tests/targets-20
diff options
context:
space:
mode:
Diffstat (limited to 'dmake/tests/targets-20')
-rwxr-xr-xdmake/tests/targets-2065
1 files changed, 65 insertions, 0 deletions
diff --git a/dmake/tests/targets-20 b/dmake/tests/targets-20
new file mode 100755
index 000000000000..64a6a5b06ad0
--- /dev/null
+++ b/dmake/tests/targets-20
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# 12.07.2007 Volker Quetschke
+# Make sure that intermediate targets get created. BUG: If an intermediate
+# %-target does not exist it inherits the time stamp of it's parent and
+# doesn not get made.
+# Recipe: Create ptarget.c and then (newer) ptarget.a but ptarget.b did
+# not get made.
+# (issue 69462)
+
+: ${DMAKEPROG:=dmake}
+file1="mfile1.mk"
+file2="ptarget.a"
+file3="ptarget.b"
+file4="ptarget.c"
+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
+
+# Create test environment
+touch ptarget.c
+touch ptarget.a
+
+# Remember to quote variables in generated makefiles( $ -> \$ ).
+cat > $file1 <<EOT
+SHELL*:=/bin/sh
+SHELLFLAGS*:=-ce
+
+%.a : %.b
+ @cp \$< \$@
+
+%.b .PRECIOUS : %.c
+ @cp \$< \$@
+ @+printf "OK"
+
+%.c :
+ @touch \$@
+
+all : ptarget.a
+ @+echo "done"
+
+
+EOT
+
+output1=`eval ${DMAKEPROG} -rf $file1 2>&1 `
+result1=$?
+
+if test "$output1" != "OKdone"; then
+ echo "Wrong result: $output1"
+ result1=1
+else
+ echo "OK"
+fi
+
+if test $result1 -eq 0 ; then
+ echo "Success - Cleaning up"
+ rm -rf $tmpfiles
+ exit
+else
+ echo "Failure!"
+ exit 1
+fi