Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Aug 1995 14:21:52 -0700
From:      Jeffrey Hsu <hsu>
To:        questions@freebsd.org, tony@thing.sunquest.com
Subject:   Re: SML for FreeBSD (2.0.5)
Message-ID:  <199508042121.OAA06728@freefall.cdrom.com>

next in thread | raw e-mail | index | archive | help
That's an old FreeBSD 1.1 package, which still works if you can find
it somewhere.  Else grab the standard SML 0.93 distribution from att
or princeton and apply these patches.

*** ./makeml	Tue Feb 22 16:01:20 1994
--- ./makeml.0	Fri Sep 24 17:40:07 1993
***************
*** 215,228 ****
  	    case $1 in
  		bsd)    OPSYS=BSD ;;
  		bsd386) OPSYS=BSD; DEFS="$DEFS -DBSD386";;
- 		FreeBSD)
- 		  CPP=/usr/bin/cpp
- 		  OPSYS=BSD
- 		  DEFS="$DEFS -DFreeBSD"
- 		  ;;
  		mach)   OPSYS=MACH; DEFS="$DEFS -DBSD";;
  		*)
! 		    echo "$CMD must specify opsys arg for i386/i486 (bsd, bsd386, FreeBSD or mach)"
  		    exit 1
  		;;
  	    esac
--- 215,223 ----
  	    case $1 in
  		bsd)    OPSYS=BSD ;;
  		bsd386) OPSYS=BSD; DEFS="$DEFS -DBSD386";;
  		mach)   OPSYS=MACH; DEFS="$DEFS -DBSD";;
  		*)
! 		    echo "$CMD must specify opsys arg for i386/i486 (bsd, bsd386 or mach)"
  		    exit 1
  		;;
  	    esac
*** ./runtime/export.c	Tue Feb 22 16:42:34 1994
--- ./runtime/export.c.0	Fri Sep 24 17:42:13 1993
***************
*** 178,188 ****
  #  if defined(NS32)
      E.a_magic = NS32GMAGIC;
  #  else
! #    if defined(FreeBSD)
!       E.a_magic = QMAGIC;
! #    else
!       E.a_magic = ZMAGIC;
! #    endif
  #  endif
  #endif
  #endif
--- 178,184 ----
  #  if defined(NS32)
      E.a_magic = NS32GMAGIC;
  #  else
!     E.a_magic = ZMAGIC;
  #  endif
  #endif
  #endif
***************
*** 257,263 ****
      lseek(filid,N_DATADDR(E),0);
      bulletproofWrite(filid,CEIL(ETEXT,getpagesize()),E.a_data);
  #else
! #if defined(SPARC) && defined(MACH) || defined(BSD386) || defined(FreeBSD)
      bulletproofWrite(filid,textstart+sizeof(E),E.a_text-sizeof(E));
  #else
  # if defined(DYNIX)
--- 253,259 ----
      lseek(filid,N_DATADDR(E),0);
      bulletproofWrite(filid,CEIL(ETEXT,getpagesize()),E.a_data);
  #else
! #if defined(SPARC) && defined(MACH) || defined(BSD386)
      bulletproofWrite(filid,textstart+sizeof(E),E.a_text-sizeof(E));
  #else
  # if defined(DYNIX)
*** ./runtime/cfuns.c	Tue Sep 28 23:21:11 1993
--- ./runtime/cfuns.c.0	Sat Sep 25 12:41:52 1993
***************
*** 7,50 ****
  
  #include "ml_os.h"
  #ifdef THINK_C
!   #include <unix.h>
!   #include <fcntl.h>
!   #include <errno.h>
!   #include "MacOS.dep.h"
! #else
!   #include <sys/socket.h>
!   #include <sys/un.h>
!   #include <netinet/in.h>
!   #include <sys/stat.h>
!   #include <sys/errno.h>
!   #ifdef V9
!     #include <sys/filio.h>
!     #include <sys/ttyio.h>
!   #else
!     #include <sys/ioctl.h>
!     #include <sys/file.h>
!     #ifndef HPUX
!     #include <sys/time.h>
!   #endif
  #endif
  #ifndef HPUX
!   #include <sys/param.h>
  #endif
  #if (defined(SPARC) && !defined(MACH))
!   #ifdef SOLARIS
!     #include <unistd.h>
!     #include <sys/filio.h>
!     #include <fcntl.h>
!     #include <signal.h>
!     extern sigset_t emptyMask;
!   #else
!     #include <vfork.h>	/* tells sparc optimizer about vfork */
!   #endif
  #endif
  #include <sys/wait.h>
!   #endif THINK_C
  #ifdef HPUX
!   #include <sys/utsname.h>
  #endif
  
  #include "ml_state.h"
--- 7,50 ----
  
  #include "ml_os.h"
  #ifdef THINK_C
! #include <unix.h>
! #include <fcntl.h>
! #include <errno.h>
! #include "MacOS.dep.h"
! #else
! #include <sys/socket.h>
! #include <sys/un.h>
! #include <netinet/in.h>
! #include <sys/stat.h>
! #include <sys/errno.h>
! #ifdef V9
! #include <sys/filio.h>
! #include <sys/ttyio.h>
! #else
! #include <sys/ioctl.h>
! #include <sys/file.h>
! #ifndef HPUX
! #include <sys/time.h>
! #endif
  #endif
  #ifndef HPUX
! #include <sys/param.h>
  #endif
  #if (defined(SPARC) && !defined(MACH))
! #ifdef SOLARIS
! #include <unistd.h>
! #include <sys/filio.h>
! #include <fcntl.h>
! #include <signal.h>
! extern sigset_t emptyMask;
! #else
! #include <vfork.h>	/* tells sparc optimizer about vfork */
! #endif
  #endif
  #include <sys/wait.h>
! #endif THINK_C
  #ifdef HPUX
! #include <sys/utsname.h>
  #endif
  
  #include "ml_state.h"
***************
*** 257,263 ****
   	return (sz - pos);
  }
  
! #endif /* THINK_C */
  
  
  #define MAX_SYSCALL_ARGS	6
--- 257,263 ----
   	return (sz - pos);
  }
  
! #endif
  
  
  #define MAX_SYSCALL_ARGS	6
***************
*** 274,280 ****
      raise_syserror (msp, "ml_syscall: Not implemented");
      return;
  }
! #else /* !AIX */
  void ml_syscall (msp, arg)
      MLState_ptr	    msp;
      ML_val_t	    arg;
--- 274,280 ----
      raise_syserror (msp, "ml_syscall: Not implemented");
      return;
  }
! #else
  void ml_syscall (msp, arg)
      MLState_ptr	    msp;
      ML_val_t	    arg;
***************
*** 454,464 ****
  	len = strlen(path)+sizeof(sock.sun_len)+sizeof(sock.sun_family)+1;
  	sock.sun_len = len;
  #else
- #ifndef FreeBSD
  	len = strlen(path)+sizeof(sock.sun_family);
- #else
- 	len = SUN_LEN(&sock);
- #endif
  #endif
  	DO_SYSCALL (connect(fd, (struct sockaddr *)&sock, len), sts);
  	if (sts != -1) {
--- 454,460 ----
***************
*** 509,515 ****
      struct sockaddr_in saddr;
      int		    fd, s, i, sts;
  
! #if defined(SUNOS) || (defined(BSD) && defined(MIPS)) || defined(NeXT) || defined(AUX) || defined(HPPA) || defined (FreeBSD)
      DO_SYSCALL (socket(PF_INET, SOCK_STREAM, 0), fd);
      if (fd != -1) {
  	saddr.sin_family = AF_INET;
--- 505,511 ----
      struct sockaddr_in saddr;
      int		    fd, s, i, sts;
  
! #if defined(SUNOS) || (defined(BSD) && defined(MIPS)) || defined(NeXT) || defined(AUX) || defined(HPPA)
      DO_SYSCALL (socket(PF_INET, SOCK_STREAM, 0), fd);
      if (fd != -1) {
  	saddr.sin_family = AF_INET;
***************
*** 615,621 ****
      /*
      raise_ThinkC_error(msp);
      */
! #else /* !THINK_C */
      fd_set	    rfds;
  
      if (msp->inSigHandler || msp->maskSignals
--- 611,617 ----
      /*
      raise_ThinkC_error(msp);
      */
! #else
      fd_set	    rfds;
  
      if (msp->inSigHandler || msp->maskSignals
***************
*** 628,638 ****
  #ifdef RISCos
  	/* problem with select and pipes */
  	sts = 0;
! #else /* !RISCos */
  	FD_ZERO(&rfds);
  	FD_SET(fd, &rfds);
  	sts = select(fd+1, &rfds, 0, 0, 0);
! #endif /* RISCos */
  	msp->ioWaitFlag = 0;
      }
      else {
--- 624,634 ----
  #ifdef RISCos
  	/* problem with select and pipes */
  	sts = 0;
! #else
  	FD_ZERO(&rfds);
  	FD_SET(fd, &rfds);
  	sts = select(fd+1, &rfds, 0, 0, 0);
! #endif
  	msp->ioWaitFlag = 0;
      }
      else {
***************
*** 654,660 ****
      }
  
      RETURN(msp, ML_unit);
! #endif /* THINK_C */
  } /* end of ml_wait_for_in. */
  
  
--- 650,656 ----
      }
  
      RETURN(msp, ML_unit);
! #endif
  } /* end of ml_wait_for_in. */
  
  
***************
*** 1064,1070 ****
      int		    sts;
  
      if (OBJ_isBOXED(f))
! #if defined(SOLARIS) || defined(FreeBSD)
  	sts = truncate((char *)PTR_MLtoC(f), len);
  #else
  	sts = truncate(PTR_MLtoC(f), len);
--- 1060,1066 ----
      int		    sts;
  
      if (OBJ_isBOXED(f))
! #ifdef SOLARIS
  	sts = truncate((char *)PTR_MLtoC(f), len);
  #else
  	sts = truncate(PTR_MLtoC(f), len);
***************
*** 1601,1607 ****
  	raise_syserror (msp, 0);
      else
  	RETURN(msp, INT_CtoML(sz));
! #else /* !THINK_C */
  #ifdef SOLARIS
      int		    fd = INT_MLtoC(arg);
      off_t           cnt;
--- 1597,1603 ----
  	raise_syserror (msp, 0);
      else
  	RETURN(msp, INT_CtoML(sz));
! #else
  #ifdef SOLARIS
      int		    fd = INT_MLtoC(arg);
      off_t           cnt;
***************
*** 1630,1636 ****
      }
      else
          raise_syserror (msp, 0);
! #else /* !SOLARIS */
      int		fd = INT_MLtoC(arg);
      struct stat	buf;
      int		pos;
--- 1626,1632 ----
      }
      else
          raise_syserror (msp, 0);
! #else
      int		fd = INT_MLtoC(arg);
      struct stat	buf;
      int		pos;
***************
*** 1656,1663 ****
  	raise_syserror (msp, 0);
      else
  	RETURN(msp, INT_CtoML(buf.st_size - pos));
! #endif /* SOLARIS */
! #endif /* THINK_C */
  } /* end of ml_fionread */
  
  
--- 1652,1659 ----
  	raise_syserror (msp, 0);
      else
  	RETURN(msp, INT_CtoML(buf.st_size - pos));
! #endif
! #endif
  } /* end of ml_fionread */
  
  
*** ./runtime/signal.c	Sat Feb  5 13:07:39 1994
--- ./runtime/signal.c.0	Tue Sep 28 16:51:53 1993
***************
*** 444,450 ****
  {
      MLState_ptr MLState = find_self();
  
! #if defined(BSD386)
      /* Due to an OS bug, SIGBUS is generated by an INTO instruction */
      if (sig == SIGBUS) {
         sig = SIGFPE; 
--- 444,450 ----
  {
      MLState_ptr MLState = find_self();
  
! #ifdef BSD386
      /* Due to an OS bug, SIGBUS is generated by an INTO instruction */
      if (sig == SIGBUS) {
         sig = SIGFPE; 
***************
*** 595,601 ****
      set_fsr();  /* enable floating-point exceptions */
  #endif
  
! #if defined(BSD386)
      /* Due to OS bug, SIGBUS is generated by an INTO instruction. */
      SETSIG(SIGBUS, trap_handler, SIGMASKALL);
  #endif   
--- 595,601 ----
      set_fsr();  /* enable floating-point exceptions */
  #endif
  
! #ifdef BSD386
      /* Due to OS bug, SIGBUS is generated by an INTO instruction. */
      SETSIG(SIGBUS, trap_handler, SIGMASKALL);
  #endif   
*** ./runtime/Makefile	Sat Feb  5 13:08:23 1994
--- ./runtime/Makefile.0	Tue Sep 28 16:57:25 1993
***************
*** 69,75 ****
  
  perv.o: ../../mo.c/perv.c
  	$(CC) $(CFLAGS) -c ../../mo.c/perv.c
! 
  clean:
  	rm -f *.o lint.out prim.s linkdata allmo.s run crc
  
--- 69,75 ----
  
  perv.o: ../../mo.c/perv.c
  	$(CC) $(CFLAGS) -c ../../mo.c/perv.c
!        
  clean:
  	rm -f *.o lint.out prim.s linkdata allmo.s run crc
  



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199508042121.OAA06728>