static void chaz_ConfWriterPerl_add_def(const char *sym, const char *value) { char sym_buf[CFPERL_MAX_BUF + 1]; char value_buf[CFPERL_MAX_BUF + 1]; char *quoted_sym; char *quoted_value; /* Quote key. */ if (!sym) { chaz_Util_die("Can't handle NULL key"); } quoted_sym = chaz_ConfWriterPerl_quotify(sym, sym_buf, CFPERL_MAX_BUF); /* Quote value or use "undef". */ if (!value) { strcpy(value_buf, "undef"); quoted_value = value_buf; } else { quoted_value = chaz_ConfWriterPerl_quotify(value, value_buf, CFPERL_MAX_BUF); } fprintf(chaz_CWPerl.fh, "$defs{%s} = %s;\n", quoted_sym, quoted_value); if (quoted_sym != sym_buf) { free(quoted_sym); } if (quoted_value != value_buf) { free(quoted_value); } }
static void chaz_ConfWriterPython_clean_up(void) { /* No more code necessary to finish charmony.py, so just close. */ if (fclose(chaz_CWPython.fh)) { chaz_Util_die("Couldn't close 'charmony.py': %s", strerror(errno)); } }
static void chaz_ConfWriterPython_add_def(const char *sym, const char *value) { char sym_buf[CFPYTHON_MAX_BUF + 1]; char value_buf[CFPYTHON_MAX_BUF + 1]; char *quoted_sym; char *quoted_value; /* Quote key. */ if (!sym) { chaz_Util_die("Can't handle NULL key"); } quoted_sym = chaz_ConfWriterPython_quotify(sym, sym_buf, CFPYTHON_MAX_BUF); /* Quote value or use "None". */ if (!value) { strcpy(value_buf, "None"); quoted_value = value_buf; } else { quoted_value = chaz_ConfWriterPython_quotify(value, value_buf, CFPYTHON_MAX_BUF); } fprintf(chaz_CWPython.fh, " defs[%s] = %s\n", quoted_sym, quoted_value); if (quoted_sym != sym_buf) { free(quoted_sym); } if (quoted_value != value_buf) { free(quoted_value); } }
static void chaz_ConfWriterPerl_clean_up(void) { /* Write the last bit of Charmony.pm and close. */ fprintf(chaz_CWPerl.fh, "\n1;\n\n"); if (fclose(chaz_CWPerl.fh)) { chaz_Util_die("Couldn't close 'Charmony.pm': %s", strerror(errno)); } }
void chaz_CFlags_enable_code_coverage(chaz_CFlags *flags) { if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { chaz_CFlags_append(flags, "--coverage"); } else { chaz_Util_die("Don't know how to enable code coverage with '%s'", chaz_CC_get_cc()); } }
void chaz_CFlags_disable_strict_aliasing(chaz_CFlags *flags) { if (flags->style == CHAZ_CFLAGS_STYLE_MSVC) { return; } else if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { chaz_CFlags_append(flags, "-fno-strict-aliasing"); } else { chaz_Util_die("Don't know how to disable strict aliasing with '%s'", chaz_CC_get_cc()); } }
void chaz_CFlags_set_warnings_as_errors(chaz_CFlags *flags) { const char *string; if (flags->style == CHAZ_CFLAGS_STYLE_MSVC) { string = "/WX"; } else if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { string = "-Werror"; } else { chaz_Util_die("Don't know how to set warnings as errors with '%s'", chaz_CC_get_cc()); } chaz_CFlags_append(flags, string); }
void chaz_CFlags_link_shared_library(chaz_CFlags *flags) { const char *string; if (flags->style == CHAZ_CFLAGS_STYLE_MSVC) { string = "/DLL"; } else if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { if (strcmp(chaz_OS_shared_lib_ext(), ".dylib") == 0) { string = "-dynamiclib"; } else { string = "-shared"; } } else { chaz_Util_die("Don't know how to link a shared library with '%s'", chaz_CC_get_cc()); } chaz_CFlags_append(flags, string); }
static void chaz_ConfWriterPython_open_config_py(void) { /* Open the filehandle. */ chaz_CWPython.fh = fopen("charmony.py", "w+"); if (chaz_CWPython.fh == NULL) { chaz_Util_die("Can't open 'charmony.py': %s", strerror(errno)); } /* Start the module. */ fprintf(chaz_CWPython.fh, "# Auto-generated by Charmonizer. \n" "# DO NOT EDIT THIS FILE!!\n" "\n" "class Charmony(object):\n" " @classmethod\n" " def config(cls):\n" " return cls.defs\n" "\n" " defs = {}\n" "\n" ); }
static void chaz_ConfWriterPerl_open_config_pm(void) { /* Open the filehandle. */ chaz_CWPerl.fh = fopen("Charmony.pm", "w+"); if (chaz_CWPerl.fh == NULL) { chaz_Util_die("Can't open 'Charmony.pm': %s", strerror(errno)); } /* Start the module. */ fprintf(chaz_CWPerl.fh, "# Auto-generated by Charmonizer. \n" "# DO NOT EDIT THIS FILE!!\n" "\n" "package Charmony;\n" "use strict;\n" "use warnings;\n" "\n" "my %%defs;\n" "\n" "sub config { \\%%defs }\n" "\n" ); }