summaryrefslogtreecommitdiff
path: root/Makefile.rules
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2005-01-11 04:31:07 +0000
committerReid Spencer <rspencer@reidspencer.com>2005-01-11 04:31:07 +0000
commit492c2935be35b75c77ab8db19b63fca812ebea5c (patch)
tree12d2fae94b36d151dfe0d60be68680c371b4ec1b /Makefile.rules
parenta8d9cc870593d3e915ac9184dc0daf1783d4f8a4 (diff)
downloadllvm-492c2935be35b75c77ab8db19b63fca812ebea5c.tar.gz
llvm-492c2935be35b75c77ab8db19b63fca812ebea5c.tar.bz2
llvm-492c2935be35b75c77ab8db19b63fca812ebea5c.tar.xz
Implement the LOADABLE_MODULE option when building a shared library. This
passes the -module option on the libtool command line to ensure that the shared library being built can be dlopened and dlsym can work on that module. LOADABLE_MODULE should be sent only in conjunction with the SHARED_LIBRARY directive. It should generally be used for any module that is intended to be the target of an LLVM -load option. Note that loadable modules will not have the lib prefix but otherwise look like shared libraries. This is per the libtool recommendations and prevents these special shared libraries from being linked in via -l option to the linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19454 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Makefile.rules')
-rw-r--r--Makefile.rules17
1 files changed, 13 insertions, 4 deletions
diff --git a/Makefile.rules b/Makefile.rules
index d6ed2d5316..7badbddd76 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -264,11 +264,16 @@ LLVMGXXWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGXX)
# Adjust to user's request
#--------------------------------------------------------------------
-# Adjust LIBTOOL flags for shared libraries, or not.
-ifndef SHARED_LIBRARY
- LibTool.Flags += --tag=disable-shared
-else
+# Adjust LD.Flags and Libtool.Flags depending on the kind of library that is
+# to be built. Note that if LOADABLE_MODULE is specified then the resulting
+# shared library can be opened with dlopen
+ifdef SHARED_LIBRARY
LD.Flags += -rpath $(LibDir)
+ ifdef LOADABLE_MODULE
+ LD.Flags += -module
+ endif
+else
+ LibTool.Flags += --tag=disable-shared
endif
ifdef TOOL_VERBOSE
@@ -571,7 +576,11 @@ ifdef LIBRARYNAME
# Make sure there isn't any extranous whitespace on the LIBRARYNAME option
LIBRARYNAME := $(strip $(LIBRARYNAME))
+ifdef LOADABLE_MODULE
+LibName.LA := $(LibDir)/$(LIBRARYNAME).la
+else
LibName.LA := $(LibDir)/lib$(LIBRARYNAME).la
+endif
LibName.A := $(LibDir)/lib$(LIBRARYNAME).a
LibName.O := $(LibDir)/$(LIBRARYNAME).o
LibName.BCA:= $(LibDir)/lib$(LIBRARYNAME).bca