packages feed

unix 2.3.1.0 → 2.3.2.0

raw patch · 16 files changed

+4729/−683 lines, 16 files

Files

System/Posix/Process.hsc view
@@ -72,12 +72,10 @@ import Foreign.StablePtr ( StablePtr, newStablePtr, freeStablePtr ) import Foreign.Storable ( Storable(..) ) import System.IO-import System.IO.Error import System.Exit import System.Posix.Error-import System.Posix.Process.Internals ( pPrPr_disableITimers, c_execvpe )+import System.Posix.Process.Internals import System.Posix.Types-import System.Posix.Signals import Control.Monad  #ifdef __GLASGOW_HASKELL__@@ -314,11 +312,6 @@ -- ----------------------------------------------------------------------------- -- Waiting for process termination -data ProcessStatus = Exited ExitCode-                   | Terminated Signal-                   | Stopped Signal-		   deriving (Eq, Ord, Show)- -- | @'getProcessStatus' blk stopped pid@ calls @waitpid@, returning --   @'Just' tc@, the 'ProcessStatus' for process @pid@ if it is --   available, 'Nothing' otherwise.  If @blk@ is 'False', then@@ -332,7 +325,7 @@ 		(c_waitpid pid wstatp (waitOptions block stopped))     case pid' of       0  -> return Nothing-      _  -> do ps <- decipherWaitStatus wstatp+      _  -> do ps <- readWaitStatus wstatp 	       return (Just ps)  -- safe, because this call might block@@ -356,7 +349,7 @@ 		(c_waitpid (-pgid) wstatp (waitOptions block stopped))     case pid of       0  -> return Nothing-      _  -> do ps <- decipherWaitStatus wstatp+      _  -> do ps <- readWaitStatus wstatp 	       return (Just (pid, ps)) -- | @'getAnyProcessStatus' blk stopped@ calls @waitpid@, returning --   @'Just' (pid, tc)@, the 'ProcessID' and 'ProcessStatus' for any@@ -376,46 +369,10 @@  -- Turn a (ptr to a) wait status into a ProcessStatus -decipherWaitStatus :: Ptr CInt -> IO ProcessStatus-decipherWaitStatus wstatp = do+readWaitStatus :: Ptr CInt -> IO ProcessStatus+readWaitStatus wstatp = do   wstat <- peek wstatp-  if c_WIFEXITED wstat /= 0-      then do-        let exitstatus = c_WEXITSTATUS wstat-        if exitstatus == 0-	   then return (Exited ExitSuccess)-	   else return (Exited (ExitFailure (fromIntegral exitstatus)))-      else do-        if c_WIFSIGNALED wstat /= 0-	   then do-		let termsig = c_WTERMSIG wstat-		return (Terminated (fromIntegral termsig))-	   else do-		if c_WIFSTOPPED wstat /= 0-		   then do-			let stopsig = c_WSTOPSIG wstat-			return (Stopped (fromIntegral stopsig))-		   else do-			ioError (mkIOError illegalOperationErrorType-				   "waitStatus" Nothing Nothing)--foreign import ccall unsafe "__hsunix_wifexited"-  c_WIFEXITED :: CInt -> CInt --foreign import ccall unsafe "__hsunix_wexitstatus"-  c_WEXITSTATUS :: CInt -> CInt--foreign import ccall unsafe "__hsunix_wifsignaled"-  c_WIFSIGNALED :: CInt -> CInt--foreign import ccall unsafe "__hsunix_wtermsig"-  c_WTERMSIG :: CInt -> CInt --foreign import ccall unsafe "__hsunix_wifstopped"-  c_WIFSTOPPED :: CInt -> CInt--foreign import ccall unsafe "__hsunix_wstopsig"-  c_WSTOPSIG :: CInt -> CInt+  decipherWaitStatus wstat  -- ----------------------------------------------------------------------------- -- Exiting
System/Posix/Process/Internals.hs view
@@ -1,9 +1,21 @@ -module System.Posix.Process.Internals (pPrPr_disableITimers, c_execvpe) where+module System.Posix.Process.Internals (+       pPrPr_disableITimers, c_execvpe,+       decipherWaitStatus, ProcessStatus(..) ) where  import Foreign import Foreign.C+import System.Exit+import System.IO.Error+import GHC.Conc (Signal) +-- we had to move this into GHC.Conc in GHC to avoid recursive dependencies.+-- it can be moved back when the signal handling stuff in base is moved out.+data ProcessStatus = Exited ExitCode+                   | Terminated Signal+                   | Stopped Signal+		   deriving (Eq, Ord, Show)+ -- this function disables the itimer, which would otherwise cause confusing -- signals to be sent to the new process. foreign import ccall unsafe "pPrPr_disableITimers"@@ -11,3 +23,44 @@  foreign import ccall unsafe "execvpe"   c_execvpe :: CString -> Ptr CString -> Ptr CString -> IO CInt++decipherWaitStatus :: CInt -> IO ProcessStatus+decipherWaitStatus wstat =+  if c_WIFEXITED wstat /= 0+      then do+        let exitstatus = c_WEXITSTATUS wstat+        if exitstatus == 0+	   then return (Exited ExitSuccess)+	   else return (Exited (ExitFailure (fromIntegral exitstatus)))+      else do+        if c_WIFSIGNALED wstat /= 0+	   then do+		let termsig = c_WTERMSIG wstat+		return (Terminated (fromIntegral termsig))+	   else do+		if c_WIFSTOPPED wstat /= 0+		   then do+			let stopsig = c_WSTOPSIG wstat+			return (Stopped (fromIntegral stopsig))+		   else do+			ioError (mkIOError illegalOperationErrorType+				   "waitStatus" Nothing Nothing)++foreign import ccall unsafe "__hsunix_wifexited"+  c_WIFEXITED :: CInt -> CInt ++foreign import ccall unsafe "__hsunix_wexitstatus"+  c_WEXITSTATUS :: CInt -> CInt++foreign import ccall unsafe "__hsunix_wifsignaled"+  c_WIFSIGNALED :: CInt -> CInt++foreign import ccall unsafe "__hsunix_wtermsig"+  c_WTERMSIG :: CInt -> CInt ++foreign import ccall unsafe "__hsunix_wifstopped"+  c_WIFSTOPPED :: CInt -> CInt++foreign import ccall unsafe "__hsunix_wstopsig"+  c_WSTOPSIG :: CInt -> CInt+
System/Posix/SharedMem.hsc view
@@ -23,6 +23,8 @@ #include <sys/mman.h> #include <sys/fcntl.h> +#include "HsUnix.h"+ import System.Posix.Types import System.Posix.Error import Foreign.C@@ -43,19 +45,19 @@ shmOpen :: String -> ShmOpenFlags -> FileMode -> IO Fd #ifdef HAVE_SHM_OPEN shmOpen name flags mode =-    do cflags <- return 0-       cflags <- return $ cflags .|. (if shmReadWrite flags-                                      then #{const O_RDWR}-                                      else #{const O_RDONLY})-       cflags <- return $ cflags .|. (if shmCreate flags then #{const O_CREAT} -                                      else 0)-       cflags <- return $ cflags .|. (if shmExclusive flags -                                      then #{const O_EXCL} -                                      else 0)-       cflags <- return $ cflags .|. (if shmTrunc flags then #{const O_TRUNC} -                                      else 0)-       withCAString name (shmOpen' cflags mode)-    where shmOpen' cflags mode cname =+    do cflags0 <- return 0+       cflags1 <- return $ cflags0 .|. (if shmReadWrite flags+                                        then #{const O_RDWR}+                                        else #{const O_RDONLY})+       cflags2 <- return $ cflags1 .|. (if shmCreate flags then #{const O_CREAT} +                                        else 0)+       cflags3 <- return $ cflags2 .|. (if shmExclusive flags +                                        then #{const O_EXCL} +                                        else 0)+       cflags4 <- return $ cflags3 .|. (if shmTrunc flags then #{const O_TRUNC} +                                        else 0)+       withCAString name (shmOpen' cflags4)+    where shmOpen' cflags cname =               do fd <- throwErrnoIfMinus1 "shmOpen" $                         shm_open cname cflags mode                  return $ Fd fd
− System/Posix/Signals.hs
@@ -1,533 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  System.Posix.Signals--- Copyright   :  (c) The University of Glasgow 2002--- License     :  BSD-style (see the file libraries/base/LICENSE)--- --- Maintainer  :  libraries@haskell.org--- Stability   :  provisional--- Portability :  non-portable (requires POSIX)------ POSIX signal support-----------------------------------------------------------------------------------#include "HsUnixConfig.h"--module System.Posix.Signals (-  -- * The Signal type-  Signal,--  -- * Specific signals-  nullSignal,-  internalAbort, sigABRT,-  realTimeAlarm, sigALRM,-  busError, sigBUS,-  processStatusChanged, sigCHLD,-  continueProcess, sigCONT,-  floatingPointException, sigFPE,-  lostConnection, sigHUP,-  illegalInstruction, sigILL,-  keyboardSignal, sigINT,-  killProcess, sigKILL,-  openEndedPipe, sigPIPE,-  keyboardTermination, sigQUIT,-  segmentationViolation, sigSEGV,-  softwareStop, sigSTOP,-  softwareTermination, sigTERM,-  keyboardStop, sigTSTP,-  backgroundRead, sigTTIN,-  backgroundWrite, sigTTOU,-  userDefinedSignal1, sigUSR1,-  userDefinedSignal2, sigUSR2,-#if CONST_SIGPOLL != -1-  pollableEvent, sigPOLL,-#endif-  profilingTimerExpired, sigPROF,-  badSystemCall, sigSYS,-  breakpointTrap, sigTRAP,-  urgentDataAvailable, sigURG,-  virtualTimerExpired, sigVTALRM,-  cpuTimeLimitExceeded, sigXCPU,-  fileSizeLimitExceeded, sigXFSZ,--  -- * Sending signals-  raiseSignal,-  signalProcess,-  signalProcessGroup,--#ifdef __GLASGOW_HASKELL__-  -- * Handling signals-  Handler(..),-  installHandler,-#endif--  -- * Signal sets-  SignalSet,-  emptySignalSet, fullSignalSet, -  addSignal, deleteSignal, inSignalSet,--  -- * The process signal mask-  getSignalMask, setSignalMask, blockSignals, unblockSignals,--  -- * The alarm timer-  scheduleAlarm,--  -- * Waiting for signals-  getPendingSignals,-#ifndef cygwin32_HOST_OS-  awaitSignal,-#endif--#ifdef __GLASGOW_HASKELL__-  -- * The @NOCLDSTOP@ flag-  setStoppedChildFlag, queryStoppedChildFlag,-#endif--  -- MISSING FUNCTIONALITY:-  -- sigaction(), (inc. the sigaction structure + flags etc.)-  -- the siginfo structure-  -- sigaltstack()-  -- sighold, sigignore, sigpause, sigrelse, sigset-  -- siginterrupt-  ) where--import Foreign-import Foreign.C-import System.IO.Unsafe-import System.Posix.Types-import System.Posix.Internals-import Control.Concurrent (withMVar)--#ifdef __GLASGOW_HASKELL__-#include "Signals.h"-import GHC.Conc	( ensureIOManagerIsRunning, signalHandlerLock )-#endif---- -------------------------------------------------------------------------------- Specific signals--type Signal = CInt--nullSignal :: Signal-nullSignal = 0--sigABRT   :: CInt-sigABRT   = CONST_SIGABRT-sigALRM   :: CInt-sigALRM   = CONST_SIGALRM-sigBUS    :: CInt-sigBUS    = CONST_SIGBUS-sigCHLD   :: CInt-sigCHLD   = CONST_SIGCHLD-sigCONT   :: CInt-sigCONT   = CONST_SIGCONT-sigFPE    :: CInt-sigFPE    = CONST_SIGFPE-sigHUP    :: CInt-sigHUP    = CONST_SIGHUP-sigILL    :: CInt-sigILL    = CONST_SIGILL-sigINT    :: CInt-sigINT    = CONST_SIGINT-sigKILL   :: CInt-sigKILL   = CONST_SIGKILL-sigPIPE   :: CInt-sigPIPE   = CONST_SIGPIPE-sigQUIT   :: CInt-sigQUIT   = CONST_SIGQUIT-sigSEGV   :: CInt-sigSEGV   = CONST_SIGSEGV-sigSTOP   :: CInt-sigSTOP   = CONST_SIGSTOP-sigTERM   :: CInt-sigTERM   = CONST_SIGTERM-sigTSTP   :: CInt-sigTSTP   = CONST_SIGTSTP-sigTTIN   :: CInt-sigTTIN   = CONST_SIGTTIN-sigTTOU   :: CInt-sigTTOU   = CONST_SIGTTOU-sigUSR1   :: CInt-sigUSR1   = CONST_SIGUSR1-sigUSR2   :: CInt-sigUSR2   = CONST_SIGUSR2-#if CONST_SIGPOLL != -1-sigPOLL   :: CInt-sigPOLL   = CONST_SIGPOLL-#endif-sigPROF   :: CInt-sigPROF   = CONST_SIGPROF-sigSYS    :: CInt-sigSYS    = CONST_SIGSYS-sigTRAP   :: CInt-sigTRAP   = CONST_SIGTRAP-sigURG    :: CInt-sigURG    = CONST_SIGURG-sigVTALRM :: CInt-sigVTALRM = CONST_SIGVTALRM-sigXCPU   :: CInt-sigXCPU   = CONST_SIGXCPU-sigXFSZ   :: CInt-sigXFSZ   = CONST_SIGXFSZ--internalAbort ::Signal-internalAbort = sigABRT--realTimeAlarm :: Signal-realTimeAlarm = sigALRM--busError :: Signal-busError = sigBUS--processStatusChanged :: Signal-processStatusChanged = sigCHLD--continueProcess :: Signal-continueProcess = sigCONT--floatingPointException :: Signal-floatingPointException = sigFPE--lostConnection :: Signal-lostConnection = sigHUP--illegalInstruction :: Signal-illegalInstruction = sigILL--keyboardSignal :: Signal-keyboardSignal = sigINT--killProcess :: Signal-killProcess = sigKILL--openEndedPipe :: Signal-openEndedPipe = sigPIPE--keyboardTermination :: Signal-keyboardTermination = sigQUIT--segmentationViolation :: Signal-segmentationViolation = sigSEGV--softwareStop :: Signal-softwareStop = sigSTOP--softwareTermination :: Signal-softwareTermination = sigTERM--keyboardStop :: Signal-keyboardStop = sigTSTP--backgroundRead :: Signal-backgroundRead = sigTTIN--backgroundWrite :: Signal-backgroundWrite = sigTTOU--userDefinedSignal1 :: Signal-userDefinedSignal1 = sigUSR1--userDefinedSignal2 :: Signal-userDefinedSignal2 = sigUSR2--#if CONST_SIGPOLL != -1-pollableEvent :: Signal-pollableEvent = sigPOLL-#endif--profilingTimerExpired :: Signal-profilingTimerExpired = sigPROF--badSystemCall :: Signal-badSystemCall = sigSYS--breakpointTrap :: Signal-breakpointTrap = sigTRAP--urgentDataAvailable :: Signal-urgentDataAvailable = sigURG--virtualTimerExpired :: Signal-virtualTimerExpired = sigVTALRM--cpuTimeLimitExceeded :: Signal-cpuTimeLimitExceeded = sigXCPU--fileSizeLimitExceeded :: Signal-fileSizeLimitExceeded = sigXFSZ---- -------------------------------------------------------------------------------- Signal-related functions---- | @signalProcess int pid@ calls @kill@ to signal process @pid@ ---   with interrupt signal @int@.-signalProcess :: Signal -> ProcessID -> IO ()-signalProcess sig pid - = throwErrnoIfMinus1_ "signalProcess" (c_kill (fromIntegral pid) sig)--foreign import ccall unsafe "kill"-  c_kill :: CPid -> CInt -> IO CInt----- | @signalProcessGroup int pgid@ calls @kill@ to signal ---  all processes in group @pgid@ with interrupt signal @int@.-signalProcessGroup :: Signal -> ProcessGroupID -> IO ()-signalProcessGroup sig pgid -  = throwErrnoIfMinus1_ "signalProcessGroup" (c_killpg (fromIntegral pgid) sig)--foreign import ccall unsafe "killpg"-  c_killpg :: CPid -> CInt -> IO CInt---- | @raiseSignal int@ calls @kill@ to signal the current process---   with interrupt signal @int@. -raiseSignal :: Signal -> IO ()-raiseSignal sig = throwErrnoIfMinus1_ "raiseSignal" (c_raise sig)--#if defined(__GLASGOW_HASKELL__) && (defined(openbsd_HOST_OS) || defined(freebsd_HOST_OS))-foreign import ccall unsafe "genericRaise"-  c_raise :: CInt -> IO CInt-#else-foreign import ccall unsafe "raise"-  c_raise :: CInt -> IO CInt-#endif--#ifdef __GLASGOW_HASKELL__-data Handler = Default-             | Ignore-	     -- not yet: | Hold -             | Catch (IO ())-             | CatchOnce (IO ())---- | @installHandler int handler iset@ calls @sigaction@ to install an---   interrupt handler for signal @int@.  If @handler@ is @Default@,---   @SIG_DFL@ is installed; if @handler@ is @Ignore@, @SIG_IGN@ is---   installed; if @handler@ is @Catch action@, a handler is installed---   which will invoke @action@ in a new thread when (or shortly after) the---   signal is received.---   If @iset@ is @Just s@, then the @sa_mask@ of the @sigaction@ structure---   is set to @s@; otherwise it is cleared.  The previously installed---   signal handler for @int@ is returned-installHandler :: Signal-               -> Handler-               -> Maybe SignalSet	-- ^ other signals to block-               -> IO Handler		-- ^ old handler--#ifdef __PARALLEL_HASKELL__-installHandler = -  error "installHandler: not available for Parallel Haskell"-#else--installHandler int handler maybe_mask = do-    ensureIOManagerIsRunning  -- for the threaded RTS-    case maybe_mask of-	Nothing -> install' nullPtr-        Just (SignalSet x) -> withForeignPtr x $ install' -  where -    install' mask = -         -- prevent race with the IO manager thread, see #1922-      withMVar signalHandlerLock $ \_ ->-      alloca $ \p_sp -> do--      rc <- case handler of-      	      Default      -> stg_sig_install int STG_SIG_DFL p_sp mask-      	      Ignore       -> stg_sig_install int STG_SIG_IGN p_sp mask-      	      Catch m      -> hinstall m p_sp mask STG_SIG_HAN-      	      CatchOnce m  -> hinstall m p_sp mask STG_SIG_RST--      case rc of-	STG_SIG_DFL -> return Default-	STG_SIG_IGN -> return Ignore-	STG_SIG_ERR -> throwErrno "installHandler"-	STG_SIG_HAN -> do-        	m <- peekHandler p_sp-		return (Catch m)-	STG_SIG_RST -> do-        	m <- peekHandler p_sp-		return (CatchOnce m)-	_other ->-	   error "internal error: System.Posix.Signals.installHandler"--    hinstall m p_sp mask reset = do-      sptr <- newStablePtr m-      poke p_sp sptr-      stg_sig_install int reset p_sp mask--    peekHandler p_sp = do-      osptr <- peek p_sp-      deRefStablePtr osptr--foreign import ccall unsafe-  stg_sig_install-	:: CInt				-- sig no.-	-> CInt				-- action code (STG_SIG_HAN etc.)-	-> Ptr (StablePtr (IO ()))	-- (in, out) Haskell handler-	-> Ptr CSigset			-- (in, out) blocked-	-> IO CInt			-- (ret) action code--#endif /* !__PARALLEL_HASKELL__ */-#endif /* __GLASGOW_HASKELL__ */---- -------------------------------------------------------------------------------- Alarms---- | @scheduleAlarm i@ calls @alarm@ to schedule a real time---   alarm at least @i@ seconds in the future.-scheduleAlarm :: Int -> IO Int-scheduleAlarm secs = do-   r <- c_alarm (fromIntegral secs)-   return (fromIntegral r)--foreign import ccall unsafe "alarm"-  c_alarm :: CUInt -> IO CUInt--#ifdef __GLASGOW_HASKELL__--- -------------------------------------------------------------------------------- The NOCLDSTOP flag--foreign import ccall "&nocldstop" nocldstop :: Ptr Int---- | Tells the system whether or not to set the @SA_NOCLDSTOP@ flag when--- installing new signal handlers.-setStoppedChildFlag :: Bool -> IO Bool-setStoppedChildFlag b = do-    rc <- peek nocldstop-    poke nocldstop $ fromEnum (not b) -    return (rc == (0::Int))---- | Queries the current state of the stopped child flag.-queryStoppedChildFlag :: IO Bool-queryStoppedChildFlag = do-    rc <- peek nocldstop-    return (rc == (0::Int))-#endif /* __GLASGOW_HASKELL__ */---- -------------------------------------------------------------------------------- Manipulating signal sets--newtype SignalSet = SignalSet (ForeignPtr CSigset)--emptySignalSet :: SignalSet-emptySignalSet = unsafePerformIO $ do-  fp <- mallocForeignPtrBytes sizeof_sigset_t-  throwErrnoIfMinus1_ "emptySignalSet" (withForeignPtr fp $ c_sigemptyset)-  return (SignalSet fp)--fullSignalSet :: SignalSet-fullSignalSet = unsafePerformIO $ do-  fp <- mallocForeignPtrBytes sizeof_sigset_t-  throwErrnoIfMinus1_ "fullSignalSet" (withForeignPtr fp $ c_sigfillset)-  return (SignalSet fp)--infixr `addSignal`, `deleteSignal`-addSignal :: Signal -> SignalSet -> SignalSet-addSignal sig (SignalSet fp1) = unsafePerformIO $ do-  fp2 <- mallocForeignPtrBytes sizeof_sigset_t-  withForeignPtr fp1 $ \p1 ->-    withForeignPtr fp2 $ \p2 -> do-      copyBytes p2 p1 sizeof_sigset_t-      throwErrnoIfMinus1_ "addSignal" (c_sigaddset p2 sig)-  return (SignalSet fp2)--deleteSignal :: Signal -> SignalSet -> SignalSet-deleteSignal sig (SignalSet fp1) = unsafePerformIO $ do-  fp2 <- mallocForeignPtrBytes sizeof_sigset_t-  withForeignPtr fp1 $ \p1 ->-    withForeignPtr fp2 $ \p2 -> do-      copyBytes p2 p1 sizeof_sigset_t-      throwErrnoIfMinus1_ "deleteSignal" (c_sigdelset p2 sig)-  return (SignalSet fp2)--inSignalSet :: Signal -> SignalSet -> Bool-inSignalSet sig (SignalSet fp) = unsafePerformIO $-  withForeignPtr fp $ \p -> do-    r <- throwErrnoIfMinus1 "inSignalSet" (c_sigismember p sig)-    return (r /= 0)---- | @getSignalMask@ calls @sigprocmask@ to determine the---   set of interrupts which are currently being blocked.-getSignalMask :: IO SignalSet-getSignalMask = do-  fp <- mallocForeignPtrBytes sizeof_sigset_t-  withForeignPtr fp $ \p ->-    throwErrnoIfMinus1_ "getSignalMask" (c_sigprocmask 0 nullPtr p)-  return (SignalSet fp)-   -sigProcMask :: String -> CInt -> SignalSet -> IO ()-sigProcMask fn how (SignalSet set) =-  withForeignPtr set $ \p_set ->-    throwErrnoIfMinus1_ fn (c_sigprocmask how p_set nullPtr)---- | @setSignalMask mask@ calls @sigprocmask@ with---   @SIG_SETMASK@ to block all interrupts in @mask@.-setSignalMask :: SignalSet -> IO ()-setSignalMask set = sigProcMask "setSignalMask" (CONST_SIG_SETMASK :: CInt) set---- | @blockSignals mask@ calls @sigprocmask@ with---   @SIG_BLOCK@ to add all interrupts in @mask@ to the---  set of blocked interrupts.-blockSignals :: SignalSet -> IO ()-blockSignals set = sigProcMask "blockSignals" (CONST_SIG_BLOCK :: CInt) set---- | @unblockSignals mask@ calls @sigprocmask@ with---   @SIG_UNBLOCK@ to remove all interrupts in @mask@ from the---   set of blocked interrupts. -unblockSignals :: SignalSet -> IO ()-unblockSignals set = sigProcMask "unblockSignals" (CONST_SIG_UNBLOCK :: CInt) set---- | @getPendingSignals@ calls @sigpending@ to obtain---   the set of interrupts which have been received but are currently blocked.-getPendingSignals :: IO SignalSet-getPendingSignals = do-  fp <- mallocForeignPtrBytes sizeof_sigset_t-  withForeignPtr fp $ \p -> -   throwErrnoIfMinus1_ "getPendingSignals" (c_sigpending p)-  return (SignalSet fp)--#ifndef cygwin32_HOST_OS---- | @awaitSignal iset@ suspends execution until an interrupt is received.--- If @iset@ is @Just s@, @awaitSignal@ calls @sigsuspend@, installing--- @s@ as the new signal mask before suspending execution; otherwise, it--- calls @pause@.  @awaitSignal@ returns on receipt of a signal.  If you--- have installed any signal handlers with @installHandler@, it may be--- wise to call @yield@ directly after @awaitSignal@ to ensure that the--- signal handler runs as promptly as possible.-awaitSignal :: Maybe SignalSet -> IO ()-awaitSignal maybe_sigset = do-  fp <- case maybe_sigset of-    	  Nothing -> do SignalSet fp <- getSignalMask; return fp-    	  Just (SignalSet fp) -> return fp-  withForeignPtr fp $ \p -> do-  c_sigsuspend p-  return ()-  -- ignore the return value; according to the docs it can only ever be-  -- (-1) with errno set to EINTR.- -foreign import ccall unsafe "sigsuspend"-  c_sigsuspend :: Ptr CSigset -> IO CInt-#endif--#ifdef __HUGS__-foreign import ccall unsafe "sigdelset"-  c_sigdelset   :: Ptr CSigset -> CInt -> IO CInt--foreign import ccall unsafe "sigfillset"-  c_sigfillset  :: Ptr CSigset -> IO CInt--foreign import ccall unsafe "sigismember"-  c_sigismember :: Ptr CSigset -> CInt -> IO CInt-#else-foreign import ccall unsafe "__hscore_sigdelset"-  c_sigdelset   :: Ptr CSigset -> CInt -> IO CInt--foreign import ccall unsafe "__hscore_sigfillset"-  c_sigfillset  :: Ptr CSigset -> IO CInt--foreign import ccall unsafe "__hscore_sigismember"-  c_sigismember :: Ptr CSigset -> CInt -> IO CInt-#endif /* __HUGS__ */--foreign import ccall unsafe "sigpending"-  c_sigpending :: Ptr CSigset -> IO CInt-
+ System/Posix/Signals.hsc view
@@ -0,0 +1,605 @@+{-# LANGUAGE DeriveDataTypeable,PatternGuards #-}+{-# OPTIONS_GHC -fno-cse #-} -- global variables+-----------------------------------------------------------------------------+-- |+-- Module      :  System.Posix.Signals+-- Copyright   :  (c) The University of Glasgow 2002+-- License     :  BSD-style (see the file libraries/base/LICENSE)+-- +-- Maintainer  :  libraries@haskell.org+-- Stability   :  provisional+-- Portability :  non-portable (requires POSIX)+--+-- POSIX signal support+--+-----------------------------------------------------------------------------++#include "HsUnixConfig.h"+##include "HsUnixConfig.h"++#ifdef HAVE_SIGNAL_H+#include <signal.h>+#endif++module System.Posix.Signals (+  -- * The Signal type+  Signal,++  -- * Specific signals+  nullSignal,+  internalAbort, sigABRT,+  realTimeAlarm, sigALRM,+  busError, sigBUS,+  processStatusChanged, sigCHLD,+  continueProcess, sigCONT,+  floatingPointException, sigFPE,+  lostConnection, sigHUP,+  illegalInstruction, sigILL,+  keyboardSignal, sigINT,+  killProcess, sigKILL,+  openEndedPipe, sigPIPE,+  keyboardTermination, sigQUIT,+  segmentationViolation, sigSEGV,+  softwareStop, sigSTOP,+  softwareTermination, sigTERM,+  keyboardStop, sigTSTP,+  backgroundRead, sigTTIN,+  backgroundWrite, sigTTOU,+  userDefinedSignal1, sigUSR1,+  userDefinedSignal2, sigUSR2,+#if CONST_SIGPOLL != -1+  pollableEvent, sigPOLL,+#endif+  profilingTimerExpired, sigPROF,+  badSystemCall, sigSYS,+  breakpointTrap, sigTRAP,+  urgentDataAvailable, sigURG,+  virtualTimerExpired, sigVTALRM,+  cpuTimeLimitExceeded, sigXCPU,+  fileSizeLimitExceeded, sigXFSZ,++  -- * Sending signals+  raiseSignal,+  signalProcess,+  signalProcessGroup,++#ifdef __GLASGOW_HASKELL__+  -- * Handling signals+  Handler(Default,Ignore,Catch,CatchOnce),+  installHandler,+#endif++  -- * Signal sets+  SignalSet,+  emptySignalSet, fullSignalSet, +  addSignal, deleteSignal, inSignalSet,++  -- * The process signal mask+  getSignalMask, setSignalMask, blockSignals, unblockSignals,++  -- * The alarm timer+  scheduleAlarm,++  -- * Waiting for signals+  getPendingSignals,+#ifndef cygwin32_HOST_OS+  awaitSignal,+#endif++#ifdef __GLASGOW_HASKELL__+  -- * The @NOCLDSTOP@ flag+  setStoppedChildFlag, queryStoppedChildFlag,+#endif++  -- MISSING FUNCTIONALITY:+  -- sigaction(), (inc. the sigaction structure + flags etc.)+  -- the siginfo structure+  -- sigaltstack()+  -- sighold, sigignore, sigpause, sigrelse, sigset+  -- siginterrupt+  ) where++import Foreign+import Foreign.C+import System.Posix.Types+import System.Posix.Internals+import System.Posix.Process.Internals+import System.Posix.Process+import Control.Monad+import Data.Dynamic++#ifdef __GLASGOW_HASKELL__+##include "Signals.h"+import GHC.IOBase+import GHC.Conc hiding (Signal)+#endif++-- -----------------------------------------------------------------------------+-- Specific signals++nullSignal :: Signal+nullSignal = 0++sigABRT   :: CInt+sigABRT   = CONST_SIGABRT+sigALRM   :: CInt+sigALRM   = CONST_SIGALRM+sigBUS    :: CInt+sigBUS    = CONST_SIGBUS+sigCHLD   :: CInt+sigCHLD   = CONST_SIGCHLD+sigCONT   :: CInt+sigCONT   = CONST_SIGCONT+sigFPE    :: CInt+sigFPE    = CONST_SIGFPE+sigHUP    :: CInt+sigHUP    = CONST_SIGHUP+sigILL    :: CInt+sigILL    = CONST_SIGILL+sigINT    :: CInt+sigINT    = CONST_SIGINT+sigKILL   :: CInt+sigKILL   = CONST_SIGKILL+sigPIPE   :: CInt+sigPIPE   = CONST_SIGPIPE+sigQUIT   :: CInt+sigQUIT   = CONST_SIGQUIT+sigSEGV   :: CInt+sigSEGV   = CONST_SIGSEGV+sigSTOP   :: CInt+sigSTOP   = CONST_SIGSTOP+sigTERM   :: CInt+sigTERM   = CONST_SIGTERM+sigTSTP   :: CInt+sigTSTP   = CONST_SIGTSTP+sigTTIN   :: CInt+sigTTIN   = CONST_SIGTTIN+sigTTOU   :: CInt+sigTTOU   = CONST_SIGTTOU+sigUSR1   :: CInt+sigUSR1   = CONST_SIGUSR1+sigUSR2   :: CInt+sigUSR2   = CONST_SIGUSR2+#if CONST_SIGPOLL != -1+sigPOLL   :: CInt+sigPOLL   = CONST_SIGPOLL+#endif+sigPROF   :: CInt+sigPROF   = CONST_SIGPROF+sigSYS    :: CInt+sigSYS    = CONST_SIGSYS+sigTRAP   :: CInt+sigTRAP   = CONST_SIGTRAP+sigURG    :: CInt+sigURG    = CONST_SIGURG+sigVTALRM :: CInt+sigVTALRM = CONST_SIGVTALRM+sigXCPU   :: CInt+sigXCPU   = CONST_SIGXCPU+sigXFSZ   :: CInt+sigXFSZ   = CONST_SIGXFSZ++internalAbort ::Signal+internalAbort = sigABRT++realTimeAlarm :: Signal+realTimeAlarm = sigALRM++busError :: Signal+busError = sigBUS++processStatusChanged :: Signal+processStatusChanged = sigCHLD++continueProcess :: Signal+continueProcess = sigCONT++floatingPointException :: Signal+floatingPointException = sigFPE++lostConnection :: Signal+lostConnection = sigHUP++illegalInstruction :: Signal+illegalInstruction = sigILL++keyboardSignal :: Signal+keyboardSignal = sigINT++killProcess :: Signal+killProcess = sigKILL++openEndedPipe :: Signal+openEndedPipe = sigPIPE++keyboardTermination :: Signal+keyboardTermination = sigQUIT++segmentationViolation :: Signal+segmentationViolation = sigSEGV++softwareStop :: Signal+softwareStop = sigSTOP++softwareTermination :: Signal+softwareTermination = sigTERM++keyboardStop :: Signal+keyboardStop = sigTSTP++backgroundRead :: Signal+backgroundRead = sigTTIN++backgroundWrite :: Signal+backgroundWrite = sigTTOU++userDefinedSignal1 :: Signal+userDefinedSignal1 = sigUSR1++userDefinedSignal2 :: Signal+userDefinedSignal2 = sigUSR2++#if CONST_SIGPOLL != -1+pollableEvent :: Signal+pollableEvent = sigPOLL+#endif++profilingTimerExpired :: Signal+profilingTimerExpired = sigPROF++badSystemCall :: Signal+badSystemCall = sigSYS++breakpointTrap :: Signal+breakpointTrap = sigTRAP++urgentDataAvailable :: Signal+urgentDataAvailable = sigURG++virtualTimerExpired :: Signal+virtualTimerExpired = sigVTALRM++cpuTimeLimitExceeded :: Signal+cpuTimeLimitExceeded = sigXCPU++fileSizeLimitExceeded :: Signal+fileSizeLimitExceeded = sigXFSZ++-- -----------------------------------------------------------------------------+-- Signal-related functions++-- | @signalProcess int pid@ calls @kill@ to signal process @pid@ +--   with interrupt signal @int@.+signalProcess :: Signal -> ProcessID -> IO ()+signalProcess sig pid + = throwErrnoIfMinus1_ "signalProcess" (c_kill (fromIntegral pid) sig)++foreign import ccall unsafe "kill"+  c_kill :: CPid -> CInt -> IO CInt+++-- | @signalProcessGroup int pgid@ calls @kill@ to signal +--  all processes in group @pgid@ with interrupt signal @int@.+signalProcessGroup :: Signal -> ProcessGroupID -> IO ()+signalProcessGroup sig pgid +  = throwErrnoIfMinus1_ "signalProcessGroup" (c_killpg (fromIntegral pgid) sig)++foreign import ccall unsafe "killpg"+  c_killpg :: CPid -> CInt -> IO CInt++-- | @raiseSignal int@ calls @kill@ to signal the current process+--   with interrupt signal @int@. +raiseSignal :: Signal -> IO ()+raiseSignal sig = throwErrnoIfMinus1_ "raiseSignal" (c_raise sig)++#if defined(__GLASGOW_HASKELL__) && (defined(openbsd_HOST_OS) || defined(freebsd_HOST_OS))+foreign import ccall unsafe "genericRaise"+  c_raise :: CInt -> IO CInt+#else+foreign import ccall unsafe "raise"+  c_raise :: CInt -> IO CInt+#endif++#ifdef __GLASGOW_HASKELL__+type Signal = CInt+++-- | The actions to perform when a signal is received.+data Handler = Default+             | Ignore+	     -- not yet: | Hold +             | Catch (IO ())+             | CatchOnce (IO ())+             | CatchInfo (SignalInfo -> IO ())+             | CatchInfoOnce (SignalInfo -> IO ())+  deriving (Typeable)++-- | Information about a received signal (derived from @siginfo_t@).+data SignalInfo = SignalInfo {+      siginfoSignal   :: Signal,+      siginfoError    :: Errno,+      siginfoSpecific :: SignalSpecificInfo+  }++-- | Information specific to a particular type of signal+-- (derived from @siginfo_t@).+data SignalSpecificInfo+  = NoSignalSpecificInfo+  | SigChldInfo {+      siginfoPid    :: ProcessID,+      siginfoUid    :: UserID,+      siginfoStatus :: ProcessStatus+    }++-- | @installHandler int handler iset@ calls @sigaction@ to install an+--   interrupt handler for signal @int@.  If @handler@ is @Default@,+--   @SIG_DFL@ is installed; if @handler@ is @Ignore@, @SIG_IGN@ is+--   installed; if @handler@ is @Catch action@, a handler is installed+--   which will invoke @action@ in a new thread when (or shortly after) the+--   signal is received.+--   If @iset@ is @Just s@, then the @sa_mask@ of the @sigaction@ structure+--   is set to @s@; otherwise it is cleared.  The previously installed+--   signal handler for @int@ is returned+installHandler :: Signal+               -> Handler+               -> Maybe SignalSet	-- ^ other signals to block+               -> IO Handler		-- ^ old handler++#ifdef __PARALLEL_HASKELL__+installHandler = +  error "installHandler: not available for Parallel Haskell"+#else++installHandler sig handler _maybe_mask = do+  ensureIOManagerIsRunning  -- for the threaded RTS++  -- if we're setting the action to DFL or IGN, we should do that *first*+  -- if we're setting a handler,+  --   if the previous action was handle, then setHandler is ok+  --   if the previous action was IGN/DFL, then setHandler followed by sig_install+  (old_action, old_handler) <-+    case handler of+      Ignore  -> do+        old_action  <- stg_sig_install sig STG_SIG_IGN nullPtr+        old_handler <- setHandler sig Nothing+        return (old_action, old_handler)++      Default -> do+        old_action  <- stg_sig_install sig STG_SIG_DFL nullPtr+        old_handler <- setHandler sig Nothing+        return (old_action, old_handler)++      _some_kind_of_catch -> do+        -- I don't think it's possible to get CatchOnce right.  If+        -- there's a signal in flight, then we might run the handler+        -- more than once.+        let dyn = toDyn handler+        old_handler <- case handler of+            Catch         action -> setHandler sig (Just (const action,dyn))+            CatchOnce     action -> setHandler sig (Just (const action,dyn))+            CatchInfo     action -> setHandler sig (Just (getinfo action,dyn))+            CatchInfoOnce action -> setHandler sig (Just (getinfo action,dyn))+            _                    -> error "installHandler"+            +        let action = case handler of+                Catch _         -> STG_SIG_HAN+                CatchOnce _     -> STG_SIG_RST+                CatchInfo _     -> STG_SIG_HAN+                CatchInfoOnce _ -> STG_SIG_RST+                _               -> error "installHandler"++        old_action <- stg_sig_install sig action nullPtr+                   -- mask is pointless, so leave it NULL++        return (old_action, old_handler)++  case (old_handler,old_action) of+    (_,       STG_SIG_DFL) -> return $ Default+    (_,       STG_SIG_IGN) -> return $ Ignore+    (Nothing, _)           -> return $ Ignore+    (Just (_,dyn),  _)+        | Just h <- fromDynamic dyn  -> return h+        | Just io <- fromDynamic dyn -> return (Catch io)+        -- handlers put there by the base package have type IO ()+        | otherwise                  -> return Default++foreign import ccall unsafe+  stg_sig_install+	:: CInt				-- sig no.+	-> CInt				-- action code (STG_SIG_HAN etc.)+	-> Ptr CSigset			-- (in, out) blocked+	-> IO CInt			-- (ret) old action code++getinfo :: (SignalInfo -> IO ()) -> ForeignPtr Word8 -> IO ()+getinfo handler fp_info = do+  si <- unmarshalSigInfo fp_info+  handler si++unmarshalSigInfo :: ForeignPtr Word8 -> IO SignalInfo+unmarshalSigInfo fp = do+  withForeignPtr fp $ \p -> do+    sig   <- (#peek siginfo_t, si_signo) p+    errno <- (#peek siginfo_t, si_errno) p+    extra <- case sig of+                _ | sig == sigCHLD -> do+                    pid <- (#peek siginfo_t, si_pid) p+                    uid <- (#peek siginfo_t, si_uid) p+                    wstat <- (#peek siginfo_t, si_status) p+                    pstat <- decipherWaitStatus wstat+                    return SigChldInfo { siginfoPid = pid,+                                         siginfoUid = uid,+                                         siginfoStatus = pstat }+                _ | otherwise ->+                    return NoSignalSpecificInfo+    return+      SignalInfo {+        siginfoSignal = sig,+        siginfoError  = Errno errno,+        siginfoSpecific = extra }++#endif /* !__PARALLEL_HASKELL__ */+#endif /* __GLASGOW_HASKELL__ */++-- -----------------------------------------------------------------------------+-- Alarms++-- | @scheduleAlarm i@ calls @alarm@ to schedule a real time+--   alarm at least @i@ seconds in the future.+scheduleAlarm :: Int -> IO Int+scheduleAlarm secs = do+   r <- c_alarm (fromIntegral secs)+   return (fromIntegral r)++foreign import ccall unsafe "alarm"+  c_alarm :: CUInt -> IO CUInt++#ifdef __GLASGOW_HASKELL__+-- -----------------------------------------------------------------------------+-- The NOCLDSTOP flag++foreign import ccall "&nocldstop" nocldstop :: Ptr Int++-- | Tells the system whether or not to set the @SA_NOCLDSTOP@ flag when+-- installing new signal handlers.+setStoppedChildFlag :: Bool -> IO Bool+setStoppedChildFlag b = do+    rc <- peek nocldstop+    poke nocldstop $ fromEnum (not b) +    return (rc == (0::Int))++-- | Queries the current state of the stopped child flag.+queryStoppedChildFlag :: IO Bool+queryStoppedChildFlag = do+    rc <- peek nocldstop+    return (rc == (0::Int))+#endif /* __GLASGOW_HASKELL__ */++-- -----------------------------------------------------------------------------+-- Manipulating signal sets++newtype SignalSet = SignalSet (ForeignPtr CSigset)++emptySignalSet :: SignalSet+emptySignalSet = unsafePerformIO $ do+  fp <- mallocForeignPtrBytes sizeof_sigset_t+  throwErrnoIfMinus1_ "emptySignalSet" (withForeignPtr fp $ c_sigemptyset)+  return (SignalSet fp)++fullSignalSet :: SignalSet+fullSignalSet = unsafePerformIO $ do+  fp <- mallocForeignPtrBytes sizeof_sigset_t+  throwErrnoIfMinus1_ "fullSignalSet" (withForeignPtr fp $ c_sigfillset)+  return (SignalSet fp)++infixr `addSignal`, `deleteSignal`+addSignal :: Signal -> SignalSet -> SignalSet+addSignal sig (SignalSet fp1) = unsafePerformIO $ do+  fp2 <- mallocForeignPtrBytes sizeof_sigset_t+  withForeignPtr fp1 $ \p1 ->+    withForeignPtr fp2 $ \p2 -> do+      copyBytes p2 p1 sizeof_sigset_t+      throwErrnoIfMinus1_ "addSignal" (c_sigaddset p2 sig)+  return (SignalSet fp2)++deleteSignal :: Signal -> SignalSet -> SignalSet+deleteSignal sig (SignalSet fp1) = unsafePerformIO $ do+  fp2 <- mallocForeignPtrBytes sizeof_sigset_t+  withForeignPtr fp1 $ \p1 ->+    withForeignPtr fp2 $ \p2 -> do+      copyBytes p2 p1 sizeof_sigset_t+      throwErrnoIfMinus1_ "deleteSignal" (c_sigdelset p2 sig)+  return (SignalSet fp2)++inSignalSet :: Signal -> SignalSet -> Bool+inSignalSet sig (SignalSet fp) = unsafePerformIO $+  withForeignPtr fp $ \p -> do+    r <- throwErrnoIfMinus1 "inSignalSet" (c_sigismember p sig)+    return (r /= 0)++-- | @getSignalMask@ calls @sigprocmask@ to determine the+--   set of interrupts which are currently being blocked.+getSignalMask :: IO SignalSet+getSignalMask = do+  fp <- mallocForeignPtrBytes sizeof_sigset_t+  withForeignPtr fp $ \p ->+    throwErrnoIfMinus1_ "getSignalMask" (c_sigprocmask 0 nullPtr p)+  return (SignalSet fp)+   +sigProcMask :: String -> CInt -> SignalSet -> IO ()+sigProcMask fn how (SignalSet set) =+  withForeignPtr set $ \p_set ->+    throwErrnoIfMinus1_ fn (c_sigprocmask how p_set nullPtr)++-- | @setSignalMask mask@ calls @sigprocmask@ with+--   @SIG_SETMASK@ to block all interrupts in @mask@.+setSignalMask :: SignalSet -> IO ()+setSignalMask set = sigProcMask "setSignalMask" (CONST_SIG_SETMASK :: CInt) set++-- | @blockSignals mask@ calls @sigprocmask@ with+--   @SIG_BLOCK@ to add all interrupts in @mask@ to the+--  set of blocked interrupts.+blockSignals :: SignalSet -> IO ()+blockSignals set = sigProcMask "blockSignals" (CONST_SIG_BLOCK :: CInt) set++-- | @unblockSignals mask@ calls @sigprocmask@ with+--   @SIG_UNBLOCK@ to remove all interrupts in @mask@ from the+--   set of blocked interrupts. +unblockSignals :: SignalSet -> IO ()+unblockSignals set = sigProcMask "unblockSignals" (CONST_SIG_UNBLOCK :: CInt) set++-- | @getPendingSignals@ calls @sigpending@ to obtain+--   the set of interrupts which have been received but are currently blocked.+getPendingSignals :: IO SignalSet+getPendingSignals = do+  fp <- mallocForeignPtrBytes sizeof_sigset_t+  withForeignPtr fp $ \p -> +   throwErrnoIfMinus1_ "getPendingSignals" (c_sigpending p)+  return (SignalSet fp)++#ifndef cygwin32_HOST_OS++-- | @awaitSignal iset@ suspends execution until an interrupt is received.+-- If @iset@ is @Just s@, @awaitSignal@ calls @sigsuspend@, installing+-- @s@ as the new signal mask before suspending execution; otherwise, it+-- calls @pause@.  @awaitSignal@ returns on receipt of a signal.  If you+-- have installed any signal handlers with @installHandler@, it may be+-- wise to call @yield@ directly after @awaitSignal@ to ensure that the+-- signal handler runs as promptly as possible.+awaitSignal :: Maybe SignalSet -> IO ()+awaitSignal maybe_sigset = do+  fp <- case maybe_sigset of+    	  Nothing -> do SignalSet fp <- getSignalMask; return fp+    	  Just (SignalSet fp) -> return fp+  withForeignPtr fp $ \p -> do+  c_sigsuspend p+  return ()+  -- ignore the return value; according to the docs it can only ever be+  -- (-1) with errno set to EINTR.+ +foreign import ccall unsafe "sigsuspend"+  c_sigsuspend :: Ptr CSigset -> IO CInt+#endif++#ifdef __HUGS__+foreign import ccall unsafe "sigdelset"+  c_sigdelset   :: Ptr CSigset -> CInt -> IO CInt++foreign import ccall unsafe "sigfillset"+  c_sigfillset  :: Ptr CSigset -> IO CInt++foreign import ccall unsafe "sigismember"+  c_sigismember :: Ptr CSigset -> CInt -> IO CInt+#else+foreign import ccall unsafe "__hscore_sigdelset"+  c_sigdelset   :: Ptr CSigset -> CInt -> IO CInt++foreign import ccall unsafe "__hscore_sigfillset"+  c_sigfillset  :: Ptr CSigset -> IO CInt++foreign import ccall unsafe "__hscore_sigismember"+  c_sigismember :: Ptr CSigset -> CInt -> IO CInt+#endif /* __HUGS__ */++foreign import ccall unsafe "sigpending"+  c_sigpending :: Ptr CSigset -> IO CInt+
System/Posix/Unistd.hsc view
@@ -156,7 +156,7 @@                        else throwErrno "nanosleep"      loop (fromIntegral tv_sec0 :: CTime) (fromIntegral tv_nsec0 :: CTime) -newtype CTimeSpec = CTimeSpec CTimeSpec+data CTimeSpec  foreign import ccall safe "nanosleep"    c_nanosleep :: Ptr CTimeSpec -> Ptr CTimeSpec -> IO CInt
cbits/HsUnix.c view
@@ -1,5 +1,4 @@ /* ------------------------------------------------------------------------------ * $Id: HsUnix.c,v 1.1 2002/09/12 16:38:22 simonmar Exp $  *  * (c) The University of Glasgow 2002  *@@ -7,7 +6,111 @@  *  * ---------------------------------------------------------------------------*/ -// Out-of-line versions of all the inline functions from HsUnix.h-#define INLINE  /* nothing */ #include "HsUnix.h"++int __hsunix_wifexited   (int stat) { return WIFEXITED(stat); }+int __hsunix_wexitstatus (int stat) { return WEXITSTATUS(stat); }+int __hsunix_wifsignaled (int stat) { return WIFSIGNALED(stat); }+int __hsunix_wtermsig    (int stat) { return WTERMSIG(stat); }+int __hsunix_wifstopped  (int stat) { return WIFSTOPPED(stat); }+int __hsunix_wstopsig    (int stat) { return WSTOPSIG(stat); }++#ifdef HAVE_RTLDNEXT+void *__hsunix_rtldNext (void) {return RTLD_NEXT;} +#endif++#ifdef HAVE_RTLDDEFAULT+void *__hsunix_rtldDefault (void) {return RTLD_DEFAULT;} +#endif++#ifdef SIGINFO+int __hsunix_SIGINFO()	{ return SIGINFO; }+#endif+#ifdef SIGWINCH+int __hsunix_SIGWINCH()	{ return SIGWINCH; }+#endif++// lstat is a macro on some platforms, so we need a wrapper:+int __hsunix_lstat(const char *path, struct stat *buf) +{ +    return lstat(path,buf);+}++// mknod is a macro on some platforms, so we need a wrapper:+int __hsunix_mknod(const char *pathname, mode_t mode, dev_t dev)+{ +    return mknod(pathname,mode,dev);+}++#ifdef HAVE_PTSNAME+// I cannot figure out how to make the definitions of the following+// functions visible in <stdlib.h> on Linux.  But these definitions+// follow the POSIX specs, and everything links and runs.++char *__hsunix_ptsname(int fd)+{+    extern char *ptsname(int);+    return ptsname(fd);+}++int __hsunix_grantpt(int fd)+{+    extern int grantpt(int);+    return grantpt(fd);+}++int __hsunix_unlockpt(int fd)+{+    extern int unlockpt(int);+    return unlockpt(fd);+}+#endif++// push a SVR4 STREAMS module; do nothing if STREAMS not available+int __hsunix_push_module(int fd, const char *module)+{+#if defined(I_PUSH) && !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC)+    return ioctl(fd, I_PUSH, module);+#else+    return 0;+#endif+}++#if !defined(__MINGW32__)+int __hscore_mkstemp(char *filetemplate) {+    return (mkstemp(filetemplate));+}+#endif++#if !defined(__MINGW32__) && !defined(irix_HOST_OS)+int __hscore_getrlimit(int resource, struct rlimit *rlim) {+    return (getrlimit(resource, rlim));+}++int __hscore_setrlimit(int resource, struct rlimit *rlim) {+    return (setrlimit(resource, rlim));+}+#endif++int __hsunix_unsetenv(const char *name)+{+#ifdef UNSETENV_RETURNS_VOID+    unsetenv(name);+    return 0;+#else+    return unsetenv(name);+#endif+}++/* A size that will contain many path names, but not necessarily all+ * (PATH_MAX is not defined on systems with unlimited path length,+ * e.g. the Hurd).+ */+HsInt __hsunix_long_path_size() {+#ifdef PATH_MAX+    return PATH_MAX;+#else+    return 4096;+#endif+} 
+ config.guess view
@@ -0,0 +1,1500 @@+#! /bin/sh+# Attempt to guess a canonical system name.+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,+#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,+#   Inc.++timestamp='2006-07-02'++# This file is free software; you can redistribute it and/or modify it+# under the terms of the GNU General Public License as published by+# the Free Software Foundation; either version 2 of the License, or+# (at your option) any later version.+#+# This program is distributed in the hope that it will be useful, but+# WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU+# General Public License for more details.+#+# You should have received a copy of the GNU General Public License+# along with this program; if not, write to the Free Software+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA+# 02110-1301, USA.+#+# As a special exception to the GNU General Public License, if you+# distribute this file as part of a program that contains a+# configuration script generated by Autoconf, you may include it under+# the same distribution terms that you use for the rest of that program.+++# Originally written by Per Bothner <per@bothner.com>.+# Please send patches to <config-patches@gnu.org>.  Submit a context+# diff and a properly formatted ChangeLog entry.+#+# This script attempts to guess a canonical system name similar to+# config.sub.  If it succeeds, it prints the system name on stdout, and+# exits with 0.  Otherwise, it exits with 1.+#+# The plan is that this can be called by configure scripts if you+# don't specify an explicit build system type.++me=`echo "$0" | sed -e 's,.*/,,'`++usage="\+Usage: $0 [OPTION]++Output the configuration name of the system \`$me' is run on.++Operation modes:+  -h, --help         print this help, then exit+  -t, --time-stamp   print date of last modification, then exit+  -v, --version      print version number, then exit++Report bugs and patches to <config-patches@gnu.org>."++version="\+GNU config.guess ($timestamp)++Originally written by Per Bothner.+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005+Free Software Foundation, Inc.++This is free software; see the source for copying conditions.  There is NO+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."++help="+Try \`$me --help' for more information."++# Parse command line+while test $# -gt 0 ; do+  case $1 in+    --time-stamp | --time* | -t )+       echo "$timestamp" ; exit ;;+    --version | -v )+       echo "$version" ; exit ;;+    --help | --h* | -h )+       echo "$usage"; exit ;;+    -- )     # Stop option processing+       shift; break ;;+    - )	# Use stdin as input.+       break ;;+    -* )+       echo "$me: invalid option $1$help" >&2+       exit 1 ;;+    * )+       break ;;+  esac+done++if test $# != 0; then+  echo "$me: too many arguments$help" >&2+  exit 1+fi++trap 'exit 1' 1 2 15++# CC_FOR_BUILD -- compiler used by this script. Note that the use of a+# compiler to aid in system detection is discouraged as it requires+# temporary files to be created and, as you can see below, it is a+# headache to deal with in a portable fashion.++# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still+# use `HOST_CC' if defined, but it is deprecated.++# Portable tmp directory creation inspired by the Autoconf team.++set_cc_for_build='+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;+: ${TMPDIR=/tmp} ;+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;+dummy=$tmp/dummy ;+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;+case $CC_FOR_BUILD,$HOST_CC,$CC in+ ,,)    echo "int x;" > $dummy.c ;+	for c in cc gcc c89 c99 ; do+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then+	     CC_FOR_BUILD="$c"; break ;+	  fi ;+	done ;+	if test x"$CC_FOR_BUILD" = x ; then+	  CC_FOR_BUILD=no_compiler_found ;+	fi+	;;+ ,,*)   CC_FOR_BUILD=$CC ;;+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;+esac ; set_cc_for_build= ;'++# This is needed to find uname on a Pyramid OSx when run in the BSD universe.+# (ghazi@noc.rutgers.edu 1994-08-24)+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then+	PATH=$PATH:/.attbin ; export PATH+fi++UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown++# Note: order is significant - the case branches are not exclusive.++case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in+    *:NetBSD:*:*)+	# NetBSD (nbsd) targets should (where applicable) match one or+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently+	# switched to ELF, *-*-netbsd* would select the old+	# object file format.  This provides both forward+	# compatibility and a consistent mechanism for selecting the+	# object file format.+	#+	# Note: NetBSD doesn't particularly care about the vendor+	# portion of the name.  We always set it to "unknown".+	sysctl="sysctl -n hw.machine_arch"+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`+	case "${UNAME_MACHINE_ARCH}" in+	    armeb) machine=armeb-unknown ;;+	    arm*) machine=arm-unknown ;;+	    sh3el) machine=shl-unknown ;;+	    sh3eb) machine=sh-unknown ;;+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;+	esac+	# The Operating System including object format, if it has switched+	# to ELF recently, or will in the future.+	case "${UNAME_MACHINE_ARCH}" in+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)+		eval $set_cc_for_build+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \+			| grep __ELF__ >/dev/null+		then+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).+		    # Return netbsd for either.  FIX?+		    os=netbsd+		else+		    os=netbsdelf+		fi+		;;+	    *)+	        os=netbsd+		;;+	esac+	# The OS release+	# Debian GNU/NetBSD machines have a different userland, and+	# thus, need a distinct triplet. However, they do not need+	# kernel version information, so it can be replaced with a+	# suitable tag, in the style of linux-gnu.+	case "${UNAME_VERSION}" in+	    Debian*)+		release='-gnu'+		;;+	    *)+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`+		;;+	esac+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:+	# contains redundant information, the shorter form:+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.+	echo "${machine}-${os}${release}"+	exit ;;+    *:OpenBSD:*:*)+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}+	exit ;;+    *:ekkoBSD:*:*)+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}+	exit ;;+    *:SolidBSD:*:*)+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}+	exit ;;+    macppc:MirBSD:*:*)+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}+	exit ;;+    *:MirBSD:*:*)+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}+	exit ;;+    alpha:OSF1:*:*)+	case $UNAME_RELEASE in+	*4.0)+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`+		;;+	*5.*)+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`+		;;+	esac+	# According to Compaq, /usr/sbin/psrinfo has been available on+	# OSF/1 and Tru64 systems produced since 1995.  I hope that+	# covers most systems running today.  This code pipes the CPU+	# types through head -n 1, so we only detect the type of CPU 0.+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`+	case "$ALPHA_CPU_TYPE" in+	    "EV4 (21064)")+		UNAME_MACHINE="alpha" ;;+	    "EV4.5 (21064)")+		UNAME_MACHINE="alpha" ;;+	    "LCA4 (21066/21068)")+		UNAME_MACHINE="alpha" ;;+	    "EV5 (21164)")+		UNAME_MACHINE="alphaev5" ;;+	    "EV5.6 (21164A)")+		UNAME_MACHINE="alphaev56" ;;+	    "EV5.6 (21164PC)")+		UNAME_MACHINE="alphapca56" ;;+	    "EV5.7 (21164PC)")+		UNAME_MACHINE="alphapca57" ;;+	    "EV6 (21264)")+		UNAME_MACHINE="alphaev6" ;;+	    "EV6.7 (21264A)")+		UNAME_MACHINE="alphaev67" ;;+	    "EV6.8CB (21264C)")+		UNAME_MACHINE="alphaev68" ;;+	    "EV6.8AL (21264B)")+		UNAME_MACHINE="alphaev68" ;;+	    "EV6.8CX (21264D)")+		UNAME_MACHINE="alphaev68" ;;+	    "EV6.9A (21264/EV69A)")+		UNAME_MACHINE="alphaev69" ;;+	    "EV7 (21364)")+		UNAME_MACHINE="alphaev7" ;;+	    "EV7.9 (21364A)")+		UNAME_MACHINE="alphaev79" ;;+	esac+	# A Pn.n version is a patched version.+	# A Vn.n version is a released version.+	# A Tn.n version is a released field test version.+	# A Xn.n version is an unreleased experimental baselevel.+	# 1.2 uses "1.2" for uname -r.+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`+	exit ;;+    Alpha\ *:Windows_NT*:*)+	# How do we know it's Interix rather than the generic POSIX subsystem?+	# Should we change UNAME_MACHINE based on the output of uname instead+	# of the specific Alpha model?+	echo alpha-pc-interix+	exit ;;+    21064:Windows_NT:50:3)+	echo alpha-dec-winnt3.5+	exit ;;+    Amiga*:UNIX_System_V:4.0:*)+	echo m68k-unknown-sysv4+	exit ;;+    *:[Aa]miga[Oo][Ss]:*:*)+	echo ${UNAME_MACHINE}-unknown-amigaos+	exit ;;+    *:[Mm]orph[Oo][Ss]:*:*)+	echo ${UNAME_MACHINE}-unknown-morphos+	exit ;;+    *:OS/390:*:*)+	echo i370-ibm-openedition+	exit ;;+    *:z/VM:*:*)+	echo s390-ibm-zvmoe+	exit ;;+    *:OS400:*:*)+        echo powerpc-ibm-os400+	exit ;;+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)+	echo arm-acorn-riscix${UNAME_RELEASE}+	exit ;;+    arm:riscos:*:*|arm:RISCOS:*:*)+	echo arm-unknown-riscos+	exit ;;+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)+	echo hppa1.1-hitachi-hiuxmpp+	exit ;;+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.+	if test "`(/bin/universe) 2>/dev/null`" = att ; then+		echo pyramid-pyramid-sysv3+	else+		echo pyramid-pyramid-bsd+	fi+	exit ;;+    NILE*:*:*:dcosx)+	echo pyramid-pyramid-svr4+	exit ;;+    DRS?6000:unix:4.0:6*)+	echo sparc-icl-nx6+	exit ;;+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)+	case `/usr/bin/uname -p` in+	    sparc) echo sparc-icl-nx7; exit ;;+	esac ;;+    sun4H:SunOS:5.*:*)+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    i86pc:SunOS:5.*:*)+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    sun4*:SunOS:6*:*)+	# According to config.sub, this is the proper way to canonicalize+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but+	# it's likely to be more like Solaris than SunOS4.+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    sun4*:SunOS:*:*)+	case "`/usr/bin/arch -k`" in+	    Series*|S4*)+		UNAME_RELEASE=`uname -v`+		;;+	esac+	# Japanese Language versions have a version number like `4.1.3-JL'.+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`+	exit ;;+    sun3*:SunOS:*:*)+	echo m68k-sun-sunos${UNAME_RELEASE}+	exit ;;+    sun*:*:4.2BSD:*)+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3+	case "`/bin/arch`" in+	    sun3)+		echo m68k-sun-sunos${UNAME_RELEASE}+		;;+	    sun4)+		echo sparc-sun-sunos${UNAME_RELEASE}+		;;+	esac+	exit ;;+    aushp:SunOS:*:*)+	echo sparc-auspex-sunos${UNAME_RELEASE}+	exit ;;+    # The situation for MiNT is a little confusing.  The machine name+    # can be virtually everything (everything which is not+    # "atarist" or "atariste" at least should have a processor+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"+    # to the lowercase version "mint" (or "freemint").  Finally+    # the system name "TOS" denotes a system which is actually not+    # MiNT.  But MiNT is downward compatible to TOS, so this should+    # be no problem.+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)+        echo m68k-atari-mint${UNAME_RELEASE}+	exit ;;+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)+	echo m68k-atari-mint${UNAME_RELEASE}+        exit ;;+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)+        echo m68k-atari-mint${UNAME_RELEASE}+	exit ;;+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)+        echo m68k-milan-mint${UNAME_RELEASE}+        exit ;;+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)+        echo m68k-hades-mint${UNAME_RELEASE}+        exit ;;+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)+        echo m68k-unknown-mint${UNAME_RELEASE}+        exit ;;+    m68k:machten:*:*)+	echo m68k-apple-machten${UNAME_RELEASE}+	exit ;;+    powerpc:machten:*:*)+	echo powerpc-apple-machten${UNAME_RELEASE}+	exit ;;+    RISC*:Mach:*:*)+	echo mips-dec-mach_bsd4.3+	exit ;;+    RISC*:ULTRIX:*:*)+	echo mips-dec-ultrix${UNAME_RELEASE}+	exit ;;+    VAX*:ULTRIX*:*:*)+	echo vax-dec-ultrix${UNAME_RELEASE}+	exit ;;+    2020:CLIX:*:* | 2430:CLIX:*:*)+	echo clipper-intergraph-clix${UNAME_RELEASE}+	exit ;;+    mips:*:*:UMIPS | mips:*:*:RISCos)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+#ifdef __cplusplus+#include <stdio.h>  /* for printf() prototype */+	int main (int argc, char *argv[]) {+#else+	int main (argc, argv) int argc; char *argv[]; {+#endif+	#if defined (host_mips) && defined (MIPSEB)+	#if defined (SYSTYPE_SYSV)+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);+	#endif+	#if defined (SYSTYPE_SVR4)+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);+	#endif+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);+	#endif+	#endif+	  exit (-1);+	}+EOF+	$CC_FOR_BUILD -o $dummy $dummy.c &&+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&+	  SYSTEM_NAME=`$dummy $dummyarg` &&+	    { echo "$SYSTEM_NAME"; exit; }+	echo mips-mips-riscos${UNAME_RELEASE}+	exit ;;+    Motorola:PowerMAX_OS:*:*)+	echo powerpc-motorola-powermax+	exit ;;+    Motorola:*:4.3:PL8-*)+	echo powerpc-harris-powermax+	exit ;;+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)+	echo powerpc-harris-powermax+	exit ;;+    Night_Hawk:Power_UNIX:*:*)+	echo powerpc-harris-powerunix+	exit ;;+    m88k:CX/UX:7*:*)+	echo m88k-harris-cxux7+	exit ;;+    m88k:*:4*:R4*)+	echo m88k-motorola-sysv4+	exit ;;+    m88k:*:3*:R3*)+	echo m88k-motorola-sysv3+	exit ;;+    AViiON:dgux:*:*)+        # DG/UX returns AViiON for all architectures+        UNAME_PROCESSOR=`/usr/bin/uname -p`+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]+	then+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \+	       [ ${TARGET_BINARY_INTERFACE}x = x ]+	    then+		echo m88k-dg-dgux${UNAME_RELEASE}+	    else+		echo m88k-dg-dguxbcs${UNAME_RELEASE}+	    fi+	else+	    echo i586-dg-dgux${UNAME_RELEASE}+	fi+ 	exit ;;+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)+	echo m88k-dolphin-sysv3+	exit ;;+    M88*:*:R3*:*)+	# Delta 88k system running SVR3+	echo m88k-motorola-sysv3+	exit ;;+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)+	echo m88k-tektronix-sysv3+	exit ;;+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)+	echo m68k-tektronix-bsd+	exit ;;+    *:IRIX*:*:*)+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`+	exit ;;+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '+    i*86:AIX:*:*)+	echo i386-ibm-aix+	exit ;;+    ia64:AIX:*:*)+	if [ -x /usr/bin/oslevel ] ; then+		IBM_REV=`/usr/bin/oslevel`+	else+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}+	fi+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}+	exit ;;+    *:AIX:2:3)+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then+		eval $set_cc_for_build+		sed 's/^		//' << EOF >$dummy.c+		#include <sys/systemcfg.h>++		main()+			{+			if (!__power_pc())+				exit(1);+			puts("powerpc-ibm-aix3.2.5");+			exit(0);+			}+EOF+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`+		then+			echo "$SYSTEM_NAME"+		else+			echo rs6000-ibm-aix3.2.5+		fi+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then+		echo rs6000-ibm-aix3.2.4+	else+		echo rs6000-ibm-aix3.2+	fi+	exit ;;+    *:AIX:*:[45])+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then+		IBM_ARCH=rs6000+	else+		IBM_ARCH=powerpc+	fi+	if [ -x /usr/bin/oslevel ] ; then+		IBM_REV=`/usr/bin/oslevel`+	else+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}+	fi+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}+	exit ;;+    *:AIX:*:*)+	echo rs6000-ibm-aix+	exit ;;+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)+	echo romp-ibm-bsd4.4+	exit ;;+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to+	exit ;;                             # report: romp-ibm BSD 4.3+    *:BOSX:*:*)+	echo rs6000-bull-bosx+	exit ;;+    DPX/2?00:B.O.S.:*:*)+	echo m68k-bull-sysv3+	exit ;;+    9000/[34]??:4.3bsd:1.*:*)+	echo m68k-hp-bsd+	exit ;;+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)+	echo m68k-hp-bsd4.4+	exit ;;+    9000/[34678]??:HP-UX:*:*)+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`+	case "${UNAME_MACHINE}" in+	    9000/31? )            HP_ARCH=m68000 ;;+	    9000/[34]?? )         HP_ARCH=m68k ;;+	    9000/[678][0-9][0-9])+		if [ -x /usr/bin/getconf ]; then+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`+                    case "${sc_cpu_version}" in+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1+                      532)                      # CPU_PA_RISC2_0+                        case "${sc_kernel_bits}" in+                          32) HP_ARCH="hppa2.0n" ;;+                          64) HP_ARCH="hppa2.0w" ;;+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20+                        esac ;;+                    esac+		fi+		if [ "${HP_ARCH}" = "" ]; then+		    eval $set_cc_for_build+		    sed 's/^              //' << EOF >$dummy.c++              #define _HPUX_SOURCE+              #include <stdlib.h>+              #include <unistd.h>++              int main ()+              {+              #if defined(_SC_KERNEL_BITS)+                  long bits = sysconf(_SC_KERNEL_BITS);+              #endif+                  long cpu  = sysconf (_SC_CPU_VERSION);++                  switch (cpu)+              	{+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;+              	case CPU_PA_RISC2_0:+              #if defined(_SC_KERNEL_BITS)+              	    switch (bits)+              		{+              		case 64: puts ("hppa2.0w"); break;+              		case 32: puts ("hppa2.0n"); break;+              		default: puts ("hppa2.0"); break;+              		} break;+              #else  /* !defined(_SC_KERNEL_BITS) */+              	    puts ("hppa2.0"); break;+              #endif+              	default: puts ("hppa1.0"); break;+              	}+                  exit (0);+              }+EOF+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`+		    test -z "$HP_ARCH" && HP_ARCH=hppa+		fi ;;+	esac+	if [ ${HP_ARCH} = "hppa2.0w" ]+	then+	    eval $set_cc_for_build++	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler+	    # generating 64-bit code.  GNU and HP use different nomenclature:+	    #+	    # $ CC_FOR_BUILD=cc ./config.guess+	    # => hppa2.0w-hp-hpux11.23+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess+	    # => hppa64-hp-hpux11.23++	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |+		grep __LP64__ >/dev/null+	    then+		HP_ARCH="hppa2.0w"+	    else+		HP_ARCH="hppa64"+	    fi+	fi+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}+	exit ;;+    ia64:HP-UX:*:*)+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`+	echo ia64-hp-hpux${HPUX_REV}+	exit ;;+    3050*:HI-UX:*:*)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#include <unistd.h>+	int+	main ()+	{+	  long cpu = sysconf (_SC_CPU_VERSION);+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct+	     results, however.  */+	  if (CPU_IS_PA_RISC (cpu))+	    {+	      switch (cpu)+		{+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;+		  default: puts ("hppa-hitachi-hiuxwe2"); break;+		}+	    }+	  else if (CPU_IS_HP_MC68K (cpu))+	    puts ("m68k-hitachi-hiuxwe2");+	  else puts ("unknown-hitachi-hiuxwe2");+	  exit (0);+	}+EOF+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&+		{ echo "$SYSTEM_NAME"; exit; }+	echo unknown-hitachi-hiuxwe2+	exit ;;+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )+	echo hppa1.1-hp-bsd+	exit ;;+    9000/8??:4.3bsd:*:*)+	echo hppa1.0-hp-bsd+	exit ;;+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)+	echo hppa1.0-hp-mpeix+	exit ;;+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )+	echo hppa1.1-hp-osf+	exit ;;+    hp8??:OSF1:*:*)+	echo hppa1.0-hp-osf+	exit ;;+    i*86:OSF1:*:*)+	if [ -x /usr/sbin/sysversion ] ; then+	    echo ${UNAME_MACHINE}-unknown-osf1mk+	else+	    echo ${UNAME_MACHINE}-unknown-osf1+	fi+	exit ;;+    parisc*:Lites*:*:*)+	echo hppa1.1-hp-lites+	exit ;;+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)+	echo c1-convex-bsd+        exit ;;+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)+	if getsysinfo -f scalar_acc+	then echo c32-convex-bsd+	else echo c2-convex-bsd+	fi+        exit ;;+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)+	echo c34-convex-bsd+        exit ;;+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)+	echo c38-convex-bsd+        exit ;;+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)+	echo c4-convex-bsd+        exit ;;+    CRAY*Y-MP:*:*:*)+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*[A-Z]90:*:*:*)+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \+	      -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*TS:*:*:*)+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*T3E:*:*:*)+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*SV1:*:*:*)+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    *:UNICOS/mp:*:*)+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"+        exit ;;+    5000:UNIX_System_V:4.*:*)+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"+	exit ;;+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}+	exit ;;+    sparc*:BSD/OS:*:*)+	echo sparc-unknown-bsdi${UNAME_RELEASE}+	exit ;;+    *:BSD/OS:*:*)+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}+	exit ;;+    *:FreeBSD:*:*)+	case ${UNAME_MACHINE} in+	    pc98)+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;+	    amd64)+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;+	    *)+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;+	esac+	exit ;;+    i*:CYGWIN*:*)+	echo ${UNAME_MACHINE}-pc-cygwin+	exit ;;+    i*:MINGW*:*)+	echo ${UNAME_MACHINE}-pc-mingw32+	exit ;;+    i*:windows32*:*)+    	# uname -m includes "-pc" on this system.+    	echo ${UNAME_MACHINE}-mingw32+	exit ;;+    i*:PW*:*)+	echo ${UNAME_MACHINE}-pc-pw32+	exit ;;+    x86:Interix*:[3456]*)+	echo i586-pc-interix${UNAME_RELEASE}+	exit ;;+    EM64T:Interix*:[3456]*)+	echo x86_64-unknown-interix${UNAME_RELEASE}+	exit ;;+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)+	echo i${UNAME_MACHINE}-pc-mks+	exit ;;+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)+	# How do we know it's Interix rather than the generic POSIX subsystem?+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we+	# UNAME_MACHINE based on the output of uname instead of i386?+	echo i586-pc-interix+	exit ;;+    i*:UWIN*:*)+	echo ${UNAME_MACHINE}-pc-uwin+	exit ;;+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)+	echo x86_64-unknown-cygwin+	exit ;;+    p*:CYGWIN*:*)+	echo powerpcle-unknown-cygwin+	exit ;;+    prep*:SunOS:5.*:*)+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    *:GNU:*:*)+	# the GNU system+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`+	exit ;;+    *:GNU/*:*:*)+	# other systems with GNU libc and userland+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu+	exit ;;+    i*86:Minix:*:*)+	echo ${UNAME_MACHINE}-pc-minix+	exit ;;+    arm*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    avr32*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    cris:Linux:*:*)+	echo cris-axis-linux-gnu+	exit ;;+    crisv32:Linux:*:*)+	echo crisv32-axis-linux-gnu+	exit ;;+    frv:Linux:*:*)+    	echo frv-unknown-linux-gnu+	exit ;;+    ia64:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    m32r*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    m68*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    mips:Linux:*:*)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#undef CPU+	#undef mips+	#undef mipsel+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)+	CPU=mipsel+	#else+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)+	CPU=mips+	#else+	CPU=+	#endif+	#endif+EOF+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '+	    /^CPU/{+		s: ::g+		p+	    }'`"+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }+	;;+    mips64:Linux:*:*)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#undef CPU+	#undef mips64+	#undef mips64el+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)+	CPU=mips64el+	#else+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)+	CPU=mips64+	#else+	CPU=+	#endif+	#endif+EOF+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '+	    /^CPU/{+		s: ::g+		p+	    }'`"+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }+	;;+    or32:Linux:*:*)+	echo or32-unknown-linux-gnu+	exit ;;+    ppc:Linux:*:*)+	echo powerpc-unknown-linux-gnu+	exit ;;+    ppc64:Linux:*:*)+	echo powerpc64-unknown-linux-gnu+	exit ;;+    alpha:Linux:*:*)+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in+	  EV5)   UNAME_MACHINE=alphaev5 ;;+	  EV56)  UNAME_MACHINE=alphaev56 ;;+	  PCA56) UNAME_MACHINE=alphapca56 ;;+	  PCA57) UNAME_MACHINE=alphapca56 ;;+	  EV6)   UNAME_MACHINE=alphaev6 ;;+	  EV67)  UNAME_MACHINE=alphaev67 ;;+	  EV68*) UNAME_MACHINE=alphaev68 ;;+        esac+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}+	exit ;;+    parisc:Linux:*:* | hppa:Linux:*:*)+	# Look for CPU level+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;+	  *)    echo hppa-unknown-linux-gnu ;;+	esac+	exit ;;+    parisc64:Linux:*:* | hppa64:Linux:*:*)+	echo hppa64-unknown-linux-gnu+	exit ;;+    s390:Linux:*:* | s390x:Linux:*:*)+	echo ${UNAME_MACHINE}-ibm-linux+	exit ;;+    sh64*:Linux:*:*)+    	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    sh*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    sparc:Linux:*:* | sparc64:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    vax:Linux:*:*)+	echo ${UNAME_MACHINE}-dec-linux-gnu+	exit ;;+    x86_64:Linux:*:*)+	echo x86_64-unknown-linux-gnu+	exit ;;+    i*86:Linux:*:*)+	# The BFD linker knows what the default object file format is, so+	# first see if it will tell us. cd to the root directory to prevent+	# problems with other programs or directories called `ld' in the path.+	# Set LC_ALL=C to ensure ld outputs messages in English.+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \+			 | sed -ne '/supported targets:/!d+				    s/[ 	][ 	]*/ /g+				    s/.*supported targets: *//+				    s/ .*//+				    p'`+        case "$ld_supported_targets" in+	  elf32-i386)+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"+		;;+	  a.out-i386-linux)+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"+		exit ;;+	  coff-i386)+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"+		exit ;;+	  "")+		# Either a pre-BFD a.out linker (linux-gnuoldld) or+		# one that does not give us useful --help.+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"+		exit ;;+	esac+	# Determine whether the default compiler is a.out or elf+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#include <features.h>+	#ifdef __ELF__+	# ifdef __GLIBC__+	#  if __GLIBC__ >= 2+	LIBC=gnu+	#  else+	LIBC=gnulibc1+	#  endif+	# else+	LIBC=gnulibc1+	# endif+	#else+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)+	LIBC=gnu+	#else+	LIBC=gnuaout+	#endif+	#endif+	#ifdef __dietlibc__+	LIBC=dietlibc+	#endif+EOF+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '+	    /^LIBC/{+		s: ::g+		p+	    }'`"+	test x"${LIBC}" != x && {+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"+		exit+	}+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }+	;;+    i*86:DYNIX/ptx:4*:*)+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.+	# earlier versions are messed up and put the nodename in both+	# sysname and nodename.+	echo i386-sequent-sysv4+	exit ;;+    i*86:UNIX_SV:4.2MP:2.*)+        # Unixware is an offshoot of SVR4, but it has its own version+        # number series starting with 2...+        # I am not positive that other SVR4 systems won't match this,+	# I just have to hope.  -- rms.+        # Use sysv4.2uw... so that sysv4* matches it.+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}+	exit ;;+    i*86:OS/2:*:*)+	# If we were able to find `uname', then EMX Unix compatibility+	# is probably installed.+	echo ${UNAME_MACHINE}-pc-os2-emx+	exit ;;+    i*86:XTS-300:*:STOP)+	echo ${UNAME_MACHINE}-unknown-stop+	exit ;;+    i*86:atheos:*:*)+	echo ${UNAME_MACHINE}-unknown-atheos+	exit ;;+    i*86:syllable:*:*)+	echo ${UNAME_MACHINE}-pc-syllable+	exit ;;+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)+	echo i386-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    i*86:*DOS:*:*)+	echo ${UNAME_MACHINE}-pc-msdosdjgpp+	exit ;;+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}+	else+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}+	fi+	exit ;;+    i*86:*:5:[678]*)+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.+	case `/bin/uname -X | grep "^Machine"` in+	    *486*)	     UNAME_MACHINE=i486 ;;+	    *Pentium)	     UNAME_MACHINE=i586 ;;+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;+	esac+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}+	exit ;;+    i*86:*:3.2:*)+	if test -f /usr/options/cb.name; then+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL+	elif /bin/uname -X 2>/dev/null >/dev/null ; then+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \+			&& UNAME_MACHINE=i586+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \+			&& UNAME_MACHINE=i686+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \+			&& UNAME_MACHINE=i686+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL+	else+		echo ${UNAME_MACHINE}-pc-sysv32+	fi+	exit ;;+    pc:*:*:*)+	# Left here for compatibility:+        # uname -m prints for DJGPP always 'pc', but it prints nothing about+        # the processor, so we play safe by assuming i386.+	echo i386-pc-msdosdjgpp+        exit ;;+    Intel:Mach:3*:*)+	echo i386-pc-mach3+	exit ;;+    paragon:*:*:*)+	echo i860-intel-osf1+	exit ;;+    i860:*:4.*:*) # i860-SVR4+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4+	else # Add other i860-SVR4 vendors below as they are discovered.+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4+	fi+	exit ;;+    mini*:CTIX:SYS*5:*)+	# "miniframe"+	echo m68010-convergent-sysv+	exit ;;+    mc68k:UNIX:SYSTEM5:3.51m)+	echo m68k-convergent-sysv+	exit ;;+    M680?0:D-NIX:5.3:*)+	echo m68k-diab-dnix+	exit ;;+    M68*:*:R3V[5678]*:*)+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)+	OS_REL=''+	test -r /etc/.relid \+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \+          && { echo i486-ncr-sysv4; exit; } ;;+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)+	echo m68k-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    mc68030:UNIX_System_V:4.*:*)+	echo m68k-atari-sysv4+	exit ;;+    TSUNAMI:LynxOS:2.*:*)+	echo sparc-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    rs6000:LynxOS:2.*:*)+	echo rs6000-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)+	echo powerpc-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    SM[BE]S:UNIX_SV:*:*)+	echo mips-dde-sysv${UNAME_RELEASE}+	exit ;;+    RM*:ReliantUNIX-*:*:*)+	echo mips-sni-sysv4+	exit ;;+    RM*:SINIX-*:*:*)+	echo mips-sni-sysv4+	exit ;;+    *:SINIX-*:*:*)+	if uname -p 2>/dev/null >/dev/null ; then+		UNAME_MACHINE=`(uname -p) 2>/dev/null`+		echo ${UNAME_MACHINE}-sni-sysv4+	else+		echo ns32k-sni-sysv+	fi+	exit ;;+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort+                      # says <Richard.M.Bartel@ccMail.Census.GOV>+        echo i586-unisys-sysv4+        exit ;;+    *:UNIX_System_V:4*:FTX*)+	# From Gerald Hewes <hewes@openmarket.com>.+	# How about differentiating between stratus architectures? -djm+	echo hppa1.1-stratus-sysv4+	exit ;;+    *:*:*:FTX*)+	# From seanf@swdc.stratus.com.+	echo i860-stratus-sysv4+	exit ;;+    i*86:VOS:*:*)+	# From Paul.Green@stratus.com.+	echo ${UNAME_MACHINE}-stratus-vos+	exit ;;+    *:VOS:*:*)+	# From Paul.Green@stratus.com.+	echo hppa1.1-stratus-vos+	exit ;;+    mc68*:A/UX:*:*)+	echo m68k-apple-aux${UNAME_RELEASE}+	exit ;;+    news*:NEWS-OS:6*:*)+	echo mips-sony-newsos6+	exit ;;+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)+	if [ -d /usr/nec ]; then+	        echo mips-nec-sysv${UNAME_RELEASE}+	else+	        echo mips-unknown-sysv${UNAME_RELEASE}+	fi+        exit ;;+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.+	echo powerpc-be-beos+	exit ;;+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.+	echo powerpc-apple-beos+	exit ;;+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.+	echo i586-pc-beos+	exit ;;+    SX-4:SUPER-UX:*:*)+	echo sx4-nec-superux${UNAME_RELEASE}+	exit ;;+    SX-5:SUPER-UX:*:*)+	echo sx5-nec-superux${UNAME_RELEASE}+	exit ;;+    SX-6:SUPER-UX:*:*)+	echo sx6-nec-superux${UNAME_RELEASE}+	exit ;;+    Power*:Rhapsody:*:*)+	echo powerpc-apple-rhapsody${UNAME_RELEASE}+	exit ;;+    *:Rhapsody:*:*)+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}+	exit ;;+    *:Darwin:*:*)+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown+	case $UNAME_PROCESSOR in+	    unknown) UNAME_PROCESSOR=powerpc ;;+	esac+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}+	exit ;;+    *:procnto*:*:* | *:QNX:[0123456789]*:*)+	UNAME_PROCESSOR=`uname -p`+	if test "$UNAME_PROCESSOR" = "x86"; then+		UNAME_PROCESSOR=i386+		UNAME_MACHINE=pc+	fi+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}+	exit ;;+    *:QNX:*:4*)+	echo i386-pc-qnx+	exit ;;+    NSE-?:NONSTOP_KERNEL:*:*)+	echo nse-tandem-nsk${UNAME_RELEASE}+	exit ;;+    NSR-?:NONSTOP_KERNEL:*:*)+	echo nsr-tandem-nsk${UNAME_RELEASE}+	exit ;;+    *:NonStop-UX:*:*)+	echo mips-compaq-nonstopux+	exit ;;+    BS2000:POSIX*:*:*)+	echo bs2000-siemens-sysv+	exit ;;+    DS/*:UNIX_System_V:*:*)+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}+	exit ;;+    *:Plan9:*:*)+	# "uname -m" is not consistent, so use $cputype instead. 386+	# is converted to i386 for consistency with other x86+	# operating systems.+	if test "$cputype" = "386"; then+	    UNAME_MACHINE=i386+	else+	    UNAME_MACHINE="$cputype"+	fi+	echo ${UNAME_MACHINE}-unknown-plan9+	exit ;;+    *:TOPS-10:*:*)+	echo pdp10-unknown-tops10+	exit ;;+    *:TENEX:*:*)+	echo pdp10-unknown-tenex+	exit ;;+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)+	echo pdp10-dec-tops20+	exit ;;+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)+	echo pdp10-xkl-tops20+	exit ;;+    *:TOPS-20:*:*)+	echo pdp10-unknown-tops20+	exit ;;+    *:ITS:*:*)+	echo pdp10-unknown-its+	exit ;;+    SEI:*:*:SEIUX)+        echo mips-sei-seiux${UNAME_RELEASE}+	exit ;;+    *:DragonFly:*:*)+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`+	exit ;;+    *:*VMS:*:*)+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`+	case "${UNAME_MACHINE}" in+	    A*) echo alpha-dec-vms ; exit ;;+	    I*) echo ia64-dec-vms ; exit ;;+	    V*) echo vax-dec-vms ; exit ;;+	esac ;;+    *:XENIX:*:SysV)+	echo i386-pc-xenix+	exit ;;+    i*86:skyos:*:*)+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'+	exit ;;+    i*86:rdos:*:*)+	echo ${UNAME_MACHINE}-pc-rdos+	exit ;;+esac++#echo '(No uname command or uname output not recognized.)' 1>&2+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2++eval $set_cc_for_build+cat >$dummy.c <<EOF+#ifdef _SEQUENT_+# include <sys/types.h>+# include <sys/utsname.h>+#endif+main ()+{+#if defined (sony)+#if defined (MIPSEB)+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,+     I don't know....  */+  printf ("mips-sony-bsd\n"); exit (0);+#else+#include <sys/param.h>+  printf ("m68k-sony-newsos%s\n",+#ifdef NEWSOS4+          "4"+#else+	  ""+#endif+         ); exit (0);+#endif+#endif++#if defined (__arm) && defined (__acorn) && defined (__unix)+  printf ("arm-acorn-riscix\n"); exit (0);+#endif++#if defined (hp300) && !defined (hpux)+  printf ("m68k-hp-bsd\n"); exit (0);+#endif++#if defined (NeXT)+#if !defined (__ARCHITECTURE__)+#define __ARCHITECTURE__ "m68k"+#endif+  int version;+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;+  if (version < 4)+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);+  else+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);+  exit (0);+#endif++#if defined (MULTIMAX) || defined (n16)+#if defined (UMAXV)+  printf ("ns32k-encore-sysv\n"); exit (0);+#else+#if defined (CMU)+  printf ("ns32k-encore-mach\n"); exit (0);+#else+  printf ("ns32k-encore-bsd\n"); exit (0);+#endif+#endif+#endif++#if defined (__386BSD__)+  printf ("i386-pc-bsd\n"); exit (0);+#endif++#if defined (sequent)+#if defined (i386)+  printf ("i386-sequent-dynix\n"); exit (0);+#endif+#if defined (ns32000)+  printf ("ns32k-sequent-dynix\n"); exit (0);+#endif+#endif++#if defined (_SEQUENT_)+    struct utsname un;++    uname(&un);++    if (strncmp(un.version, "V2", 2) == 0) {+	printf ("i386-sequent-ptx2\n"); exit (0);+    }+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */+	printf ("i386-sequent-ptx1\n"); exit (0);+    }+    printf ("i386-sequent-ptx\n"); exit (0);++#endif++#if defined (vax)+# if !defined (ultrix)+#  include <sys/param.h>+#  if defined (BSD)+#   if BSD == 43+      printf ("vax-dec-bsd4.3\n"); exit (0);+#   else+#    if BSD == 199006+      printf ("vax-dec-bsd4.3reno\n"); exit (0);+#    else+      printf ("vax-dec-bsd\n"); exit (0);+#    endif+#   endif+#  else+    printf ("vax-dec-bsd\n"); exit (0);+#  endif+# else+    printf ("vax-dec-ultrix\n"); exit (0);+# endif+#endif++#if defined (alliant) && defined (i860)+  printf ("i860-alliant-bsd\n"); exit (0);+#endif++  exit (1);+}+EOF++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&+	{ echo "$SYSTEM_NAME"; exit; }++# Apollos put the system type in the environment.++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }++# Convex versions that predate uname can use getsysinfo(1)++if [ -x /usr/convex/getsysinfo ]+then+    case `getsysinfo -f cpu_type` in+    c1*)+	echo c1-convex-bsd+	exit ;;+    c2*)+	if getsysinfo -f scalar_acc+	then echo c32-convex-bsd+	else echo c2-convex-bsd+	fi+	exit ;;+    c34*)+	echo c34-convex-bsd+	exit ;;+    c38*)+	echo c38-convex-bsd+	exit ;;+    c4*)+	echo c4-convex-bsd+	exit ;;+    esac+fi++cat >&2 <<EOF+$0: unable to guess system type++This script, last modified $timestamp, has failed to recognize+the operating system you are using. It is advised that you+download the most up to date version of the config scripts from++  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess+and+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub++If the version you run ($0) is already up to date, please+send the following data and any information you think might be+pertinent to <config-patches@gnu.org> in order to provide the needed+information to handle your system.++config.guess timestamp = $timestamp++uname -m = `(uname -m) 2>/dev/null || echo unknown`+uname -r = `(uname -r) 2>/dev/null || echo unknown`+uname -s = `(uname -s) 2>/dev/null || echo unknown`+uname -v = `(uname -v) 2>/dev/null || echo unknown`++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`++hostinfo               = `(hostinfo) 2>/dev/null`+/bin/universe          = `(/bin/universe) 2>/dev/null`+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`+/bin/arch              = `(/bin/arch) 2>/dev/null`+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`++UNAME_MACHINE = ${UNAME_MACHINE}+UNAME_RELEASE = ${UNAME_RELEASE}+UNAME_SYSTEM  = ${UNAME_SYSTEM}+UNAME_VERSION = ${UNAME_VERSION}+EOF++exit 1++# Local variables:+# eval: (add-hook 'write-file-hooks 'time-stamp)+# time-stamp-start: "timestamp='"+# time-stamp-format: "%:y-%02m-%02d"+# time-stamp-end: "'"+# End:
+ config.sub view
@@ -0,0 +1,1608 @@+#! /bin/sh+# Configuration validation subroutine script.+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,+#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,+#   Inc.++timestamp='2006-07-02'++# This file is (in principle) common to ALL GNU software.+# The presence of a machine in this file suggests that SOME GNU software+# can handle that machine.  It does not imply ALL GNU software can.+#+# This file is free software; you can redistribute it and/or modify+# it under the terms of the GNU General Public License as published by+# the Free Software Foundation; either version 2 of the License, or+# (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU General Public License for more details.+#+# You should have received a copy of the GNU General Public License+# along with this program; if not, write to the Free Software+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA+# 02110-1301, USA.+#+# As a special exception to the GNU General Public License, if you+# distribute this file as part of a program that contains a+# configuration script generated by Autoconf, you may include it under+# the same distribution terms that you use for the rest of that program.+++# Please send patches to <config-patches@gnu.org>.  Submit a context+# diff and a properly formatted ChangeLog entry.+#+# Configuration subroutine to validate and canonicalize a configuration type.+# Supply the specified configuration type as an argument.+# If it is invalid, we print an error message on stderr and exit with code 1.+# Otherwise, we print the canonical config type on stdout and succeed.++# This file is supposed to be the same for all GNU packages+# and recognize all the CPU types, system types and aliases+# that are meaningful with *any* GNU software.+# Each package is responsible for reporting which valid configurations+# it does not support.  The user should be able to distinguish+# a failure to support a valid configuration from a meaningless+# configuration.++# The goal of this file is to map all the various variations of a given+# machine specification into a single specification in the form:+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM+# or in some cases, the newer four-part form:+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM+# It is wrong to echo any other type of specification.++me=`echo "$0" | sed -e 's,.*/,,'`++usage="\+Usage: $0 [OPTION] CPU-MFR-OPSYS+       $0 [OPTION] ALIAS++Canonicalize a configuration name.++Operation modes:+  -h, --help         print this help, then exit+  -t, --time-stamp   print date of last modification, then exit+  -v, --version      print version number, then exit++Report bugs and patches to <config-patches@gnu.org>."++version="\+GNU config.sub ($timestamp)++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005+Free Software Foundation, Inc.++This is free software; see the source for copying conditions.  There is NO+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."++help="+Try \`$me --help' for more information."++# Parse command line+while test $# -gt 0 ; do+  case $1 in+    --time-stamp | --time* | -t )+       echo "$timestamp" ; exit ;;+    --version | -v )+       echo "$version" ; exit ;;+    --help | --h* | -h )+       echo "$usage"; exit ;;+    -- )     # Stop option processing+       shift; break ;;+    - )	# Use stdin as input.+       break ;;+    -* )+       echo "$me: invalid option $1$help"+       exit 1 ;;++    *local*)+       # First pass through any local machine types.+       echo $1+       exit ;;++    * )+       break ;;+  esac+done++case $# in+ 0) echo "$me: missing argument$help" >&2+    exit 1;;+ 1) ;;+ *) echo "$me: too many arguments$help" >&2+    exit 1;;+esac++# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).+# Here we must recognize all the valid KERNEL-OS combinations.+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`+case $maybe_os in+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \+  storm-chaos* | os2-emx* | rtmk-nova*)+    os=-$maybe_os+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`+    ;;+  *)+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`+    if [ $basic_machine != $1 ]+    then os=`echo $1 | sed 's/.*-/-/'`+    else os=; fi+    ;;+esac++### Let's recognize common machines as not being operating systems so+### that things like config.sub decstation-3100 work.  We also+### recognize some manufacturers as not being operating systems, so we+### can provide default operating systems below.+case $os in+	-sun*os*)+		# Prevent following clause from handling this invalid input.+		;;+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \+	-apple | -axis | -knuth | -cray)+		os=+		basic_machine=$1+		;;+	-sim | -cisco | -oki | -wec | -winbond)+		os=+		basic_machine=$1+		;;+	-scout)+		;;+	-wrs)+		os=-vxworks+		basic_machine=$1+		;;+	-chorusos*)+		os=-chorusos+		basic_machine=$1+		;;+ 	-chorusrdb)+ 		os=-chorusrdb+		basic_machine=$1+ 		;;+	-hiux*)+		os=-hiuxwe2+		;;+	-sco6)+		os=-sco5v6+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco5)+		os=-sco3.2v5+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco4)+		os=-sco3.2v4+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco3.2.[4-9]*)+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco3.2v[4-9]*)+		# Don't forget version if it is 3.2v4 or newer.+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco5v6*)+		# Don't forget version if it is 3.2v4 or newer.+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco*)+		os=-sco3.2v2+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-udk*)+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-isc)+		os=-isc2.2+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-clix*)+		basic_machine=clipper-intergraph+		;;+	-isc*)+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-lynx*)+		os=-lynxos+		;;+	-ptx*)+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`+		;;+	-windowsnt*)+		os=`echo $os | sed -e 's/windowsnt/winnt/'`+		;;+	-psos*)+		os=-psos+		;;+	-mint | -mint[0-9]*)+		basic_machine=m68k-atari+		os=-mint+		;;+esac++# Decode aliases for certain CPU-COMPANY combinations.+case $basic_machine in+	# Recognize the basic CPU types without company name.+	# Some are omitted here because they have special meanings below.+	1750a | 580 \+	| a29k \+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \+	| am33_2.0 \+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \+	| bfin \+	| c4x | clipper \+	| d10v | d30v | dlx | dsp16xx \+	| fr30 | frv \+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \+	| i370 | i860 | i960 | ia64 \+	| ip2k | iq2000 \+	| m32c | m32r | m32rle | m68000 | m68k | m88k \+	| maxq | mb | microblaze | mcore \+	| mips | mipsbe | mipseb | mipsel | mipsle \+	| mips16 \+	| mips64 | mips64el \+	| mips64vr | mips64vrel \+	| mips64orion | mips64orionel \+	| mips64vr4100 | mips64vr4100el \+	| mips64vr4300 | mips64vr4300el \+	| mips64vr5000 | mips64vr5000el \+	| mips64vr5900 | mips64vr5900el \+	| mipsisa32 | mipsisa32el \+	| mipsisa32r2 | mipsisa32r2el \+	| mipsisa64 | mipsisa64el \+	| mipsisa64r2 | mipsisa64r2el \+	| mipsisa64sb1 | mipsisa64sb1el \+	| mipsisa64sr71k | mipsisa64sr71kel \+	| mipstx39 | mipstx39el \+	| mn10200 | mn10300 \+	| mt \+	| msp430 \+	| nios | nios2 \+	| ns16k | ns32k \+	| or32 \+	| pdp10 | pdp11 | pj | pjl \+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \+	| pyramid \+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \+	| sh64 | sh64le \+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \+	| spu | strongarm \+	| tahoe | thumb | tic4x | tic80 | tron \+	| v850 | v850e \+	| we32k \+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \+	| z8k)+		basic_machine=$basic_machine-unknown+		;;+	m6811 | m68hc11 | m6812 | m68hc12)+		# Motorola 68HC11/12.+		basic_machine=$basic_machine-unknown+		os=-none+		;;+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)+		;;+	ms1)+		basic_machine=mt-unknown+		;;++	# We use `pc' rather than `unknown'+	# because (1) that's what they normally are, and+	# (2) the word "unknown" tends to confuse beginning users.+	i*86 | x86_64)+	  basic_machine=$basic_machine-pc+	  ;;+	# Object if more than one company name word.+	*-*-*)+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2+		exit 1+		;;+	# Recognize the basic CPU types with company name.+	580-* \+	| a29k-* \+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \+	| avr-* | avr32-* \+	| bfin-* | bs2000-* \+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \+	| clipper-* | craynv-* | cydra-* \+	| d10v-* | d30v-* | dlx-* \+	| elxsi-* \+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \+	| h8300-* | h8500-* \+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \+	| i*86-* | i860-* | i960-* | ia64-* \+	| ip2k-* | iq2000-* \+	| m32c-* | m32r-* | m32rle-* \+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \+	| m88110-* | m88k-* | maxq-* | mcore-* \+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \+	| mips16-* \+	| mips64-* | mips64el-* \+	| mips64vr-* | mips64vrel-* \+	| mips64orion-* | mips64orionel-* \+	| mips64vr4100-* | mips64vr4100el-* \+	| mips64vr4300-* | mips64vr4300el-* \+	| mips64vr5000-* | mips64vr5000el-* \+	| mips64vr5900-* | mips64vr5900el-* \+	| mipsisa32-* | mipsisa32el-* \+	| mipsisa32r2-* | mipsisa32r2el-* \+	| mipsisa64-* | mipsisa64el-* \+	| mipsisa64r2-* | mipsisa64r2el-* \+	| mipsisa64sb1-* | mipsisa64sb1el-* \+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \+	| mipstx39-* | mipstx39el-* \+	| mmix-* \+	| mt-* \+	| msp430-* \+	| nios-* | nios2-* \+	| none-* | np1-* | ns16k-* | ns32k-* \+	| orion-* \+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \+	| pyramid-* \+	| romp-* | rs6000-* \+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \+	| sparclite-* \+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \+	| tahoe-* | thumb-* \+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \+	| tron-* \+	| v850-* | v850e-* | vax-* \+	| we32k-* \+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \+	| xstormy16-* | xtensa-* \+	| ymp-* \+	| z8k-*)+		;;+	# Recognize the various machine names and aliases which stand+	# for a CPU type and a company and sometimes even an OS.+	386bsd)+		basic_machine=i386-unknown+		os=-bsd+		;;+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)+		basic_machine=m68000-att+		;;+	3b*)+		basic_machine=we32k-att+		;;+	a29khif)+		basic_machine=a29k-amd+		os=-udi+		;;+    	abacus)+		basic_machine=abacus-unknown+		;;+	adobe68k)+		basic_machine=m68010-adobe+		os=-scout+		;;+	alliant | fx80)+		basic_machine=fx80-alliant+		;;+	altos | altos3068)+		basic_machine=m68k-altos+		;;+	am29k)+		basic_machine=a29k-none+		os=-bsd+		;;+	amd64)+		basic_machine=x86_64-pc+		;;+	amd64-*)+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	amdahl)+		basic_machine=580-amdahl+		os=-sysv+		;;+	amiga | amiga-*)+		basic_machine=m68k-unknown+		;;+	amigaos | amigados)+		basic_machine=m68k-unknown+		os=-amigaos+		;;+	amigaunix | amix)+		basic_machine=m68k-unknown+		os=-sysv4+		;;+	apollo68)+		basic_machine=m68k-apollo+		os=-sysv+		;;+	apollo68bsd)+		basic_machine=m68k-apollo+		os=-bsd+		;;+	aux)+		basic_machine=m68k-apple+		os=-aux+		;;+	balance)+		basic_machine=ns32k-sequent+		os=-dynix+		;;+	c90)+		basic_machine=c90-cray+		os=-unicos+		;;+	convex-c1)+		basic_machine=c1-convex+		os=-bsd+		;;+	convex-c2)+		basic_machine=c2-convex+		os=-bsd+		;;+	convex-c32)+		basic_machine=c32-convex+		os=-bsd+		;;+	convex-c34)+		basic_machine=c34-convex+		os=-bsd+		;;+	convex-c38)+		basic_machine=c38-convex+		os=-bsd+		;;+	cray | j90)+		basic_machine=j90-cray+		os=-unicos+		;;+	craynv)+		basic_machine=craynv-cray+		os=-unicosmp+		;;+	cr16c)+		basic_machine=cr16c-unknown+		os=-elf+		;;+	crds | unos)+		basic_machine=m68k-crds+		;;+	crisv32 | crisv32-* | etraxfs*)+		basic_machine=crisv32-axis+		;;+	cris | cris-* | etrax*)+		basic_machine=cris-axis+		;;+	crx)+		basic_machine=crx-unknown+		os=-elf+		;;+	da30 | da30-*)+		basic_machine=m68k-da30+		;;+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)+		basic_machine=mips-dec+		;;+	decsystem10* | dec10*)+		basic_machine=pdp10-dec+		os=-tops10+		;;+	decsystem20* | dec20*)+		basic_machine=pdp10-dec+		os=-tops20+		;;+	delta | 3300 | motorola-3300 | motorola-delta \+	      | 3300-motorola | delta-motorola)+		basic_machine=m68k-motorola+		;;+	delta88)+		basic_machine=m88k-motorola+		os=-sysv3+		;;+	djgpp)+		basic_machine=i586-pc+		os=-msdosdjgpp+		;;+	dpx20 | dpx20-*)+		basic_machine=rs6000-bull+		os=-bosx+		;;+	dpx2* | dpx2*-bull)+		basic_machine=m68k-bull+		os=-sysv3+		;;+	ebmon29k)+		basic_machine=a29k-amd+		os=-ebmon+		;;+	elxsi)+		basic_machine=elxsi-elxsi+		os=-bsd+		;;+	encore | umax | mmax)+		basic_machine=ns32k-encore+		;;+	es1800 | OSE68k | ose68k | ose | OSE)+		basic_machine=m68k-ericsson+		os=-ose+		;;+	fx2800)+		basic_machine=i860-alliant+		;;+	genix)+		basic_machine=ns32k-ns+		;;+	gmicro)+		basic_machine=tron-gmicro+		os=-sysv+		;;+	go32)+		basic_machine=i386-pc+		os=-go32+		;;+	h3050r* | hiux*)+		basic_machine=hppa1.1-hitachi+		os=-hiuxwe2+		;;+	h8300hms)+		basic_machine=h8300-hitachi+		os=-hms+		;;+	h8300xray)+		basic_machine=h8300-hitachi+		os=-xray+		;;+	h8500hms)+		basic_machine=h8500-hitachi+		os=-hms+		;;+	harris)+		basic_machine=m88k-harris+		os=-sysv3+		;;+	hp300-*)+		basic_machine=m68k-hp+		;;+	hp300bsd)+		basic_machine=m68k-hp+		os=-bsd+		;;+	hp300hpux)+		basic_machine=m68k-hp+		os=-hpux+		;;+	hp3k9[0-9][0-9] | hp9[0-9][0-9])+		basic_machine=hppa1.0-hp+		;;+	hp9k2[0-9][0-9] | hp9k31[0-9])+		basic_machine=m68000-hp+		;;+	hp9k3[2-9][0-9])+		basic_machine=m68k-hp+		;;+	hp9k6[0-9][0-9] | hp6[0-9][0-9])+		basic_machine=hppa1.0-hp+		;;+	hp9k7[0-79][0-9] | hp7[0-79][0-9])+		basic_machine=hppa1.1-hp+		;;+	hp9k78[0-9] | hp78[0-9])+		# FIXME: really hppa2.0-hp+		basic_machine=hppa1.1-hp+		;;+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)+		# FIXME: really hppa2.0-hp+		basic_machine=hppa1.1-hp+		;;+	hp9k8[0-9][13679] | hp8[0-9][13679])+		basic_machine=hppa1.1-hp+		;;+	hp9k8[0-9][0-9] | hp8[0-9][0-9])+		basic_machine=hppa1.0-hp+		;;+	hppa-next)+		os=-nextstep3+		;;+	hppaosf)+		basic_machine=hppa1.1-hp+		os=-osf+		;;+	hppro)+		basic_machine=hppa1.1-hp+		os=-proelf+		;;+	i370-ibm* | ibm*)+		basic_machine=i370-ibm+		;;+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?+	i*86v32)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-sysv32+		;;+	i*86v4*)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-sysv4+		;;+	i*86v)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-sysv+		;;+	i*86sol2)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-solaris2+		;;+	i386mach)+		basic_machine=i386-mach+		os=-mach+		;;+	i386-vsta | vsta)+		basic_machine=i386-unknown+		os=-vsta+		;;+	iris | iris4d)+		basic_machine=mips-sgi+		case $os in+		    -irix*)+			;;+		    *)+			os=-irix4+			;;+		esac+		;;+	isi68 | isi)+		basic_machine=m68k-isi+		os=-sysv+		;;+	m88k-omron*)+		basic_machine=m88k-omron+		;;+	magnum | m3230)+		basic_machine=mips-mips+		os=-sysv+		;;+	merlin)+		basic_machine=ns32k-utek+		os=-sysv+		;;+	mingw32)+		basic_machine=i386-pc+		os=-mingw32+		;;+	miniframe)+		basic_machine=m68000-convergent+		;;+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)+		basic_machine=m68k-atari+		os=-mint+		;;+	mips3*-*)+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`+		;;+	mips3*)+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown+		;;+	monitor)+		basic_machine=m68k-rom68k+		os=-coff+		;;+	morphos)+		basic_machine=powerpc-unknown+		os=-morphos+		;;+	msdos)+		basic_machine=i386-pc+		os=-msdos+		;;+	ms1-*)+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`+		;;+	mvs)+		basic_machine=i370-ibm+		os=-mvs+		;;+	ncr3000)+		basic_machine=i486-ncr+		os=-sysv4+		;;+	netbsd386)+		basic_machine=i386-unknown+		os=-netbsd+		;;+	netwinder)+		basic_machine=armv4l-rebel+		os=-linux+		;;+	news | news700 | news800 | news900)+		basic_machine=m68k-sony+		os=-newsos+		;;+	news1000)+		basic_machine=m68030-sony+		os=-newsos+		;;+	news-3600 | risc-news)+		basic_machine=mips-sony+		os=-newsos+		;;+	necv70)+		basic_machine=v70-nec+		os=-sysv+		;;+	next | m*-next )+		basic_machine=m68k-next+		case $os in+		    -nextstep* )+			;;+		    -ns2*)+		      os=-nextstep2+			;;+		    *)+		      os=-nextstep3+			;;+		esac+		;;+	nh3000)+		basic_machine=m68k-harris+		os=-cxux+		;;+	nh[45]000)+		basic_machine=m88k-harris+		os=-cxux+		;;+	nindy960)+		basic_machine=i960-intel+		os=-nindy+		;;+	mon960)+		basic_machine=i960-intel+		os=-mon960+		;;+	nonstopux)+		basic_machine=mips-compaq+		os=-nonstopux+		;;+	np1)+		basic_machine=np1-gould+		;;+	nsr-tandem)+		basic_machine=nsr-tandem+		;;+	op50n-* | op60c-*)+		basic_machine=hppa1.1-oki+		os=-proelf+		;;+	openrisc | openrisc-*)+		basic_machine=or32-unknown+		;;+	os400)+		basic_machine=powerpc-ibm+		os=-os400+		;;+	OSE68000 | ose68000)+		basic_machine=m68000-ericsson+		os=-ose+		;;+	os68k)+		basic_machine=m68k-none+		os=-os68k+		;;+	pa-hitachi)+		basic_machine=hppa1.1-hitachi+		os=-hiuxwe2+		;;+	paragon)+		basic_machine=i860-intel+		os=-osf+		;;+	pbd)+		basic_machine=sparc-tti+		;;+	pbb)+		basic_machine=m68k-tti+		;;+	pc532 | pc532-*)+		basic_machine=ns32k-pc532+		;;+	pc98)+		basic_machine=i386-pc+		;;+	pc98-*)+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentium | p5 | k5 | k6 | nexgen | viac3)+		basic_machine=i586-pc+		;;+	pentiumpro | p6 | 6x86 | athlon | athlon_*)+		basic_machine=i686-pc+		;;+	pentiumii | pentium2 | pentiumiii | pentium3)+		basic_machine=i686-pc+		;;+	pentium4)+		basic_machine=i786-pc+		;;+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentiumpro-* | p6-* | 6x86-* | athlon-*)+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentium4-*)+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pn)+		basic_machine=pn-gould+		;;+	power)	basic_machine=power-ibm+		;;+	ppc)	basic_machine=powerpc-unknown+		;;+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ppcle | powerpclittle | ppc-le | powerpc-little)+		basic_machine=powerpcle-unknown+		;;+	ppcle-* | powerpclittle-*)+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ppc64)	basic_machine=powerpc64-unknown+		;;+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)+		basic_machine=powerpc64le-unknown+		;;+	ppc64le-* | powerpc64little-*)+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ps2)+		basic_machine=i386-ibm+		;;+	pw32)+		basic_machine=i586-unknown+		os=-pw32+		;;+	rdos)+		basic_machine=i386-pc+		os=-rdos+		;;+	rom68k)+		basic_machine=m68k-rom68k+		os=-coff+		;;+	rm[46]00)+		basic_machine=mips-siemens+		;;+	rtpc | rtpc-*)+		basic_machine=romp-ibm+		;;+	s390 | s390-*)+		basic_machine=s390-ibm+		;;+	s390x | s390x-*)+		basic_machine=s390x-ibm+		;;+	sa29200)+		basic_machine=a29k-amd+		os=-udi+		;;+	sb1)+		basic_machine=mipsisa64sb1-unknown+		;;+	sb1el)+		basic_machine=mipsisa64sb1el-unknown+		;;+	sei)+		basic_machine=mips-sei+		os=-seiux+		;;+	sequent)+		basic_machine=i386-sequent+		;;+	sh)+		basic_machine=sh-hitachi+		os=-hms+		;;+	sh64)+		basic_machine=sh64-unknown+		;;+	sparclite-wrs | simso-wrs)+		basic_machine=sparclite-wrs+		os=-vxworks+		;;+	sps7)+		basic_machine=m68k-bull+		os=-sysv2+		;;+	spur)+		basic_machine=spur-unknown+		;;+	st2000)+		basic_machine=m68k-tandem+		;;+	stratus)+		basic_machine=i860-stratus+		os=-sysv4+		;;+	sun2)+		basic_machine=m68000-sun+		;;+	sun2os3)+		basic_machine=m68000-sun+		os=-sunos3+		;;+	sun2os4)+		basic_machine=m68000-sun+		os=-sunos4+		;;+	sun3os3)+		basic_machine=m68k-sun+		os=-sunos3+		;;+	sun3os4)+		basic_machine=m68k-sun+		os=-sunos4+		;;+	sun4os3)+		basic_machine=sparc-sun+		os=-sunos3+		;;+	sun4os4)+		basic_machine=sparc-sun+		os=-sunos4+		;;+	sun4sol2)+		basic_machine=sparc-sun+		os=-solaris2+		;;+	sun3 | sun3-*)+		basic_machine=m68k-sun+		;;+	sun4)+		basic_machine=sparc-sun+		;;+	sun386 | sun386i | roadrunner)+		basic_machine=i386-sun+		;;+	sv1)+		basic_machine=sv1-cray+		os=-unicos+		;;+	symmetry)+		basic_machine=i386-sequent+		os=-dynix+		;;+	t3e)+		basic_machine=alphaev5-cray+		os=-unicos+		;;+	t90)+		basic_machine=t90-cray+		os=-unicos+		;;+	tic54x | c54x*)+		basic_machine=tic54x-unknown+		os=-coff+		;;+	tic55x | c55x*)+		basic_machine=tic55x-unknown+		os=-coff+		;;+	tic6x | c6x*)+		basic_machine=tic6x-unknown+		os=-coff+		;;+	tx39)+		basic_machine=mipstx39-unknown+		;;+	tx39el)+		basic_machine=mipstx39el-unknown+		;;+	toad1)+		basic_machine=pdp10-xkl+		os=-tops20+		;;+	tower | tower-32)+		basic_machine=m68k-ncr+		;;+	tpf)+		basic_machine=s390x-ibm+		os=-tpf+		;;+	udi29k)+		basic_machine=a29k-amd+		os=-udi+		;;+	ultra3)+		basic_machine=a29k-nyu+		os=-sym1+		;;+	v810 | necv810)+		basic_machine=v810-nec+		os=-none+		;;+	vaxv)+		basic_machine=vax-dec+		os=-sysv+		;;+	vms)+		basic_machine=vax-dec+		os=-vms+		;;+	vpp*|vx|vx-*)+		basic_machine=f301-fujitsu+		;;+	vxworks960)+		basic_machine=i960-wrs+		os=-vxworks+		;;+	vxworks68)+		basic_machine=m68k-wrs+		os=-vxworks+		;;+	vxworks29k)+		basic_machine=a29k-wrs+		os=-vxworks+		;;+	w65*)+		basic_machine=w65-wdc+		os=-none+		;;+	w89k-*)+		basic_machine=hppa1.1-winbond+		os=-proelf+		;;+	xbox)+		basic_machine=i686-pc+		os=-mingw32+		;;+	xps | xps100)+		basic_machine=xps100-honeywell+		;;+	ymp)+		basic_machine=ymp-cray+		os=-unicos+		;;+	z8k-*-coff)+		basic_machine=z8k-unknown+		os=-sim+		;;+	none)+		basic_machine=none-none+		os=-none+		;;++# Here we handle the default manufacturer of certain CPU types.  It is in+# some cases the only manufacturer, in others, it is the most popular.+	w89k)+		basic_machine=hppa1.1-winbond+		;;+	op50n)+		basic_machine=hppa1.1-oki+		;;+	op60c)+		basic_machine=hppa1.1-oki+		;;+	romp)+		basic_machine=romp-ibm+		;;+	mmix)+		basic_machine=mmix-knuth+		;;+	rs6000)+		basic_machine=rs6000-ibm+		;;+	vax)+		basic_machine=vax-dec+		;;+	pdp10)+		# there are many clones, so DEC is not a safe bet+		basic_machine=pdp10-unknown+		;;+	pdp11)+		basic_machine=pdp11-dec+		;;+	we32k)+		basic_machine=we32k-att+		;;+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)+		basic_machine=sh-unknown+		;;+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)+		basic_machine=sparc-sun+		;;+	cydra)+		basic_machine=cydra-cydrome+		;;+	orion)+		basic_machine=orion-highlevel+		;;+	orion105)+		basic_machine=clipper-highlevel+		;;+	mac | mpw | mac-mpw)+		basic_machine=m68k-apple+		;;+	pmac | pmac-mpw)+		basic_machine=powerpc-apple+		;;+	*-unknown)+		# Make sure to match an already-canonicalized machine name.+		;;+	*)+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2+		exit 1+		;;+esac++# Here we canonicalize certain aliases for manufacturers.+case $basic_machine in+	*-digital*)+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`+		;;+	*-commodore*)+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`+		;;+	*)+		;;+esac++# Decode manufacturer-specific aliases for certain operating systems.++if [ x"$os" != x"" ]+then+case $os in+        # First match some system type aliases+        # that might get confused with valid system types.+	# -solaris* is a basic system type, with this one exception.+	-solaris1 | -solaris1.*)+		os=`echo $os | sed -e 's|solaris1|sunos4|'`+		;;+	-solaris)+		os=-solaris2+		;;+	-svr4*)+		os=-sysv4+		;;+	-unixware*)+		os=-sysv4.2uw+		;;+	-gnu/linux*)+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`+		;;+	# First accept the basic system types.+	# The portable systems comes first.+	# Each alternative MUST END IN A *, to match a version number.+	# -sysv* is not here because it comes later, after sysvr4.+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \+	      | -aos* \+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \+	      | -openbsd* | -solidbsd* \+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \+	      | -chorusos* | -chorusrdb* \+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \+	      | -uxpv* | -beos* | -mpeix* | -udk* \+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \+	      | -skyos* | -haiku* | -rdos* | -toppers*)+	# Remember, each alternative MUST END IN *, to match a version number.+		;;+	-qnx*)+		case $basic_machine in+		    x86-* | i*86-*)+			;;+		    *)+			os=-nto$os+			;;+		esac+		;;+	-nto-qnx*)+		;;+	-nto*)+		os=`echo $os | sed -e 's|nto|nto-qnx|'`+		;;+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)+		;;+	-mac*)+		os=`echo $os | sed -e 's|mac|macos|'`+		;;+	-linux-dietlibc)+		os=-linux-dietlibc+		;;+	-linux*)+		os=`echo $os | sed -e 's|linux|linux-gnu|'`+		;;+	-sunos5*)+		os=`echo $os | sed -e 's|sunos5|solaris2|'`+		;;+	-sunos6*)+		os=`echo $os | sed -e 's|sunos6|solaris3|'`+		;;+	-opened*)+		os=-openedition+		;;+        -os400*)+		os=-os400+		;;+	-wince*)+		os=-wince+		;;+	-osfrose*)+		os=-osfrose+		;;+	-osf*)+		os=-osf+		;;+	-utek*)+		os=-bsd+		;;+	-dynix*)+		os=-bsd+		;;+	-acis*)+		os=-aos+		;;+	-atheos*)+		os=-atheos+		;;+	-syllable*)+		os=-syllable+		;;+	-386bsd)+		os=-bsd+		;;+	-ctix* | -uts*)+		os=-sysv+		;;+	-nova*)+		os=-rtmk-nova+		;;+	-ns2 )+		os=-nextstep2+		;;+	-nsk*)+		os=-nsk+		;;+	# Preserve the version number of sinix5.+	-sinix5.*)+		os=`echo $os | sed -e 's|sinix|sysv|'`+		;;+	-sinix*)+		os=-sysv4+		;;+        -tpf*)+		os=-tpf+		;;+	-triton*)+		os=-sysv3+		;;+	-oss*)+		os=-sysv3+		;;+	-svr4)+		os=-sysv4+		;;+	-svr3)+		os=-sysv3+		;;+	-sysvr4)+		os=-sysv4+		;;+	# This must come after -sysvr4.+	-sysv*)+		;;+	-ose*)+		os=-ose+		;;+	-es1800*)+		os=-ose+		;;+	-xenix)+		os=-xenix+		;;+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)+		os=-mint+		;;+	-aros*)+		os=-aros+		;;+	-kaos*)+		os=-kaos+		;;+	-zvmoe)+		os=-zvmoe+		;;+	-none)+		;;+	*)+		# Get rid of the `-' at the beginning of $os.+		os=`echo $os | sed 's/[^-]*-//'`+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2+		exit 1+		;;+esac+else++# Here we handle the default operating systems that come with various machines.+# The value should be what the vendor currently ships out the door with their+# machine or put another way, the most popular os provided with the machine.++# Note that if you're going to try to match "-MANUFACTURER" here (say,+# "-sun"), then you have to tell the case statement up towards the top+# that MANUFACTURER isn't an operating system.  Otherwise, code above+# will signal an error saying that MANUFACTURER isn't an operating+# system, and we'll never get to this point.++case $basic_machine in+        spu-*)+		os=-elf+		;;+	*-acorn)+		os=-riscix1.2+		;;+	arm*-rebel)+		os=-linux+		;;+	arm*-semi)+		os=-aout+		;;+        c4x-* | tic4x-*)+        	os=-coff+		;;+	# This must come before the *-dec entry.+	pdp10-*)+		os=-tops20+		;;+	pdp11-*)+		os=-none+		;;+	*-dec | vax-*)+		os=-ultrix4.2+		;;+	m68*-apollo)+		os=-domain+		;;+	i386-sun)+		os=-sunos4.0.2+		;;+	m68000-sun)+		os=-sunos3+		# This also exists in the configure program, but was not the+		# default.+		# os=-sunos4+		;;+	m68*-cisco)+		os=-aout+		;;+	mips*-cisco)+		os=-elf+		;;+	mips*-*)+		os=-elf+		;;+	or32-*)+		os=-coff+		;;+	*-tti)	# must be before sparc entry or we get the wrong os.+		os=-sysv3+		;;+	sparc-* | *-sun)+		os=-sunos4.1.1+		;;+	*-be)+		os=-beos+		;;+	*-haiku)+		os=-haiku+		;;+	*-ibm)+		os=-aix+		;;+    	*-knuth)+		os=-mmixware+		;;+	*-wec)+		os=-proelf+		;;+	*-winbond)+		os=-proelf+		;;+	*-oki)+		os=-proelf+		;;+	*-hp)+		os=-hpux+		;;+	*-hitachi)+		os=-hiux+		;;+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)+		os=-sysv+		;;+	*-cbm)+		os=-amigaos+		;;+	*-dg)+		os=-dgux+		;;+	*-dolphin)+		os=-sysv3+		;;+	m68k-ccur)+		os=-rtu+		;;+	m88k-omron*)+		os=-luna+		;;+	*-next )+		os=-nextstep+		;;+	*-sequent)+		os=-ptx+		;;+	*-crds)+		os=-unos+		;;+	*-ns)+		os=-genix+		;;+	i370-*)+		os=-mvs+		;;+	*-next)+		os=-nextstep3+		;;+	*-gould)+		os=-sysv+		;;+	*-highlevel)+		os=-bsd+		;;+	*-encore)+		os=-bsd+		;;+	*-sgi)+		os=-irix+		;;+	*-siemens)+		os=-sysv4+		;;+	*-masscomp)+		os=-rtu+		;;+	f30[01]-fujitsu | f700-fujitsu)+		os=-uxpv+		;;+	*-rom68k)+		os=-coff+		;;+	*-*bug)+		os=-coff+		;;+	*-apple)+		os=-macos+		;;+	*-atari*)+		os=-mint+		;;+	*)+		os=-none+		;;+esac+fi++# Here we handle the case where we know the os, and the CPU type, but not the+# manufacturer.  We pick the logical manufacturer.+vendor=unknown+case $basic_machine in+	*-unknown)+		case $os in+			-riscix*)+				vendor=acorn+				;;+			-sunos*)+				vendor=sun+				;;+			-aix*)+				vendor=ibm+				;;+			-beos*)+				vendor=be+				;;+			-hpux*)+				vendor=hp+				;;+			-mpeix*)+				vendor=hp+				;;+			-hiux*)+				vendor=hitachi+				;;+			-unos*)+				vendor=crds+				;;+			-dgux*)+				vendor=dg+				;;+			-luna*)+				vendor=omron+				;;+			-genix*)+				vendor=ns+				;;+			-mvs* | -opened*)+				vendor=ibm+				;;+			-os400*)+				vendor=ibm+				;;+			-ptx*)+				vendor=sequent+				;;+			-tpf*)+				vendor=ibm+				;;+			-vxsim* | -vxworks* | -windiss*)+				vendor=wrs+				;;+			-aux*)+				vendor=apple+				;;+			-hms*)+				vendor=hitachi+				;;+			-mpw* | -macos*)+				vendor=apple+				;;+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)+				vendor=atari+				;;+			-vos*)+				vendor=stratus+				;;+		esac+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`+		;;+esac++echo $basic_machine$os+exit++# Local variables:+# eval: (add-hook 'write-file-hooks 'time-stamp)+# time-stamp-start: "timestamp='"+# time-stamp-format: "%:y-%02m-%02d"+# time-stamp-end: "'"+# End:
configure view
@@ -664,6 +664,21 @@ EGREP BUILD_PACKAGE_BOOL EXTRA_LIBS+build+build_cpu+build_vendor+build_os+host+host_cpu+host_vendor+host_os+target+target_cpu+target_vendor+target_os+PTHREAD_CFLAGS+PTHREAD_LDFLAGS+PTHREAD_LIBS LIBOBJS LTLIBOBJS' ac_subst_files=''@@ -1234,6 +1249,11 @@ _ACEOF    cat <<\_ACEOF++System types:+  --build=BUILD     configure for building on BUILD [guessed]+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]+  --target=TARGET   configure for building compilers for TARGET [HOST] _ACEOF fi @@ -5165,7 +5185,76 @@ done  +# Avoid adding rt if absent or unneeded+{ echo "$as_me:$LINENO: checking for shm_open in -lrt" >&5+echo $ECHO_N "checking for shm_open in -lrt... $ECHO_C" >&6; }+if test "${ac_cv_lib_rt_shm_open+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  ac_check_lib_save_LIBS=$LIBS+LIBS="-lrt  $LIBS"+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */ +/* Override any GCC internal prototype to avoid an error.+   Use char because int might match the return type of a GCC+   builtin and then its argument prototype would still apply.  */+#ifdef __cplusplus+extern "C"+#endif+char shm_open ();+int+main ()+{+return shm_open ();+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext conftest$ac_exeext+if { (ac_try="$ac_link"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+  (eval "$ac_link") 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && {+	 test -z "$ac_c_werror_flag" ||+	 test ! -s conftest.err+       } && test -s conftest$ac_exeext &&+       $as_test_x conftest$ac_exeext; then+  ac_cv_lib_rt_shm_open=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++	ac_cv_lib_rt_shm_open=no+fi++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \+      conftest$ac_exeext conftest.$ac_ext+LIBS=$ac_check_lib_save_LIBS+fi+{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_shm_open" >&5+echo "${ECHO_T}$ac_cv_lib_rt_shm_open" >&6; }+if test $ac_cv_lib_rt_shm_open = yes; then+  EXTRA_LIBS="$EXTRA_LIBS rt" CFLAGS="$CFLAGS -lrt"+fi+++# needs -lrt on linux++ for ac_func in shm_open shm_unlink do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`@@ -6292,6 +6381,178 @@   +# -{l,}pthread goo+ac_aux_dir=+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do+  if test -f "$ac_dir/install-sh"; then+    ac_aux_dir=$ac_dir+    ac_install_sh="$ac_aux_dir/install-sh -c"+    break+  elif test -f "$ac_dir/install.sh"; then+    ac_aux_dir=$ac_dir+    ac_install_sh="$ac_aux_dir/install.sh -c"+    break+  elif test -f "$ac_dir/shtool"; then+    ac_aux_dir=$ac_dir+    ac_install_sh="$ac_aux_dir/shtool install -c"+    break+  fi+done+if test -z "$ac_aux_dir"; then+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}+   { (exit 1); exit 1; }; }+fi++# These three variables are undocumented and unsupported,+# and are intended to be withdrawn in a future Autoconf release.+# They can cause serious problems if a builder's source tree is in a directory+# whose full name contains unusual characters.+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.+++# Make sure we can run config.sub.+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||+  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}+   { (exit 1); exit 1; }; }++{ echo "$as_me:$LINENO: checking build system type" >&5+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }+if test "${ac_cv_build+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  ac_build_alias=$build_alias+test "x$ac_build_alias" = x &&+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`+test "x$ac_build_alias" = x &&+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}+   { (exit 1); exit 1; }; }+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||+  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}+   { (exit 1); exit 1; }; }++fi+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5+echo "${ECHO_T}$ac_cv_build" >&6; }+case $ac_cv_build in+*-*-*) ;;+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5+echo "$as_me: error: invalid value of canonical build" >&2;}+   { (exit 1); exit 1; }; };;+esac+build=$ac_cv_build+ac_save_IFS=$IFS; IFS='-'+set x $ac_cv_build+shift+build_cpu=$1+build_vendor=$2+shift; shift+# Remember, the first character of IFS is used to create $*,+# except with old shells:+build_os=$*+IFS=$ac_save_IFS+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac+++{ echo "$as_me:$LINENO: checking host system type" >&5+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }+if test "${ac_cv_host+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test "x$host_alias" = x; then+  ac_cv_host=$ac_cv_build+else+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||+    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}+   { (exit 1); exit 1; }; }+fi++fi+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5+echo "${ECHO_T}$ac_cv_host" >&6; }+case $ac_cv_host in+*-*-*) ;;+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5+echo "$as_me: error: invalid value of canonical host" >&2;}+   { (exit 1); exit 1; }; };;+esac+host=$ac_cv_host+ac_save_IFS=$IFS; IFS='-'+set x $ac_cv_host+shift+host_cpu=$1+host_vendor=$2+shift; shift+# Remember, the first character of IFS is used to create $*,+# except with old shells:+host_os=$*+IFS=$ac_save_IFS+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac+++{ echo "$as_me:$LINENO: checking target system type" >&5+echo $ECHO_N "checking target system type... $ECHO_C" >&6; }+if test "${ac_cv_target+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test "x$target_alias" = x; then+  ac_cv_target=$ac_cv_host+else+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||+    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}+   { (exit 1); exit 1; }; }+fi++fi+{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5+echo "${ECHO_T}$ac_cv_target" >&6; }+case $ac_cv_target in+*-*-*) ;;+*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5+echo "$as_me: error: invalid value of canonical target" >&2;}+   { (exit 1); exit 1; }; };;+esac+target=$ac_cv_target+ac_save_IFS=$IFS; IFS='-'+set x $ac_cv_target+shift+target_cpu=$1+target_vendor=$2+shift; shift+# Remember, the first character of IFS is used to create $*,+# except with old shells:+target_os=$*+IFS=$ac_save_IFS+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac+++# The aliases save the names the user supplied, while $host etc.+# will get canonicalized.+test -n "$target_alias" &&+  test "$program_prefix$program_suffix$program_transform_name" = \+    NONENONEs,x,x, &&+  program_prefix=${target_alias}-++PTHREAD_CFLAGS=+PTHREAD_LDFLAGS=+PTHREAD_LIBS=+case "$host_os" in+openbsd*)+	PTHREAD_CFLAGS=-pthread+	PTHREAD_LDFLAGS=-pthread+	;;+esac++++ ac_config_files="$ac_config_files unix.buildinfo"  @@ -6959,11 +7220,26 @@ EGREP!$EGREP$ac_delim BUILD_PACKAGE_BOOL!$BUILD_PACKAGE_BOOL$ac_delim EXTRA_LIBS!$EXTRA_LIBS$ac_delim+build!$build$ac_delim+build_cpu!$build_cpu$ac_delim+build_vendor!$build_vendor$ac_delim+build_os!$build_os$ac_delim+host!$host$ac_delim+host_cpu!$host_cpu$ac_delim+host_vendor!$host_vendor$ac_delim+host_os!$host_os$ac_delim+target!$target$ac_delim+target_cpu!$target_cpu$ac_delim+target_vendor!$target_vendor$ac_delim+target_os!$target_os$ac_delim+PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim+PTHREAD_LDFLAGS!$PTHREAD_LDFLAGS$ac_delim+PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF -  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 51; then+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then     break   elif $ac_last_try; then     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
configure.ac view
@@ -27,6 +27,11 @@ AC_CHECK_FUNCS([nanosleep]) AC_CHECK_FUNCS([ptsname]) AC_CHECK_FUNCS([setitimer])++# Avoid adding rt if absent or unneeded+AC_CHECK_LIB(rt, shm_open, [EXTRA_LIBS="$EXTRA_LIBS rt" CFLAGS="$CFLAGS -lrt"])++# needs -lrt on linux AC_CHECK_FUNCS([shm_open shm_unlink])  FP_CHECK_CONSTS([SIGABRT SIGALRM SIGBUS SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIGPOLL SIGPROF SIGSYS SIGTRAP SIGURG SIGVTALRM SIGXCPU SIGXFSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK], [@@ -193,6 +198,22 @@ # Avoid adding dl if absent or unneeded AC_CHECK_LIB(dl, dlopen, [EXTRA_LIBS="$EXTRA_LIBS dl"]) AC_SUBST([EXTRA_LIBS])++# -{l,}pthread goo+AC_CANONICAL_TARGET++PTHREAD_CFLAGS=+PTHREAD_LDFLAGS=+PTHREAD_LIBS=+case "$host_os" in+openbsd*)+	PTHREAD_CFLAGS=-pthread+	PTHREAD_LDFLAGS=-pthread+	;;+esac+AC_SUBST(PTHREAD_CFLAGS)+AC_SUBST(PTHREAD_LDFLAGS)+AC_SUBST(PTHREAD_LIBS)  AC_CONFIG_FILES([unix.buildinfo]) 
include/HsUnix.h view
@@ -93,27 +93,19 @@  extern char **environ; -#ifndef INLINE-# if defined(__GNUC__)-#  define INLINE extern inline-# else-#  define INLINE inline-# endif-#endif--INLINE int __hsunix_wifexited   (int stat) { return WIFEXITED(stat); }-INLINE int __hsunix_wexitstatus (int stat) { return WEXITSTATUS(stat); }-INLINE int __hsunix_wifsignaled (int stat) { return WIFSIGNALED(stat); }-INLINE int __hsunix_wtermsig    (int stat) { return WTERMSIG(stat); }-INLINE int __hsunix_wifstopped  (int stat) { return WIFSTOPPED(stat); }-INLINE int __hsunix_wstopsig    (int stat) { return WSTOPSIG(stat); }+int __hsunix_wifexited   (int stat);+int __hsunix_wexitstatus (int stat);+int __hsunix_wifsignaled (int stat);+int __hsunix_wtermsig    (int stat);+int __hsunix_wifstopped  (int stat);+int __hsunix_wstopsig    (int stat);  #ifdef HAVE_RTLDNEXT-INLINE void *__hsunix_rtldNext (void) {return RTLD_NEXT;} +void *__hsunix_rtldNext (void); #endif  #ifdef HAVE_RTLDDEFAULT-INLINE void *__hsunix_rtldDefault (void) {return RTLD_DEFAULT;} +void *__hsunix_rtldDefault (void); #endif  /* O_SYNC doesn't exist on Mac OS X and (at least some versions of) FreeBSD,@@ -123,94 +115,46 @@ #endif  #ifdef SIGINFO-INLINE int __hsunix_SIGINFO()	{ return SIGINFO; }+int __hsunix_SIGINFO(); #endif #ifdef SIGWINCH-INLINE int __hsunix_SIGWINCH()	{ return SIGWINCH; }+int __hsunix_SIGWINCH(); #endif  // lstat is a macro on some platforms, so we need a wrapper:-INLINE int __hsunix_lstat(const char *path, struct stat *buf) -{ -    return lstat(path,buf);-}+int __hsunix_lstat(const char *path, struct stat *buf);  // lstat is a macro on some platforms, so we need a wrapper:-INLINE int __hsunix_mknod(const char *pathname, mode_t mode, dev_t dev)-{ -    return mknod(pathname,mode,dev);-}+int __hsunix_mknod(const char *pathname, mode_t mode, dev_t dev);  #ifdef HAVE_PTSNAME // I cannot figure out how to make the definitions of the following // functions visible in <stdlib.h> on Linux.  But these definitions // follow the POSIX specs, and everything links and runs. -INLINE char *__hsunix_ptsname(int fd)-{-    extern char *ptsname(int);-    return ptsname(fd);-}--INLINE int __hsunix_grantpt(int fd)-{-    extern int grantpt(int);-    return grantpt(fd);-}--INLINE int __hsunix_unlockpt(int fd)-{-    extern int unlockpt(int);-    return unlockpt(fd);-}+char *__hsunix_ptsname(int fd);+int __hsunix_grantpt(int fd);+int __hsunix_unlockpt(int fd); #endif  // push a SVR4 STREAMS module; do nothing if STREAMS not available-INLINE int __hsunix_push_module(int fd, const char *module)-{-#if defined(I_PUSH) && !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC)-    return ioctl(fd, I_PUSH, module);-#else-    return 0;-#endif-}+int __hsunix_push_module(int fd, const char *module);  #if !defined(__MINGW32__)-INLINE int __hscore_mkstemp(char *filetemplate) {-    return (mkstemp(filetemplate));-}+int __hscore_mkstemp(char *filetemplate); #endif  #if !defined(__MINGW32__) && !defined(irix_HOST_OS)-INLINE int __hscore_getrlimit(int resource, struct rlimit *rlim) {-    return (getrlimit(resource, rlim));-}--INLINE int __hscore_setrlimit(int resource, struct rlimit *rlim) {-    return (setrlimit(resource, rlim));-}+int __hscore_getrlimit(int resource, struct rlimit *rlim);+int __hscore_setrlimit(int resource, struct rlimit *rlim); #endif -INLINE int __hsunix_unsetenv(const char *name)-{-#ifdef UNSETENV_RETURNS_VOID-    unsetenv(name);-    return 0;-#else-    return unsetenv(name);-#endif-}+int __hsunix_unsetenv(const char *name);  /* A size that will contain many path names, but not necessarily all  * (PATH_MAX is not defined on systems with unlimited path length,  * e.g. the Hurd).  */-INLINE HsInt __hsunix_long_path_size() {-#ifdef PATH_MAX-    return PATH_MAX;-#else-    return 4096;-#endif-}+HsInt __hsunix_long_path_size();  #endif
include/HsUnixConfig.h view
@@ -191,10 +191,10 @@ #define HAVE_SETITIMER 1  /* Define to 1 if you have the `shm_open' function. */-/* #undef HAVE_SHM_OPEN */+#define HAVE_SHM_OPEN 1  /* Define to 1 if you have the `shm_unlink' function. */-/* #undef HAVE_SHM_UNLINK */+#define HAVE_SHM_UNLINK 1  /* Define to 1 if you have the <signal.h> header file. */ #define HAVE_SIGNAL_H 1
+ install-sh view
@@ -0,0 +1,507 @@+#!/bin/sh+# install - install a program, script, or datafile++scriptversion=2006-10-14.15++# This originates from X11R5 (mit/util/scripts/install.sh), which was+# later released in X11R6 (xc/config/util/install.sh) with the+# following copyright and license.+#+# Copyright (C) 1994 X Consortium+#+# Permission is hereby granted, free of charge, to any person obtaining a copy+# of this software and associated documentation files (the "Software"), to+# deal in the Software without restriction, including without limitation the+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or+# sell copies of the Software, and to permit persons to whom the Software is+# furnished to do so, subject to the following conditions:+#+# The above copyright notice and this permission notice shall be included in+# all copies or substantial portions of the Software.+#+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.+#+# Except as contained in this notice, the name of the X Consortium shall not+# be used in advertising or otherwise to promote the sale, use or other deal-+# ings in this Software without prior written authorization from the X Consor-+# tium.+#+#+# FSF changes to this file are in the public domain.+#+# Calling this script install-sh is preferred over install.sh, to prevent+# `make' implicit rules from creating a file called install from it+# when there is no Makefile.+#+# This script is compatible with the BSD install script, but was written+# from scratch.++nl='+'+IFS=" ""	$nl"++# set DOITPROG to echo to test this script++# Don't use :- since 4.3BSD and earlier shells don't like it.+doit="${DOITPROG-}"+if test -z "$doit"; then+  doit_exec=exec+else+  doit_exec=$doit+fi++# Put in absolute file names if you don't have them in your path;+# or use environment vars.++mvprog="${MVPROG-mv}"+cpprog="${CPPROG-cp}"+chmodprog="${CHMODPROG-chmod}"+chownprog="${CHOWNPROG-chown}"+chgrpprog="${CHGRPPROG-chgrp}"+stripprog="${STRIPPROG-strip}"+rmprog="${RMPROG-rm}"+mkdirprog="${MKDIRPROG-mkdir}"++posix_glob=+posix_mkdir=++# Desired mode of installed file.+mode=0755++chmodcmd=$chmodprog+chowncmd=+chgrpcmd=+stripcmd=+rmcmd="$rmprog -f"+mvcmd="$mvprog"+src=+dst=+dir_arg=+dstarg=+no_target_directory=++usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE+   or: $0 [OPTION]... SRCFILES... DIRECTORY+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...+   or: $0 [OPTION]... -d DIRECTORIES...++In the 1st form, copy SRCFILE to DSTFILE.+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.+In the 4th, create DIRECTORIES.++Options:+-c         (ignored)+-d         create directories instead of installing files.+-g GROUP   $chgrpprog installed files to GROUP.+-m MODE    $chmodprog installed files to MODE.+-o USER    $chownprog installed files to USER.+-s         $stripprog installed files.+-t DIRECTORY  install into DIRECTORY.+-T         report an error if DSTFILE is a directory.+--help     display this help and exit.+--version  display version info and exit.++Environment variables override the default commands:+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG+"++while test $# -ne 0; do+  case $1 in+    -c) shift+        continue;;++    -d) dir_arg=true+        shift+        continue;;++    -g) chgrpcmd="$chgrpprog $2"+        shift+        shift+        continue;;++    --help) echo "$usage"; exit $?;;++    -m) mode=$2+        shift+        shift+	case $mode in+	  *' '* | *'	'* | *'+'*	  | *'*'* | *'?'* | *'['*)+	    echo "$0: invalid mode: $mode" >&2+	    exit 1;;+	esac+        continue;;++    -o) chowncmd="$chownprog $2"+        shift+        shift+        continue;;++    -s) stripcmd=$stripprog+        shift+        continue;;++    -t) dstarg=$2+	shift+	shift+	continue;;++    -T) no_target_directory=true+	shift+	continue;;++    --version) echo "$0 $scriptversion"; exit $?;;++    --)	shift+	break;;++    -*)	echo "$0: invalid option: $1" >&2+	exit 1;;++    *)  break;;+  esac+done++if test $# -ne 0 && test -z "$dir_arg$dstarg"; then+  # When -d is used, all remaining arguments are directories to create.+  # When -t is used, the destination is already specified.+  # Otherwise, the last argument is the destination.  Remove it from $@.+  for arg+  do+    if test -n "$dstarg"; then+      # $@ is not empty: it contains at least $arg.+      set fnord "$@" "$dstarg"+      shift # fnord+    fi+    shift # arg+    dstarg=$arg+  done+fi++if test $# -eq 0; then+  if test -z "$dir_arg"; then+    echo "$0: no input file specified." >&2+    exit 1+  fi+  # It's OK to call `install-sh -d' without argument.+  # This can happen when creating conditional directories.+  exit 0+fi++if test -z "$dir_arg"; then+  trap '(exit $?); exit' 1 2 13 15++  # Set umask so as not to create temps with too-generous modes.+  # However, 'strip' requires both read and write access to temps.+  case $mode in+    # Optimize common cases.+    *644) cp_umask=133;;+    *755) cp_umask=22;;++    *[0-7])+      if test -z "$stripcmd"; then+	u_plus_rw=+      else+	u_plus_rw='% 200'+      fi+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;+    *)+      if test -z "$stripcmd"; then+	u_plus_rw=+      else+	u_plus_rw=,u+rw+      fi+      cp_umask=$mode$u_plus_rw;;+  esac+fi++for src+do+  # Protect names starting with `-'.+  case $src in+    -*) src=./$src ;;+  esac++  if test -n "$dir_arg"; then+    dst=$src+    dstdir=$dst+    test -d "$dstdir"+    dstdir_status=$?+  else++    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command+    # might cause directories to be created, which would be especially bad+    # if $src (and thus $dsttmp) contains '*'.+    if test ! -f "$src" && test ! -d "$src"; then+      echo "$0: $src does not exist." >&2+      exit 1+    fi++    if test -z "$dstarg"; then+      echo "$0: no destination specified." >&2+      exit 1+    fi++    dst=$dstarg+    # Protect names starting with `-'.+    case $dst in+      -*) dst=./$dst ;;+    esac++    # If destination is a directory, append the input filename; won't work+    # if double slashes aren't ignored.+    if test -d "$dst"; then+      if test -n "$no_target_directory"; then+	echo "$0: $dstarg: Is a directory" >&2+	exit 1+      fi+      dstdir=$dst+      dst=$dstdir/`basename "$src"`+      dstdir_status=0+    else+      # Prefer dirname, but fall back on a substitute if dirname fails.+      dstdir=`+	(dirname "$dst") 2>/dev/null ||+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	     X"$dst" : 'X\(//\)[^/]' \| \+	     X"$dst" : 'X\(//\)$' \| \+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||+	echo X"$dst" |+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{+		   s//\1/+		   q+		 }+		 /^X\(\/\/\)[^/].*/{+		   s//\1/+		   q+		 }+		 /^X\(\/\/\)$/{+		   s//\1/+		   q+		 }+		 /^X\(\/\).*/{+		   s//\1/+		   q+		 }+		 s/.*/./; q'+      `++      test -d "$dstdir"+      dstdir_status=$?+    fi+  fi++  obsolete_mkdir_used=false++  if test $dstdir_status != 0; then+    case $posix_mkdir in+      '')+	# Create intermediate dirs using mode 755 as modified by the umask.+	# This is like FreeBSD 'install' as of 1997-10-28.+	umask=`umask`+	case $stripcmd.$umask in+	  # Optimize common cases.+	  *[2367][2367]) mkdir_umask=$umask;;+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;++	  *[0-7])+	    mkdir_umask=`expr $umask + 22 \+	      - $umask % 100 % 40 + $umask % 20 \+	      - $umask % 10 % 4 + $umask % 2+	    `;;+	  *) mkdir_umask=$umask,go-w;;+	esac++	# With -d, create the new directory with the user-specified mode.+	# Otherwise, rely on $mkdir_umask.+	if test -n "$dir_arg"; then+	  mkdir_mode=-m$mode+	else+	  mkdir_mode=+	fi++	posix_mkdir=false+	case $umask in+	  *[123567][0-7][0-7])+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.+	    ;;+	  *)+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0++	    if (umask $mkdir_umask &&+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1+	    then+	      if test -z "$dir_arg" || {+		   # Check for POSIX incompatibilities with -m.+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or+		   # other-writeable bit of parent directory when it shouldn't.+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`+		   case $ls_ld_tmpdir in+		     d????-?r-*) different_mode=700;;+		     d????-?--*) different_mode=755;;+		     *) false;;+		   esac &&+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"+		   }+		 }+	      then posix_mkdir=:+	      fi+	      rmdir "$tmpdir/d" "$tmpdir"+	    else+	      # Remove any dirs left behind by ancient mkdir implementations.+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null+	    fi+	    trap '' 0;;+	esac;;+    esac++    if+      $posix_mkdir && (+	umask $mkdir_umask &&+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"+      )+    then :+    else++      # The umask is ridiculous, or mkdir does not conform to POSIX,+      # or it failed possibly due to a race condition.  Create the+      # directory the slow way, step by step, checking for races as we go.++      case $dstdir in+	/*) prefix=/ ;;+	-*) prefix=./ ;;+	*)  prefix= ;;+      esac++      case $posix_glob in+        '')+	  if (set -f) 2>/dev/null; then+	    posix_glob=true+	  else+	    posix_glob=false+	  fi ;;+      esac++      oIFS=$IFS+      IFS=/+      $posix_glob && set -f+      set fnord $dstdir+      shift+      $posix_glob && set +f+      IFS=$oIFS++      prefixes=++      for d+      do+	test -z "$d" && continue++	prefix=$prefix$d+	if test -d "$prefix"; then+	  prefixes=+	else+	  if $posix_mkdir; then+	    (umask=$mkdir_umask &&+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break+	    # Don't fail if two instances are running concurrently.+	    test -d "$prefix" || exit 1+	  else+	    case $prefix in+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;+	      *) qprefix=$prefix;;+	    esac+	    prefixes="$prefixes '$qprefix'"+	  fi+	fi+	prefix=$prefix/+      done++      if test -n "$prefixes"; then+	# Don't fail if two instances are running concurrently.+	(umask $mkdir_umask &&+	 eval "\$doit_exec \$mkdirprog $prefixes") ||+	  test -d "$dstdir" || exit 1+	obsolete_mkdir_used=true+      fi+    fi+  fi++  if test -n "$dir_arg"; then+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1+  else++    # Make a couple of temp file names in the proper directory.+    dsttmp=$dstdir/_inst.$$_+    rmtmp=$dstdir/_rm.$$_++    # Trap to clean up those temp files at exit.+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0++    # Copy the file name to the temp name.+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&++    # and set any options; do chmod last to preserve setuid bits.+    #+    # If any of these fail, we abort the whole thing.  If we want to+    # ignore errors from any of these, just make sure not to ignore+    # errors from the above "$doit $cpprog $src $dsttmp" command.+    #+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \+      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \+      && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&++    # Now rename the file to the real destination.+    { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \+      || {+	   # The rename failed, perhaps because mv can't rename something else+	   # to itself, or perhaps because mv is so ancient that it does not+	   # support -f.++	   # Now remove or move aside any old file at destination location.+	   # We try this two ways since rm can't unlink itself on some+	   # systems and the destination file might be busy for other+	   # reasons.  In this case, the final cleanup might fail but the new+	   # file should still install successfully.+	   {+	     if test -f "$dst"; then+	       $doit $rmcmd -f "$dst" 2>/dev/null \+	       || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \+		     && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\+	       || {+		 echo "$0: cannot unlink or rename $dst" >&2+		 (exit 1); exit 1+	       }+	     else+	       :+	     fi+	   } &&++	   # Now rename the file to the real destination.+	   $doit $mvcmd "$dsttmp" "$dst"+	 }+    } || exit 1++    trap '' 0+  fi+done++# Local variables:+# eval: (add-hook 'write-file-hooks 'time-stamp)+# time-stamp-start: "scriptversion="+# time-stamp-format: "%:y-%02m-%02d.%02H"+# time-stamp-end: "$"+# End:
unix.buildinfo.in view
@@ -1,2 +1,4 @@ buildable: @BUILD_PACKAGE_BOOL@-extra-libraries: @EXTRA_LIBS@+cc-options: @PTHREAD_CFLAGS@+ld-options: @PTHREAD_LDFLAGS@+extra-libraries: @EXTRA_LIBS@ @PTHREAD_LIBS@
unix.cabal view
@@ -1,5 +1,5 @@ name:		unix-version:	2.3.1.0+version:	2.3.2.0 license:	BSD3 license-file:	LICENSE maintainer:	libraries@haskell.org@@ -36,6 +36,7 @@                 System.Posix.Semaphore                 System.Posix.SharedMem extra-source-files:+        config.guess config.sub install-sh 		configure.ac configure 		unix.buildinfo.in include/HsUnixConfig.h.in 		include/HsUnix.h@@ -43,7 +44,7 @@ 		config.log config.status autom4te.cache 		unix.buildinfo include/HsUnixConfig.h build-depends:	base-extensions:	CPP, ForeignFunctionInterface+extensions:	CPP, ForeignFunctionInterface, EmptyDataDecls include-dirs: 	include includes:       HsUnix.h execvpe.h install-includes: