diff options
author | meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-12-20 14:31:20 +0000 |
---|---|---|
committer | meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-12-20 14:31:20 +0000 |
commit | 6c0d1ddfe253df5f38ed7473e82f81dc3ab4e302 (patch) | |
tree | 7f1eeaf9e8bc91f1738882842a7e804795845059 /gcc/config/msdos | |
parent | 3f5db4f3304ec5cd69dfc32673cc5b5182cc8956 (diff) | |
download | gcc-6c0d1ddfe253df5f38ed7473e82f81dc3ab4e302.tar.gz |
Build libgcc.a
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8674 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/msdos')
-rw-r--r-- | gcc/config/msdos/configur.bat | 2 | ||||
-rw-r--r-- | gcc/config/msdos/libgcc.mak | 14 | ||||
-rw-r--r-- | gcc/config/msdos/mklibgcc.c | 98 | ||||
-rw-r--r-- | gcc/config/msdos/top.sed | 2 |
4 files changed, 115 insertions, 1 deletions
diff --git a/gcc/config/msdos/configur.bat b/gcc/config/msdos/configur.bat index 3e202e8d509..f8a99586e1e 100644 --- a/gcc/config/msdos/configur.bat +++ b/gcc/config/msdos/configur.bat @@ -12,7 +12,7 @@ update config\i386\i386.md md update config\i386\i386.c aux-output.c
echo # Makefile generated by "configure.bat"> Makefile
-echo all.dos: cccp cc1 cc1obj xgcc s-objlist >> Makefile
+echo all.dos: cccp cc1 cc1obj xgcc libgcc.a s-objlist >> Makefile
sed -f config/msdos/top.sed Makefile.in >> Makefile
set LANG=
diff --git a/gcc/config/msdos/libgcc.mak b/gcc/config/msdos/libgcc.mak new file mode 100644 index 00000000000..5f480b152d3 --- /dev/null +++ b/gcc/config/msdos/libgcc.mak @@ -0,0 +1,14 @@ +# Build libgcc.a
+
+libgcc.a : libgcc1.c libgcc2.c mklibgcc
+ ./mklibgcc -c
+ ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc1.c $(LIB1FUNCS)
+ ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc2.c $(LIB2FUNCS)
+ -command /c mklibnow.bat
+ -command /c del libgcc.a
+ ar rvs libgcc.a lgcctmp/*.o
+
+mklibgcc : config/msdos/mklibgcc.c
+ gcc $(CFLAGS) $^ -o $@
+
+
diff --git a/gcc/config/msdos/mklibgcc.c b/gcc/config/msdos/mklibgcc.c new file mode 100644 index 00000000000..705b3d5c404 --- /dev/null +++ b/gcc/config/msdos/mklibgcc.c @@ -0,0 +1,98 @@ +#include <stdio.h>
+#include <string.h>
+#include <dirent.h>
+
+char *skips[] = {
+ "__main",
+ "_ctors",
+ "_exit",
+ "_ctor_list",
+ "_dtor_list",
+ 0
+};
+
+int
+do_clean()
+{
+ DIR *dir;
+ struct dirent *de;
+ remove("mklibnow.bat");
+
+ dir = opendir("lgcctmp");
+ if (!dir)
+ return 0;
+ while ((de=readdir(dir)))
+ {
+ char buf[30];
+ if (de->d_name[0] == '.')
+ continue;
+ sprintf(buf, "lgcctmp/%s", de->d_name);
+ unlink(buf);
+ }
+ closedir(dir);
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+ char *cc = argv[1];
+ char *csrc=argv[2];
+ int i;
+ FILE *batfile;
+ FILE *cfile;
+
+ if (argc > 1 && strcmp(argv[1], "-c")==0)
+ return do_clean();
+
+ mkdir("lgcctmp", 0755);
+
+ batfile = fopen("mklibnow.bat", "a");
+ if (!batfile)
+ {
+ perror("mklibnow.bat");
+ return 1;
+ }
+ fprintf(batfile, "@echo off\n");
+
+ for (i=3; i<argc; i++)
+ {
+ char basename[30], *bp;
+ int s;
+ for (s=0; skips[s]; s++)
+ if (strcmp(skips[s], argv[i]) == 0)
+ break;
+ if (skips[s])
+ continue;
+ strcpy(basename, "lgcctmp/");
+ if (strncmp(argv[i], "_fix", 4)==0)
+ {
+ strcat(basename, "fx");
+ strcat(basename, argv[i]+4);
+ }
+ else if (strncmp(argv[i], "_float", 4)==0)
+ {
+ strcat(basename, "flt");
+ strcat(basename, argv[i]+6);
+ }
+ else
+ {
+ strcat(basename, argv[i]);
+ }
+ bp = basename + strlen(basename);
+ fprintf(batfile, "%s -c %s.c -o %s.o\n", cc, basename, basename);
+ strcpy(bp, ".c");
+ cfile = fopen(basename, "w");
+ if (cfile)
+ {
+ *bp = 0;
+ fprintf(cfile, "#define L%s\n#include \"%s\"\n", argv[i], csrc);
+ fclose(cfile);
+ }
+ else
+ perror(basename);
+ }
+
+ fclose(batfile);
+ return 0;
+}
diff --git a/gcc/config/msdos/top.sed b/gcc/config/msdos/top.sed index b1cd173755d..fc0de4b9449 100644 --- a/gcc/config/msdos/top.sed +++ b/gcc/config/msdos/top.sed @@ -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/,// d |