const char* createDebuggerFile(const char* debugger, int argc, char* argv[]) { const char* dbgfilename = genIntermediateFilename(astr(debugger, ".commands")); FILE* dbgfile = openfile(dbgfilename); int i; if (strcmp(debugger, "gdb") == 0) { fprintf(dbgfile, "set args"); } else if (strcmp(debugger, "lldb") == 0) { fprintf(dbgfile, "settings set -- target.run-args"); } else { INT_FATAL(astr("createDebuggerFile doesn't know how to handle the given " "debugger: '", debugger, "'")); } for (i=1; i<argc; i++) { if (strcmp(argv[i], astr("--", debugger)) != 0) { fprintf(dbgfile, " %s", argv[i]); } } fprintf(dbgfile, "\n"); closefile(dbgfile); mysystem(astr("cat ", CHPL_HOME, "/compiler/etc/", debugger, ".commands >> ", dbgfilename), astr("appending ", debugger, " commands"), false); return dbgfilename; }
fileinfo* openTmpFile(const char* tmpfilename, const char* mode) { fileinfo* newfile = (fileinfo*)malloc(sizeof(fileinfo)); newfile->filename = astr(tmpfilename); newfile->pathname = genIntermediateFilename(tmpfilename); openfile(newfile, mode); return newfile; }
void openCFile(fileinfo* fi, const char* name, const char* ext) { if (ext) fi->filename = astr(name, ".", ext); else fi->filename = astr(name); fi->pathname = genIntermediateFilename(fi->filename); openfile(fi, "w"); }
void appendCFile(fileinfo* fi, const char* name, const char* ext) { if (ext) fi->filename = astr(name, ".", ext); else fi->filename = astr(name); fi->pathname = genIntermediateFilename(fi->filename); fi->fptr = fopen(fi->pathname, "a+"); }
static void genObjFiles(FILE* makefile) { int filenum = 0; int first = 1; while (const char* inputFilename = nthFilename(filenum++)) { bool objfile = isObjFile(inputFilename); bool cfile = isCSource(inputFilename); if (objfile || cfile) { if (first) { fprintf(makefile, "CHPL_CL_OBJS = \\\n"); first = 0; } if (objfile) { fprintf(makefile, "\t%s \\\n", inputFilename); } else { const char* pathlessFilename = stripdirectories(inputFilename); const char* objFilename = genIntermediateFilename(astr(pathlessFilename, ".o")); fprintf(makefile, "\t%s \\\n", objFilename); } } } if (!first) fprintf(makefile, "\n"); }
const char* objectFileForCFile(const char* inputFilename) { const char* pathlessFilename = stripdirectories(inputFilename); const char* objFilename = genIntermediateFilename(astr(pathlessFilename, ".o")); return objFilename; }