@ -1174,17 +1174,17 @@ and verbose_out =
~ meta : " file " " "
~ meta : " file " " "
and version =
and version =
CLOpt . mk_bool ~ deprecated : [ " version " ] ~ long : " version "
let var = ref ` None in
~ exes : CLOpt . [ Toplevel ; Analyze ; Clang ; Java ; Print ] " Print version information and exit "
CLOpt . mk_set var ` Full ~ deprecated : [ " version " ] ~ long : " version "
~ exes : CLOpt . [ Toplevel ; Analyze ; Clang ; Java ; Print ]
and version_json =
" Print version information and exit " ;
CLOpt . mk_ bool ~ deprecated : [ " version_json " ] ~ long : " version-json "
CLOpt . mk_ set var ` Json ~ deprecated : [ " version_json " ] ~ long : " version-json "
~ exes : CLOpt . [ Analyze ; Clang ; Java ; Print ]
~ exes : CLOpt . [ Analyze ; Clang ; Java ; Print ]
" Print version json formatted"
" Print version information in json format and exit" ;
CLOpt . mk_set var ` Vcs ~ long : " version-vcs "
and version_vcs =
~ exes : CLOpt . [ Analyze ; Clang ; Java ; Print ]
CLOpt . mk_bool ~ long : " version-vcs "
" Print version control system commit and exit " ;
~ exes: CLOpt . [ Analyze ; Clang ; Ja va; P rint] " Print version control system commit and exit "
var
and whole_seconds =
and whole_seconds =
CLOpt . mk_bool ~ deprecated : [ " whole_seconds " ] ~ long : " whole-seconds "
CLOpt . mk_bool ~ deprecated : [ " whole_seconds " ] ~ long : " whole-seconds "
@ -1244,6 +1244,7 @@ let rest =
specs_library := List . rev_append files ! specs_library
specs_library := List . rev_append files ! specs_library
)
)
) in
) in
let version_spec = Arg . Unit ( fun () -> version := ` Javac ) in
CLOpt . mk_subcommand
CLOpt . mk_subcommand
~ exes : CLOpt . [ Toplevel ]
~ exes : CLOpt . [ Toplevel ]
" Stop argument processing, use remaining arguments as a build command "
" Stop argument processing, use remaining arguments as a build command "
@ -1251,7 +1252,8 @@ let rest =
match Filename . basename build_exe with
match Filename . basename build_exe with
| " java " | " javac " -> [
| " java " | " javac " -> [
( " -classes_out " , classes_out_spec , " " ) ; ( " -d " , classes_out_spec , " " ) ;
( " -classes_out " , classes_out_spec , " " ) ; ( " -d " , classes_out_spec , " " ) ;
( " -classpath " , classpath_spec , " " ) ; ( " -cp " , classpath_spec , " " )
( " -classpath " , classpath_spec , " " ) ; ( " -cp " , classpath_spec , " " ) ;
( " -version " , version_spec , " " )
]
]
| _ -> []
| _ -> []
)
)
@ -1284,21 +1286,35 @@ let exe_usage (exe : CLOpt.exe) =
version_string
version_string
let post_parsing_initialization () =
let post_parsing_initialization () =
F . set_margin ! margin ;
( match ! version with
| ` Full ->
if ! version then (
(* TODO ( 11791235 ) change back to stdout once buck integration is fixed *)
(* TODO ( 11791235 ) change back to stdout once buck integration is fixed *)
F . fprintf F . err_formatter " %s@. " version_string ;
prerr_endline version_string
exit 0
| ` Javac when ! buck ->
) ;
(* print buck key *)
if ! version_json then (
let javac_version =
F . fprintf F . std_formatter " %s@. " Version . versionJson ;
(* stderr contents of build command *)
exit 0
let chans = Unix . open_process_full ( String . concat ~ sep : " " ( List . rev ! rest ) ) ~ env : [| |] in
) ;
let err = String . strip ( In_channel . input_all chans . stderr ) in
if ! version_vcs then (
Unix . close_process_full chans | > ignore ;
F . fprintf F . std_formatter " %s@. " Version . commit ;
err in
exit 0
let analyzer_name =
IList . assoc ( = )
( match ! analyzer with Some a -> a | None -> Infer )
( IList . map ( fun ( n , a ) -> ( a , n ) ) string_to_analyzer ) in
let infer_version = Version . commit in
F . eprintf " %s/%s/%s@. " javac_version analyzer_name infer_version
| ` Javac ->
prerr_endline version_string
| ` Json ->
print_endline Version . versionJson
| ` Vcs ->
print_endline Version . commit
| ` None -> ()
) ;
) ;
if ! version < > ` None then exit 0 ;
F . set_margin ! margin ;
let set_minor_heap_size nMb = (* increase the minor heap size to speed up gc *)
let set_minor_heap_size nMb = (* increase the minor heap size to speed up gc *)
let ctrl = Gc . get () in
let ctrl = Gc . get () in