home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gcc-2.7.2.1-base.tgz / gcc-2.7.2.1-base.tar / fsf / gcc / config / winnt / mklibgcc.c < prev    next >
C/C++ Source or Header  |  1995-09-12  |  2KB  |  98 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <dirent.h>
  4.  
  5. char *skips[] = {
  6.   0
  7. };
  8.  
  9. int
  10. do_clean()
  11. {
  12.   DIR *dir;
  13.   struct dirent *de;
  14.   remove("mklibnow.bat");
  15.  
  16.   dir = opendir("lgcctmp");
  17.   if (!dir)
  18.     return 0;
  19.   while ((de=readdir(dir)))
  20.     {
  21.       char buf[30];
  22.       if (de->d_name[0] == '.')
  23.         continue;
  24.       sprintf(buf, "lgcctmp/%s", de->d_name);
  25.       unlink(buf);
  26.     }
  27.   closedir(dir);
  28.   return 0;
  29. }
  30.  
  31. int
  32. main(int argc, char **argv)
  33. {
  34.   char *cc = argv[1];
  35.   char *csrc=argv[2];
  36.   int i;
  37.   FILE *batfile;
  38.   FILE *cfile;
  39.  
  40.   if (argc > 1 && strcmp(argv[1], "-c")==0)
  41.     return do_clean();
  42.  
  43.   _mkdir("lgcctmp", 0755);
  44.  
  45.   batfile = fopen("mklibnow.bat", "a");
  46.   if (!batfile)
  47.     {
  48.       perror("mklibnow.bat");
  49.       return 1;
  50.     }
  51. /*  fprintf(batfile, "@echo off\n"); */
  52.  
  53.   for (i=3; i<argc; i++)
  54.     {
  55.       char dirname[30], basename[30], fullname[30], *bp;
  56.       int s;
  57.       for (s=0; skips[s]; s++)
  58.         if (strcmp(skips[s], argv[i]) == 0)
  59.       break;
  60.       if (skips[s])
  61.         continue;
  62.       strcpy(dirname, "lgcctmp/");
  63.       strcpy(basename, "\0");
  64.       if (strncmp(argv[i], "_fix", 4)==0)
  65.         {
  66.           strcat(basename, "fx");
  67.           strcat(basename, argv[i]+4);
  68.         }
  69.       else if (strncmp(argv[i], "_float", 4)==0)
  70.         {
  71.           strcat(basename, "flt");
  72.           strcat(basename, argv[i]+6);
  73.         }
  74.       else
  75.         {
  76.           strcat(basename, argv[i]);
  77.         }
  78.       strcpy (fullname, dirname);
  79.       strcat (fullname, basename);
  80.       fprintf(batfile, "%s -c lgcctmp/%s.c\n", cc, basename);
  81.       fprintf(batfile, "copy %s.obj lgcctmp\n", basename);
  82.       bp = fullname + strlen(fullname);
  83.       strcpy(bp, ".c");
  84.       cfile = fopen(fullname, "w");
  85.       if (cfile)
  86.         {
  87.           *bp = 0;
  88.           fprintf(cfile, "#define L%s\n#include \"%s\"\n", argv[i], csrc);
  89.           fclose(cfile);
  90.         }
  91.       else
  92.         perror(fullname);
  93.     }
  94.  
  95.   fclose(batfile);
  96.   return 0;
  97. }
  98.