From 3d52c077a914d0f0818f3a1eab41ed84ae3b346a Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Wed, 27 Nov 2013 19:51:24 +0000 Subject: Merging r195834: ------------------------------------------------------------------------ r195834 | whitequark | 2013-11-27 03:03:18 -0800 (Wed, 27 Nov 2013) | 11 lines [OCaml] Embed rpath into stub libraries and native executables This commit embeds a set of linker flags with hardcoded paths to the LLVM shared library on --enable-shared builds into .cmxa files and stub dynamic libraries. This solution closely follows existing rules for rpath in the LLVM tools, which had to be modified because of differences in toolchain. Without this patch, OCaml tests as well as opam bindings broke, as neither of those updates LD_LIBRARY_PATH to include the $prefix/lib directory. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195873 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/ocaml/Makefile.ocaml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'bindings') diff --git a/bindings/ocaml/Makefile.ocaml b/bindings/ocaml/Makefile.ocaml index f7ee43b..1e9eb9f 100644 --- a/bindings/ocaml/Makefile.ocaml +++ b/bindings/ocaml/Makefile.ocaml @@ -79,6 +79,15 @@ Compile.CMO := $(strip $(OCAMLC) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) Compile.CMX := $(strip $(OCAMLOPT) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) ifdef OCAMLSTUBS +# Avoid the need for LD_LIBRARY_PATH +ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) +ifneq ($(HOST_OS),Darwin) +OCAMLRPATH := $(RPATH) -Wl,'$(SharedLibDir)' +endif +endif +endif + +ifdef OCAMLSTUBS Archive.CMA := $(strip $(OCAMLC) -a -dllib -l$(LIBRARYNAME) $(OCAMLDEBUGFLAG) \ -o) else @@ -88,8 +97,8 @@ endif ifdef OCAMLSTUBS Archive.CMXA := $(strip $(OCAMLOPT) -a $(patsubst %,-cclib %, \ - $(LLVMLibsOptions) -l$(LIBRARYNAME)) \ - -cclib -L$(SharedLibDir) \ + $(LLVMLibsOptions) -l$(LIBRARYNAME) \ + -L$(SharedLibDir) $(OCAMLRPATH)) $(OCAMLDEBUGFLAG) -o) else Archive.CMXA := $(strip $(OCAMLOPT) -a $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) -o) @@ -234,7 +243,7 @@ uninstall-local:: uninstall-shared $(SharedLib): $(ObjectsO) $(OcamlDir)/.dir $(Echo) "Building $(BuildMode) $(notdir $@)" - $(Verb) $(Link) $(SharedLinkOptions) $(LLVMLibsOptions) \ + $(Verb) $(Link) $(SharedLinkOptions) $(OCAMLRPATH) $(LLVMLibsOptions) \ -o $@ $(ObjectsO) clean-shared:: -- cgit v1.1