diff options
author | Martin Liska <mliska@suse.cz> | 2020-10-22 14:07:29 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2020-10-23 09:48:10 +0200 |
commit | 6fade5a6044b7102758f4ca66c8715ebc12a6306 (patch) | |
tree | 222c899d269ab7d39116f7917128b368b9747ee3 /gcc/lto-wrapper.c | |
parent | 7cda498920dbf244e9e06fdb2fc710a118a8c033 (diff) | |
download | gcc-6fade5a6044b7102758f4ca66c8715ebc12a6306.zip gcc-6fade5a6044b7102758f4ca66c8715ebc12a6306.tar.gz gcc-6fade5a6044b7102758f4ca66c8715ebc12a6306.tar.bz2 |
LTO: check that make command works
gcc/ChangeLog:
PR lto/97524
* lto-wrapper.c (make_exists): New function.
(run_gcc): Use it to check that make is present and working
for parallel execution.
Diffstat (limited to 'gcc/lto-wrapper.c')
-rw-r--r-- | gcc/lto-wrapper.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index 9072a3c..b2af3ca 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -1334,6 +1334,26 @@ jobserver_active_p (void) return JS_PREFIX "cannot access %<" JS_NEEDLE "%> file descriptors"; } +/* Test that a make command is present and working, return true if so. */ + +static bool +make_exists (void) +{ + const char *make = "make"; + char **make_argv = buildargv (getenv ("MAKE")); + if (make_argv) + make = make_argv[0]; + const char *make_args[] = {make, "--version", NULL}; + + int exit_status = 0; + int err = 0; + const char *errmsg + = pex_one (PEX_SEARCH, make_args[0], CONST_CAST (char **, make_args), + "make", NULL, NULL, &exit_status, &err); + freeargv (make_argv); + return errmsg == NULL && exit_status == 0 && err == 0; +} + /* Execute gcc. ARGC is the number of arguments. ARGV contains the arguments. */ static void @@ -1570,6 +1590,10 @@ run_gcc (unsigned argc, char *argv[]) } } + /* We need make working for a parallel execution. */ + if (parallel && !make_exists ()) + parallel = 0; + if (!dumppfx) { if (!linker_output |