Skip to content
  • Julian Seward's avatar
    [project @ 2001-08-14 13:40:07 by sewardj] · bc5c8021
    Julian Seward authored
    Change the story about POSIX headers in C compilation.
    
    Until now, all C code in the RTS and library cbits has by default been
    compiled with settings for POSIXness enabled, that is:
       #define _POSIX_SOURCE   1
       #define _POSIX_C_SOURCE 199309L
       #define _ISOC9X_SOURCE
    If you wanted to negate this, you'd have to define NON_POSIX_SOURCE
    before including headers.
    
    This scheme has some bad effects:
    
    * It means that ccall-unfoldings exported via interfaces from a
      module compiled with -DNON_POSIX_SOURCE may not compile when
      imported into a module which does not -DNON_POSIX_SOURCE.
    
    * It overlaps with the feature tests we do with autoconf.
    
    * It seems to have caused borkage in the Solaris builds for some
      considerable period of time.
    
    The New Way is:
    
    * The default changes to not-being-in-Posix mode.
    
    * If you want to force a C file into Posix mode, #include as
      the **first** include the new file ghc/includes/PosixSource.h.
      Most of the RTS C sources have this include now.
    
    * NON_POSIX_SOURCE is almost totally expunged.  Unfortunately
      we have to retain some vestiges of it in ghc/compiler so that
      modules compiled via C on Solaris using older compilers don't
      break.
    bc5c8021