1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
TOP=..
include $(TOP)/mk/boilerplate.mk
# -----------------------------------------------------------------------------
SUBDIRS = cbits include
ALL_DIRS = \
Control \
Control/Concurrent \
Control/Parallel \
Control/Monad \
Control/Monad/ST \
Data \
Data/Generics \
Data/Array \
Data/Array/IO \
Data/STRef \
Debug \
Foreign \
Foreign/C \
Foreign/Marshal \
GHC \
System \
System/Console \
System/Mem \
System/IO \
System/Posix \
Text \
Text/Html \
Text/PrettyPrint \
Text/ParserCombinators \
Text/Regex \
Text/Show \
Text/Read
PACKAGE = base
SRC_HC_OPTS += -fglasgow-exts -cpp -Iinclude -\#include HsBase.h
SRC_HSC2HS_OPTS += -Iinclude -I$(FPTOOLS_TOP)/ghc/includes
# If there is no system-supplied POSIX regex library, use our own
ifneq "$(HavePosixRegex)" "YES"
# Make sure we can get hold of regex.h
SRC_HC_OPTS += -Icbits/regex
SRC_HSC2HS_OPTS += -Icbits/regex
endif
# -----------------------------------------------------------------------------
# Per-module flags
# ESSENTIAL, for getting reasonable performance from the I/O library:
SRC_HC_OPTS += -funbox-strict-fields
# -----------------------------------------------------------------------------
# PrimOpWrappers
# These two lines are required for pre-processing ghc/compiler/prelude/primops.txt
SRC_CPP_OPTS += -I$(GHC_INCLUDE_DIR)
SRC_CPP_OPTS += ${GhcCppOpts}
ifeq "$(BootingFromHc)" "YES"
GHC/PrimopWrappers.hs:
touch GHC/PrimopWrappers.hs
else
GHC/PrimopWrappers.hs: $(GHC_COMPILER_DIR)/prelude/primops.txt
@$(RM) $@
$(GHC_GENPRIMOP) --make-haskell-wrappers < $< > $@
endif
boot :: GHC/PrimopWrappers.hs
EXTRA_SRCS += GHC/PrimopWrappers.hs
CLEAN_FILES += GHC/PrimopWrappers.hs
# -----------------------------------------------------------------------------
STUBOBJS += \
Control/Concurrent_stub.$(way_)o
CLEAN_FILES += $(STUBOBJS) \
Control/Concurrent_stub.[ch]
#-----------------------------------------------------------------------------
# Building the library for GHCi
#
# The procedure differs from that in fptools/mk/target.mk in one way:
# (*) on Win32 we must split it into two, because a single .o file can't
# have more than 65536 relocations in it [due to a bug in the GNU
# linker.]
OBJECT_FILEFORMAT=unknown
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
OBJECT_FILEFORMAT=PEi
endif
ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
OBJECT_FILEFORMAT=PEi
endif
ifeq "$(OBJECT_FILEFORMAT)" "PEi"
# Turn off standard rule which creates HSbase.o from LIBOBJS.
DONT_WANT_STD_GHCI_LIB_RULE=YES
GHCI_LIBOBJS = $(HS_OBJS)
INSTALL_LIBS += HSbase1.o HSbase2.o HSbase3.o
endif # OBJECT_FILEFORMAT = PEi
# -----------------------------------------------------------------------------
# Doc building with Haddock
EXCLUDED_HADDOCK_SRCS = \
GHC/PrimopWrappers.hs \
GHC/PArr.hs
SRC_HADDOCK_OPTS += -t "Haskell Hierarchical Libraries ($(PACKAGE) package)" \
--no-implicit-prelude
# -----------------------------------------------------------------------------
include $(TOP)/mk/target.mk
ifeq "$(OBJECT_FILEFORMAT)" "PEi"
HSbase.o : $(GHCI_LIBOBJS)
$(LD) -r $(LD_X) -o HSbase1.o $(filter GHC/%, $(GHCI_LIBOBJS))
$(LD) -r $(LD_X) -o HSbase2.o $(filter Text/%, $(GHCI_LIBOBJS))
$(LD) -r $(LD_X) -o HSbase3.o $(filter-out GHC/% Text/%, $(GHCI_LIBOBJS))
@touch HSbase.o
endif # OBJECT_FILEFORMAT = PEi
|