summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <bgamari.foss@gmail.com>2016-09-16 11:49:24 -0400
committerBen Gamari <ben@smart-cactus.org>2016-09-16 11:49:25 -0400
commitea310f9956179f91ca973bc747b0bc7b061bc174 (patch)
tree0f32a6b60091c6a53f9303cbce166ef81493e58a
parent97b47d277d6b0ced3ce73175f78b23ecff84cfa3 (diff)
downloadhaskell-ea310f9956179f91ca973bc747b0bc7b061bc174.tar.gz
Remove directories from include paths
Previously this was a relative path which worked in the GHC tree, but failed elsewhere. This caused trouble for out-of-tree users as well as Hadrian, which wants to move build artifacts out of the working directory. Fixes #8040. Test Plan: Validate Reviewers: thomie, austin, snowleopard, hvr Reviewed By: snowleopard, hvr Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2530 GHC Trac Issues: #8040
-rw-r--r--compiler/HsVersions.h2
-rw-r--r--compiler/ghc.mk5
-rw-r--r--compiler/main/DynFlags.hs3
-rw-r--r--compiler/main/PlatformConstants.hs3
-rw-r--r--rules/build-dependencies.mk1
5 files changed, 11 insertions, 3 deletions
diff --git a/compiler/HsVersions.h b/compiler/HsVersions.h
index 6d5716db64..83cbcf15cb 100644
--- a/compiler/HsVersions.h
+++ b/compiler/HsVersions.h
@@ -20,7 +20,7 @@ you will screw up the layout where they are used in case expressions!
* ghcconfig.h, because that will include ghcplatform.h which has the
* wrong platform settings for the compiler (it has the platform
* settings for the target plat instead). */
-#include "../includes/ghcautoconf.h"
+#include "ghcautoconf.h"
#define GLOBAL_VAR(name,value,ty) \
{-# NOINLINE name #-}; \
diff --git a/compiler/ghc.mk b/compiler/ghc.mk
index 5aeda53d91..38eae0eee1 100644
--- a/compiler/ghc.mk
+++ b/compiler/ghc.mk
@@ -259,6 +259,11 @@ PRIMOP_BITS_STAGE3 = $(addprefix compiler/stage3/build/,$(PRIMOP_BITS_NAMES))
compiler_CPP_OPTS += $(addprefix -I,$(GHC_INCLUDE_DIRS))
compiler_CPP_OPTS += ${GhcCppOpts}
+# We add these paths to the Haskell compiler's #include search path list since
+# we must avoid #including files by paths relative to the source file as Hadrian
+# moves the build artifacts out of the source tree. See #8040.
+compiler_HC_OPTS += $(addprefix -I,$(GHC_INCLUDE_DIRS))
+
define preprocessCompilerFiles
# $0 = stage
compiler/stage$1/build/primops.txt: compiler/prelude/primops.txt.pp compiler/stage$1/$$(PLATFORM_H)
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 7546936e4f..b642bead7b 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -4765,7 +4765,8 @@ compilerInfo dflags
showBool False = "NO"
isWindows = platformOS (targetPlatform dflags) == OSMinGW32
-#include "../includes/dist-derivedconstants/header/GHCConstantsHaskellWrappers.hs"
+-- Produced by deriveConstants
+#include "GHCConstantsHaskellWrappers.hs"
bLOCK_SIZE_W :: DynFlags -> Int
bLOCK_SIZE_W dflags = bLOCK_SIZE dflags `quot` wORD_SIZE dflags
diff --git a/compiler/main/PlatformConstants.hs b/compiler/main/PlatformConstants.hs
index b2ca32be68..c9a4072206 100644
--- a/compiler/main/PlatformConstants.hs
+++ b/compiler/main/PlatformConstants.hs
@@ -10,5 +10,6 @@
module PlatformConstants (PlatformConstants(..)) where
-#include "../includes/dist-derivedconstants/header/GHCConstantsHaskellType.hs"
+-- Produced by deriveConstants
+#include "GHCConstantsHaskellType.hs"
diff --git a/rules/build-dependencies.mk b/rules/build-dependencies.mk
index 8152691c01..1905a0e4d6 100644
--- a/rules/build-dependencies.mk
+++ b/rules/build-dependencies.mk
@@ -24,6 +24,7 @@ $1_$2_C_FILES_DEPS = $$(filter-out $$($1_$2_C_FILES_NODEPS),$$($1_$2_C_FILES))
$1_$2_MKDEPENDHS_FLAGS = -dep-makefile $$($1_$2_depfile_haskell).tmp $$(foreach way,$$($1_$2_WAYS),-dep-suffix "$$(patsubst %o,%,$$($$(way)_osuf))")
$1_$2_MKDEPENDHS_FLAGS += -include-pkg-deps
+$1_$2_MKDEPENDHS_FLAGS += $(addprefix -I,$($1_INCLUDE_DIRS))
ifneq "$$(NO_GENERATED_MAKEFILE_RULES)" "YES"