| # -*-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-auth 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 |
| |
| unlink('inc.mk'); |
| |
| 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"); |
| |
| unlink('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 ' |
| vpath %.c ../ |
| foo: |
| '; |
| 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'."); |
| |
| rmfiles('Makefile2'); |
| |
| 1; |
| |
| ### Local Variables: |
| ### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) |
| ### End: |