aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto-wrapper.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2020-10-22 14:07:29 +0200
committerMartin Liska <mliska@suse.cz>2020-10-23 09:48:10 +0200
commit6fade5a6044b7102758f4ca66c8715ebc12a6306 (patch)
tree222c899d269ab7d39116f7917128b368b9747ee3 /gcc/lto-wrapper.c
parent7cda498920dbf244e9e06fdb2fc710a118a8c033 (diff)
downloadgcc-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.c24
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