home *** CD-ROM | disk | FTP | other *** search
Wrap
/* ** ** VConfig - creator for VBCC v0.3d ** */ /* #include <dos.h> */ #include <ctype.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include "vconfig.h" #include "help.c" #include "menu_main.c" #include "menu_optimize.c" #include "menu_warnings.c" #include "menu_includePath.c" #include "menu_libLink.c" #include "menu_define.c" #include "menu_compiler.c" #include "menu_code.c" const char vers[] = "$VER: VConfig 1.0 (28.7.96)"; void line(int len) { int i; char line[255]; for(i = 0; i < len; i++) line[i] = ' '; line[i] = 0; /* EOL */ printf("%s \n\n", line); } void back_help_quit(void) { line(55); printf(" B. Back H. Help Q. Quit\n"); line(55); printf("\nPlease select: "); } void back_quit(void) { line(55); printf(" B. Back Q. Quit\n"); line(55); printf("\nPlease select: "); } void removeLib(char *lib) { int i; for(i = 0; i < 10; i++) if(stricmp(libLinkTable[i], lib) == 0) strcpy(libLinkTable[i], ""); } void addLib(char *lib) { int i; for(i = 0; i < 10; i++) { if(strlen(libLinkTable[i]) == 0) { strcpy(libLinkTable[i], lib); return; } } printf("\n\nVolker says:\n\"Everyone who uses more than 10 link libraries is a sick pervert and doesn't deserve to use vconfig. :-)\"\n\n<press return>"); getchar(); } void initDefaults(void) { verboseOutput = 0; cpuCode = 0; /* compile for all amiga's */ fpuCode = 0; /* errorHighlight = TRUE; /* put ansi in errorreport */ optimizeMode = 1; /* optimization default */ strcpy(compilationName, ""); /* no filename */ compileMethod = 0; /* Fully compilation */ keepIntermediateFiles = FALSE; maxErrors = 10; maxOptPasses = EMPTY; inlineSize = EMPTY; datamodel = LARGE; codemodel = LARGE; stripfilename = FALSE; /* strip filepath off warnings */ } long readConfigFile(char *filename) { int retval = 0; FILE *fp; if((fp = fopen(filename, "r")) != NULL) { char line[255]; int warncount, ignorewarncount, includepathcount, liblinkcount, definecount; retval = 1; warncount = ignorewarncount = includepathcount = liblinkcount = definecount = 0; while(fgets(line, 255, fp)) { int len = strlen(line); line[--len] = 0; /* remove return code */ /* avoid empty lines */ if(len > 2) { /* THESE VALUES ARE NOT MODIFIABLE */ if(!strncmp(line, "-pp=", 4)) strcpy(pp, line); if(!strncmp(line, "-ppv=", 5)) strcpy(ppv, line); if(!strncmp(line, "-as=", 4)) strcpy(as, line); if(!strncmp(line, "-asv=", 5)) strcpy(asv, line); if(!strncmp(line, "-rm=", 4)) strcpy(rm, line); if(!strncmp(line, "-rmv=", 5)) strcpy(rmv, line); if(!strncmp(line, "-ld=", 4)) strcpy(ld, line); if(!strncmp(line, "-l2=", 4)) strcpy(l2, line); if(!strncmp(line, "-ldv=", 5)) strcpy(ldv, line); if(!strncmp(line, "-l2v=", 5)) strcpy(l2v, line); /* data model */ if(!strncmp(line, "-sd", 3)) datamodel = SMALL; /* code model */ if(!strncmp(line, "-sc", 3)) codemodel = SMALL; /* dontwarn */ if(!strncmp(line, "-dontwarn=", 10) && ignorewarncount <= 9) ignoreWarnTable[ignorewarncount++] = strtol(&line[10], NULL, 10); /* warn */ if(!strncmp(line, "-warn=", 6) && warncount <= 9) warnTable[warncount++] = strtol(&line[6], NULL, 10); /* define */ if(!strncmp(line, "-D", 2) && definecount <= 9) strcpy(defineTable[definecount++], &line[2]); /* include search path */ if(!strncmp(line, "-I", 2) && includepathcount <= 9) strcpy(includePathTable[includepathcount++], &line[2]); /* link ulib */ if((!strncmp(line, "-l", 2)) && line[3] != '=' && line[4] != '=' && liblinkcount <= 9) strcpy(libLinkTable[liblinkcount++], &line[2]); /* intermediate files */ if(!strncmp(line, "-k", 2)) keepIntermediateFiles = TRUE; /* don't compile */ if(!strncmp(line, "-E", 2)) compileMethod = 1; /* don't link */ if(!strncmp(line, "-c", 2)) compileMethod = 2; /* don't assemble */ if(!strncmp(line, "-S", 2)) compileMethod = 3; /* verbose */ if(!strncmp(line, "-v", 2)) verboseOutput = 1; if(!strncmp(line, "-vv", 3)) verboseOutput = 2; /* optimize */ if(!strncmp(line, "-O", 2)) optimizeMode = line[2]-'0'; /* output name */ if(!strncmp(line, "-o=", 3)) strncpy(compilationName, &line[3], len-3); /* fpu */ if(!strncmp(line, "-lmieee", 7)) fpuCode = 1; /* IEEE */ if(!strncmp(line, "-fpu", 4)) fpuCode = 2; /* cpu */ if(!strncmp(line, "-cpu", 4)) { if(!strcmp(&line[len-5], "68000")) cpuCode = 0; else if(!strcmp(&line[len-5], "68010")) cpuCode = 1; else if(!strcmp(&line[len-5], "68020")) cpuCode = 2; else if(!strcmp(&line[len-5], "68030")) cpuCode = 3; else if(!strcmp(&line[len-5], "68040")) cpuCode = 4; else if(!strcmp(&line[len-5], "68060")) cpuCode = 5; } /* don't link stdlib */ if(!strncmp(line, "-nostdlib", 9)) noStdLib = TRUE; /* maxerrors */ if(!strncmp(line, "-maxerrors=", 11)) maxErrors = strtol(&line[11], NULL, 10); /* maxoptpasses */ if(!strncmp(line, "-maxoptpasses=", 14)) maxOptPasses = strtol(&line[14], NULL, 10); /* inline-size */ if(!strncmp(line, "-inline-size=", 13)) inlineSize = strtol(&line[13], NULL, 10); } } fclose(fp); } return(retval); } void saveConfigFile(char *filename) { FILE *fp; if((fp = fopen(filename, "w")) != NULL) { int i; fprintf(fp, "%s\n", pp); fprintf(fp, "%s\n", ppv); fprintf(fp, "%s\n", as); fprintf(fp, "%s\n", asv); fprintf(fp, "%s\n", rm); fprintf(fp, "%s\n", rmv); fprintf(fp, "%s\n", ld); fprintf(fp, "%s\n", l2); fprintf(fp, "%s\n", ldv); fprintf(fp, "%s\n", l2v); /* write warnings */ for(i = 0; i < MAXWARNS; i++) if(warnTable[i] != EMPTY) fprintf(fp, "-warn=%d\n", warnTable[i]); /* write ignore warnings */ for(i = 0; i < MAXWARNS; i++) if(ignoreWarnTable[i] != EMPTY) fprintf(fp, "-dontwarn=%d\n", ignoreWarnTable[i]); /* write extra include search paths */ for(i = 0; i < 10; i++) if(includePathTable[i][0] != 0) fprintf(fp, "-I%s\n", includePathTable[i]); /* write extra defines */ for(i = 0; i < 10; i++) if(defineTable[i][0] != 0) fprintf(fp, "-D%s\n", defineTable[i]); /* write extra link .lib's */ for(i = 0; i < 10; i++) if(libLinkTable[i][0] != 0) fprintf(fp, "-l%s\n", libLinkTable[i]); if(datamodel == SMALL) fprintf(fp, "-sd\n"); if(codemodel == SMALL) fprintf(fp, "-sc\n"); if(compilationName[0] != 0) fprintf(fp, "-o=%s\n", compilationName); /* cpu */ switch(cpuCode) { case 1: fprintf(fp, "-cpu=68010\n"); break; case 2: fprintf(fp, "-cpu=68020\n"); break; case 3: fprintf(fp, "-cpu=68030\n"); break; case 4: fprintf(fp, "-cpu=68040\n"); break; case 5: fprintf(fp, "-cpu=68060\n"); break; } if(fpuCode == 2) switch(cpuCode) { case 2: /* 020 */ case 3: fprintf(fp, "-fpu=68881\n"); break; /* 030 */ case 4: fprintf(fp, "-fpu=68040\n"); break; /* 040 */ case 5: fprintf(fp, "-fpu=68060\n"); break; /* 060 */ } /* optimization */ switch(optimizeMode) { case 0: fprintf(fp, "-O0\n"); break; case 2: fprintf(fp, "-O1\n"); break; case 3: fprintf(fp, "-O2\n"); break; case 4: fprintf(fp, "-O3\n"); break; } if(verboseOutput == 1) fprintf(fp, "-v\n"); else if(verboseOutput == 2) fprintf(fp, "-vv\n"); if(compileMethod == 1) fprintf(fp, "-E\n"); else if(compileMethod == 2) fprintf(fp, "-c\n"); else if(compileMethod == 3) fprintf(fp, "-S\n"); if(noStdLib == TRUE) fprintf(fp, "-nostdlib\n"); if(keepIntermediateFiles == 1) fprintf(fp, "-k\n"); fprintf(fp, "-maxerrors=%d\n", maxErrors); if(maxOptPasses != EMPTY) fprintf(fp, "-maxoptpasses=%d\n", maxOptPasses); if(inlineSize != EMPTY) fprintf(fp, "-inline-size=%d\n", inlineSize); if(stripfilename == TRUE) fprintf(fp, "-strip-path\n"); fclose(fp); } else { printf("Can't write file \"%s\"!\n<press return>", filename); getchar(); } } main() { int returnval = 0; initDefaults(); /* If loacle cfg file doesn't exist */ if(readConfigFile("vc.config") == 0) { if(readConfigFile("env:vc.config") == 0) { if(readConfigFile("envarc:vc.config") == 0) { if(readConfigFile("vbcc:vc.config") == 0) printf("Locale configfile not found, reading default configfile.\n"); else printf("No configfile found!\n"); } } } while(returnval == 0) returnval = mainMenu(); if(returnval == SAVE) saveConfigFile("vc.config"); else if(returnval == SAVEDEFAULT) { saveConfigFile("ENV:vc.config"); saveConfigFile("ENVARC:vc.config"); } printf("\n\n"); }