home *** CD-ROM | disk | FTP | other *** search
- /* genmake.c */
-
- #include <stdio.h>
- #include "opts.h"
- #include "types.h"
- #include "err.h"
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- DNODE **make_list;
- OPTS *opts;
- char mname[BUFSIZE];
-
- opts = (OPTS *)malloc(sizeof(OPTS));
- parse_options(argc,argv,opts);
- make_list = (DNODE **)malloc(sizeof(DNODE *));
- *make_list = NULL;
- if (!find_main_target(opts,mname)) {
- free(opts);
- free_list(make_list);
- exit(ERRFINDMAIN);
- }
- printf("main(): %s\n",mname);
- if (build_depends(make_list,opts,mname) == 0) {
- free(opts);
- free_list(make_list);
- exit(ERRBUILDDEP);
- }
- if (!make_file(make_list,opts,mname)) {
- free(opts);
- free_list(make_list);
- exit(ERRCREATEMF);
- }
- free(opts);
- free_list(make_list);
- free(make_list);
- return(0);
- }
-
- parse_options(argc,argv,opts)
- int argc;
- char *argv[];
- OPTS *opts;
- {
- int argn;
-
- opts->verbatim = 0;
- opts->exhaustive = 0;
- opts->interactive = 0;
- for (argn = 1; argn < argc; argn++) {
- if (argv[argn][0] == '-') {
- switch (argv[argn][1]) {
- case VERSION: credits();
- break;
- case HELP: help();
- free(opts);
- exit(0);
- break;
- case VERBATIM: opts->verbatim = 1;
- break;
- case EXHAUSTIVE:opts->exhaustive = 1;
- break;
- case INTERACT: opts->interactive = 1;
- break;
- case CCMAC: opts->cc = argv[++argn];
- break;
- case CFLAGS: opts->cflags = argv[++argn];
- break;
- case LFLAGS: opts->lflags = argv[++argn];
- break;
- default: option_error(argv[argn],opts);
- break;
- }
- }
- }
- }
-
- option_error(o,opts)
- char *o;
- OPTS *opts;
- {
- fprintf(stderr,"genmake: unknown option '%c'\n",o[1]);
- help();
- free(opts);
- exit(ERROPTION);
- }
-
- credits()
- {
- printf("%s\n",BANNER);
- }
-
- help()
- {
- printf("Usage: genmake [-v] [-i] [-e] [-c 'string'] [-C 'string'] [-L 'strings']\n");
- }
-
-