diff options
Diffstat (limited to 'testsuite/tests/driver/recomp004')
-rw-r--r-- | testsuite/tests/driver/recomp004/Main.hs | 10 | ||||
-rw-r--r-- | testsuite/tests/driver/recomp004/Makefile | 24 | ||||
-rw-r--r-- | testsuite/tests/driver/recomp004/all.T | 4 | ||||
-rw-r--r-- | testsuite/tests/driver/recomp004/c.h | 5 | ||||
-rw-r--r-- | testsuite/tests/driver/recomp004/c1.c | 6 | ||||
-rw-r--r-- | testsuite/tests/driver/recomp004/c2.c | 6 | ||||
-rw-r--r-- | testsuite/tests/driver/recomp004/recomp004.stdout | 2 |
7 files changed, 57 insertions, 0 deletions
diff --git a/testsuite/tests/driver/recomp004/Main.hs b/testsuite/tests/driver/recomp004/Main.hs new file mode 100644 index 0000000000..cbb16d21d3 --- /dev/null +++ b/testsuite/tests/driver/recomp004/Main.hs @@ -0,0 +1,10 @@ + +{-# LANGUAGE ForeignFunctionInterface #-} + +module Main where + +main :: IO () +main = foo + +foreign import ccall unsafe "c.h foo" foo :: IO () + diff --git a/testsuite/tests/driver/recomp004/Makefile b/testsuite/tests/driver/recomp004/Makefile new file mode 100644 index 0000000000..41b93b169d --- /dev/null +++ b/testsuite/tests/driver/recomp004/Makefile @@ -0,0 +1,24 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk + +EXECUTABLE = Main$(exeext) +CLEAN_FILES = c.c c.o Main.o Main.hi $(EXECUTABLE) + +clean: + $(RM) $(CLEAN_FILES) + +# Test that updates to C modules are noticed +recomp004: + $(RM) $(CLEAN_FILES) + $(CP) c1.c c.c + '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -c c.c -o c.o + '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make Main.hs c.o -o $(EXECUTABLE) + ./$(EXECUTABLE) + $(CP) c2.c c.c + '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -c c.c -o c.o + # Hack to make sure c.o is really newer + touch -t 01010000 Main.hs Main.hi Main.o c.c $(EXECUTABLE) + '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make Main.hs c.o -o $(EXECUTABLE) + ./$(EXECUTABLE) + diff --git a/testsuite/tests/driver/recomp004/all.T b/testsuite/tests/driver/recomp004/all.T new file mode 100644 index 0000000000..54d190d83a --- /dev/null +++ b/testsuite/tests/driver/recomp004/all.T @@ -0,0 +1,4 @@ +test('recomp004', + extra_clean(['Main', 'Main.exe', 'c.c']), + run_command, + ['$MAKE -s --no-print-directory recomp004']) diff --git a/testsuite/tests/driver/recomp004/c.h b/testsuite/tests/driver/recomp004/c.h new file mode 100644 index 0000000000..12c941119c --- /dev/null +++ b/testsuite/tests/driver/recomp004/c.h @@ -0,0 +1,5 @@ + +#include <stdio.h> + +void foo(void); + diff --git a/testsuite/tests/driver/recomp004/c1.c b/testsuite/tests/driver/recomp004/c1.c new file mode 100644 index 0000000000..0b2101a826 --- /dev/null +++ b/testsuite/tests/driver/recomp004/c1.c @@ -0,0 +1,6 @@ + +#include "c.h" + +void foo(void) { + printf("Foo\n"); +} diff --git a/testsuite/tests/driver/recomp004/c2.c b/testsuite/tests/driver/recomp004/c2.c new file mode 100644 index 0000000000..decb52617a --- /dev/null +++ b/testsuite/tests/driver/recomp004/c2.c @@ -0,0 +1,6 @@ + +#include "c.h" + +void foo(void) { + printf("Bar\n"); +} diff --git a/testsuite/tests/driver/recomp004/recomp004.stdout b/testsuite/tests/driver/recomp004/recomp004.stdout new file mode 100644 index 0000000000..3b71d5be87 --- /dev/null +++ b/testsuite/tests/driver/recomp004/recomp004.stdout @@ -0,0 +1,2 @@ +Foo +Bar |