Summary: It seems that we don't need to rely on `make` anymore as the internal process manager is working fine on Buck Java projects. Reviewed By: jvillard Differential Revision: D7903639 fbshipit-source-id: 9b32f05master
parent
afe511b53d
commit
8ce79a0613
@ -1,50 +0,0 @@
|
|||||||
(*
|
|
||||||
* Copyright (c) 2015 - present Facebook, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the BSD style license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree. An additional grant
|
|
||||||
* of patent rights can be found in the PATENTS file in the same directory.
|
|
||||||
*)
|
|
||||||
|
|
||||||
open! IStd
|
|
||||||
module F = Format
|
|
||||||
|
|
||||||
(** Module to process clusters of procedures. *)
|
|
||||||
|
|
||||||
(** a cluster is a file *)
|
|
||||||
type t = SourceFile.t
|
|
||||||
|
|
||||||
(** type stored in .cluster file: (n,cl) indicates cl is cluster n *)
|
|
||||||
type serializer_t = int * t
|
|
||||||
|
|
||||||
(** Serializer for clusters *)
|
|
||||||
let serializer : serializer_t Serialization.serializer =
|
|
||||||
Serialization.create_serializer Serialization.Key.cluster
|
|
||||||
|
|
||||||
|
|
||||||
(** Load a cluster from a file *)
|
|
||||||
let load_from_file (filename: DB.filename) : serializer_t option =
|
|
||||||
Serialization.read_from_file serializer filename
|
|
||||||
|
|
||||||
|
|
||||||
(** Save a cluster into a file *)
|
|
||||||
let store_to_file (filename: DB.filename) (data: serializer_t) =
|
|
||||||
Serialization.write_to_file serializer filename ~data
|
|
||||||
|
|
||||||
|
|
||||||
let cl_name n = "cl" ^ string_of_int n
|
|
||||||
|
|
||||||
let cl_file n = "x" ^ cl_name n ^ ".cluster"
|
|
||||||
|
|
||||||
let pp_cluster_name fmt n = Format.pp_print_string fmt (cl_name n)
|
|
||||||
|
|
||||||
let pp_cluster fmt (nr, cluster) =
|
|
||||||
let fname = Config.results_dir ^/ Config.multicore_dir_name ^/ cl_file nr in
|
|
||||||
let pp_cl fmt n = Format.pp_print_string fmt (cl_name n) in
|
|
||||||
store_to_file (DB.filename_from_string fname) (nr, cluster) ;
|
|
||||||
F.fprintf fmt "%a: @\n" pp_cl nr ;
|
|
||||||
F.fprintf fmt "\t%@$(INFERANALYZE) --cluster '%s'@\n" fname ;
|
|
||||||
(* touch the target of the rule to let `make` know that the job has been done *)
|
|
||||||
F.fprintf fmt "\t%@touch $%@@\n" ;
|
|
||||||
F.fprintf fmt "@\n"
|
|
@ -1,28 +0,0 @@
|
|||||||
(*
|
|
||||||
* Copyright (c) 2016 - present Facebook, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the BSD style license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree. An additional grant
|
|
||||||
* of patent rights can be found in the PATENTS file in the same directory.
|
|
||||||
*)
|
|
||||||
|
|
||||||
open! IStd
|
|
||||||
module F = Format
|
|
||||||
|
|
||||||
(** Module to process clusters of procedures. *)
|
|
||||||
|
|
||||||
(** a cluster is a file *)
|
|
||||||
type t = SourceFile.t
|
|
||||||
|
|
||||||
(** type stored in .cluster file: (n,cl) indicates cl is cluster n *)
|
|
||||||
type serializer_t = int * t
|
|
||||||
|
|
||||||
val load_from_file : DB.filename -> serializer_t option
|
|
||||||
(** Load a cluster from a file *)
|
|
||||||
|
|
||||||
val pp_cluster : F.formatter -> serializer_t -> unit
|
|
||||||
(** Print a cluster *)
|
|
||||||
|
|
||||||
val pp_cluster_name : F.formatter -> int -> unit
|
|
||||||
(** Print a cluster name *)
|
|
@ -1,49 +0,0 @@
|
|||||||
(*
|
|
||||||
* Copyright (c) 2015 - present Facebook, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the BSD style license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree. An additional grant
|
|
||||||
* of patent rights can be found in the PATENTS file in the same directory.
|
|
||||||
*)
|
|
||||||
|
|
||||||
open! IStd
|
|
||||||
module F = Format
|
|
||||||
|
|
||||||
(** Module to create a makefile with dependencies between clusters *)
|
|
||||||
|
|
||||||
let pp_prolog fmt clusters =
|
|
||||||
let escape = Escape.escape_map (fun c -> if Char.equal c '#' then Some "\\#" else None) in
|
|
||||||
let infer_flag_of_compilation_db = function
|
|
||||||
| `Escaped f ->
|
|
||||||
F.sprintf "--compilation-database-escaped '%s'" f
|
|
||||||
| `Raw f ->
|
|
||||||
F.sprintf "--compilation-database '%s'" f
|
|
||||||
in
|
|
||||||
let compilation_dbs_cmd =
|
|
||||||
List.map ~f:infer_flag_of_compilation_db !Config.clang_compilation_dbs
|
|
||||||
|> String.concat ~sep:" " |> escape
|
|
||||||
in
|
|
||||||
F.fprintf fmt "INFERANALYZE = '%s' --no-report --results-dir '%s' %s@\n@\n"
|
|
||||||
(Config.bin_dir ^/ InferCommand.(to_exe_name Analyze))
|
|
||||||
(escape Config.results_dir) compilation_dbs_cmd ;
|
|
||||||
F.pp_print_string fmt "CLUSTERS=" ;
|
|
||||||
List.iteri ~f:(fun i _ -> F.fprintf fmt "%a " Cluster.pp_cluster_name (i + 1)) clusters ;
|
|
||||||
F.fprintf fmt "@\n@\ndefault: test@\n@\nall: test@\n@\n" ;
|
|
||||||
F.fprintf fmt "test: $(CLUSTERS)@\n" ;
|
|
||||||
if Config.show_progress_bar then F.fprintf fmt "\t%@echo@\n@."
|
|
||||||
|
|
||||||
|
|
||||||
let pp_epilog fmt () = F.fprintf fmt "@.clean:@.\trm -f $(CLUSTERS)@."
|
|
||||||
|
|
||||||
let create_cluster_makefile (clusters: Cluster.t list) (fname: string) =
|
|
||||||
let outc = Out_channel.create fname in
|
|
||||||
let fmt = Format.formatter_of_out_channel outc in
|
|
||||||
let do_cluster cluster_nr cluster =
|
|
||||||
F.fprintf fmt "#%a@\n" SourceFile.pp cluster ;
|
|
||||||
Cluster.pp_cluster fmt (cluster_nr + 1, cluster)
|
|
||||||
in
|
|
||||||
pp_prolog fmt clusters ;
|
|
||||||
List.iteri ~f:do_cluster clusters ;
|
|
||||||
pp_epilog fmt () ;
|
|
||||||
Out_channel.close outc
|
|
Loading…
Reference in new issue