diff options
author | Reid Barton <rwbarton@gmail.com> | 2017-02-23 13:41:55 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-02-23 17:26:44 -0500 |
commit | 3cb9b52fba92a0799d0c21f4ea247493dd0b811b (patch) | |
tree | cd9bd2af1bd8fcebcf786ecac8a8e31ec2efb274 /rules | |
parent | a20433326eabd759502d9c170c3cc44ce6128a04 (diff) | |
download | haskell-3cb9b52fba92a0799d0c21f4ea247493dd0b811b.tar.gz |
Set $1_$2_SplitSections in distdir-opts.mk not build-package.mk
After commit a50082c11 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
Diffstat (limited to 'rules')
-rw-r--r-- | rules/build-package.mk | 18 | ||||
-rw-r--r-- | rules/distdir-opts.mk | 20 |
2 files changed, 19 insertions, 19 deletions
diff --git a/rules/build-package.mk b/rules/build-package.mk index 9599c57eb3..fb04f02f27 100644 --- a/rules/build-package.mk +++ b/rules/build-package.mk @@ -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) diff --git a/rules/distdir-opts.mk b/rules/distdir-opts.mk index b3dfba1c44..6cabac35d2 100644 --- a/rules/distdir-opts.mk +++ b/rules/distdir-opts.mk @@ -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 |