Makefile.am: Fix wrong -dep-suffix for GHC 7.8
authorNiklas Hambuechen <niklash@google.com>
Fri, 31 Oct 2014 15:40:27 +0000 (16:40 +0100)
committerKlaus Aehlig <aehlig@google.com>
Wed, 6 May 2015 17:16:21 +0000 (19:16 +0200)
This works around https://ghc.haskell.org/trac/ghc/ticket/9749:

GHC 7.8 (undocumentedly) changed the way in which ghc -M generated
object file dependencies, lacking the underscore that older versions
added automatically to the file names.
It also requires a -dep-suffix for the plain object file (.o).

This commit detects GHC 7.6 and older (7.7 is development only, has no
release and is treated equal to 7.8), and adjusts the -M invocation
appropriately for newer GHC versions.

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

Cherry-picked-from: b78a2c3
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

Makefile.am
configure.ac

index 645577e..9fdd403 100644 (file)
@@ -728,6 +728,17 @@ endif
 HTEST_SUFFIX = hpc
 HPROF_SUFFIX = prof
 
+DEP_SUFFIXES =
+if GHC_LE_76
+DEP_SUFFIXES += -dep-suffix $(HPROF_SUFFIX) -dep-suffix $(HTEST_SUFFIX)
+else
+# GHC >= 7.8 stopped putting underscores into -dep-suffix by itself
+# (https://ghc.haskell.org/trac/ghc/ticket/9749) so we have to put them.
+# It also needs -dep-suffix "" for the .o file.
+DEP_SUFFIXES += -dep-suffix $(HPROF_SUFFIX)_ -dep-suffix $(HTEST_SUFFIX)_ \
+       -dep-suffix ""
+endif
+
 if HPROFILE
 HPROFFLAGS = -prof -fprof-auto-top -osuf $(HPROF_SUFFIX)_o \
        -hisuf $(HPROF_SUFFIX)_hi -rtsopts
@@ -1196,8 +1207,7 @@ HS_MAKEFILE_GHC_SRCS += $(HS_TEST_PROGS:%=%.hs)
 endif
 Makefile.ghc: $(HS_MAKEFILE_GHC_SRCS) Makefile hs-pkg-versions \
               | $(built_base_sources) $(HS_BUILT_SRCS)
-       $(GHC) -M -dep-makefile $@ -dep-suffix $(HPROF_SUFFIX) \
-               -dep-suffix $(HTEST_SUFFIX) $(HFLAGS) -itest/hs \
+       $(GHC) -M -dep-makefile $@ $(DEP_SUFFIXES) $(HFLAGS) -itest/hs \
          $(shell cat hs-pkg-versions) \
                $(HS_PARALLEL3) $(HS_REGEX_PCRE) $(HEXTRA_COMBINED) $(HS_MAKEFILE_GHC_SRCS)
 # Since ghc -M does not generate dependency line for object files, dependencies
index 46a7096..422a5ff 100644 (file)
@@ -619,6 +619,10 @@ if test -z "$GHC"; then
   AC_MSG_FAILURE([ghc not found, compilation will not possible])
 fi
 
+# Note: Character classes ([...]) need to be double quoted due to autoconf
+# using m4
+AM_CONDITIONAL([GHC_LE_76], [$GHC --numeric-version | grep -q '^7\.[[0-6]]\.'])
+
 AC_MSG_CHECKING([checking for extra GHC flags])
 GHC_BYVERSION_FLAGS=
 # check for GHC supported flags that vary accross versions