@@ -208,19 +208,19 @@ make MakeActions{..} ms = do
208 -- MVars for the module's dependencies.
208 -- MVars for the module's dependencies.
209 mexterns <- fmap unzip . sequence <$> mapM (readMVar . fst . fromMaybe (internalError "make: no barrier") . flip lookup barriers) deps
209 mexterns <- fmap unzip . sequence <$> mapM (readMVar . fst . fromMaybe (internalError "make: no barrier") . flip lookup barriers) deps
212+ Just (_, externs) -> do
211− outputTimestamp <- getOutputTimestamp moduleName
213+ outputTimestamp <- getOutputTimestamp moduleName
212− dependencyTimestamp <- maximumMaybe <$> mapM (fmap shouldExist . getOutputTimestamp) deps
214+ dependencyTimestamp <- maximumMaybe <$> mapM (fmap shouldExist . getOutputTimestamp) deps
213− inputTimestamp <- getInputTimestamp moduleName
215+ inputTimestamp <- getInputTimestamp moduleName
215− let shouldRebuild = case (inputTimestamp, dependencyTimestamp, outputTimestamp) of
217+ let shouldRebuild = case (inputTimestamp, dependencyTimestamp, outputTimestamp) of
216− (Right (Just t1), Just t3, Just t2) -> t1 > t2 || t3 > t2
218+ (Right (Just t1), Just t3, Just t2) -> t1 > t2 || t3 > t2
217− (Right (Just t1), Nothing, Just t2) -> t1 > t2
219+ (Right (Just t1), Nothing, Just t2) -> t1 > t2
218− (Left RebuildNever, _, Just _) -> False
220+ (Left RebuildNever, _, Just _) -> False
219− _ -> True
221+ _ -> True
221− let rebuild =
223+ let rebuild = do
223− Just (_, externs) -> do
224 (exts, warnings) <- listen $ do
224 (exts, warnings) <- listen $ do
225 progress $ CompilingModule moduleName
225 progress $ CompilingModule moduleName
226 let env = foldl' (flip applyExternsFileToEnvironment) initEnvironment externs
226 let env = foldl' (flip applyExternsFileToEnvironment) initEnvironment externs
@@ -236,15 +236,15 @@ make MakeActions{..} ms = do
236 evalSupplyT nextVar $ codegen renamed env' $ encode exts
236 evalSupplyT nextVar $ codegen renamed env' $ encode exts
237 return exts
237 return exts
238 markComplete (Just (warnings, exts)) Nothing
238 markComplete (Just (warnings, exts)) Nothing
239− Nothing -> markComplete Nothing Nothing
239+
241− if shouldRebuild
240+ if shouldRebuild
242− then rebuild
241+ then rebuild
244− mexts <- decodeExterns . snd <$> readExterns moduleName
243+ mexts <- decodeExterns . snd <$> readExterns moduleName
245− case mexts of
244+ case mexts of
246− Just exts -> markComplete (Just (mempty, exts)) Nothing
245+ Just exts -> markComplete (Just (mempty, exts)) Nothing
247− Nothing -> rebuild
246+ Nothing -> rebuild
247+ Nothing -> markComplete Nothing Nothing
249 markComplete :: Maybe (MultipleErrors, ExternsFile) -> Maybe MultipleErrors -> m ()
249 markComplete :: Maybe (MultipleErrors, ExternsFile) -> Maybe MultipleErrors -> m ()
250 markComplete externs errors = do
250 markComplete externs errors = do