summaryrefslogtreecommitdiff
path: root/driver/main.ml
diff options
context:
space:
mode:
Diffstat (limited to 'driver/main.ml')
-rw-r--r--driver/main.ml28
1 files changed, 21 insertions, 7 deletions
diff --git a/driver/main.ml b/driver/main.ml
index 65d21ecea3..8e31daa4ad 100644
--- a/driver/main.ml
+++ b/driver/main.ml
@@ -15,24 +15,38 @@
open Config
open Clflags
+let output_prefix name =
+ let oname =
+ match !output_name with
+ | None -> name
+ | Some n -> if !compile_only then (output_name := None; n) else name in
+ Misc.chop_extension_if_any oname
+
let process_interface_file ppf name =
- Compile.interface ppf name
+ Compile.interface ppf name (output_prefix name)
let process_implementation_file ppf name =
- Compile.implementation ppf name;
- objfiles := (Misc.chop_extension_if_any name ^ ".cmo") :: !objfiles
+ let opref = output_prefix name in
+ Compile.implementation ppf name opref;
+ objfiles := (opref ^ ".cmo") :: !objfiles
let process_file ppf name =
if Filename.check_suffix name ".ml"
|| Filename.check_suffix name ".mlt" then begin
- Compile.implementation ppf name;
- objfiles := (Misc.chop_extension_if_any name ^ ".cmo") :: !objfiles
+ let opref = output_prefix name in
+ Compile.implementation ppf name opref;
+ objfiles := (opref ^ ".cmo") :: !objfiles
+ end
+ else if Filename.check_suffix name !Config.interface_suffix then begin
+ let opref = output_prefix name in
+ Compile.interface ppf name opref;
+ if !make_package then objfiles := (opref ^ ".cmi") :: !objfiles
end
- else if Filename.check_suffix name !Config.interface_suffix then
- Compile.interface ppf name
else if Filename.check_suffix name ".cmo"
|| Filename.check_suffix name ".cma" then
objfiles := name :: !objfiles
+ else if Filename.check_suffix name ".cmi" && !make_package then
+ objfiles := name :: !objfiles
else if Filename.check_suffix name ext_obj
|| Filename.check_suffix name ext_lib then
ccobjs := name :: !ccobjs