Commit 3cb9b52f authored by rwbarton's avatar rwbarton Committed by Ben Gamari

Set $1_$2_SplitSections in distdir-opts.mk not build-package.mk

After commit a50082c1 we use -ffunction-sections -fdata-sections
for all C compilations, when $1_$2_SplitSections is set. But that
variable was set in build-package.mk which is not run for the RTS.
As a result the RTS was not being split, leading to larger binaries.

This commit fixes RTS splitting by moving the definition of
$1_$2_SplitSections to distdir-opts.mk, which is run for the RTS
(and also from build-package.mk).

Test Plan:
manual ./validate and check that RTS and base .c files
are split, but not object files in the compiler

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, snowleopard, olsner

Differential Revision: https://phabricator.haskell.org/D3137
parent a2043332
......@@ -102,24 +102,6 @@ endif
$1_$2_PKGDATA_DEP = $1/$2/package-data.mk
endif
# We don't bother splitting the bootstrap packages (built with stage 0)
ifeq "$$($1_$2_SplitObjs)" ""
ifeq "$$(SplitObjs) $3" "YES 1"
$1_$2_SplitObjs = YES
else
$1_$2_SplitObjs = NO
endif
endif
# Disable split sections when building with stage0, it won't be supported yet
# and it's probably not very relevant anyway (smaller stage1 ghc?).
ifeq "$$($1_$2_SplitSections)" ""
ifeq "$3" "1"
$1_$2_SplitSections = $(SplitSections)
else
$1_$2_SplitSections = NO
endif
endif
$(call hs-sources,$1,$2)
$(call c-sources,$1,$2)
$(call includes-sources,$1,$2)
......
......@@ -11,7 +11,7 @@
# -----------------------------------------------------------------------------
# Set compilation flags that additionally depend on a particular way
# Set compilation flags that do not depend on a particular way
define distdir-opts # args: $1 = dir, $2 = distdir, $3 = stage
......@@ -89,5 +89,23 @@ $1_$2_ALL_HAPPY_OPTS = \
$$($1_$2_HAPPY_OPTS) \
$$(EXTRA_HAPPY_OPTS)
# We don't bother splitting the bootstrap packages (built with stage 0)
ifeq "$$($1_$2_SplitObjs)" ""
ifeq "$$(SplitObjs) $3" "YES 1"
$1_$2_SplitObjs = YES
else
$1_$2_SplitObjs = NO
endif
endif
# Disable split sections when building with stage0, it won't be supported yet
# and it's probably not very relevant anyway (smaller stage1 ghc?).
ifeq "$$($1_$2_SplitSections)" ""
ifeq "$3" "1"
$1_$2_SplitSections = $(SplitSections)
else
$1_$2_SplitSections = NO
endif
endif
endef
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment