diff options
-rw-r--r-- | asmcomp/asmlink.ml | 14 | ||||
-rw-r--r-- | bytecomp/bytelink.ml | 14 |
2 files changed, 26 insertions, 2 deletions
diff --git a/asmcomp/asmlink.ml b/asmcomp/asmlink.ml index c9282866c..fc2389f31 100644 --- a/asmcomp/asmlink.ml +++ b/asmcomp/asmlink.ml @@ -176,6 +176,17 @@ let make_startup_file filename info_list = Emit.end_assembly(); close_out oc +let expand_libname name = + if String.length name < 2 || String.sub name 0 2 <> "-l" + then name + else begin + let libname = String.sub name 2 (String.length name - 2) ^ ext_lib in + try + find_in_path !load_path libname + with Not_found -> + libname + end + let call_linker file_list startup_file = let libname = if !Clflags.gprofile @@ -197,7 +208,8 @@ let call_linker file_list startup_file = (String.concat " " (List.rev !Clflags.ccopts)) startup_file (String.concat " " (List.rev file_list)) - (String.concat " " (List.rev !Clflags.ccobjs)) + (String.concat " " + (List.map expand_libname (List.rev !Clflags.ccobjs))) runtime_lib Config.c_libraries else diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml index ff9a8e5da..6031dc59d 100644 --- a/bytecomp/bytelink.ml +++ b/bytecomp/bytelink.ml @@ -360,6 +360,17 @@ let rec extract suffix l = | h::t -> extract suffix t ;; +let expand_libname name = + if String.length name < 2 || String.sub name 0 2 <> "-l" + then name + else begin + let libname = String.sub name 2 (String.length name - 2) ^ ext_lib in + try + find_in_path !load_path libname + with Not_found -> + libname + end + let build_custom_runtime prim_name exec_name = let libname = "libcamlrun" ^ ext_lib in let runtime_lib = @@ -390,7 +401,8 @@ let build_custom_runtime prim_name exec_name = Config.standard_library (String.concat " " (List.rev !Clflags.ccopts)) prim_name - (String.concat " " (List.rev !Clflags.ccobjs)) + (String.concat " " + (List.map expand_libname (List.rev !Clflags.ccobjs))) runtime_lib Config.c_libraries) | "MacOS" -> |