README.apollo

Building GCC 2.0 for 680x0 based Apollo systems requires the GNU
assembler (GAS) version 1.38.1, with John Vasta's patches applied.

If you haven't done so yet, get `gas-1.38.1.tar.Z' from your favourite
GNU distribution site.  Furthermore, get `apollo-gas-1.38.1.diffs'
from `labrea.stanford.edu:/pub/gnu', apply the patches, compile and
install gas (under the name as).  This should go through without any
problems.

After switching into the BSD environment, you can configure GCC 2.0
with the command 

% ./configure m68k-apollo-bsd

The Apollo's `/usr/include/setjmp.h' uses a nonstandard `#options()'
construct.  You should create a local copy of this file and remove
these constructs from the declarations of SIGSETJMP and SIGLONGJMP.

The Apollo's `/usr/include/sys/types.h' (BSD Version) doesn't allow
to test for the definition of `size_t'.  This should be fixed by

  #ifndef _SIZE_T
  #define _SIZE_T
  typedef	long	size_t;
  #endif

The script `patch-apollo-includes' fixes these two problems, but does
_not_ pretend to be a full fledged `fixincludes' for this system.

If you now follow the standard GCC installation instructions, building
GCC 2.0 (including G++ 2.0) should proceed without any problems.

NB: Debugging is not yet supported for the Apollo.  If someone wants
    to do a _big_ favour to the Apollo users, he/she should consider
    porting the Binary File Description library (BFD) to the Apollo.
    This library can be found in the gdb-4.x distributions or in the
    binutils-1.9x distributions.




#!/bin/sh
# patch-apollo-includes -- fix some (but not all!) Apollo brain damage.

FILES_TO_PATCH='sys/types.h setjmp.h'

mkdir sys

for i in $FILES_TO_PATCH;
do
  cp /bsd4.3/usr/include/$i ./$i
done

patch -b -apollo <<'EOP'
*** /bsd4.3/usr/include/sys/types.h	Fri Apr  8 20:29:06 1988
--- sys/types.h	Wed Feb 26 21:17:57 1992
***************
*** 38,44 ****
--- 38,47 ----
  typedef	char *	caddr_t;
  typedef	u_long	ino_t;
  typedef	long	swblk_t;
+ #ifndef _SIZE_T
+ #define _SIZE_T
  typedef	long	size_t;
+ #endif
  typedef	long	time_t;
  typedef	long	dev_t;
  typedef	long	off_t;
*** /bsd4.3/usr/include/setjmp.h	Fri Feb  3 21:40:21 1989
--- setjmp.h	Sun Feb 23 19:06:55 1992
***************
*** 24,30 ****
--- 24,39 ----
  #endif
  
  
+ #ifdef __GNUC__
  #ifdef _PROTOTYPES
+ extern int sigsetjmp (sigjmp_buf env, int savemask);
+ extern void siglongjmp (sigjmp_buf env, int val);
+ #else
+ extern int sigsetjmp();
+ extern void siglongjmp();
+ #endif /* _PROTOTYPES */
+ #else /* not __GNUC__ */
+ #ifdef _PROTOTYPES
  extern int sigsetjmp(
          sigjmp_buf env,
          int savemask
***************
*** 37,43 ****
  extern int sigsetjmp() #options(abnormal);
  extern void siglongjmp() #options(noreturn);
  #endif /* _PROTOTYPES */
! 
  #undef _PROTOTYPES
  
  #ifdef __cplusplus
--- 46,52 ----
  extern int sigsetjmp() #options(abnormal);
  extern void siglongjmp() #options(noreturn);
  #endif /* _PROTOTYPES */
! #endif /* not __GNUC__ */
  #undef _PROTOTYPES
  
  #ifdef __cplusplus
EOP

exit 0
