Add --enable-llvmc-dynamic configure option.

Controls whether libCompilerDriver should be loaded dynamically. By default this
is needed only on Win32, to make dynamic plugins work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74759 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mikhail Glushenkov 2009-07-03 03:52:47 +00:00
parent 895f32c212
commit 2373c99433
4 changed files with 52 additions and 10 deletions

View File

@ -297,3 +297,9 @@ endif
# Location of the plugin header file for gold.
BINUTILS_INCDIR := @BINUTILS_INCDIR@
# When ENABLE_LLVMC_DYNAMIC is enabled, LLVMC will link libCompilerDriver
# dynamically. This is needed to make dynamic plugins work on some targets
# (Windows).
ENABLE_LLVMC_DYNAMIC = 0
#@ENABLE_LLVMC_DYNAMIC@

View File

@ -200,17 +200,20 @@ ifdef LLVMC_PLUGIN
LIBRARYNAME := $(patsubst %,plugin_llvmc_%,$(LLVMC_PLUGIN))
CPP.Flags += -DLLVMC_PLUGIN_NAME=$(LLVMC_PLUGIN)
REQUIRES_EH := 1
LD.Flags += -lCompilerDriver
ifeq ($(ENABLE_LLVMC_DYNAMIC),1)
LD.Flags += -lCompilerDriver
endif
# Build a dynamic library if the user runs `make` directly from the plugin
# directory.
ifndef LLVMC_BUILTIN_PLUGIN
LOADABLE_MODULE = 1
LOADABLE_MODULE = 1
endif
# TableGen stuff...
ifneq ($(BUILT_SOURCES),)
LLVMC_BUILD_AUTOGENERATED_INC=1
LLVMC_BUILD_AUTOGENERATED_INC=1
endif
endif # LLVMC_PLUGIN
@ -218,8 +221,15 @@ endif # LLVMC_PLUGIN
ifdef LLVMC_BASED_DRIVER
TOOLNAME = $(LLVMC_BASED_DRIVER)
REQUIRES_EH := 1
LD.Flags += -lCompilerDriver
ifeq ($(ENABLE_LLVMC_DYNAMIC),1)
LD.Flags += -lCompilerDriver
else
LLVMLIBS = CompilerDriver.a
LINK_COMPONENTS = support system
endif
# Preprocessor magic that generates references to static variables in built-in
# plugins.
@ -502,8 +512,7 @@ ifeq ($(OS),Darwin)
else
ifeq ($(OS),Cygwin)
SharedLinkOptions=-shared -nostdlib -Wl,--export-all-symbols \
-Wl,--enable-auto-import -Wl,--enable-auto-image-base \
-Wl,--enable-runtime-pseudo-relocs
-Wl,--enable-auto-import -Wl,--enable-auto-image-base
else
SharedLinkOptions=-shared
endif

View File

@ -593,6 +593,24 @@ case "$enableval" in
*) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
esac
dnl Only Windows needs dynamic libCompilerDriver to support plugins.
if test "$llvm_cv_os_type" = "Win32" ; then
llvmc_dynamic="yes"
else
llvmc_dynamic="no"
fi
dnl --enable-llvmc-dynamic : should LLVMC link libCompilerDriver dynamically?
AC_ARG_ENABLE(llvmc-dynamic,AS_HELP_STRING(
--enable-llvmc-dynamic,
[Link LLVMC dynamically (default is NO, unless on Win32)]),,
enableval=$llvmc_dynamic)
if test ${enableval} = "no"; then
AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[]])
else
AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[ENABLE_LLVMC_DYNAMIC=1]])
fi
dnl===-----------------------------------------------------------------------===
dnl===
dnl=== SECTION 4: Check for programs we need and that they are the right version

View File

@ -12,18 +12,26 @@ LEVEL = ../..
# We don't want this library to appear in `llvm-config --libs` output, so its
# name doesn't start with "LLVM".
LIBRARYNAME = libCompilerDriver
LLVMLIBS = LLVMSupport.a LLVMSystem.a
LOADABLE_MODULE := 1
ifeq ($(ENABLE_LLVMC_DYNAMIC),1)
LIBRARYNAME = libCompilerDriver
LLVMLIBS = LLVMSupport.a LLVMSystem.a
LOADABLE_MODULE := 1
else
LIBRARYNAME = CompilerDriver
LINK_COMPONENTS = support system
endif
REQUIRES_EH := 1
include $(LEVEL)/Makefile.common
# Copy libCompilerDriver to the bin dir so that llvmc can find it.
ifeq ($(ENABLE_LLVMC_DYNAMIC),1)
FullLibName = $(LIBRARYNAME)$(SHLIBEXT)
all-local:: $(ToolDir)/$(FullLibName)
# Copy the library to the bin dir so that llvmc can find it.
$(ToolDir)/$(FullLibName): $(LibDir)/$(FullLibName) $(ToolDir)/.dir
$(Echo) Copying $(BuildMode) Shared Library $(FullLibName) to $@
-$(Verb) $(CP) $< $@
@ -32,3 +40,4 @@ clean-local::
$(Echo) Removing $(BuildMode) Shared Library $(FullLibName) \
from $(ToolDir)
-$(Verb) $(RM) -f $(ToolDir)/$(FullLibName)
endif