diff options
author | Damien Doligez <damien.doligez-inria.fr> | 2015-07-17 14:31:05 +0000 |
---|---|---|
committer | Damien Doligez <damien.doligez-inria.fr> | 2015-07-17 14:31:05 +0000 |
commit | 860c670848440f791d1b9c68a1ace8fb629da234 (patch) | |
tree | 6b856e6a04cf876221c6740e8df75a8778a3b8b7 /utils/ccomp.ml | |
parent | 7fdba8f53360d9355dc96953a0d8225e111ab722 (diff) | |
download | ocaml-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.ml | 16 |
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 |