[Git][ghc/ghc][wip/ghc-9.6.7-backports] hadrian: Make sure ffi headers are built before using a compiler

Luite Stegeman (@luite) gitlab at gitlab.haskell.org
Sun Jan 26 06:53:34 UTC 2025



Luite Stegeman pushed to branch wip/ghc-9.6.7-backports at Glasgow Haskell Compiler / GHC


Commits:
e69b5f63 by Matthew Pickering at 2025-01-26T07:52:38+01:00
hadrian: Make sure ffi headers are built before using a compiler

When we are using ffi adjustors then we rely on `ffi.h` and
`ffitarget.h` files during code generation when compiling stubs.

Therefore we need to add this dependency to the build system (which this
patch does).

Reproducer, configure with `--enable-libffi-adjustors` and then build
"_build/stage1/libraries/ghc-prim/build/GHC/Types.p_o".

Observe that this fails before this patch and works afterwards.

Fixes #24864

Co-authored-by: Sylvain Henry <sylvain at haskus.fr>
(cherry picked from commit 0167e472e7035d31591777983d8e35528aceefff)

- - - - -


1 changed file:

- hadrian/src/Builder.hs


Changes:

=====================================
hadrian/src/Builder.hs
=====================================
@@ -241,6 +241,8 @@ instance H.Builder Builder where
             -- GHC from the previous stage is used to build artifacts in the
             -- current stage. Need the previous stage's GHC deps.
             ghcdeps <- ghcBinDeps (predStage stage)
+            libffi_adjustors <- useLibffiForAdjustors
+            use_system_ffi <- flag UseSystemFfi
 
             return $ [ unlitPath ]
                   ++ ghcdeps
@@ -249,6 +251,13 @@ instance H.Builder Builder where
                      -- proxy for the entire mingw toolchain that
                      -- we have in inplace/mingw initially, and then at
                      -- root -/- mingw.
+                  -- ffi.h needed by the compiler when using libffi_adjustors (#24864)
+                  -- It would be nicer to not duplicate this logic between here
+                  -- and needRtsLibffiTargets and libffiHeaderFiles but this doesn't change
+                  -- very often.
+                  ++ [ root -/- buildDir (rtsContext stage) -/- "include" -/- header
+                     | header <- ["ffi.h", "ffitarget.h"]
+                     , libffi_adjustors && not use_system_ffi ]
 
         Hsc2Hs stage -> (\p -> [p]) <$> templateHscPath stage
         Make dir  -> return [dir -/- "Makefile"]



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/e69b5f63cb57982ac26ac5138b97ff8dbb16a407

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/e69b5f63cb57982ac26ac5138b97ff8dbb16a407
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20250126/a77f8939/attachment-0001.html>


More information about the ghc-commits mailing list