[GHC] #14757: ghc recompilation check doesn't take into account headers directly included by CApiFFI
GHC
ghc-devs at haskell.org
Sun Feb 4 14:00:40 UTC 2018
#14757: ghc recompilation check doesn't take into account headers directly included
by CApiFFI
-------------------------------------+-------------------------------------
Reporter: hvr | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.2
Keywords: capi capiffi | Operating System: Unknown/Multiple
cpp |
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Continuing from #14756, given the following simple module
{{{#!hs
{-# LANGUAGE CPP, CApiFFI #-}
#include "Bar.hs.inc"
module Foo where
foreign import capi unsafe "cbits.h foo" c_foo :: Int -> IO ()
}}}
After having compiled `ghc -c Foo.hs` successfully, and second invocation
of `ghc -c Foo.hs`
- ...will properly recompile when `Bar.hs.inc` changes (or any of its
recursive `#include`s!) (good!)
- ...will fail to detect when `cbits.h` changes, and thus claim
`compilation IS NOT required` (BAD!)
Ideally, we should always run CPP for the CApiFFI-included, in order to
detect when any recursive `#include`s inside `cbits.h` change, and use a
recorded checksum to detect whether recompilation of the C wrapper (and
thus re-linking of the haskell module; which currently forces
resynthesizing the object files) is necessary.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14757>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list