diff --git a/Development/Hake/HiddenTools.hs b/Development/Hake/HiddenTools.hs
--- a/Development/Hake/HiddenTools.hs
+++ b/Development/Hake/HiddenTools.hs
@@ -26,6 +26,7 @@
 import System.Exit            (ExitCode)
 import System.FilePath        (takeFileName)
 import System.Process         (runProcess, waitForProcess)
+import System.Directory.Tools (doesNotExistOrOldThan)
 import Control.Monad          (when)
 import Control.Monad.Tools    (unlessM)
 import Data.List.Tools        (defaultElem)
@@ -50,8 +51,9 @@
                $ flip mapM othrs
                $ apply2way (updateFile commentPair) id $
 			                            (hakeDir ++) . takeFileName
-  hakefileUD <- updateFile commentPair src exeSrc
-  when (othrsUD || hakefileUD) $ ghcMake exe hakeDir >> return ()
+  hakefileUD  <- updateFile commentPair src exeSrc
+  notUpdated  <- doesNotExistOrOldThan exePath exeSrc
+  when (othrsUD || hakefileUD || notUpdated) $ ghcMake exe hakeDir >> return ()
   let args_ = applyWhen (othrsUD || hakefileUD) (hakefileUpdateOption:) $
                 defaultElem defaultTrgtStr args
   runProcess exePath args_ Nothing Nothing Nothing Nothing Nothing
diff --git a/hake.cabal b/hake.cabal
--- a/hake.cabal
+++ b/hake.cabal
@@ -1,5 +1,5 @@
 Name:		hake
-Version:	0.7
+Version:	0.8
 License:	GPL
 License-file:	LICENSE
 Author:		Yoshikuni Jujo
@@ -69,6 +69,6 @@
 Executable hake
   GHC-Options:		-Wall
 --  CPP-Options:		-DDEBUG
-  Build-Depends:	directory, process, yjtools >= 0.5, regexpr >= 0.3
+  Build-Depends:	directory, process, yjtools >= 0.6, regexpr >= 0.3
   Other-Modules:	Development.Hake.HiddenTools
   Main-Is:		Main.hs
