X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fconfigurator%2Fconfigurator.c;h=daa90ee3be8ff2811653ef52d51aebe327e9ce03;hp=370170b80c5866acf0151038e59bedcf6d39c787;hb=f3b3bedfb23096f050cfb6142a66c1687ea53b9b;hpb=d4c7616d9ef5a55dd89ea878a07eedc7376d6973 diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c index 370170b8..daa90ee3 100644 --- a/tools/configurator/configurator.c +++ b/tools/configurator/configurator.c @@ -38,6 +38,12 @@ #define OUTPUT_FILE "configurator.out" #define INPUT_FILE "configuratortest.c" +#ifdef _WIN32 +#define DIR_SEP "\\" +#else +#define DIR_SEP "/" +#endif + static int verbose; enum test_style { @@ -62,7 +68,7 @@ struct test { }; static struct test tests[] = { - { "HAVE_32BIT_OFF_T", DEFINES_EVERYTHING|EXECUTE, NULL, NULL, + { "HAVE_32BIT_OFF_T", DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE, NULL, NULL, "#include \n" "int main(void) {\n" " return sizeof(off_t) == 4 ? 0 : 1;\n" @@ -167,7 +173,7 @@ static struct test tests[] = { { "HAVE_COMPOUND_LITERALS", INSIDE_MAIN, NULL, NULL, "int *foo = (int[]) { 1, 2, 3, 4 };\n" "return foo[0] ? 0 : 1;" }, - { "HAVE_FCHDIR", DEFINES_EVERYTHING|EXECUTE, NULL, NULL, + { "HAVE_FCHDIR", DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE, NULL, NULL, "#include \n" "#include \n" "#include \n" @@ -188,7 +194,7 @@ static struct test tests[] = { " if (arg == 4)\n" " warnx(\"warn %u\", arg);\n" "}\n" }, - { "HAVE_FILE_OFFSET_BITS", DEFINES_EVERYTHING|EXECUTE, + { "HAVE_FILE_OFFSET_BITS", DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE, "HAVE_32BIT_OFF_T", NULL, "#define _FILE_OFFSET_BITS 64\n" "#include \n" @@ -234,7 +240,7 @@ static struct test tests[] = { "static void *func(int fd) {\n" " return mmap(0, 65536, PROT_READ, MAP_SHARED, fd, 0);\n" "}" }, - { "HAVE_PROC_SELF_MAPS", DEFINES_EVERYTHING|EXECUTE, NULL, NULL, + { "HAVE_PROC_SELF_MAPS", DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE, NULL, NULL, "#include \n" "#include \n" "#include \n" @@ -319,18 +325,18 @@ static struct test tests[] = { "-Werror -fopenmp" }, { "HAVE_VALGRIND_MEMCHECK_H", OUTSIDE_MAIN, NULL, NULL, "#include \n" }, - { "HAVE_UCONTEXT", DEFINES_EVERYTHING|EXECUTE, + { "HAVE_UCONTEXT", DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE, NULL, NULL, "#include \n" "static int x = 0;\n" - "static char stack[1024];\n" + "static char stack[2048];\n" "static ucontext_t a, b;\n" "static void fn(void) {\n" " x |= 2;\n" " setcontext(&b);\n" " x |= 4;\n" "}\n" - "int main(int argc, char *argv[]) {\n" + "int main(void) {\n" " x |= 1;\n" " getcontext(&a);\n" " a.uc_stack.ss_sp = stack;\n" @@ -340,7 +346,7 @@ static struct test tests[] = { " return (x == 3) ? 0 : 1;\n" "}\n" }, - { "HAVE_POINTER_SAFE_MAKECONTEXT", DEFINES_EVERYTHING|EXECUTE, + { "HAVE_POINTER_SAFE_MAKECONTEXT", DEFINES_EVERYTHING|EXECUTE|MAY_NOT_COMPILE, "HAVE_UCONTEXT", NULL, "#include \n" "#include \n" @@ -354,7 +360,7 @@ static struct test tests[] = { " worked = 1;\n" " setcontext(&b);\n" "}\n" - "int main(int argc, char *argv[]) {\n" + "int main(void) {\n" " void *ap = &worked;\n" " void *aq = (void *)(~((ptrdiff_t)ap));\n" " getcontext(&a);\n" @@ -585,7 +591,7 @@ static bool run_test(const char *cmd, struct test *test) free(output); /* We run INSIDE_MAIN tests for sanity checking. */ if ((test->style & EXECUTE) || (test->style & INSIDE_MAIN)) { - output = run("./" OUTPUT_FILE, &status); + output = run("." DIR_SEP OUTPUT_FILE, &status); if (!(test->style & EXECUTE) && status != 0) errx(1, "Test for %s failed with %i:\n%s", test->name, status, output); @@ -639,8 +645,8 @@ int main(int argc, const char *argv[]) run_test(cmd, &tests[i]); free(cmd); - unlink(OUTPUT_FILE); - unlink(INPUT_FILE); + remove(OUTPUT_FILE); + remove(INPUT_FILE); printf("/* Generated by CCAN configurator */\n" "#ifndef CCAN_CONFIG_H\n"