/* ----------------------------------------------------------------------------- * $Id: Stg.h,v 1.5 1999/01/26 11:12:57 simonm Exp $ * * Top-level include file for everything STG-ish. * * This file is included *automatically* by all .hc files. * * ---------------------------------------------------------------------------*/ #ifndef STG_H #define STG_H #ifndef NON_POSIX_SOURCE #define _POSIX_SOURCE #endif /* Configuration */ #include "config.h" #ifdef __HUGS__ /* vile hack till the GHC folks come on board */ #include "options.h" #endif /* ToDo: Set this flag properly: COMPILER and INTERPRETER should not be mutually exclusive. */ #ifndef INTERPRETER #define COMPILER 1 #endif /* bit macros */ #define BITS_PER_BYTE 8 #define BITS_IN(x) (BITS_PER_BYTE * sizeof(x)) /* ----------------------------------------------------------------------------- Assertions and Debuggery -------------------------------------------------------------------------- */ #ifndef DEBUG #define ASSERT(predicate) /* nothing */ #else void _stgAssert (char *, unsigned int); #define ASSERT(predicate) \ if (predicate) \ /*null*/; \ else \ _stgAssert(__FILE__, __LINE__) #endif /* DEBUG */ /* ----------------------------------------------------------------------------- Include everything STG-ish -------------------------------------------------------------------------- */ /* Global type definitions*/ #include "StgTypes.h" /* Global constaints */ #include "Constants.h" /* Profiling information */ #include "Profiling.h" /* Storage format definitions */ #include "Closures.h" #include "InfoTables.h" #include "TSO.h" /* STG/Optimised-C related stuff */ #include "MachRegs.h" #include "Regs.h" #include "TailCalls.h" /** * Added by Ian McDonald 7/5/98 * XXX The position of this code is very * important - it must come after the * Regs.h include **/ #ifdef nemesis_TARGET_OS #define _NEMESIS_OS_ #ifndef __LANGUAGE_C #define __LANGUAGE_C #endif #include #endif /* these are all ANSI C headers */ #include #include #include #include #include #include #ifdef HAVE_SIGNAL_H #include #endif #ifdef HAVE_UNISTD_H #include #endif /* GNU mp library */ #include "gmp.h" /* Wired-in Prelude identifiers */ #include "Prelude.h" /* Storage Manager */ #include "StgStorage.h" /* Macros for STG/C code */ #include "ClosureMacros.h" #include "InfoMacros.h" #include "StgMacros.h" #include "StgProf.h" #include "PrimOps.h" #include "Updates.h" #include "StgTicky.h" #include "CCall.h" #include "Stable.h" /* Built-in entry points */ #include "StgMiscClosures.h" /* Runtime-system hooks */ #include "Hooks.h" /* Misc stuff without a home */ extern char **prog_argv; /* so we can get at these from Haskell */ extern int prog_argc; extern char **environ; /* Creating and destroying an adjustor thunk. I cannot make myself create a separate .h file for these two (sof.) */ extern void* createAdjustor(int cconv, StgStablePtr hptr, StgFunPtr wptr); extern void freeHaskellFunctionPtr(void* ptr); #endif /* STG_H */