Hi. The patch splits arguments in getenv ("MAKE") so that one can use:
$ MAKE="make -s" gcc main.o -flto=16 Right now it fails due to: [pid 6004] execve("/home/marxin/Programming/script-misc/make -s", ["make -s", "-f", "/tmp/ccNpRBlZ.mk", "-j16", "all"], 0x4b69b0 /* 82 vars */) = -1 ENOENT (No such file or directory) I've tested the patch for lto.exp and now I'm doing a proper bootstrap. Ready after tests? Thanks, Martin gcc/ChangeLog: 2020-05-06 Martin Liska <mli...@suse.cz> * lto-wrapper.c: Split arguments of MAKE environment variable. --- gcc/lto-wrapper.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-)
diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index 19d0c224dad..16d85625377 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -1894,23 +1894,36 @@ cont: putenv (xstrdup ("MAKEFLAGS=")); putenv (xstrdup ("MFLAGS=")); } - new_argv[0] = getenv ("MAKE"); - if (!new_argv[0]) - new_argv[0] = "make"; - new_argv[1] = "-f"; - new_argv[2] = makefile; - i = 3; + const char *make = getenv ("MAKE"); + unsigned argc = 0; + struct obstack make_argv_obstack; + obstack_init (&make_argv_obstack); + + if (make) + { + argv = buildargv (make); + for (; argv[argc]; argc++) + obstack_ptr_grow (&make_argv_obstack, argv[argc]); + } + else + obstack_ptr_grow (&make_argv_obstack, "make"); + + obstack_ptr_grow (&make_argv_obstack, "-f"); + obstack_ptr_grow (&make_argv_obstack, makefile); if (!jobserver) { snprintf (jobs, 31, "-j%ld", auto_parallel ? nthreads_var : parallel); - new_argv[i++] = jobs; + obstack_ptr_grow (&make_argv_obstack, jobs); } - new_argv[i++] = "all"; - new_argv[i++] = NULL; - pex = collect_execute (new_argv[0], CONST_CAST (char **, new_argv), + obstack_ptr_grow (&make_argv_obstack, "all"); + obstack_ptr_grow (&make_argv_obstack, NULL); + const char **argv = XOBFINISH (&make_argv_obstack, const char **); + + pex = collect_execute (argv[0], CONST_CAST (char **, argv), NULL, NULL, PEX_SEARCH, false); - do_wait (new_argv[0], pex); + do_wait (argv[0], pex); + obstack_free (&make_argv_obstack, NULL); maybe_unlink (makefile); makefile = NULL; for (i = 0; i < nr; ++i)