mirror of
https://github.com/mirror/make.git
synced 2025-02-26 11:50:42 +08:00
When we re-exec the master makefile in a jobserver environment, ensure
that MAKEFLAGS is set properly so the re-exec'd make runs in parallel. See Savannah bug #33873.
This commit is contained in:
parent
0369a93825
commit
d472624f33
@ -1,5 +1,9 @@
|
|||||||
2011-09-18 Paul Smith <psmith@gnu.org>
|
2011-09-18 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* main.c (main): If we're re-exec'ing and we're the master make,
|
||||||
|
then restore the job_slots value so it goes back into MAKEFLAGS
|
||||||
|
properly. See Savannah bug #33873.
|
||||||
|
|
||||||
* remake.c (library_search): STD_DIRS is computed when other
|
* remake.c (library_search): STD_DIRS is computed when other
|
||||||
static vars like buflen etc. are computed, so it must be static
|
static vars like buflen etc. are computed, so it must be static
|
||||||
as well. See Savannah bug #32511.
|
as well. See Savannah bug #32511.
|
||||||
|
8
main.c
8
main.c
@ -2089,6 +2089,11 @@ main (int argc, char **argv, char **envp)
|
|||||||
|
|
||||||
++restarts;
|
++restarts;
|
||||||
|
|
||||||
|
/* If we're re-exec'ing the first make, put back the number of
|
||||||
|
job slots so define_makefiles() will get it right. */
|
||||||
|
if (master_job_slots)
|
||||||
|
job_slots = master_job_slots;
|
||||||
|
|
||||||
/* Reset makeflags in case they were changed. */
|
/* Reset makeflags in case they were changed. */
|
||||||
{
|
{
|
||||||
const char *pv = define_makeflags (1, 1);
|
const char *pv = define_makeflags (1, 1);
|
||||||
@ -2825,9 +2830,6 @@ define_makeflags (int all, int makefile)
|
|||||||
&& (*(unsigned int *) cs->value_ptr ==
|
&& (*(unsigned int *) cs->value_ptr ==
|
||||||
*(unsigned int *) cs->noarg_value))
|
*(unsigned int *) cs->noarg_value))
|
||||||
ADD_FLAG ("", 0); /* Optional value omitted; see below. */
|
ADD_FLAG ("", 0); /* Optional value omitted; see below. */
|
||||||
else if (cs->c == 'j')
|
|
||||||
/* Special case for `-j'. */
|
|
||||||
ADD_FLAG ("1", 1);
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char *buf = alloca (30);
|
char *buf = alloca (30);
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
2011-09-18 Paul Smith <psmith@gnu.org>
|
2011-09-18 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* scripts/features/parallelism: On re-exec make sure we preserve
|
||||||
|
the value of MAKEFLAGS when necessary. See Savannah bug #33873.
|
||||||
|
|
||||||
* scripts/features/vpath3: Verify handling of -lfoo libraries
|
* scripts/features/vpath3: Verify handling of -lfoo libraries
|
||||||
found via vpath vs. the standard directory search.
|
found via vpath vs. the standard directory search.
|
||||||
See Savannah bug #32511.
|
See Savannah bug #32511.
|
||||||
|
@ -167,6 +167,23 @@ inc.mk:
|
|||||||
|
|
||||||
rmfiles('inc.mk');
|
rmfiles('inc.mk');
|
||||||
|
|
||||||
|
# TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec
|
||||||
|
# See Savannah bug #33873
|
||||||
|
|
||||||
|
$extraENV{MAKEFLAGS} = '-j4';
|
||||||
|
|
||||||
|
run_make_test(q!
|
||||||
|
things = thing1 thing2
|
||||||
|
all: $(things)
|
||||||
|
$(things):; @echo '$@ start'; sleep 1; echo '$@ end'
|
||||||
|
-include inc.mk
|
||||||
|
inc.mk: ; @touch $@
|
||||||
|
!,
|
||||||
|
'', "thing1 start\nthing2 start\nthing1 end\nthing2 end\n");
|
||||||
|
|
||||||
|
delete $extraENV{MAKEFLAGS};
|
||||||
|
rmfiles('inc.mk');
|
||||||
|
|
||||||
if ($all_tests) {
|
if ($all_tests) {
|
||||||
# Implicit files aren't properly recreated during parallel builds
|
# Implicit files aren't properly recreated during parallel builds
|
||||||
# Savannah bug #26864
|
# Savannah bug #26864
|
||||||
|
Loading…
Reference in New Issue
Block a user