summaryrefslogtreecommitdiff
path: root/utils/ccomp.ml
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2015-07-17 14:31:05 +0000
committerDamien Doligez <damien.doligez-inria.fr>2015-07-17 14:31:05 +0000
commit860c670848440f791d1b9c68a1ace8fb629da234 (patch)
tree6b856e6a04cf876221c6740e8df75a8778a3b8b7 /utils/ccomp.ml
parent7fdba8f53360d9355dc96953a0d8225e111ab722 (diff)
downloadocaml-860c670848440f791d1b9c68a1ace8fb629da234.tar.gz
merge branch 4.02 from 4.02.1 (rev 15540) to a few fixes after 4.02.2 (rev 16205)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@16214 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'utils/ccomp.ml')
-rw-r--r--utils/ccomp.ml16
1 files changed, 12 insertions, 4 deletions
diff --git a/utils/ccomp.ml b/utils/ccomp.ml
index 4bea26866b..a897ddc0d9 100644
--- a/utils/ccomp.ml
+++ b/utils/ccomp.ml
@@ -101,14 +101,22 @@ type link_mode =
| MainDll
| Partial
+let remove_Wl cclibs =
+ cclibs |> List.map (fun cclib ->
+ (* -Wl,-foo,bar -> -foo bar *)
+ if String.length cclib >= 4 && "-Wl," = String.sub cclib 0 4 then
+ String.map (function ',' -> ' ' | c -> c)
+ (String.sub cclib 4 (String.length cclib - 4))
+ else cclib)
+
let call_linker mode output_name files extra =
- let files = quote_files files in
let cmd =
if mode = Partial then
- Printf.sprintf "%s%s %s %s"
+ Printf.sprintf "%s%s %s %s %s"
Config.native_pack_linker
(Filename.quote output_name)
- files
+ (quote_prefixed "-L" !Config.load_path)
+ (quote_files (remove_Wl files))
extra
else
Printf.sprintf "%s -o %s %s %s %s %s %s %s"
@@ -124,7 +132,7 @@ let call_linker mode output_name files extra =
"" (*(Clflags.std_include_flag "-I")*)
(quote_prefixed "-L" !Config.load_path)
(String.concat " " (List.rev !Clflags.all_ccopts))
- files
+ (quote_files files)
extra
in
command cmd = 0