Build libgcc.a
authorMichael Meissner <meissner@gcc.gnu.org>
Tue, 20 Dec 1994 14:31:20 +0000 (14:31 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Tue, 20 Dec 1994 14:31:20 +0000 (14:31 +0000)
From-SVN: r8674

gcc/config/msdos/configur.bat
gcc/config/msdos/libgcc.mak [new file with mode: 0644]
gcc/config/msdos/mklibgcc.c [new file with mode: 0644]
gcc/config/msdos/top.sed

index 3e202e8d509b75ee80a1a629ae282505be43c2f5..f8a99586e1e717c32f27408bfb11da67db36e1fe 100644 (file)
@@ -12,7 +12,7 @@ update config\i386\i386.md md
 update config\i386\i386.c aux-output.c\r
 \r
 echo # Makefile generated by "configure.bat"> Makefile\r
-echo all.dos: cccp cc1 cc1obj xgcc s-objlist >> Makefile\r
+echo all.dos: cccp cc1 cc1obj xgcc libgcc.a s-objlist >> Makefile\r
 sed -f config/msdos/top.sed Makefile.in >> Makefile\r
 \r
 set LANG=\r
diff --git a/gcc/config/msdos/libgcc.mak b/gcc/config/msdos/libgcc.mak
new file mode 100644 (file)
index 0000000..5f480b1
--- /dev/null
@@ -0,0 +1,14 @@
+# 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
diff --git a/gcc/config/msdos/mklibgcc.c b/gcc/config/msdos/mklibgcc.c
new file mode 100644 (file)
index 0000000..705b3d5
--- /dev/null
@@ -0,0 +1,98 @@
+#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
index b1cd173755d6a864b04d5e911e17daec52c4329f..fc0de4b94492bd75976e56d1b87b297e052d4924 100644 (file)
@@ -36,3 +36,5 @@ s/tmp-/t-/g
 s/^\(SUBDIR_OBSTACK *=\).*$/\1 ..\/obstack.o/
 s/^\(SUBDIR_USE_ALLOCA *=\).*$/\1/
 s/^\(SUBDIR_MALLOC *=\).*$/\1/
+/^# Build libgcc.a/ r config/msdos/libgcc.mak
+/^# Build libgcc.a/,/\f/ d