aboutsummaryrefslogtreecommitdiffstats
path: root/testing/ocaml/060_all_linkorder.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/ocaml/060_all_linkorder.patch')
-rw-r--r--testing/ocaml/060_all_linkorder.patch50
1 files changed, 0 insertions, 50 deletions
diff --git a/testing/ocaml/060_all_linkorder.patch b/testing/ocaml/060_all_linkorder.patch
deleted file mode 100644
index 07176b47c6..0000000000
--- a/testing/ocaml/060_all_linkorder.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Always pass the libraries to link as last argument to the linker.
-Should fix build failures with as-needed such as:
-https://bugs.gentoo.org/show_bug.cgi?id=331075
-https://bugs.gentoo.org/show_bug.cgi?id=331377
-
-Index: ocaml-3.12.0/utils/ccomp.ml
-===================================================================
---- ocaml-3.12.0.orig/utils/ccomp.ml
-+++ ocaml-3.12.0/utils/ccomp.ml
-@@ -98,8 +98,18 @@ type link_mode =
- | MainDll
- | Partial
-
-+let is_lib name = String.length name >= 2 && String.sub name 0 2 = "-l"
-+
-+let rec link_order init libs = function
-+ [] -> List.rev_append init (List.rev libs)
-+ | t::q -> if is_lib t then link_order init (t::libs) q else link_order (t::init) libs q
-+
-+let rec split_libs libs others = function
-+ [] -> (libs, others)
-+ | t::q -> if is_lib t then split_libs (t::libs) others q else split_libs libs (t::others) q
-+
- let call_linker mode output_name files extra =
-- let files = quote_files files in
-+ let files = quote_files (link_order [] [] files) in
- let cmd =
- if mode = Partial then
- Printf.sprintf "%s%s %s %s"
-@@ -108,7 +118,8 @@ let call_linker mode output_name files e
- files
- extra
- else
-- Printf.sprintf "%s -o %s %s %s %s %s %s %s"
-+ let (cclibs,ccopts) = split_libs [] [] !Clflags.ccopts in
-+ Printf.sprintf "%s -o %s %s %s %s %s %s %s %s"
- (match !Clflags.c_compiler, mode with
- | Some cc, _ -> cc
- | None, Exe -> Config.mkexe
-@@ -120,8 +131,9 @@ let call_linker mode output_name files e
- (if !Clflags.gprofile then Config.cc_profile else "")
- "" (*(Clflags.std_include_flag "-I")*)
- (quote_prefixed "-L" !Config.load_path)
-- (String.concat " " (List.rev !Clflags.ccopts))
-+ (String.concat " " ccopts)
- files
-+ (String.concat " " cclibs)
- extra
- in
- command cmd = 0