diff options
author | Paul Smith <psmith@gnu.org> | 2013-09-21 18:10:08 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2013-09-21 18:10:08 -0400 |
commit | 300d1296fb0f8f1b6bd16f977e2167442338343d (patch) | |
tree | e1e413420a68a278295562e5a7c4233d2c737c4f /tests/scripts/features/jobserver | |
parent | 822f8dae415cb5da2ad27ab7e26033f6b9ad5b48 (diff) | |
download | gunmake-300d1296fb0f8f1b6bd16f977e2167442338343d.tar.gz |
Create a target that tests alternative configurations.
Diffstat (limited to 'tests/scripts/features/jobserver')
-rw-r--r-- | tests/scripts/features/jobserver | 59 |
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; |