From 235474e7ae582d66081d8e44666beb2f7638fdd3 Mon Sep 17 00:00:00 2001 From: Matthew Pickering Date: Mon, 9 May 2022 18:23:15 +0100 Subject: hadrian: Only copy and install libffi headers when using in-tree libffi When passed `--use-system-libffi` then we shouldn't copy and install the headers from the system package. Instead the headers are expected to be available as a runtime dependency on the users system. Fixes #21485 #21487 --- hadrian/src/Rules/Generate.hs | 4 +++- hadrian/src/Rules/Rts.hs | 2 +- rts/rts.cabal.in | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs index aaa83e0060..5653bd1d25 100644 --- a/hadrian/src/Rules/Generate.hs +++ b/hadrian/src/Rules/Generate.hs @@ -41,13 +41,15 @@ rtsDependencies :: Expr [FilePath] rtsDependencies = do stage <- getStage rtsPath <- expr (rtsBuildPath stage) + useSystemFfi <- expr (flag UseSystemFfi) + let headers = [ "ghcautoconf.h", "ghcplatform.h" , "DerivedConstants.h" , "rts" -/- "EventTypes.h" , "rts" -/- "EventLogConstants.h" ] - ++ libffiHeaderFiles + ++ (if useSystemFfi then [] else libffiHeaderFiles) pure $ ((rtsPath -/- "include") -/-) <$> headers genapplyDependencies :: Expr [FilePath] diff --git a/hadrian/src/Rules/Rts.hs b/hadrian/src/Rules/Rts.hs index 59a337801f..9a18a41c46 100644 --- a/hadrian/src/Rules/Rts.hs +++ b/hadrian/src/Rules/Rts.hs @@ -126,7 +126,7 @@ needRtsLibffiTargets stage = do let headers = fmap ((rtsPath -/- "include") -/-) libffiHeaderFiles if useSystemFfi - then return headers + then return [] else do -- Need Libffi -- This returns the dynamic library files (in the Libffi build dir). diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in index ff60f1b456..cc449ee522 100644 --- a/rts/rts.cabal.in +++ b/rts/rts.cabal.in @@ -73,6 +73,9 @@ library extra-bundled-libraries: Cffi-6 else extra-bundled-libraries: Cffi + install-includes: ffi.h ffitarget.h + -- ^ see Note [Packaging libffi headers] in + -- GHC.Driver.CodeOutput. -- The make build system does something special in config.mk.in -- for generating profiled, debugged, etc builds of those @@ -160,9 +163,6 @@ library ghcautoconf.h ghcconfig.h ghcplatform.h ghcversion.h -- ^ from include DerivedConstants.h - ffi.h ffitarget.h - -- ^ see Note [Packaging libffi headers] in - -- GHC.Driver.CodeOutput. rts/EventLogConstants.h rts/EventTypes.h -- ^ generated -- cgit v1.2.1