summaryrefslogtreecommitdiff
path: root/tests/scripts/features/jobserver
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-09-21 18:10:08 -0400
committerPaul Smith <psmith@gnu.org>2013-09-21 18:10:08 -0400
commit300d1296fb0f8f1b6bd16f977e2167442338343d (patch)
treee1e413420a68a278295562e5a7c4233d2c737c4f /tests/scripts/features/jobserver
parent822f8dae415cb5da2ad27ab7e26033f6b9ad5b48 (diff)
downloadgunmake-300d1296fb0f8f1b6bd16f977e2167442338343d.tar.gz
Create a target that tests alternative configurations.
Diffstat (limited to 'tests/scripts/features/jobserver')
-rw-r--r--tests/scripts/features/jobserver59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver
new file mode 100644
index 0000000..6a9565e
--- /dev/null
+++ b/tests/scripts/features/jobserver
@@ -0,0 +1,59 @@
+# -*-perl-*-
+
+$description = "Test jobserver.";
+
+$details = "These tests are ones that specifically are different when the
+jobserver feature is available. Most -j tests are the same whether or not
+jobserver is available, and those appear in the 'parallelism' test suite.";
+
+exists $FEATURES{'jobserver'} or return -1;
+
+if (!$parallel_jobs) {
+ return -1;
+}
+
+# Don't put --jobserver-fds into a re-exec'd MAKEFLAGS.
+# We can't test this directly because there's no way a makefile can
+# show the value of MAKEFLAGS we were re-exec'd with. We can intuit it
+# by looking for "disabling jobserver mode" warnings; we should only
+# get one from the original invocation and none from the re-exec.
+# See Savannah bug #18124
+
+run_make_test(q!
+-include inc.mk
+recur:
+# @echo 'MAKEFLAGS = $(MAKEFLAGS)'
+ @rm -f inc.mk
+ @$(MAKE) -j2 -f #MAKEFILE# all
+all:
+# @echo 'MAKEFLAGS = $(MAKEFLAGS)'
+ @echo $@
+inc.mk:
+# @echo 'MAKEFLAGS = $(MAKEFLAGS)'
+ @echo 'FOO = bar' > $@
+!,
+ '--no-print-directory -j2', "#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nall\n");
+
+rmfiles('inc.mk');
+
+# Test recursion when make doesn't think it exists.
+# See Savannah bug #39934
+# Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474
+
+open(MAKEFILE,"> Makefile2");
+print MAKEFILE <<EOF;
+vpath %.c $ENV{HOME}/
+foo:
+EOF
+close(MAKEFILE);
+
+run_make_test(q!
+default: ; @ #MAKEPATH# -f Makefile2
+!,
+ '-j2 --no-print-directory',
+"#MAKE#[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
+#MAKE#[1]: Nothing to be done for 'foo'.");
+
+unlink('Makefile2');
+
+1;