Wasn't outputting Target tokens
authorDavid Cock <david.cock@inf.ethz.ch>
Fri, 21 Aug 2015 15:13:21 +0000 (17:13 +0200)
committerDavid Cock <david.cock@inf.ethz.ch>
Fri, 21 Aug 2015 15:13:21 +0000 (17:13 +0200)
Signed-off-by: David Cock <david.cock@inf.ethz.ch>

hake/ArchDefaults.hs
hake/HakeTypes.hs
hake/Main.hs
hake/RuleDefs.hs

index 31f17f3..a122346 100644 (file)
@@ -114,10 +114,10 @@ options arch archFamily = Options {
             optDefines = [ Str "-DBARRELFISH" ] ++ Config.defines,
             optIncludes = cStdIncs arch archFamily,
             optDependencies = 
-                [ PreDep InstallTree arch "/include/errors/errno.h",
-                  PreDep InstallTree arch "/include/barrelfish_kpi/capbits.h",
-                  PreDep InstallTree arch "/include/asmoffsets.h",
-                  PreDep InstallTree arch "/include/trace_definitions/trace_defs.h" ],
+                [ Dep InstallTree arch "/include/errors/errno.h",
+                  Dep InstallTree arch "/include/barrelfish_kpi/capbits.h",
+                  Dep InstallTree arch "/include/asmoffsets.h",
+                  Dep InstallTree arch "/include/trace_definitions/trace_defs.h" ],
             optLdFlags = ldFlags arch,
             optLdCxxFlags = ldCxxFlags arch,
             optLibs = stdLibs arch,
index 0e2d362..22cd930 100644 (file)
@@ -80,6 +80,7 @@ isPredependency _ = False
 
 isOutput :: RuleToken -> Bool
 isOutput (Out _ _) = True
+isOutput (Target _ _) = True
 isOutput _ = False
 
 formatToken :: RuleToken -> String
index a2ec3c6..54e8620 100644 (file)
@@ -431,10 +431,10 @@ makefileRuleInner h tokens double_colon = do
         printTokens h $ ruleOutputs compiledRule
         if double_colon then hPutStr h ":: " else hPutStr h ": "
         printTokens h $ ruleDepends compiledRule
-        printDirs h $ ruleDirs compiledRule
-        when (not (S.null (rulePreDepends compiledRule))) $ do
-            hPutStr h " | "
-            printTokens h $ rulePreDepends compiledRule
+        -- printDirs h $ ruleDirs compiledRule
+        hPutStr h " | directories "
+        --when (not (S.null (rulePreDepends compiledRule))) $ do
+        printTokens h $ rulePreDepends compiledRule
         hPutStrLn h ""
         doBody
     where
@@ -569,7 +569,16 @@ makeHakeDeps h o l = do
 makeDirectories :: Handle -> S.Set FilePath -> IO ()
 makeDirectories h dirs = do
     hPutStrLn h "# Directories follow"
-    mapM_ (makeDir h) (S.toList (S.delete ("." </> ".marker") dirs))
+    --mapM_ (makeDir h) (S.toList (S.delete ("." </> ".marker") dirs))
+    hPutStrLn h "DIRECTORIES=\\"
+    mapM_ (\d -> hPutStrLn h $ "    " ++ d ++ " \\") (S.toList dirs)
+    hPutStrLn h "\n"
+    hPutStrLn h ".PHONY: directories"
+    hPutStr h "directories: $(DIRECTORIES)"
+    hPutStrLn h ""
+    hPutStrLn h "%.marker:"
+    hPutStrLn h "\tmkdir -p `dirname $@`"
+    hPutStrLn h "\ttouch $@"
 
 makeDir :: Handle -> FilePath -> IO ()
 makeDir h dir = do
@@ -637,6 +646,8 @@ body =  do
     liftIO $ putStrLn $ "Generating build directory dependencies..."
     liftIO $ makeDirectories makefile dirs
 
+    liftIO $ hFlush makefile
+    liftIO $ hClose makefile
     return ()
 
 main :: IO () 
index 0573e6f..720dbcf 100644 (file)
@@ -619,8 +619,9 @@ flounderExtraBinding opts ifn backends =
 flounderBindingHelper :: Options -> String -> [String] -> String -> [String] -> HRule
 flounderBindingHelper opts ifn backends cfile srcs = Rules $
     [ flounderRule opts $ args ++ [flounderIfFileLoc ifn, Out arch cfile ],
-        compileGeneratedCFile (opts { extraDependencies = [flounderHeader] }) cfile,
+        compileGeneratedCFile opts cfile,
         flounderDefsDepend opts ifn allbackends srcs]
+    ++ [extraGeneratedCDependency opts (flounderIfDefsPath ifn) cfile]
     ++ [extraGeneratedCDependency opts (flounderIfDrvDefsPath ifn d) cfile
         | d <- allbackends]
     where
@@ -628,7 +629,6 @@ flounderBindingHelper opts ifn backends cfile srcs = Rules $
         archfam = optArchFamily opts
         args = [Str "-a", Str archfam] ++ [Str $ "--" ++ d ++ "-stub" | d <- backends]
         allbackends = backends `union` optFlounderBackends opts \\ ["generic"]
-        flounderHeader = Dep BuildTree arch $ flounderIfDefsPath ifn
 
 --
 -- Build a Flounder THC header file from a definition.
@@ -940,7 +940,8 @@ appGetOptionsForArch arch args =
                      extraCxxFlags = Args.addCxxFlags args,
                      extraLdFlags = [ Str f | f <- Args.addLinkFlags args ],
                      extraDependencies =
-                         [Dep BuildTree arch s | s <- Args.addGeneratedDependencies args]
+                         [Dep BuildTree arch s |
+                            s <- Args.addGeneratedDependencies args]
                    }
 
 appBuildArch af tf args arch =