--- /dev/null
+# Build libgcc.a\r
+\r
+libgcc.a : libgcc1.c libgcc2.c mklibgcc\r
+ ./mklibgcc -c\r
+ ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc1.c $(LIB1FUNCS)\r
+ ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc2.c $(LIB2FUNCS)\r
+ -command /c mklibnow.bat\r
+ -command /c del libgcc.a\r
+ ar rvs libgcc.a lgcctmp/*.o\r
+\r
+mklibgcc : config/msdos/mklibgcc.c\r
+ gcc $(CFLAGS) $^ -o $@\r
+\r
+\f\r
--- /dev/null
+#include <stdio.h>\r
+#include <string.h>\r
+#include <dirent.h>\r
+\r
+char *skips[] = {\r
+ "__main",\r
+ "_ctors",\r
+ "_exit",\r
+ "_ctor_list",\r
+ "_dtor_list",\r
+ 0\r
+};\r
+\r
+int\r
+do_clean()\r
+{\r
+ DIR *dir;\r
+ struct dirent *de;\r
+ remove("mklibnow.bat");\r
+\r
+ dir = opendir("lgcctmp");\r
+ if (!dir)\r
+ return 0;\r
+ while ((de=readdir(dir)))\r
+ {\r
+ char buf[30];\r
+ if (de->d_name[0] == '.')\r
+ continue;\r
+ sprintf(buf, "lgcctmp/%s", de->d_name);\r
+ unlink(buf);\r
+ }\r
+ closedir(dir);\r
+ return 0;\r
+}\r
+\r
+int\r
+main(int argc, char **argv)\r
+{\r
+ char *cc = argv[1];\r
+ char *csrc=argv[2];\r
+ int i;\r
+ FILE *batfile;\r
+ FILE *cfile;\r
+\r
+ if (argc > 1 && strcmp(argv[1], "-c")==0)\r
+ return do_clean();\r
+\r
+ mkdir("lgcctmp", 0755);\r
+\r
+ batfile = fopen("mklibnow.bat", "a");\r
+ if (!batfile)\r
+ {\r
+ perror("mklibnow.bat");\r
+ return 1;\r
+ }\r
+ fprintf(batfile, "@echo off\n");\r
+\r
+ for (i=3; i<argc; i++)\r
+ {\r
+ char basename[30], *bp;\r
+ int s;\r
+ for (s=0; skips[s]; s++)\r
+ if (strcmp(skips[s], argv[i]) == 0)\r
+ break;\r
+ if (skips[s])\r
+ continue;\r
+ strcpy(basename, "lgcctmp/");\r
+ if (strncmp(argv[i], "_fix", 4)==0)\r
+ {\r
+ strcat(basename, "fx");\r
+ strcat(basename, argv[i]+4);\r
+ }\r
+ else if (strncmp(argv[i], "_float", 4)==0)\r
+ {\r
+ strcat(basename, "flt");\r
+ strcat(basename, argv[i]+6);\r
+ }\r
+ else\r
+ {\r
+ strcat(basename, argv[i]);\r
+ }\r
+ bp = basename + strlen(basename);\r
+ fprintf(batfile, "%s -c %s.c -o %s.o\n", cc, basename, basename);\r
+ strcpy(bp, ".c");\r
+ cfile = fopen(basename, "w");\r
+ if (cfile)\r
+ {\r
+ *bp = 0;\r
+ fprintf(cfile, "#define L%s\n#include \"%s\"\n", argv[i], csrc);\r
+ fclose(cfile);\r
+ }\r
+ else\r
+ perror(basename);\r
+ }\r
+\r
+ fclose(batfile);\r
+ return 0;\r
+}\r