summaryrefslogtreecommitdiff
path: root/mk/cabal-flags.mk
blob: e1ef084b46c124fff4d267bcb592276dd10b8fba (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

nothing=
space=$(nothing) $(nothing)
comma=,

GHC_PKG_INSTALL_PROG = $(FPTOOLS_TOP_ABS)/utils/ghc-pkg/dist-install/build/ghc-pkg/ghc-pkg

LIBRARIES_ABS = $(FPTOOLS_TOP_ABS)/libraries
UTILS_ABS     = $(FPTOOLS_TOP_ABS)/utils
CABAL = $(LIBRARIES_ABS)/cabal-bin $(GHC) $(LIBRARIES_ABS)/bootstrapping.conf $(CABAL_DOTTED_VERSION)
INSTALL_PACKAGE = \
    $(UTILS_ABS)/installPackage/install-inplace/bin/installPackage
STAGE3_PACKAGE_CONF = $(FPTOOLS_TOP_ABS)/stage3.package.conf

# Euch, hideous hack:
CABAL_DOTTED_VERSION = $(shell grep "^Version:" $(LIBRARIES_ABS)/Cabal/Cabal.cabal | sed "s/^Version: //")
CABAL_VERSION = $(subst .,$(comma),$(CABAL_DOTTED_VERSION))
CABAL_CONSTRAINT = --constraint="Cabal == $(CABAL_DOTTED_VERSION)"

# We rely on all the CONFIGURE_ARGS being quoted with '...', and there
# being no 's inside the values.
FLAGGED_CONFIGURE_ARGS = $(subst $(space)',\
                                 $(space)--configure-option=',\
                                 $(space)$(CONFIGURE_ARGS))

COMMON_CONFIGURE_FLAGS =          \
    --libsubdir='$$pkgid'         \
    --with-gcc=$(WhatGccIsCalled) \
    --with-ld=$(LD)               \
    $(addprefix --hsc2hs-option=,$(SRC_HSC2HS_OPTS))

ifneq "$(HSCOLOUR)" ""
COMMON_CONFIGURE_FLAGS += --with-hscolour=$(HSCOLOUR)
endif

ifneq "$(ALEX)" ""
COMMON_CONFIGURE_FLAGS += --with-alex=$(ALEX)
endif

ifneq "$(HAPPY)" ""
COMMON_CONFIGURE_FLAGS += --with-happy=$(HAPPY)
endif

COMMON_CONFIGURE_FLAGS += $(FLAGGED_CONFIGURE_ARGS) \
                          --configure-option=--with-cc=$(CC)

COMMON_CONFIGURE_FLAGS += $(shell [ -f $(HSC2HS_INPLACE) ] && \
                                  echo --with-hsc2hs=$(HSC2HS_INPLACE) )

ifeq "$(Windows)" "YES"
NONEXISTENT=c:/NONEXISTENT
else
NONEXISTENT=/NONEXISTENT
endif

# We put non-existant paths in when configuring things that we plan to
# install, as we require that builds don't depend on these paths when
# making bindists.
INSTALL_DIRS_CONFIGURE_FLAGS = \
    --prefix=$(NONEXISTENT) \
    --bindir=$(NONEXISTENT) \
    --libdir=$(NONEXISTENT) \
    --libexecdir=$(NONEXISTENT) \
    --datadir=$(NONEXISTENT) \
    --docdir=$(NONEXISTENT) \
    --haddockdir=$(NONEXISTENT) \
    --htmldir=$(NONEXISTENT)

INPLACE_GHC_DATADIR_CONFIGURE_FLAGS = \
    --datadir=$(FPTOOLS_TOP_ABS)/inplace-datadir \
    --datasubdir=.

INPLACE_DIRS_CONFIGURE_FLAGS = \
    --prefix=`$(FPTOOLS_TOP_ABS)/utils/pwd/pwd forwardslash`/install-inplace

USE_BOOT_CONFIGURE_FLAGS = \
    --with-compiler=$(GHC) \
    --with-hc-pkg=$(GHC_PKG) \
	--package-db $(FPTOOLS_TOP_ABS)/libraries/bootstrapping.conf

USE_STAGE_CONFIGURE_FLAGS = \
    --with-hc-pkg=$(GHC_PKG_INPLACE) \
    $(addprefix --cc-option=,$(MACOSX_DEPLOYMENT_CC_OPTS)) \
    $(addprefix --ld-option=,$(MACOSX_DEPLOYMENT_LD_OPTS))

USE_STAGE1_CONFIGURE_FLAGS = \
    --with-compiler=$(GHC_STAGE1) \
    $(USE_STAGE_CONFIGURE_FLAGS)

USE_STAGE2_CONFIGURE_FLAGS =            \
    --with-compiler=$(GHC_STAGE2)       \
    $(USE_STAGE_CONFIGURE_FLAGS)        \
	--package-db $(STAGE3_PACKAGE_CONF)

BUILD_FLAGS = $(addprefix --ghc-option=,$(SRC_HC_OPTS))


# We now define various i* variables, which are used for the paths
# when installing Cabal libraries
ifeq "$(RelocatableBuild)" "YES"
# On Windows we want to make moveable bindists, but we need to tell
# ghc-pkg where the haddock docs are. Therefore we completely ignore
# where the user tells us to put the haddock documentation and put it
# somewhere whose relative location we know. When installing we need
# to give Cabal a real path, though.
iprefix             = $$topdir
ibindir             = $$topdir
ilibdir             = $$topdir
ilibexecdir         = $$topdir
idynlibdir          = $$topdir
idatadir            = $$topdir
idocdir             = $$topdir/doc/libraries/$$pkg
ihaddockdir         = $$topdir/doc/libraries/$$pkg
ihtmldir            = $$httptopdir/doc/libraries/$$pkg
html_installed_root = $(prefix)/doc/libraries
else
# On non-Windows we can just give absolute paths all the time, and
# thus obey the htmldir that we are given.
iprefix             = $(prefix)
ibindir             = $(bindir)
ilibdir             = $(libdir)
ilibexecdir         = $(libexecdir)
idynlibdir          = $(dynlibdir)
idatadir            = $(datadir)
idocdir             = $(docdir)/libraries/$$pkg
ihaddockdir         = $(htmldir)/libraries/$$pkg
ihtmldir            = $(htmldir)/libraries/$$pkg
html_installed_root = $(htmldir)/libraries
endif