void chaz_Probe_init(struct chaz_CLI *cli) { int output_enabled = 0; { /* Process CHARM_VERBOSITY environment variable. */ const char *verbosity_env = getenv("CHARM_VERBOSITY"); if (verbosity_env && strlen(verbosity_env)) { chaz_Util_verbosity = strtol(verbosity_env, NULL, 10); } } /* Dispatch other initializers. */ chaz_OS_init(); chaz_CC_init(chaz_CLI_strval(cli, "cc"), chaz_CLI_strval(cli, "cflags")); chaz_ConfWriter_init(); chaz_HeadCheck_init(); chaz_Make_init(cli); /* Enable output. */ if (chaz_CLI_defined(cli, "enable-c")) { chaz_ConfWriterC_enable(); output_enabled = true; } if (chaz_CLI_defined(cli, "enable-perl")) { chaz_ConfWriterPerl_enable(); output_enabled = true; } if (chaz_CLI_defined(cli, "enable-python")) { chaz_ConfWriterPython_enable(); output_enabled = true; } if (chaz_CLI_defined(cli, "enable-ruby")) { chaz_ConfWriterRuby_enable(); output_enabled = true; } if (!output_enabled) { fprintf(stderr, "No output formats enabled\n"); exit(1); } if (chaz_Util_verbosity) { printf("Initialization complete.\n"); } }
int main(int argc, char **argv) { struct CLIArgs args; memset(&args, 0, sizeof(struct CLIArgs)); S_parse_arguments(argc, argv, &args); chaz_Probe_init(args.cc_command, args.cc_flags); if (args.enable_c) { chaz_ConfWriterC_enable(); } if (args.enable_perl) { chaz_ConfWriterPerl_enable(); } if (args.enable_ruby) { chaz_ConfWriterRuby_enable(); } /* Run probe modules. */ chaz_DirManip_run(); chaz_Headers_run(); chaz_AtomicOps_run(); chaz_FuncMacro_run(); chaz_Integers_run(); chaz_Floats_run(); chaz_LargeFiles_run(); chaz_Memory_run(); chaz_SymbolVisibility_run(); chaz_UnusedVars_run(); chaz_VariadicMacros_run(); /* Write custom postamble. */ chaz_ConfWriter_append_conf( "#ifdef CHY_HAS_SYS_TYPES_H\n" " #include <sys/types.h>\n" "#endif\n\n" ); chaz_ConfWriter_append_conf( "#ifdef CHY_HAS_STDARG_H\n" " #include <stdarg.h>\n" "#endif\n\n" ); chaz_ConfWriter_append_conf( "#ifdef CHY_HAS_ALLOCA_H\n" " #include <alloca.h>\n" "#elif defined(CHY_HAS_MALLOC_H)\n" " #include <malloc.h>\n" "#elif defined(CHY_ALLOCA_IN_STDLIB_H)\n" " #include <stdlib.h>\n" "#endif\n\n" ); chaz_ConfWriter_append_conf( "#ifdef CHY_HAS_WINDOWS_H\n" " /* Target Windows XP. */\n" " #ifndef WINVER\n" " #define WINVER 0x0500\n" " #endif\n" " #ifndef _WIN32_WINNT\n" " #define _WIN32_WINNT 0x0500\n" " #endif\n" "#endif\n\n" ); /* Clean up. */ chaz_Probe_clean_up(); return 0; }