C build tool of the 21st century

simplify c flag wrapping

+8 -18
+1 -4
lib/compiler.ml
··· 158 158 Filename.quote (Eio.Path.native_exn output.Object_file.path) 159 159 in 160 160 let src = Filename.quote (Eio.Path.native_exn output.source.path) in 161 - let cc_opts = 162 - List.concat_map (fun x -> [ "-cc-opt"; x ]) flags.compile 163 - in 164 161 let args = 165 162 [ "mlton"; "-cc"; "clang"; "-stop"; "o"; "-output"; out ] 166 - @ cc_opts @ [ src ] 163 + @ flags.compile @ [ src ] 167 164 in 168 165 [ 169 166 "sh";
+7 -14
lib/plan.ml
··· 129 129 |> List.map (fun c -> String_set.to_list c.ext)) 130 130 in 131 131 let flags = 132 - (* Only include compiler-specific flags in the edge, not b.flags 133 - since b.flags gets added in run_build *) 134 132 let lang_flags = 135 133 Hashtbl.find_opt b.compiler_flags ext 136 - |> Option.value ~default:(Flags.v ()) 134 + |> Option.value ~default:b.flags 137 135 in 138 136 let flags_with_c = 139 - if Util.extension_is_c_or_cxx ext then lang_flags 140 - else 141 - let c_flags = 142 - Hashtbl.find_opt b.compiler_flags "c" 143 - |> Option.value ~default:(Flags.v ()) 144 - in 145 - let wrapped_c_flags = compiler.wrap_c_flags c_flags in 146 - Flags.concat wrapped_c_flags lang_flags 137 + let c_flags = 138 + Hashtbl.find_opt b.compiler_flags "c" 139 + |> Option.value ~default:(Flags.v ()) 140 + in 141 + Flags.concat (compiler.wrap_c_flags c_flags) lang_flags 147 142 in 148 143 Flags.concat flags flags_with_c 149 144 in ··· 180 175 run_script b.env#process_mgr ~build_dir:b.build s) 181 176 b.script; 182 177 let pkg = Pkg_config.flags ~env:b.env b.pkgconf in 183 - let flags = Flags.v () in 184 178 (* Use ordered sources from Plan hashtable to preserve file order from config *) 185 179 let sources = 186 180 Hashtbl.find_opt t.ordered_sources b.name |> Option.value ~default:[] ··· 208 202 not (String_set.is_empty (String_set.inter c.ext source_exts))) 209 203 |> Option.value ~default:Compiler.clang 210 204 in 211 - (* Wrap C flags for non-C builds (pkg-config and C-specific flags need wrapping) *) 212 205 let b_flags = 213 206 let c_flags = 214 207 Hashtbl.find_opt b.compiler_flags "c" 215 208 |> Option.value ~default:(Flags.v ()) 216 209 in 217 210 let wrapped_c = primary_compiler.wrap_c_flags (Flags.concat pkg c_flags) in 218 - Flags.concat flags @@ Flags.concat wrapped_c b.flags 211 + Flags.concat wrapped_c b.flags 219 212 in 220 213 let link_flags = ref b_flags in 221 214 let count = ref 0 in