summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
authorDavid Eichmann <EichmannD@gmail.com>2019-04-09 13:17:34 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-05-21 16:57:37 -0400
commit8fc654c3a00ab0cd842c3e8316f832170ea561d6 (patch)
treecb8e052c93d2709411d2b05760790953735bf1c2 /testsuite/tests
parent54095bbd3a5481e906b05c80ea68841165c7a2b3 (diff)
downloadhaskell-8fc654c3a00ab0cd842c3e8316f832170ea561d6.tar.gz
Include CPP preprocessor dependencies in -M output
Issue #16521
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/driver/T16521/A.hs14
-rw-r--r--testsuite/tests/driver/T16521/Makefile9
-rw-r--r--testsuite/tests/driver/T16521/a.h1
-rw-r--r--testsuite/tests/driver/T16521/all.T7
-rw-r--r--testsuite/tests/driver/T16521/b.h2
-rw-r--r--testsuite/tests/driver/T16521/b2.h1
-rwxr-xr-xtestsuite/tests/driver/T16521/check.sh33
7 files changed, 67 insertions, 0 deletions
diff --git a/testsuite/tests/driver/T16521/A.hs b/testsuite/tests/driver/T16521/A.hs
new file mode 100644
index 0000000000..ddcfdbcf41
--- /dev/null
+++ b/testsuite/tests/driver/T16521/A.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE CPP #-}
+
+module A where
+
+#include "a.h"
+#include "b.h"
+
+-- Test including a header from an external package.
+#include "processFlags.h"
+
+main :: IO ()
+main = do
+ putStrLn a
+ putStrLn b \ No newline at end of file
diff --git a/testsuite/tests/driver/T16521/Makefile b/testsuite/tests/driver/T16521/Makefile
new file mode 100644
index 0000000000..4b3fb94742
--- /dev/null
+++ b/testsuite/tests/driver/T16521/Makefile
@@ -0,0 +1,9 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+T16521 :
+ rm -f Makefile.out
+ '$(TEST_HC)' $(TEST_HC_OPTS) -package process -M -include-cpp-deps -dep-suffix "" -dep-makefile Makefile1.out A.hs 2>&1 > /dev/null
+ '$(TEST_HC)' $(TEST_HC_OPTS) -package process -M -include-cpp-deps -dep-suffix "" -dep-suffix "_" -dep-makefile Makefile2.out A.hs 2>&1 > /dev/null
+ ./check.sh \ No newline at end of file
diff --git a/testsuite/tests/driver/T16521/a.h b/testsuite/tests/driver/T16521/a.h
new file mode 100644
index 0000000000..1fc4634db4
--- /dev/null
+++ b/testsuite/tests/driver/T16521/a.h
@@ -0,0 +1 @@
+a = "a" \ No newline at end of file
diff --git a/testsuite/tests/driver/T16521/all.T b/testsuite/tests/driver/T16521/all.T
new file mode 100644
index 0000000000..e00a23262f
--- /dev/null
+++ b/testsuite/tests/driver/T16521/all.T
@@ -0,0 +1,7 @@
+test('T16521', extra_files( \
+ [ 'A.hs' \
+ , 'a.h' \
+ , 'b.h' \
+ , 'b2.h' \
+ , 'check.sh'
+ ]), makefile_test, [])
diff --git a/testsuite/tests/driver/T16521/b.h b/testsuite/tests/driver/T16521/b.h
new file mode 100644
index 0000000000..a6d6eaf067
--- /dev/null
+++ b/testsuite/tests/driver/T16521/b.h
@@ -0,0 +1,2 @@
+#include "b2.h"
+b = "b" ++ b2 \ No newline at end of file
diff --git a/testsuite/tests/driver/T16521/b2.h b/testsuite/tests/driver/T16521/b2.h
new file mode 100644
index 0000000000..cbbc1af9e7
--- /dev/null
+++ b/testsuite/tests/driver/T16521/b2.h
@@ -0,0 +1 @@
+b2 = "bb" \ No newline at end of file
diff --git a/testsuite/tests/driver/T16521/check.sh b/testsuite/tests/driver/T16521/check.sh
new file mode 100755
index 0000000000..1fbecd6231
--- /dev/null
+++ b/testsuite/tests/driver/T16521/check.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+
+checkDups() {
+ # Check for duplicate lines
+ if [ $(uniq $1 -d | wc -l) -ne 0 ]
+ then
+ echo "Duplicate dependencies:"
+ uniq $1 -d
+ fi
+}
+
+expectDep() {
+ if ! grep -q $1 "$2" $3
+ then
+ echo "Missing: \"$2\""
+ fi
+}
+
+checkDups Makefile1.out
+expectDep -F "A.o : A.hs" Makefile1.out
+expectDep -F "A.o : a.h" Makefile1.out
+expectDep -F "A.o : b.h" Makefile1.out
+expectDep -F "A.o : b2.h" Makefile1.out
+expectDep "" "A\.o : .*/ghcversion.h" Makefile1.out
+expectDep "" "A\.o : .*/processFlags.h" Makefile1.out
+
+checkDups Makefile2.out
+expectDep -F "A._o A.o : A.hs" Makefile2.out
+expectDep -F "A._o A.o : a.h" Makefile2.out
+expectDep -F "A._o A.o : b.h" Makefile2.out
+expectDep -F "A._o A.o : b2.h" Makefile2.out
+expectDep "" "A\._o A\.o : .*/ghcversion.h" Makefile2.out
+expectDep "" "A\._o A\.o : .*/processFlags.h" Makefile2.out \ No newline at end of file