TN-020: adding a remark regarding case sensitivity
[barrelfish] / hake / Args.hs
1 --------------------------------------------------------------------------
2 -- Copyright (c) 2007-2015 ETH Zurich.
3 -- All rights reserved.
4 --
5 -- This file is distributed under the terms in the attached LICENSE file.
6 -- If you do not find this file, copies can be found by writing to:
7 -- ETH Zurich D-INFK, Universitaetstasse 6, CH-8092 Zurich. Attn: Systems Group.
8 --
9 -- Arguments to major Hake targets
10 --
11 --------------------------------------------------------------------------
12
13 module Args where
14
15 import HakeTypes
16 import TreeDB
17
18 data Args = Args {
19       buildFunction :: TreeDB -> String -> Args -> HRule,
20       target :: String,
21       driverType :: String,
22       cFiles :: [String],
23       generatedCFiles :: [String],
24       cxxFiles :: [String],
25       generatedCxxFiles :: [String],
26       assemblyFiles :: [String],
27       flounderDefs :: [String],
28       flounderBindings :: [String], -- built stubs for all enabled backends
29       flounderExtraDefs :: [(String, [String])],
30       flounderExtraBindings :: [(String, [String])], -- build stubs for specific backends
31       flounderTHCDefs :: [String], -- TODO: this can probably be subsumed into the above?
32       flounderTHCStubs :: [String], -- TODO: this can probably be subsumed into the above?
33       mackerelDevices :: [String],
34       addCFlags :: [String],
35       addCxxFlags :: [String],
36       omitCFlags :: [String],
37       omitCxxFlags :: [String],
38       addIncludes :: [String],
39       addGeneratedIncludes :: [String],
40       omitIncludes :: [String],
41       addLinkFlags :: [String],
42       addLibraries :: [String],
43       addGeneratedDependencies :: [String],
44       architectures :: [String],
45       skateSchemaDefs :: [String],  -- just the Skate Schema headers
46       skateSchemas :: [String],      -- Schema headers and functions
47       installDirs :: InstallDirs
48 }
49
50 data InstallDirs = InstallDirs {
51     bindir :: String,
52     libdir :: String
53 }
54
55 defaultArgs = Args {
56       buildFunction = defaultBuildFn,
57       target = "",
58       driverType = "",
59       cFiles = [],
60       generatedCFiles = [],
61       cxxFiles = [],
62       generatedCxxFiles = [],
63       assemblyFiles = [],
64       flounderDefs = [],
65       flounderBindings = [],
66       flounderExtraDefs = [],
67       flounderExtraBindings = [],
68       flounderTHCDefs = [],
69       flounderTHCStubs = [],
70       mackerelDevices = [],
71       addCFlags = [],
72       addCxxFlags = [],
73       omitCFlags = [],
74       omitCxxFlags = [],
75       addIncludes = [],
76       addGeneratedIncludes = [],
77       omitIncludes = [],
78       addLinkFlags = [],
79       addLibraries = [],
80       addGeneratedDependencies = [],
81       architectures = allArchitectures,
82       skateSchemaDefs = [],
83       skateSchemas = [],
84       installDirs = InstallDirs {
85             bindir = "/sbin",
86             libdir = "/lib"
87       }
88 }
89
90 allArchitectures = [ "x86_64", "x86_32", "armv7", "armv8", "k1om" ]
91 allArchitectureFamilies = [ "x86_64", "x86_32", "arm", "k1om" ]
92 -- architectures that currently support THC
93 thcArchitectures = ["x86_64", "x86_32"]
94
95 -- all known flounder backends that we might want to generate defs for
96 allFlounderBackends
97     = [ "lmp", "ump", "ump_ipi", "loopback", "rpcclient", "msgbuf", "multihop", "ahci", "local" ]
98
99 defaultBuildFn :: TreeDB -> String -> Args -> HRule
100 defaultBuildFn _ f _ =
101     Error ("Bad use of default Args in " ++ f)
102
103 showArgs :: String -> Args -> String
104 showArgs prefix a =
105     prefix ++ "Args:"
106     ++ "\n  target:                " ++ (show $ target a)
107     ++ "\n  cFiles:                " ++ (show $ cFiles a)
108     ++ "\n  generatedCFiles:       " ++ (show $ generatedCFiles a)
109     ++ "\n  cxxFiles:              " ++ (show $ cxxFiles a)
110     ++ "\n  generatedCxxFiles      " ++ (show $ generatedCxxFiles a)
111     ++ "\n  assemblyFiles:         " ++ (show $ assemblyFiles a)
112     ++ "\n  flounderDefs:          " ++ (show $ flounderDefs a)
113     ++ "\n  flounderBindings:      " ++ (show $ flounderBindings a)
114     ++ "\n  flounderExtraDefs:     " ++ (show $ flounderExtraDefs a)
115     ++ "\n  flounderExtraBindings: " ++ (show $ flounderExtraBindings a)
116     ++ "\n  flounderTHCDefs:       " ++ (show $ flounderTHCDefs a)
117     ++ "\n  flounderTHCStubs:      " ++ (show $ flounderTHCStubs a)
118     ++ "\n  addCFlags:             " ++ (show $ addCFlags a)
119     ++ "\n  addCxxFlags:           " ++ (show $ addCxxFlags a)
120     ++ "\n  omitCFlags:            " ++ (show $ omitCFlags a)
121     ++ "\n  omitCxxFlags:          " ++ (show $ omitCxxFlags a)
122     ++ "\n  addIncludes:           " ++ (show $ addIncludes a)
123     ++ "\n  omitIncludes:          " ++ (show $ omitIncludes a)
124     ++ "\n  addLinkFlags:          " ++ (show $ addLinkFlags a)
125     ++ "\n  addLibraries:          " ++ (show $ addLibraries a)
126     ++ "\n  addDeps:               " ++ (show $ addGeneratedDependencies a)
127     ++ "\n  architectures:         " ++ (show $ architectures a)
128     ++ "\n  skateSchemaDefs:       " ++ (show $ skateSchemaDefs a)
129     ++ "\n  skateSchemas:          " ++ (show $ skateSchemas a)
130     ++ "\n"