/* * Compile files controlled by the argument vector and * return the total error count. */ int compFilesLoop(int argc, char **argv) { int i, iargc, totErrors, nErrors; FileName fn; Bool isSolo; compInit(); iargc = cmdArguments(1, argc, argv); argc -= iargc; argv += iargc; if (argc == 0) { if (comsgOkBreakLoop()) bloopMsgFPrintf(osStdout, ALDOR_W_NoFiles, cmdName); comsgWarning(NULL, ALDOR_W_NoFiles, cmdName); } emitDoneOptions(argc, argv); ccGetReady(); isSolo = (cmdFileCount == 1); compFinfov = (EmitInfo *) stoAlloc((unsigned) OB_Other, (cmdFileCount+1) * sizeof(EmitInfo)); for (i = 0; i <= cmdFileCount; i += 1) compFinfov[i] = 0; totErrors = 0; for (i = 0; i < cmdFileCount; i++) { fn = fnameParse(argv[i]); compFinfov[i] = emitInfoNew(fn); nErrors = 0; if (!fileIsReadable(fn)) { if (comsgOkBreakLoop()) bloopMsgFPrintf(osStdout, ALDOR_F_CantOpen, argv[i]); comsgFatal(NULL, ALDOR_F_CantOpen, argv[i]); } switch (ftypeNo(fnameType(fn))) { #if 0 case FTYPENO_C: nErrors = compCFile(compFinfov[i]); break; #endif case FTYPENO_OBJECT: case FTYPENO_AR_OBJ: case FTYPENO_AR_INT: break; case FTYPENO_FOAMEXPR: case FTYPENO_INTERMED: if (!isSolo) fprintf(osStdout, "\n%s:\n", argv[i]); nErrors = compSavedFile(compFinfov[i]); break; default: if (!ftypeEqual(fnameType(fn), "")) { if (comsgOkBreakLoop()) bloopMsgFPrintf(osStdout, ALDOR_F_BadFType, argv[i], fnameType(fn), FTYPE_SRC); comsgFatal(NULL, ALDOR_F_BadFType, argv[i], fnameType(fn), FTYPE_SRC); } /* Fall through. */ case FTYPENO_NONE: case FTYPENO_SRC: case FTYPENO_INCLUDED: case FTYPENO_ABSYN: case FTYPENO_OLDABSYN: if (!isSolo) fprintf(osStdout, "\n%s:\n", argv[i]); nErrors = compSourceFile(compFinfov[i]); break; } totErrors += nErrors; fnameFree(fn); } if (cmdFileCount > 0 && totErrors == 0) { compFinfov[cmdFileCount] = emitInfoNewAXLmain(); compAXLmainFile(compFinfov[cmdFileCount]); emitLink(cmdFileCount + 1, compFinfov); argc -= cmdFileCount; argv += cmdFileCount; emitInterp(argc, argv); emitRun (argc, argv); } if (totErrors > 0) emitAllDone(); for (i = 0; i < cmdFileCount + 1; i++) emitInfoFree(compFinfov[i]); stoFree((Pointer) compFinfov); compFinfov = 0; if (!isSolo) phGrandTotals(cmdVerboseFlag); compFini(); return totErrors; }
local Bool arItemIsIntermed(String item) { return ftypeEqual(fnameType(fnameParseStatic(item)), FTYPE_INTERMED); }
Bool ftypeIs(String ft, FTypeNo fno) { return ftypeEqual(ft, ftypeString(fno)); }
Bool ftypeHas(FileName fn, FTypeNo fno) { return ftypeEqual(fnameType(fn), ftypeString(fno)); }
FTypeNo ftypeNo(String ftype) { if (!ftype) return FTYPENO_NONE; if (ftypeEqual(ftype, FTYPE_SRC)) return FTYPENO_SRC; if (ftypeEqual(ftype, FTYPE_INCLUDED)) return FTYPENO_INCLUDED; if (ftypeEqual(ftype, FTYPE_ABSYN)) return FTYPENO_ABSYN; if (ftypeEqual(ftype, FTYPE_OLDABSYN)) return FTYPENO_OLDABSYN; if (ftypeEqual(ftype, FTYPE_INTERMED)) return FTYPENO_INTERMED; if (ftypeEqual(ftype, FTYPE_FOAMEXPR)) return FTYPENO_FOAMEXPR; if (ftypeEqual(ftype, FTYPE_SYMEEXPR)) return FTYPENO_SYMEEXPR; if (ftypeEqual(ftype, FTYPE_LOCK)) return FTYPENO_LOCK; if (ftypeEqual(ftype, FTYPE_LISP)) return FTYPENO_LISP; if (ftypeEqual(ftype, FTYPE_C)) return FTYPENO_C; if (ftypeEqual(ftype, FTYPE_JAVA)) return FTYPENO_JAVA; if (ftypeEqual(ftype, FTYPE_CPP)) return FTYPENO_CPP; if (ftypeEqual(ftype, FTYPE_H)) return FTYPENO_H; if (ftypeEqual(ftype, FTYPE_OBJECT)) return FTYPENO_OBJECT; if (ftypeEqual(ftype, FTYPE_AR_OBJ)) return FTYPENO_AR_OBJ; if (ftypeEqual(ftype, FTYPE_AR_INT)) return FTYPENO_AR_INT; if (ftypeEqual(ftype, FTYPE_MSG)) return FTYPENO_MSG; if (ftypeEqual(ftype, FTYPE_EXEC)) return FTYPENO_EXEC; if (ftypeEqual(ftype, "")) return FTYPENO_NONE; return FTYPENO_OTHER; }