Exemple #1
0
/*
 * 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;
}
Exemple #2
0
local Bool
arItemIsIntermed(String item)
{
	return ftypeEqual(fnameType(fnameParseStatic(item)), FTYPE_INTERMED);
}
Exemple #3
0
Bool
ftypeIs(String ft, FTypeNo fno)
{
	return ftypeEqual(ft, ftypeString(fno));
}
Exemple #4
0
Bool
ftypeHas(FileName fn, FTypeNo fno)
{
	return ftypeEqual(fnameType(fn), ftypeString(fno));
}
Exemple #5
0
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;
}