diff options
Diffstat (limited to 'driver/optmain.ml')
| -rw-r--r-- | driver/optmain.ml | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/driver/optmain.ml b/driver/optmain.ml deleted file mode 100644 index 6483bff95d..0000000000 --- a/driver/optmain.ml +++ /dev/null @@ -1,204 +0,0 @@ -(***********************************************************************) -(* *) -(* Objective Caml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -(* $Id$ *) - -open Config -open Clflags - -let process_interface_file ppf name = - Optcompile.interface ppf name - -let process_implementation_file ppf name = - Optcompile.implementation ppf name; - objfiles := (Misc.chop_extension_if_any name ^ ".cmx") :: !objfiles - -let process_file ppf name = - if Filename.check_suffix name ".ml" - || Filename.check_suffix name ".mlt" then begin - Optcompile.implementation ppf name; - objfiles := (Misc.chop_extension_if_any name ^ ".cmx") :: !objfiles - end - else if Filename.check_suffix name !Config.interface_suffix then - Optcompile.interface ppf name - else if Filename.check_suffix name ".cmx" - || Filename.check_suffix name ".cmxa" then - objfiles := name :: !objfiles - else if Filename.check_suffix name ext_obj - || Filename.check_suffix name ext_lib then - ccobjs := name :: !ccobjs - else if Filename.check_suffix name ".c" then begin - Optcompile.c_file name; - ccobjs := (Filename.chop_suffix (Filename.basename name) ".c" ^ ext_obj) - :: !ccobjs - end - else - raise(Arg.Bad("don't know what to do with " ^ name)) - -let print_version_and_library () = - print_string "The Objective Caml native-code compiler, version "; - print_string Config.version; print_newline(); - print_string "Standard library directory: "; - print_string Config.standard_library; print_newline(); - exit 0 - -let print_version_string () = - print_string Config.version; print_newline(); exit 0 - -let print_standard_library () = - print_string Config.standard_library; print_newline(); exit 0 - -let extract_output = function - | Some s -> s - | None -> - prerr_endline - "Please specify the name of the output file, using option -o"; - exit 2 - -let default_output = function - | Some s -> s - | None -> Config.default_executable_name - -let usage = "Usage: ocamlopt <options> <files>\nOptions are:" - -let main () = - native_code := true; - c_compiler := Config.native_c_compiler; - c_linker := Config.native_c_linker; - let ppf = Format.err_formatter in - try - Arg.parse (Arch.command_line_options @ [ - "-a", Arg.Set make_archive, " Build a library"; - "-c", Arg.Set compile_only, " Compile only (do not link)"; - "-cc", Arg.String(fun s -> c_compiler := s; c_linker := s), - "<comp> Use <comp> as the C compiler and linker"; - "-cclib", Arg.String(fun s -> - ccobjs := Misc.rev_split_words s @ !ccobjs), - "<opt> Pass option <opt> to the C linker"; - "-ccopt", Arg.String(fun s -> ccopts := s :: !ccopts), - "<opt> Pass option <opt> to the C compiler and linker"; - "-compact", Arg.Clear optimize_for_speed, - " Optimize code size rather than speed"; - "-dtypes", Arg.Set save_types, - " Save type information in <filename>.annot"; - "-i", Arg.Unit (fun () -> print_types := true; compile_only := true), - " Print inferred interface"; - "-I", Arg.String(fun dir -> include_dirs := dir :: !include_dirs), - "<dir> Add <dir> to the list of include directories"; - "-impl", Arg.String (process_implementation_file ppf), - "<file> Compile <file> as a .ml file"; - "-inline", Arg.Int(fun n -> inline_threshold := n * 8), - "<n> Set aggressiveness of inlining to <n>"; - "-intf", Arg.String (process_interface_file ppf), - "<file> Compile <file> as a .mli file"; - "-intf-suffix", Arg.String (fun s -> Config.interface_suffix := s), - "<file> Suffix for interface files (default: .mli)"; - "-intf_suffix", Arg.String (fun s -> Config.interface_suffix := s), - "<file> (deprecated) same as -intf-suffix"; - "-labels", Arg.Clear classic, " Use commuting label mode"; - "-linkall", Arg.Set link_everything, - " Link all modules, even unused ones"; - "-noassert", Arg.Set noassert, " Don't compile assertion checks"; - "-noautolink", Arg.Set no_auto_link, - " Don't automatically link C libraries specified in .cma files"; - "-nolabels", Arg.Set classic, " Ignore non-optional labels in types"; - "-nostdlib", Arg.Set no_std_include, - " do not add standard directory to the list of include directories"; - "-o", Arg.String(fun s -> output_name := Some s), - "<file> Set output file name to <file>"; - "-output-obj", Arg.Unit(fun () -> output_c_object := true), - " Output a C object file instead of an executable"; - "-p", Arg.Set gprofile, - " Compile and link with profiling support for \"gprof\"\n\ - \t(not supported on all platforms)"; - "-pack", Arg.Set make_package, - " Package the given .cmx files into one .cmx"; - "-pp", Arg.String(fun s -> preprocessor := Some s), - "<command> Pipe sources through preprocessor <command>"; - "-principal", Arg.Set principal, - " Check principality of type inference"; - "-rectypes", Arg.Set recursive_types, - " Allow arbitrary recursive types"; - "-S", Arg.Set keep_asm_file, " Keep intermediate assembly file"; - "-thread", Arg.Set use_threads, " Generate code that supports the system threads library"; - "-unsafe", Arg.Set fast, - " No bounds checking on array and string access"; - "-v", Arg.Unit print_version_and_library, - " Print compiler version and standard library location and exit"; - "-version", Arg.Unit print_version_string, - " Print compiler version and exit"; - "-verbose", Arg.Set verbose, " Print calls to external commands"; - "-w", Arg.String (Warnings.parse_options false), - "<flags> Enable or disable warnings according to <flags>:\n\ - \032 A/a enable/disable all warnings\n\ - \032 C/c enable/disable suspicious comment\n\ - \032 D/d enable/disable deprecated features\n\ - \032 E/e enable/disable fragile match\n\ - \032 F/f enable/disable partially applied function\n\ - \032 L/l enable/disable labels omitted in application\n\ - \032 M/m enable/disable overriden methods\n\ - \032 P/p enable/disable partial match\n\ - \032 S/s enable/disable non-unit statement\n\ - \032 U/u enable/disable unused match case\n\ - \032 V/v enable/disable hidden instance variables\n\ - \032 X/x enable/disable all other warnings\n\ - \032 default setting is \"Ale\"\n\ - \032 (all warnings but labels and fragile match enabled)"; - "-warn-error" , Arg.String (Warnings.parse_options true), - "<flags> Treat the warnings enabled by <flags> as errors.\n\ - \032 See option -w for the list of flags.\n\ - \032 Default setting is \"a\" (warnings are not errors)"; - "-where", Arg.Unit print_standard_library, - " Print location of standard library and exit"; - - "-nopervasives", Arg.Set nopervasives, " (undocumented)"; - "-dparsetree", Arg.Set dump_parsetree, " (undocumented)"; - "-drawlambda", Arg.Set dump_rawlambda, " (undocumented)"; - "-dlambda", Arg.Set dump_lambda, " (undocumented)"; - "-dcmm", Arg.Set dump_cmm, " (undocumented)"; - "-dsel", Arg.Set dump_selection, " (undocumented)"; - "-dcombine", Arg.Set dump_combine, " (undocumented)"; - "-dlive", Arg.Unit(fun () -> dump_live := true; - Printmach.print_live := true), - " (undocumented)"; - "-dspill", Arg.Set dump_spill, " (undocumented)"; - "-dsplit", Arg.Set dump_split, " (undocumented)"; - "-dinterf", Arg.Set dump_interf, " (undocumented)"; - "-dprefer", Arg.Set dump_prefer, " (undocumented)"; - "-dalloc", Arg.Set dump_regalloc, " (undocumented)"; - "-dreload", Arg.Set dump_reload, " (undocumented)"; - "-dscheduling", Arg.Set dump_scheduling, " (undocumented)"; - "-dlinear", Arg.Set dump_linear, " (undocumented)"; - "-dstartup", Arg.Set keep_startup_file, " (undocumented)"; - "-", Arg.String (process_file ppf), - "<file> Treat <file> as a file name (even if it starts with `-')" - ]) (process_file ppf) usage; - if !make_archive then begin - Optcompile.init_path(); - Asmlibrarian.create_archive (List.rev !objfiles) - (extract_output !output_name) - end - else if !make_package then begin - Optcompile.init_path(); - Asmpackager.package_files ppf (List.rev !objfiles) - (extract_output !output_name) - end - else if not !compile_only && !objfiles <> [] then begin - Optcompile.init_path(); - Asmlink.link ppf (List.rev !objfiles) (default_output !output_name) - end; - exit 0 - with x -> - Opterrors.report_error ppf x; - exit 2 - -let _ = main () |
