/* The RTS is just another package! */

#include "ghcconfig.h"
#include "rts/Config.h"
#include "MachDeps.h"

name:           rts
version:        1.0.2
id:             rts
key:            rts
license:        BSD-3-Clause
maintainer:     glasgow-haskell-users@haskell.org
exposed:        True

exposed-modules:
hidden-modules:

import-dirs:

#if defined(INSTALLING)
library-dirs:           LIB_DIR"/rts" FFI_LIB_DIR LIBDW_LIB_DIR
#else /* !INSTALLING */
library-dirs:           TOP"/rts/dist/build" FFI_LIB_DIR LIBDW_LIB_DIR
#endif

hs-libraries:   "HSrts" FFI_LIB

extra-libraries:
#if defined(HAVE_LIBM)
                                "m"             /* for ldexp() */
#endif
#if defined(HAVE_LIBRT)
                              , "rt"
#endif
#if defined(HAVE_LIBDL)
                              , "dl"
#endif
#if defined(HAVE_SYSTEM_LIBFFI)
                              , "ffi"
#endif
#if HAVE_LIBNUMA
                              , "numa"
#endif
#if defined(mingw32_HOST_OS)
                              ,"wsock32"    /* for the linker */
                              ,"gdi32"      /* for the linker */
                              ,"winmm"      /* for the linker */
                              ,"dbghelp"    /* for crash dump */
                              ,"psapi"      /* for process information.  */
#endif
#if NEED_PTHREAD_LIB
                              , "pthread"   /* for pthread_getthreadid_np, pthread_create, etc. */
#endif
#if defined(DEBUG) && defined(HAVE_LIBBFD)
                              ,"bfd", "iberty"  /* for debugging */
#endif
#if defined(HAVE_LIBMINGWEX)
# if !defined(INSTALLING)                             /* Bundled Mingw is behind */
                              ,"mingwex"
# endif
#endif
#if USE_LIBDW
                             , "elf"
                             , "dw"             /* for backtraces */
#endif

#if defined(INSTALLING)
include-dirs:           INCLUDE_DIR FFI_INCLUDE_DIR
#else /* !INSTALLING */
include-dirs:           TOP"/rts/dist/build"
                        TOP"/includes"
                        TOP"/includes/dist-derivedconstants/header"
                        FFI_INCLUDE_DIR
                        LIBDW_INCLUDE_DIR
                        TOP"/includes/dist-install/build"
#endif

includes:               Stg.h
cc-options:

ld-options:
#if defined(LEADING_UNDERSCORE)

           "-Wl,-u,_base_GHCziTopHandler_runIO_closure"
         , "-Wl,-u,_base_GHCziTopHandler_runNonIO_closure"

         , "-Wl,-u,_ghczmprim_GHCziTuple_Z0T_closure"
         , "-Wl,-u,_ghczmprim_GHCziTypes_True_closure"
         , "-Wl,-u,_ghczmprim_GHCziTypes_False_closure"
         , "-Wl,-u,_base_GHCziPack_unpackCString_closure"
         , "-Wl,-u,_base_GHCziWeak_runFinalizzerBatch_closure"
         , "-Wl,-u,_base_GHCziIOziException_stackOverflow_closure"
         , "-Wl,-u,_base_GHCziIOziException_heapOverflow_closure"
         , "-Wl,-u,_base_GHCziIOziException_allocationLimitExceeded_closure"
         , "-Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnMVar_closure"
         , "-Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnSTM_closure"
         , "-Wl,-u,_base_GHCziIOziException_cannotCompactFunction_closure"
         , "-Wl,-u,_base_GHCziIOziException_cannotCompactPinned_closure"
         , "-Wl,-u,_base_GHCziIOziException_cannotCompactMutable_closure"
         , "-Wl,-u,_base_GHCziIOPort_doubleReadException_closure"
         , "-Wl,-u,_base_ControlziExceptionziBase_nonTermination_closure"
         , "-Wl,-u,_base_ControlziExceptionziBase_nestedAtomically_closure"
         , "-Wl,-u,_base_GHCziEventziThread_blockedOnBadFD_closure"
         , "-Wl,-u,_base_GHCziExceptionziType_divZZeroException_closure"
         , "-Wl,-u,_base_GHCziExceptionziType_underflowException_closure"
         , "-Wl,-u,_base_GHCziExceptionziType_overflowException_closure"
         , "-Wl,-u,_base_GHCziConcziSync_runSparks_closure"
         , "-Wl,-u,_base_GHCziConcziIO_ensureIOManagerIsRunning_closure"
         , "-Wl,-u,_base_GHCziConcziIO_interruptIOManager_closure"
         , "-Wl,-u,_base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure"
         , "-Wl,-u,_base_GHCziConcziSignal_runHandlersPtr_closure"
#if defined(mingw32_HOST_OS)
         , "-Wl,-u,_base_GHCziEventziWindows_processRemoteCompletion_closure"
#endif
         , "-Wl,-u,_base_GHCziTopHandler_flushStdHandles_closure"
         , "-Wl,-u,_base_GHCziTopHandler_runMainIO_closure"
         , "-Wl,-u,_ghczmprim_GHCziTypes_Czh_con_info"
         , "-Wl,-u,_ghczmprim_GHCziTypes_Izh_con_info"
         , "-Wl,-u,_ghczmprim_GHCziTypes_Fzh_con_info"
         , "-Wl,-u,_ghczmprim_GHCziTypes_Dzh_con_info"
         , "-Wl,-u,_ghczmprim_GHCziTypes_Wzh_con_info"
         , "-Wl,-u,_base_GHCziPtr_Ptr_con_info"
         , "-Wl,-u,_base_GHCziPtr_FunPtr_con_info"
         , "-Wl,-u,_base_GHCziInt_I8zh_con_info"
         , "-Wl,-u,_base_GHCziInt_I16zh_con_info"
         , "-Wl,-u,_base_GHCziInt_I32zh_con_info"
         , "-Wl,-u,_base_GHCziInt_I64zh_con_info"
         , "-Wl,-u,_base_GHCziWord_W8zh_con_info"
         , "-Wl,-u,_base_GHCziWord_W16zh_con_info"
         , "-Wl,-u,_base_GHCziWord_W32zh_con_info"
         , "-Wl,-u,_base_GHCziWord_W64zh_con_info"
         , "-Wl,-u,_base_GHCziStable_StablePtr_con_info"

         , "-Wl,-u,_hs_atomic_add8"
         , "-Wl,-u,_hs_atomic_add16"
         , "-Wl,-u,_hs_atomic_add32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomic_add64"
#endif
         , "-Wl,-u,_hs_atomic_sub8"
         , "-Wl,-u,_hs_atomic_sub16"
         , "-Wl,-u,_hs_atomic_sub32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomic_sub64"
#endif
         , "-Wl,-u,_hs_atomic_and8"
         , "-Wl,-u,_hs_atomic_and16"
         , "-Wl,-u,_hs_atomic_and32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomic_and64"
#endif
         , "-Wl,-u,_hs_atomic_nand8"
         , "-Wl,-u,_hs_atomic_nand16"
         , "-Wl,-u,_hs_atomic_nand32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomic_nand64"
#endif
         , "-Wl,-u,_hs_atomic_or8"
         , "-Wl,-u,_hs_atomic_or16"
         , "-Wl,-u,_hs_atomic_or32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomic_or64"
#endif
         , "-Wl,-u,_hs_atomic_xor8"
         , "-Wl,-u,_hs_atomic_xor16"
         , "-Wl,-u,_hs_atomic_xor32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomic_xor64"
#endif
         , "-Wl,-u,_hs_cmpxchg8"
         , "-Wl,-u,_hs_cmpxchg16"
         , "-Wl,-u,_hs_cmpxchg32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_cmpxchg64"
#endif
         , "-Wl,-u,_hs_xchg8"
         , "-Wl,-u,_hs_xchg16"
         , "-Wl,-u,_hs_xchg32"
         , "-Wl,-u,_hs_xchg64"
         , "-Wl,-u,_hs_atomicread8"
         , "-Wl,-u,_hs_atomicread16"
         , "-Wl,-u,_hs_atomicread32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomicread64"
#endif
         , "-Wl,-u,_hs_atomicwrite8"
         , "-Wl,-u,_hs_atomicwrite16"
         , "-Wl,-u,_hs_atomicwrite32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,_hs_atomicwrite64"
#endif
#if defined(DEBUG)
          /* This symbol is useful in gdb, but not referred to anywhere,
           * so we need to force it to be included in the binary. */
         , "-Wl,-u,_findPtr"
#endif
#else
           "-Wl,-u,base_GHCziTopHandler_runIO_closure"
         , "-Wl,-u,base_GHCziTopHandler_runNonIO_closure"

         , "-Wl,-u,ghczmprim_GHCziTuple_Z0T_closure"
         , "-Wl,-u,ghczmprim_GHCziTypes_True_closure"
         , "-Wl,-u,ghczmprim_GHCziTypes_False_closure"
         , "-Wl,-u,base_GHCziPack_unpackCString_closure"
         , "-Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure"
         , "-Wl,-u,base_GHCziIOziException_stackOverflow_closure"
         , "-Wl,-u,base_GHCziIOziException_heapOverflow_closure"
         , "-Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure"
         , "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure"
         , "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure"
         , "-Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure"
         , "-Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure"
         , "-Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure"
         , "-Wl,-u,base_GHCziIOPort_doubleReadException_closure"
         , "-Wl,-u,base_ControlziExceptionziBase_nonTermination_closure"
         , "-Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure"
         , "-Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure"
         , "-Wl,-u,base_GHCziExceptionziType_divZZeroException_closure"
         , "-Wl,-u,base_GHCziExceptionziType_underflowException_closure"
         , "-Wl,-u,base_GHCziExceptionziType_overflowException_closure"
         , "-Wl,-u,base_GHCziConcziSync_runSparks_closure"
         , "-Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure"
         , "-Wl,-u,base_GHCziConcziIO_interruptIOManager_closure"
         , "-Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure"
         , "-Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure"
#if defined(mingw32_HOST_OS)
         , "-Wl,-u,base_GHCziEventziWindows_processRemoteCompletion_closure"
#endif
         , "-Wl,-u,base_GHCziTopHandler_flushStdHandles_closure"
         , "-Wl,-u,base_GHCziTopHandler_runMainIO_closure"
         , "-Wl,-u,ghczmprim_GHCziTypes_Czh_con_info"
         , "-Wl,-u,ghczmprim_GHCziTypes_Izh_con_info"
         , "-Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info"
         , "-Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info"
         , "-Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info"
         , "-Wl,-u,base_GHCziPtr_Ptr_con_info"
         , "-Wl,-u,base_GHCziPtr_FunPtr_con_info"
         , "-Wl,-u,base_GHCziInt_I8zh_con_info"
         , "-Wl,-u,base_GHCziInt_I16zh_con_info"
         , "-Wl,-u,base_GHCziInt_I32zh_con_info"
         , "-Wl,-u,base_GHCziInt_I64zh_con_info"
         , "-Wl,-u,base_GHCziWord_W8zh_con_info"
         , "-Wl,-u,base_GHCziWord_W16zh_con_info"
         , "-Wl,-u,base_GHCziWord_W32zh_con_info"
         , "-Wl,-u,base_GHCziWord_W64zh_con_info"
         , "-Wl,-u,base_GHCziStable_StablePtr_con_info"

         , "-Wl,-u,hs_atomic_add8"
         , "-Wl,-u,hs_atomic_add16"
         , "-Wl,-u,hs_atomic_add32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomic_add64"
#endif
         , "-Wl,-u,hs_atomic_sub8"
         , "-Wl,-u,hs_atomic_sub16"
         , "-Wl,-u,hs_atomic_sub32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomic_sub64"
#endif
         , "-Wl,-u,hs_atomic_and8"
         , "-Wl,-u,hs_atomic_and16"
         , "-Wl,-u,hs_atomic_and32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomic_and64"
#endif
         , "-Wl,-u,hs_atomic_nand8"
         , "-Wl,-u,hs_atomic_nand16"
         , "-Wl,-u,hs_atomic_nand32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomic_nand64"
#endif
         , "-Wl,-u,hs_atomic_or8"
         , "-Wl,-u,hs_atomic_or16"
         , "-Wl,-u,hs_atomic_or32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomic_or64"
#endif
         , "-Wl,-u,hs_atomic_xor8"
         , "-Wl,-u,hs_atomic_xor16"
         , "-Wl,-u,hs_atomic_xor32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomic_xor64"
#endif
         , "-Wl,-u,hs_cmpxchg8"
         , "-Wl,-u,hs_cmpxchg16"
         , "-Wl,-u,hs_cmpxchg32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_cmpxchg64"
#endif
         , "-Wl,-u,hs_xchg8"
         , "-Wl,-u,hs_xchg16"
         , "-Wl,-u,hs_xchg32"
         , "-Wl,-u,hs_xchg64"
         , "-Wl,-u,hs_atomicread8"
         , "-Wl,-u,hs_atomicread16"
         , "-Wl,-u,hs_atomicread32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomicread64"
#endif
         , "-Wl,-u,hs_atomicwrite8"
         , "-Wl,-u,hs_atomicwrite16"
         , "-Wl,-u,hs_atomicwrite32"
#if WORD_SIZE_IN_BITS == 64
         , "-Wl,-u,hs_atomicwrite64"
#endif
#if defined(DEBUG)
          /* This symbol is useful in gdb, but not referred to anywhere,
           * so we need to force it to be included in the binary. */
         , "-Wl,-u,findPtr"
#endif
#endif

/*  Pick up static libraries in preference over dynamic if in earlier search
 *  path.  This is important to use the static gmp in preference on Mac OS.
 *  The used option is specific to the Darwin linker.
 */
#if defined(darwin_HOST_OS)
         , "-Wl,-search_paths_first"
#endif

#if defined(darwin_HOST_OS) && !defined(x86_64_HOST_ARCH) && !defined(aarch64_HOST_ARCH)
         , "-read_only_relocs", "warning"
#endif

framework-dirs:

haddock-interfaces:
haddock-html:
