home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume27 / genmake / part01 / genmake.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-17  |  1.8 KB  |  100 lines

  1. /* genmake.c */
  2.  
  3. #include <stdio.h>
  4. #include "opts.h"
  5. #include "types.h"
  6. #include "err.h"
  7.  
  8. main(argc,argv)
  9. int        argc;
  10. char        *argv[];
  11. {
  12.     DNODE        **make_list;
  13.     OPTS        *opts;
  14.     char        mname[BUFSIZE];
  15.  
  16.     opts = (OPTS *)malloc(sizeof(OPTS));
  17.     parse_options(argc,argv,opts);
  18.     make_list = (DNODE **)malloc(sizeof(DNODE *));
  19.     *make_list = NULL;
  20.     if (!find_main_target(opts,mname)) {
  21.         free(opts);
  22.         free_list(make_list);
  23.         exit(ERRFINDMAIN);
  24.     }
  25.     printf("main():  %s\n",mname);
  26.     if (build_depends(make_list,opts,mname) == 0) {
  27.         free(opts);
  28.         free_list(make_list);
  29.         exit(ERRBUILDDEP);
  30.     }
  31.     if (!make_file(make_list,opts,mname)) {
  32.         free(opts);
  33.         free_list(make_list);
  34.         exit(ERRCREATEMF);
  35.     }
  36.     free(opts);
  37.     free_list(make_list);
  38.     free(make_list);
  39.     return(0);
  40. }
  41.  
  42. parse_options(argc,argv,opts)
  43. int        argc;
  44. char        *argv[];
  45. OPTS        *opts;
  46. {
  47.     int        argn;
  48.  
  49.     opts->verbatim = 0;
  50.     opts->exhaustive = 0;
  51.     opts->interactive = 0;
  52.     for (argn = 1; argn < argc; argn++) {
  53.         if (argv[argn][0] == '-') {
  54.             switch (argv[argn][1]) {
  55.                 case VERSION:    credits();
  56.                         break;
  57.                 case HELP:    help();
  58.                         free(opts);
  59.                         exit(0);
  60.                         break;
  61.                 case VERBATIM:    opts->verbatim = 1;
  62.                         break;
  63.                 case EXHAUSTIVE:opts->exhaustive = 1;
  64.                         break;
  65.                 case INTERACT:    opts->interactive = 1;
  66.                         break;
  67.                 case CCMAC:    opts->cc = argv[++argn];
  68.                         break;
  69.                 case CFLAGS:    opts->cflags = argv[++argn];
  70.                         break;
  71.                 case LFLAGS:    opts->lflags = argv[++argn];
  72.                         break;
  73.                 default:    option_error(argv[argn],opts);
  74.                         break;
  75.             }
  76.         }
  77.     }
  78. }
  79.  
  80. option_error(o,opts)
  81. char        *o;
  82. OPTS        *opts;
  83. {
  84.     fprintf(stderr,"genmake:  unknown option '%c'\n",o[1]);
  85.     help();
  86.     free(opts);
  87.     exit(ERROPTION);
  88. }
  89.  
  90. credits()
  91. {
  92.     printf("%s\n",BANNER);
  93. }
  94.  
  95. help()
  96. {
  97.     printf("Usage:  genmake [-v] [-i] [-e] [-c 'string'] [-C 'string'] [-L 'strings']\n");
  98. }
  99.  
  100.