[llvm] [ocaml] Support linking against dylib

Support linking OCaml modules against LLVM dylib when requested,
rather than against static libs that might not be installed at all.

Differential Revision: https://reviews.llvm.org/D68452

llvm-svn: 374556
This commit is contained in:
Michal Gorny 2019-10-11 14:32:43 +00:00
parent 3b581ac80f
commit da2a29a17c
1 changed files with 18 additions and 14 deletions

View File

@ -66,21 +66,25 @@ function(add_ocaml_library name)
list(APPEND ocaml_flags "-custom") list(APPEND ocaml_flags "-custom")
endif() endif()
explicit_map_components_to_libraries(llvm_libs ${ARG_LLVM}) if(LLVM_LINK_LLVM_DYLIB)
foreach( llvm_lib ${llvm_libs} ) list(APPEND ocaml_flags "-lLLVM")
list(APPEND ocaml_flags "-l${llvm_lib}" ) else()
endforeach() explicit_map_components_to_libraries(llvm_libs ${ARG_LLVM})
foreach( llvm_lib ${llvm_libs} )
list(APPEND ocaml_flags "-l${llvm_lib}" )
endforeach()
get_property(system_libs TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS) get_property(system_libs TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS)
foreach(system_lib ${system_libs}) foreach(system_lib ${system_libs})
if (system_lib MATCHES "^-") if (system_lib MATCHES "^-")
# If it's an option, pass it without changes. # If it's an option, pass it without changes.
list(APPEND ocaml_flags "${system_lib}" ) list(APPEND ocaml_flags "${system_lib}" )
else() else()
# Otherwise assume it's a library name we need to link with. # Otherwise assume it's a library name we need to link with.
list(APPEND ocaml_flags "-l${system_lib}" ) list(APPEND ocaml_flags "-l${system_lib}" )
endif() endif()
endforeach() endforeach()
endif()
string(REPLACE ";" " " ARG_CFLAGS "${ARG_CFLAGS}") string(REPLACE ";" " " ARG_CFLAGS "${ARG_CFLAGS}")
set(c_flags "${ARG_CFLAGS} ${LLVM_DEFINITIONS}") set(c_flags "${ARG_CFLAGS} ${LLVM_DEFINITIONS}")