diff options
author | Thomas Miedema <thomasmiedema@gmail.com> | 2015-10-26 20:54:58 +0100 |
---|---|---|
committer | Thomas Miedema <thomasmiedema@gmail.com> | 2015-10-28 07:51:03 +0100 |
commit | 9fc2d777f53110040f48ab27643a16888fa377f5 (patch) | |
tree | 7f93728a10f89444ea0529c26b1e47923eae884c | |
parent | d1ab6fc9eddcee63ea594c1357d47d3dcebe2492 (diff) | |
download | haskell-9fc2d777f53110040f48ab27643a16888fa377f5.tar.gz |
Build system: don't add ALL_HC_OPTS when linking
Summary:
The current scheme in rules/distdir-way-opts.mk is something like this:
GHC_LD_OPTS = MOST_HC_OPTS + ALL_LD_OPTS
MOST_DIR_HC_OPTS = MOST_HC_OPTS + -odir,-hidir,-stubdir
ALL_HC_OPTS = MOST_DIR_HC_OPTS +
-hisuf,-osuf,-hcsuf,-split-objs,-dynamic-too
Notice that both ALL_HC_OPTS and GHC_LD_OPTS include MOST_HC_OPTS, and
currently both got added when linking. Adding MOST_HC_OPTS twice results
in overly long and hard to decipher command lines (and build logs). This
commit fixes that.
Afaik, -odir,-hidir,-stubdir,-hisuf,-osuf,-hcsuf,-spit-objs,-dynamic-too
are all not needed when linking, so this change should be safe to make.
GHC_LD_OPTS is for linking, ALL_HC_OPTS is for compiling.
ALL_HC_OPTS was added to the linking commands in
37a6a52facd1c3999ce4472c50b0030568be1e04, to make sure
-no-user-package-conf would be in the options list. It still is after
this change.
Reviewers: austin, bgamari
Differential Revision: https://phabricator.haskell.org/D1379
-rw-r--r-- | rules/build-package-way.mk | 4 | ||||
-rw-r--r-- | rules/build-prog.mk | 2 | ||||
-rw-r--r-- | rules/distdir-way-opts.mk | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk index a10e53833e..592d3a7808 100644 --- a/rules/build-package-way.mk +++ b/rules/build-package-way.mk @@ -91,7 +91,7 @@ endif else # ifneq "$$(HostOS_CPP)" "mingw32" $$($1_$2_$3_LIB) : $$($1_$2_$3_ALL_OBJS) $$(ALL_RTS_LIBS) $$($1_$2_$3_DEPS_LIBS) - $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) $$($1_$2_$3_GHC_LD_OPTS) $$($1_$2_$3_ALL_OBJS) \ + $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_LD_OPTS) $$($1_$2_$3_ALL_OBJS) \ -shared -dynamic -dynload deploy \ $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) $$(addprefix -L,$$($1_$2_EXTRA_LIBDIRS)) \ -no-auto-link-packages \ @@ -170,7 +170,7 @@ endef # build-package-way # $5 = object files to link # $6 = output filename define build-dll - $(call cmd,$1_$2_HC) $($1_$2_$3_ALL_HC_OPTS) $($1_$2_$3_GHC_LD_OPTS) $4 $5 \ + $(call cmd,$1_$2_HC) $($1_$2_$3_GHC_LD_OPTS) $4 $5 \ -shared -dynamic -dynload deploy \ $(addprefix -l,$($1_$2_EXTRA_LIBRARIES)) \ -no-auto-link-packages \ diff --git a/rules/build-prog.mk b/rules/build-prog.mk index 1a497078c5..48b8aa25d3 100644 --- a/rules/build-prog.mk +++ b/rules/build-prog.mk @@ -255,7 +255,7 @@ $1/$2/build/tmp/$$($1_$2_PROG).dll : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$( else # $1_$2_PROG_NEEDS_C_WRAPPER=NO ifeq "$$($1_$2_LINK_WITH_GCC)" "NO" $1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. - $$(call cmd,$1_$2_HC) -o $$@ $$($1_$2_$$($1_$2_PROGRAM_WAY)_ALL_HC_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_GHC_LD_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) + $$(call cmd,$1_$2_HC) -o $$@ $$($1_$2_$$($1_$2_PROGRAM_WAY)_GHC_LD_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) else $1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. diff --git a/rules/distdir-way-opts.mk b/rules/distdir-way-opts.mk index 920ff07f20..e84894348c 100644 --- a/rules/distdir-way-opts.mk +++ b/rules/distdir-way-opts.mk @@ -131,7 +131,7 @@ $1_$2_$3_MOST_DIR_HC_OPTS = \ # that -O0 is effective (see #5484) # $1_$2_$3_ALL_HC_OPTS: this is all the options we will pass to GHC -# for a given ($1,$2,$3). +# for a given ($1,$2,$3) when we use it for compiling. $1_$2_$3_ALL_HC_OPTS = \ -hisuf $$($3_hisuf) -osuf $$($3_osuf) -hcsuf $$($3_hcsuf) \ $$($1_$2_$3_MOST_DIR_HC_OPTS) \ |