Arch(..),
OS(..),
- defaultTargetPlatform
+ defaultTargetPlatform,
+ osElfTarget
)
where
-- about what instruction set extensions an architecture might support.
--
data Arch
- = ArchAlpha
- | ArchX86
+ = ArchX86
| ArchX86_64
| ArchPPC
| ArchPPC_64
= OSUnknown
| OSLinux
| OSDarwin
- | OSSolaris
+ | OSSolaris2
| OSMinGW32
+ | OSFreeBSD
+ | OSOpenBSD
deriving (Show, Eq)
+-- | This predicates tells us whether the OS supports ELF-like shared libraries.
+osElfTarget :: OS -> Bool
+osElfTarget OSLinux = True
+osElfTarget OSFreeBSD = True
+osElfTarget OSOpenBSD = True
+osElfTarget OSSolaris2 = True
+osElfTarget _ = False
+
-- | This is the target platform as far as the #ifdefs are concerned.
-- These are set in includes/ghcplatform.h by the autoconf scripts
defaultTargetPlatform :: Platform
-- | Move the evil TARGET_ARCH #ifdefs into Haskell land.
defaultTargetArch :: Arch
-#if alpha_TARGET_ARCH
-defaultTargetArch = ArchAlpha
-#elif i386_TARGET_ARCH
+#if i386_TARGET_ARCH
defaultTargetArch = ArchX86
#elif x86_64_TARGET_ARCH
defaultTargetArch = ArchX86_64
defaultTargetOS = OSLinux
#elif darwin_TARGET_OS
defaultTargetOS = OSDarwin
-#elif solaris_TARGET_OS
-defaultTargetOS = OSSolaris
+#elif solaris2_TARGET_OS
+defaultTargetOS = OSSolaris2
#elif mingw32_TARGET_OS
defaultTargetOS = OSMinGW32
+#elif freebsd_TARGET_OS
+defaultTargetOS = OSFreeBSD
+#elif openbsd_TARGET_OS
+defaultTargetOS = OSOpenBSD
#else
defaultTargetOS = OSUnknown
#endif