blob: aef691dd1d02a5f7d440f46ad94200be009a02a3 (
plain)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
# -----------------------------------------------------------------------------
# $Id: bootstrap.mk,v 1.30 2004/02/04 10:00:43 simonmar Exp $
#
# Makefile rules for booting from .hc files without a driver.
#
# When booting from .hc files without a compiler installed, we don't have
# the benefit of the GHC driver to add all the magic options required to
# compile the .hc files, so we have to duplicate that functionality here.
# The result is unfortunately ugly, but we don't have another choice.
TOP_SAVED := $(TOP)
TOP:=$(TOP)/ghc
include $(TOP)/mk/version.mk
include $(TOP)/mk/paths.mk
# Reset TOP
TOP:=$(TOP_SAVED)
# -----------------------------------------------------------------------------
# Set the platform-specific options to send to the C compiler. These should
# match the list in machdepCCOpts in ghc/compiler/DriverFlags.hs.
#
PLATFORM_CC_OPTS =
PLATFORM_HC_BOOT_CC_OPTS =
ifeq "$(i386_TARGET_ARCH)" "1"
PLATFORM_CC_OPTS += -DDONT_WANT_WIN32_DLL_SUPPORT
PLATFORM_HC_BOOT_CC_OPTS += -fno-defer-pop -fomit-frame-pointer
endif
ifeq "$(hppa_TARGET_ARCH)" "1"
PLATFORM_CC_OPTS += -static -D_HPUX_SOURCE
endif
ifeq "$(powerpc_TARGET_ARCH)" "1"
PLATFORM_CC_OPTS += -static
PLATFORM_HC_BOOT_CC_OPTS += -finhibit-size-directive
endif
ifeq "$(rs6000_TARGET_ARCH)" "1"
PLATFORM_CC_OPTS += -static
PLATFORM_HC_BOOT_CC_OPTS += -finhibit-size-directive
endif
ifeq "$(mingw32_TARGET_OS)" "1"
PLATFORM_CC_OPTS += -mno-cygwin
endif
ifeq "$(alpha_TARGET_ARCH)" "1"
PLATFORM_CC_OPTS += -static -w
PLATFORM_HC_BOOT_CC_OPTS += -mieee
endif
ifeq "$(sparc_TARGET_ARCH)" "1"
PLATFORM_HC_BOOT_CC_OPTS += -w
endif
ifeq "$(BootingFromUnregisterisedHc)" "YES"
PLATFORM_HC_BOOT_CC_OPTS += -DNO_REGS -DUSE_MINIINTERPRETER
SRC_CC_OPTS += -DNO_REGS -DUSE_MINIINTERPRETER
# Add these flags to SRC_CC_OPTS too, because they need to be passed to the plain .c
# files in ghc/rts.
endif
PLATFORM_CC_OPTS += -D__GLASGOW_HASKELL__=$(ProjectVersionInt)
HC_BOOT_CC_OPTS = $(PLATFORM_HC_BOOT_CC_OPTS) $(PLATFORM_CC_OPTS) $(CC_OPTS)
SRC_CC_OPTS += -I$(FPTOOLS_TOP_ABS)/ghc/includes -I$(FPTOOLS_TOP_ABS)/libraries/base/include -I$(FPTOOLS_TOP_ABS)/libraries/unix/include -I$(FPTOOLS_TOP_ABS)/libraries/parsec/include
ifeq "$(GhcWithInterpreter)" "YES"
SRC_CC_OPTS += -I$(FPTOOLS_TOP_ABS)/libraries/readline/include
endif
# -----------------------------------------------------------------------------
# Linking: we have to give all the libraries explicitly.
ifeq "$(LeadingUnderscore)" "YES"
UNDERSCORE=_
else
UNDERSCORE=
endif
ifeq "$(HaveLibGmp)" "NO"
DASH_L_GHC_RTS_GMP_DIR=-L$(FPTOOLS_TOP_ABS)/ghc/rts/gmp
endif
HC_BOOT_LD_OPTS = \
-L$(FPTOOLS_TOP_ABS)/ghc/rts \
$(DASH_L_GHC_RTS_GMP_DIR) \
-L$(FPTOOLS_TOP_ABS)/libraries/base \
-L$(FPTOOLS_TOP_ABS)/libraries/base/cbits \
-L$(FPTOOLS_TOP_ABS)/libraries/haskell98
ifeq "$(GhcWithInterpreter)" "YES"
HC_BOOT_LD_OPTS += \
-L$(FPTOOLS_TOP_ABS)/libraries/template-haskell \
-L$(FPTOOLS_TOP_ABS)/libraries/readline \
-L$(FPTOOLS_TOP_ABS)/libraries/parsec \
-L$(FPTOOLS_TOP_ABS)/libraries/unix \
-L$(FPTOOLS_TOP_ABS)/libraries/unix/cbits
endif
HC_BOOT_LD_OPTS += \
-u "$(UNDERSCORE)GHCziBase_Izh_static_info" \
-u "$(UNDERSCORE)GHCziBase_Czh_static_info" \
-u "$(UNDERSCORE)GHCziFloat_Fzh_static_info" \
-u "$(UNDERSCORE)GHCziFloat_Dzh_static_info" \
-u "$(UNDERSCORE)GHCziPtr_Ptr_static_info" \
-u "$(UNDERSCORE)GHCziWord_Wzh_static_info" \
-u "$(UNDERSCORE)GHCziInt_I8zh_static_info" \
-u "$(UNDERSCORE)GHCziInt_I16zh_static_info" \
-u "$(UNDERSCORE)GHCziInt_I32zh_static_info" \
-u "$(UNDERSCORE)GHCziInt_I64zh_static_info" \
-u "$(UNDERSCORE)GHCziWord_W8zh_static_info" \
-u "$(UNDERSCORE)GHCziWord_W16zh_static_info" \
-u "$(UNDERSCORE)GHCziWord_W32zh_static_info" \
-u "$(UNDERSCORE)GHCziWord_W64zh_static_info" \
-u "$(UNDERSCORE)GHCziStable_StablePtr_static_info" \
-u "$(UNDERSCORE)GHCziBase_Izh_con_info" \
-u "$(UNDERSCORE)GHCziBase_Czh_con_info" \
-u "$(UNDERSCORE)GHCziFloat_Fzh_con_info" \
-u "$(UNDERSCORE)GHCziFloat_Dzh_con_info" \
-u "$(UNDERSCORE)GHCziPtr_Ptr_con_info" \
-u "$(UNDERSCORE)GHCziStable_StablePtr_con_info" \
-u "$(UNDERSCORE)GHCziBase_False_closure" \
-u "$(UNDERSCORE)GHCziBase_True_closure" \
-u "$(UNDERSCORE)GHCziPack_unpackCString_closure" \
-u "$(UNDERSCORE)GHCziIOBase_stackOverflow_closure" \
-u "$(UNDERSCORE)GHCziIOBase_heapOverflow_closure" \
-u "$(UNDERSCORE)GHCziIOBase_NonTermination_closure" \
-u "$(UNDERSCORE)GHCziIOBase_BlockedOnDeadMVar_closure" \
-u "$(UNDERSCORE)GHCziIOBase_Deadlock_closure" \
-u "$(UNDERSCORE)GHCziWeak_runFinalizzerBatch_closure" \
-u "$(UNDERSCORE)__stginit_Prelude"
HC_BOOT_LIBS =
ifeq "$(GhcWithInterpreter)" "YES"
HC_BOOT_LIBS += -lHSreadline -lHStemplate-haskell -lHSunix -lHSunix_cbits
endif
HC_BOOT_LIBS += -lHShaskell98 -lHSbase -lHSbase_cbits -lHSparsec -lHSrts -lgmp -lm $(EXTRA_HC_BOOT_LIBS)
ifeq "$(GhcLibsWithReadline)" "YES"
HC_BOOT_LIBS += $(patsubst %, -l%, $(LibsReadline))
endif
ifeq "$(HaveLibDL)" "YES"
HC_BOOT_LIBS += -ldl
endif
|