From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Wilson To: The Red Fox Cc: egcs@cygnus.com, hjl@lucon.org Subject: Re: Building a cross compiler Date: Tue, 28 Apr 1998 19:49:00 -0000 Message-id: <199804290045.RAA24450@rtl.cygnus.com> References: X-SW-Source: 1998-04/msg01129.html mv libgcc1.a libgcc1.cross || (echo You must find a way to make libgcc1.a; false) mv: libgcc1.a: No such file or directory You must find a way to make libgcc1.a The problem here is that the i386 ports use the perform_* macros to implement libgcc1.a. These perform_* macros are defined to be asms, and hence one can compile libgcc1.c with gcc without generating recursive code. Unfortunately, there is no way for the toplevel Makefile to know whether any particular port has defined the necessary perform_* macros to make this work. For a native (linux/freebsd/etc), one just compiles libgcc1.c with `cc', which is gcc, and it just works. For a cross, we have a problem, because we know we can't use `cc', and we don't know if we can use `./xgcc -B./' (because we don't know if the perform_* macros are defined), so the build fails with an error. I think this should be fixed by rewriting the x86 port to implement libgcc1 as an assembler file instead of the perform_* macros, and then we should eliminate the perform_* macros so that no one else will be tempted to use them. This is how all other ports work nowadays. Jim