You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.7 KiB

(* -*- tuareg -*- *)
(* NOTE: prepend jbuild.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")
; (if python && facebook then "python" else "python_stubs")
; "absint"
; "backend"
; "biabduction"
; "bufferoverrun"
; "checkers"
; "concurrency"
; "eradicate"
; "integration"
; "labs"
; "quandary"
; "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 jbuilder *)
let stanzas =
( if clang then
["(ocamllex (types_lexer ctl_lexer))"; "(menhir ((modules (types_parser ctl_parser))))"]
else [] )
@ ( if python && facebook then ["(ocamllex (pythonLexer))"; "(menhir ((modules (pythonParser))))"]
else [] )
@ [ Format.sprintf
{|
(library
((name InferModules)
(flags (%s))
(ocamlopt_flags (%s))
(libraries (%s))
(modules (:standard \ %s infertop))
(preprocess (pps (ppx_compare ppx_sexp_conv -no-check)))
))
|}
(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_sexp_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_sexp_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 "<source file>"' 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