summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2015-09-05 23:39:59 +0930
committerAndrew Jeffery <andrew@aj.id.au>2015-09-09 23:47:24 +0930
commit8d9d288e9a77cc58bbc2a0cb9274962139638c5b (patch)
tree95b26f766010a0abb54f39bc22a0cf4c1cb62b02
parent7c7ad8cc84eb75d83222fb269d9c117c12c8e75c (diff)
configurator: Add OpenMP detection
-rw-r--r--tools/configurator/configurator.c32
1 files changed, 26 insertions, 6 deletions
diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c
index fe1611e4..2139bcb2 100644
--- a/tools/configurator/configurator.c
+++ b/tools/configurator/configurator.c
@@ -55,6 +55,7 @@ struct test {
const char *depends;
const char *link;
const char *fragment;
+ const char *flags;
const char *overrides; /* On success, force this to '1' */
bool done;
bool answer;
@@ -310,6 +311,12 @@ static struct test tests[] = {
"static __attribute__((warn_unused_result)) int func(int i) {\n"
" return i + 1;\n"
"}" },
+ { "HAVE_OPENMP", INSIDE_MAIN, NULL, NULL,
+ "int i;\n"
+ "#pragma omp parallel for\n"
+ "for(i = 0; i < 0; i++) {};\n"
+ "return 0;\n",
+ "-Werror -fopenmp" },
};
static char *grab_fd(int fd)
@@ -415,7 +422,7 @@ static struct test *find_test(const char *name)
static bool run_test(const char *cmd, struct test *test)
{
- char *output;
+ char *output, *newcmd;
FILE *outf;
int status;
@@ -490,17 +497,30 @@ static bool run_test(const char *cmd, struct test *test)
if (verbose > 1)
if (system("cat " INPUT_FILE) == -1);
+ newcmd = strdup(cmd);
+
+ if (test->flags) {
+ newcmd = realloc(newcmd, strlen(newcmd) + strlen(" ")
+ + strlen(test->flags) + 1);
+ strcat(newcmd, " ");
+ strcat(newcmd, test->flags);
+ if (verbose > 1)
+ printf("Extra flags line: %s", newcmd);
+ }
+
if (test->link) {
- char *newcmd;
- newcmd = malloc(strlen(cmd) + strlen(" ")
+ newcmd = realloc(newcmd, strlen(newcmd) + strlen(" ")
+ strlen(test->link) + 1);
- sprintf(newcmd, "%s %s", cmd, test->link);
+ strcat(newcmd, " ");
+ strcat(newcmd, test->link);
if (verbose > 1)
printf("Extra link line: %s", newcmd);
- cmd = newcmd;
}
- output = run(cmd, &status);
+ output = run(newcmd, &status);
+
+ free(newcmd);
+
if (status != 0 || strstr(output, "warning")) {
if (verbose)
printf("Compile %s for %s, status %i: %s\n",