in BaseTools/Source/C/VfrCompile/Pccts/support/genmk/genmk_old.c [317:647]
void mk(project, files, n, argc, argv)
char *project;
char **files;
int n;
int argc;
char **argv;
{
int i;
printf("#\n");
printf("# PCCTS makefile for: ");
pfiles(files, n, NULL);
printf("\n");
printf("#\n");
printf("# Created from:");
for (i=0; i<argc; i++) printf(" %s", argv[i]);
printf("\n");
printf("#\n");
printf("# PCCTS release 1.33MR21\n");
printf("# Project: %s\n", project);
if ( gen_CPP ) printf("# C++ output\n");
else printf("# C output\n");
if ( user_lexer ) printf("# User-defined scanner\n");
else printf("# DLG scanner\n");
if ( user_token_types!=NULL ) printf("# User-defined token types in '%s'\n", user_token_types);
else printf("# ANTLR-defined token types\n");
printf("#\n");
printf(".SUFFIXES:\n.SUFFIXES: .o .cpp .c .h .g .i .dlg\n");
if ( user_token_types!=NULL ) {
printf("# Make sure #tokdefs directive in ANTLR grammar lists this file:\n");
printf("TOKENS = %s", user_token_types);
}
else printf("TOKENS = %stokens.h", DIR());
printf("\n");
printf("#\n");
printf("# The following filenames must be consistent with ANTLR/DLG flags\n");
printf("DLG_FILE = %s%s\n", DIR(), dlg);
printf("ERR = %serr\n", DIR());
if ( strcmp(hdr,"stdpccts.h")!=0 ) printf("HDR_FILE = %s%s\n", DIR(), hdr);
else printf("HDR_FILE =\n");
if ( !gen_CPP ) printf("MOD_FILE = %s%s\n", DIR(), mode);
if ( !gen_CPP ) printf("SCAN = %s\n", scan);
else printf("SCAN = %s%s\n", DIR(), dlg_class);
printf("PCCTS = %s\n",pccts_path);
printf("ANTLR_H = $(PCCTS)%sh\n", DirectorySymbol);
printf("BIN = $(PCCTS)%sbin\n", DirectorySymbol);
printf("ANTLR = $(BIN)%santlr\n", DirectorySymbol);
printf("DLG = $(BIN)%sdlg\n", DirectorySymbol);
printf("CFLAGS = -I. -I$(ANTLR_H)");
if ( strcmp(outdir, ".")!=0 ) printf(" -I%s", outdir);
printf(" $(COTHER)");
printf("\n");
printf("AFLAGS =");
if ( strcmp(outdir,".")!=0 ) printf(" -o %s", outdir);
if ( user_lexer ) printf(" -gx");
if ( gen_CPP ) printf(" -CC");
if ( strcmp(hdr,"stdpccts.h")!=0 ) printf(" -gh %s", hdr);
if ( gen_trees ) printf(" -gt");
if ( gen_hoist ) {
printf(" -mrhoist on") ;
} else {
printf(" -mrhoist off");
};
printf(" $(AOTHER)");
printf("\n");
printf("DFLAGS = -C2 -i");
if ( gen_CPP ) printf(" -CC");
if ( strcmp(dlg_class,"DLGLexer")!=0 ) printf(" -cl %s", dlg_class);
if ( strcmp(outdir,".")!=0 ) printf(" -o %s", outdir);
printf(" $(DOTHER)");
printf("\n");
printf("GRM = ");
pfiles(files, n, NULL);
printf("\n");
printf("MYFILES = %s\n",cfiles);
printf("SRC = ");
if ( gen_CPP ) pfiles(files, n, CPP_FILE_SUFFIX_NO_DOT);
else pfiles(files, n, "c");
if ( gen_CPP ) {
printf(" \\\n ");
printf(" ");
pclasses(classes, num_classes, CPP_FILE_SUFFIX_NO_DOT);
printf(" \\\n ");
printf("$(ANTLR_H)%s%s", DirectorySymbol, APARSER_C);
if ( !user_lexer ) printf(" $(ANTLR_H)%s%s", DirectorySymbol, DLEXERBASE_C);
if ( gen_trees ) {
printf(" \\\n ");
printf("$(ANTLR_H)%s%s", DirectorySymbol, ASTBASE_C);
printf(" $(ANTLR_H)%s%s", DirectorySymbol, PCCTSAST_C);
/* printf(" $(ANTLR_H)%s%s", DirectorySymbol, LIST_C); */
printf(" \\\n ");
}
printf(" $(ANTLR_H)%s%s", DirectorySymbol, ATOKENBUFFER_C);
}
if ( !user_lexer ) {
if ( gen_CPP ) printf(" $(SCAN)%s", CPP_FILE_SUFFIX);
else printf(" %s$(SCAN).c", DIR());
}
if ( !gen_CPP ) printf(" $(ERR).c");
printf("\\\n $(MYFILES)\n");
printf("OBJ = ");
pfiles(files, n, "o");
if ( gen_CPP ) {
printf(" \\\n ");
printf(" ");
pclasses(classes, num_classes, "o");
printf(" \\\n ");
printf(" %s%s", DIR(), APARSER_O);
if ( !user_lexer ) {
printf(" %s%s", DIR(), DLEXERBASE_O);
}
if ( gen_trees ) {
printf(" \\\n ");
printf("%s%s", DIR(), ASTBASE_O);
printf(" %s%s", DIR(), PCCTSAST_O);
/* printf(" %s%s", DIR(), LIST_O); */
printf(" \\\n ");
}
printf(" %s%s", DIR(), ATOKENBUFFER_O);
}
if ( !user_lexer ) {
if ( gen_CPP ) printf(" $(SCAN)%s", OBJ_FILE_SUFFIX);
else printf(" %s$(SCAN)%s", DIR(), OBJ_FILE_SUFFIX);
}
if ( !gen_CPP ) printf(" $(ERR)%s", OBJ_FILE_SUFFIX);
printf("\\\n $(MYFILES:.cpp=.o)\n");
printf("ANTLR_SPAWN = ");
if ( gen_CPP ) pfiles(files, n, CPP_FILE_SUFFIX_NO_DOT);
else pfiles(files, n, "c");
if ( gen_CPP ) {
printf(" ");
pclasses(classes, num_classes, CPP_FILE_SUFFIX_NO_DOT);
printf(" \\\n ");
pclasses(classes, num_classes, "h");
if ( strcmp(hdr,"stdpccts.h")!=0 ) {
printf(" \\\n ");
printf("$(HDR_FILE) stdpccts.h");
}
}
if ( user_lexer ) {
if ( !user_token_types ) printf(" $(TOKENS)");
}
else {
printf(" $(DLG_FILE)");
if ( !user_token_types ) printf(" $(TOKENS)");
}
if ( !gen_CPP ) printf(" $(ERR).c");
printf("\n");
if ( !user_lexer ) {
if ( gen_CPP ) printf("DLG_SPAWN = $(SCAN)%s", CPP_FILE_SUFFIX);
else printf("DLG_SPAWN = %s$(SCAN).c", DIR());
if ( gen_CPP ) printf(" $(SCAN).h");
if ( !gen_CPP ) printf(" $(MOD_FILE)");
printf("\n");
}
if ( gen_CPP ) {
printf("CCC = %s\n",compilerCCC);
}
else printf("CC = %s\n",compilerCC);
/* set up dependencies */
printf("\n%s : $(OBJ) $(SRC)\n", project);
printf(" %s %s %s $(CFLAGS) $(OBJ)\n",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_EXE_FLAG,
project);
printf("\n");
/* implicit rules */
if(gen_CPP)
printf("%%.o : %%.cpp\n\t$(CCC) -c $(CFLAGS) $<\n\n");
printf("%%.o : %%.c\n\t%s -c $(CFLAGS) $<\n\n",
gen_CPP?"$(CCC)":"$(CC)");
/* how to compile parser files */
for (i=0; i<num_files; i++)
{
pfiles(&files[i], 1, "o");
if ( user_lexer ) {
printf(" : $(TOKENS)");
}
else {
if ( gen_CPP ) printf(" : $(TOKENS) $(SCAN).h");
else printf(" : $(MOD_FILE) $(TOKENS)");
}
printf(" ");
if ( gen_CPP ) pfiles(&files[i], 1, CPP_FILE_SUFFIX_NO_DOT);
else pfiles(&files[i], 1, "c");
if ( gen_CPP && strcmp(hdr,"stdpccts.h")!=0 ) printf(" $(HDR_FILE)");
printf("\n");
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",RENAME_OBJ_FLAG);
pfiles(&files[i], 1, "o");
printf(" ");
if ( gen_CPP ) pfiles(&files[i], 1, CPP_FILE_SUFFIX_NO_DOT);
else pfiles(&files[i], 1, "c");
printf("\n\n");
}
/* how to compile err.c */
if ( !gen_CPP ) {
printf("$(ERR)%s : $(ERR).c", OBJ_FILE_SUFFIX);
if ( !user_lexer ) printf(" $(TOKENS)");
printf("\n");
printf(" %s -c $(CFLAGS) %s $(ERR)%s $(ERR).c",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG,
OBJ_FILE_SUFFIX);
printf("\n\n");
}
/* how to compile Class.c */
for (i=0; i<num_classes; i++)
{
pclasses(&classes[i], 1, "o");
if ( user_lexer ) {
printf(" : $(TOKENS)");
}
else {
printf(" : $(TOKENS) $(SCAN).h");
}
printf(" ");
pclasses(&classes[i], 1, CPP_FILE_SUFFIX_NO_DOT);
printf(" ");
pclasses(&classes[i], 1, "h");
if ( gen_CPP && strcmp(hdr,"stdpccts.h")!=0 ) printf(" $(HDR_FILE)");
printf("\n");
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG);
pclasses(&classes[i], 1, "o");
printf(" ");
pclasses(&classes[i], 1, CPP_FILE_SUFFIX_NO_DOT);
printf("\n\n");
}
/* how to compile scan.c */
if ( !user_lexer ) {
if ( gen_CPP ) printf("$(SCAN)%s : $(SCAN)%s", OBJ_FILE_SUFFIX, CPP_FILE_SUFFIX);
else printf("%s$(SCAN)%s : %s$(SCAN).c", DIR(), OBJ_FILE_SUFFIX, DIR());
if ( !user_lexer ) printf(" $(TOKENS)");
printf("\n");
if ( gen_CPP ) printf(" $(CCC) -c $(CFLAGS) %s $(SCAN)%s $(SCAN)%s",
RENAME_OBJ_FLAG,
OBJ_FILE_SUFFIX,
CPP_FILE_SUFFIX);
else printf(" $(CC) -c $(CFLAGS) %s %s$(SCAN)%s %s$(SCAN).c",
RENAME_OBJ_FLAG,
DIR(),
OBJ_FILE_SUFFIX,
DIR());
printf("\n\n");
}
printf("$(ANTLR_SPAWN) : $(GRM)\n");
printf(" $(ANTLR) $(AFLAGS) $(GRM)\n");
if ( !user_lexer )
{
printf("\n");
printf("$(DLG_SPAWN) : $(DLG_FILE)\n");
if ( gen_CPP ) printf(" $(DLG) $(DFLAGS) $(DLG_FILE)\n");
else printf(" $(DLG) $(DFLAGS) $(DLG_FILE) $(SCAN).c\n");
}
/* do the makes for ANTLR/DLG support */
if ( gen_CPP ) {
printf("\n");
printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), APARSER_O, DirectorySymbol, APARSER_C);
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG);
printf("%s%s $(ANTLR_H)%s%s\n", DIR(), APARSER_O, DirectorySymbol, APARSER_C);
printf("\n");
printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), ATOKENBUFFER_O, DirectorySymbol, ATOKENBUFFER_C);
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG);
printf("%s%s $(ANTLR_H)%s%s\n", DIR(), ATOKENBUFFER_O, DirectorySymbol, ATOKENBUFFER_C);
if ( !user_lexer ) {
printf("\n");
printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), DLEXERBASE_O, DirectorySymbol, DLEXERBASE_C);
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG);
printf("%s%s $(ANTLR_H)%s%s\n", DIR(), DLEXERBASE_O, DirectorySymbol, DLEXERBASE_C);
}
if ( gen_trees ) {
printf("\n");
printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), ASTBASE_O, DirectorySymbol, ASTBASE_C);
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG);
printf("%s%s $(ANTLR_H)%s%s\n", DIR(), ASTBASE_O, DirectorySymbol, ASTBASE_C);
printf("\n");
printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), PCCTSAST_O, DirectorySymbol, PCCTSAST_C);
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",
RENAME_OBJ_FLAG);
printf("%s%s $(ANTLR_H)%s%s\n", DIR(), PCCTSAST_O, DirectorySymbol, PCCTSAST_C);
printf("\n");
/*
printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), LIST_O, DirectorySymbol, LIST_C);
printf(" %s -c $(CFLAGS) %s ",
gen_CPP?"$(CCC)":"$(CC)",RENAME_OBJ_FLAG);
printf("%s%s $(ANTLR_H)%s%s\n", DIR(), LIST_O, DirectorySymbol, LIST_C);
*/
}
}
/* clean and scrub targets */
printf("\nclean:\n");
printf(" rm -f *%s core %s", OBJ_FILE_SUFFIX, project);
if ( strcmp(outdir, ".")!=0 ) printf(" %s*%s", DIR(), OBJ_FILE_SUFFIX);
printf("\n");
printf("\nscrub:\n");
printf(" rm -f *%s core %s", OBJ_FILE_SUFFIX, project);
if ( strcmp(outdir, ".")!=0 ) printf(" %s*%s", DIR(), OBJ_FILE_SUFFIX);
printf(" $(ANTLR_SPAWN)");
if ( !user_lexer ) printf(" $(DLG_SPAWN)");
printf("\n");
}