(* -*- tuareg -*- *) (* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) (* NOTE: prepend dune.common to this file! *) let ( ^/ ) = Filename.concat let source_dirs = (if facebook then "facebook" else "opensource") :: ( (if clang then ["clang"; "unit" ^/ "clang"] else ["clang_stubs"; "unit" ^/ "clang_stubs"]) @ [ (if java then "java" else "java_stubs") ; "absint" ; "backend" ; "biabduction" ; "bufferoverrun" ; "checkers" ; "concurrency" ; "integration" ; "labs" ; "nullsafe" ; "pulse" ; "quandary" ; "scuba" ; "topl" ; "unit" ] ) let infer_binaries = ["infer"; "inferunit"] @ if facebook then ["InferCreateTraceViewLinks"] else [] let infer_cflags = common_cflags @ [ "-open" ; "Core" ; "-open" ; "InferStdlib" ; "-open" ; "IStd" ; "-open" ; "InferGenerated" ; "-open" ; "InferIR" ; "-open" ; "InferBase" ] (** The build stanzas to be passed to dune *) let stanzas = ( if clang then ["(ocamllex types_lexer ctl_lexer)"; "(menhir (modules types_parser ctl_parser))"] else [] ) @ [ "(ocamllex ToplLexer)" ; "(menhir (flags --unused-token INDENT) (modules ToplParser))" ; Format.sprintf {| (library (name InferModules) (public_name infer) (flags (%s)) (ocamlopt_flags (%s)) (libraries %s) (modules :standard \ %s infertop) (preprocess (pps ppx_compare ppx_fields_conv ppx_hash ppx_sexp_conv ppx_variants_conv -no-check)) ) (documentation (package infer) (mld_files index) ) |} (String.concat " " infer_cflags) (String.concat " " common_optflags) (String.concat " " ("InferIR" :: common_libraries)) (String.concat " " infer_binaries) ; Format.sprintf {| (executables (names %s) (flags (%s -open InferModules)) (ocamlopt_flags (%s)) (libraries InferModules) (modules %s) (preprocess (pps ppx_compare ppx_fields_conv ppx_hash ppx_sexp_conv ppx_variants_conv -no-check)) ) |} (String.concat " " infer_binaries) (String.concat " " infer_cflags) (String.concat " " common_optflags) (String.concat " " infer_binaries) ; Format.sprintf {| (executable (name infertop) (flags (%s)) (libraries utop InferModules) (modules Infertop) (preprocess (pps ppx_compare ppx_fields_conv ppx_hash ppx_sexp_conv ppx_variants_conv -no-check)) (link_flags (-linkall -warn-error -31)) ) |} (String.concat " " infer_cflags) ] @ ( List.map (fun source_dir -> [ Printf.sprintf "(copy_files# %s/*.ml{,i,l})" source_dir ; (* menhir doesn't support '# 1 ""' directives at the start of the file inserted by copy# actions *) Printf.sprintf "(copy_files %s/*.mly)" source_dir ] ) source_dirs |> List.concat ) ;; String.concat "\n" stanzas |> Jbuild_plugin.V1.send