Skip to content
Snippets Groups Projects
Commit 6d4c7b30 authored by Andre Maroneze's avatar Andre Maroneze
Browse files

[Kernel] add support of build databases to -json-compilation-database

parent 1b16ab8f
No related branches found
No related tags found
No related merge requests found
...@@ -211,6 +211,16 @@ let update_flags_verbosely path flags = ...@@ -211,6 +211,16 @@ let update_flags_verbosely path flags =
| Not_found -> | Not_found ->
Flags.add path flags Flags.add path flags
let parse_build_entry bcdb_dir r =
let open Yojson.Basic.Util in
let filenames = r |> member "sources" |> to_list |> List.map to_string in
let args = List.map to_string (r |> member "arguments" |> to_list) in
let flags = filter_useful_flags ~requote:true args in
List.iter (fun filename ->
let path = Datatype.Filepath.of_string ~base_name:bcdb_dir filename in
update_flags_verbosely path flags
) filenames
let parse_compilation_entry jcdb_dir r = let parse_compilation_entry jcdb_dir r =
let open Yojson.Basic.Util in let open Yojson.Basic.Util in
let filename = r |> member "file" |> to_string in let filename = r |> member "file" |> to_string in
...@@ -259,7 +269,15 @@ let compute_flags_from_file () = ...@@ -259,7 +269,15 @@ let compute_flags_from_file () =
let r_list = let r_list =
Yojson.Basic.from_file jcdb_path |> Yojson.Basic.Util.to_list Yojson.Basic.from_file jcdb_path |> Yojson.Basic.Util.to_list
in in
List.iter (parse_compilation_entry jcdb_dir) r_list; let is_build_database =
try
List.hd r_list |> Yojson.Basic.Util.member "sources" <> `Null
with _ -> false
in
let parse_entry =
if is_build_database then parse_build_entry else parse_compilation_entry
in
List.iter (parse_entry jcdb_dir) r_list;
with with
| Sys_error msg | Sys_error msg
| Yojson.Json_error msg | Yojson.Json_error msg
......
[
{
"command": "/usr/bin/gcc -c jbdb.c jbdb2.c -DRETCODE=0",
"arguments": [
"/usr/bin/gcc",
"-c",
"jbdb.c",
"jbdb2.c",
"-DRETCODE=0"
],
"sources": [
"jbdb.c",
"jbdb2.c"
],
"targets": [
"jbdb.o",
"jbdb2.o"
]
}
]
/* run.config
OPT: -json-compilation-database @PTEST_DIR@/build_commands.json -print
*/
int f2 () {
return RETCODE; // defined in build_commands.json
}
/* run.config
OPT: -json-compilation-database @PTEST_DIR@/build_commands.json -print
*/
int f1 () {
return RETCODE; // defined in build_commands.json
}
[kernel] Parsing tests/jcdb/jbdb.c (with preprocessing)
/* Generated by Frama-C */
int f2(void)
{
int __retres;
__retres = 0;
return __retres;
}
[kernel] Parsing tests/jcdb/jbdb2.c (with preprocessing)
/* Generated by Frama-C */
int f1(void)
{
int __retres;
__retres = 0;
return __retres;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment