mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Try r96559 for the third time. This time the shared library is only built if
--enable-shared is passed to configure. llvm-svn: 97119
This commit is contained in:
parent
11798e6c79
commit
f073920691
8
Makefile
8
Makefile
@ -30,8 +30,8 @@ ifeq ($(BUILD_DIRS_ONLY),1)
|
||||
DIRS := lib/System lib/Support utils
|
||||
OPTIONAL_DIRS :=
|
||||
else
|
||||
DIRS := lib/System lib/Support utils lib/VMCore lib tools/llvm-config \
|
||||
tools runtime docs unittests
|
||||
DIRS := lib/System lib/Support utils lib/VMCore lib tools/llvm-shlib \
|
||||
tools/llvm-config tools runtime docs unittests
|
||||
OPTIONAL_DIRS := projects bindings
|
||||
endif
|
||||
|
||||
@ -43,6 +43,10 @@ EXTRA_DIST := test unittests llvm.spec include win32 Xcode
|
||||
|
||||
include $(LEVEL)/Makefile.config
|
||||
|
||||
ifneq ($(ENABLE_SHARED),1)
|
||||
DIRS := $(filter-out tools/llvm-shlib, $(DIRS))
|
||||
endif
|
||||
|
||||
ifeq ($(MAKECMDGOALS),libs-only)
|
||||
DIRS := $(filter-out tools runtime docs, $(DIRS))
|
||||
OPTIONAL_DIRS :=
|
||||
|
@ -262,6 +262,9 @@ ENABLE_THREADS := @ENABLE_THREADS@
|
||||
# Do we want to build with position independent code?
|
||||
ENABLE_PIC := @ENABLE_PIC@
|
||||
|
||||
# Do we want to build a shared library and link the tools with it?
|
||||
ENABLE_SHARED := @ENABLE_SHARED@
|
||||
|
||||
# Use -fvisibility-inlines-hidden?
|
||||
ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
|
||||
|
||||
@ -272,6 +275,9 @@ ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
|
||||
# Enable JIT for this platform
|
||||
TARGET_HAS_JIT = @TARGET_HAS_JIT@
|
||||
|
||||
# Environment variable to set to change the runtime shared library search path.
|
||||
SHLIBPATH_VAR = @SHLIBPATH_VAR@
|
||||
|
||||
# Shared library extension for host platform.
|
||||
SHLIBEXT = @SHLIBEXT@
|
||||
|
||||
|
@ -623,11 +623,12 @@ endif
|
||||
ifneq ($(HOST_OS),Darwin)
|
||||
ifneq ($(DARWIN_MAJVERS),4)
|
||||
ifdef TOOLNAME
|
||||
ifdef EXAMPLE_TOOL
|
||||
LD.Flags += $(RPATH) -Wl,$(ExmplDir) $(RDYNAMIC)
|
||||
else
|
||||
LD.Flags += $(RPATH) -Wl,$(ToolDir) $(RDYNAMIC)
|
||||
endif
|
||||
LD.Flags += $(RPATH) -Wl,'$$ORIGIN/../lib'
|
||||
ifdef EXAMPLE_TOOL
|
||||
LD.Flags += $(RPATH) -Wl,$(ExmplDir) $(RDYNAMIC)
|
||||
else
|
||||
LD.Flags += $(RPATH) -Wl,$(ToolDir) $(RDYNAMIC)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@ -960,11 +961,16 @@ $(LLVM_CONFIG):
|
||||
|
||||
$(ToolDir)/$(strip $(TOOLNAME))$(EXEEXT): $(LLVM_CONFIG)
|
||||
|
||||
ifeq ($(ENABLE_SHARED), 1)
|
||||
LLVMLibsOptions += -lLLVM-$(LLVMVersion)
|
||||
LLVMLibsPaths += $(LibDir)/libLLVM-$(LLVMVersion)$(SHLIBEXT)
|
||||
else
|
||||
LLVMLibsOptions += $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS))
|
||||
LLVMLibsPaths += $(LLVM_CONFIG) \
|
||||
$(shell $(LLVM_CONFIG) --libfiles $(LINK_COMPONENTS))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# Library Build Rules: Four ways to build a library
|
||||
@ -1169,11 +1175,13 @@ endif
|
||||
# If neither BUILD_ARCHIVE or LOADABLE_MODULE are specified, default to
|
||||
# building an archive.
|
||||
#---------------------------------------------------------
|
||||
ifndef NO_BUILD_ARCHIVE
|
||||
ifndef BUILD_ARCHIVE
|
||||
ifndef LOADABLE_MODULE
|
||||
BUILD_ARCHIVE = 1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------
|
||||
# Archive Library Targets:
|
||||
|
@ -472,6 +472,18 @@ esac
|
||||
AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
|
||||
[Define if position independent code is enabled])
|
||||
|
||||
dnl Allow building a shared library and linking tools against it.
|
||||
AC_ARG_ENABLE(shared,
|
||||
AS_HELP_STRING([--enable-shared],
|
||||
[Build a shared library and link tools against it (default is NO)]),,
|
||||
enableval=default)
|
||||
case "$enableval" in
|
||||
yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
|
||||
no) AC_SUBST(ENABLE_SHARED,[0]) ;;
|
||||
default) AC_SUBST(ENABLE_SHARED,[0]) ;;
|
||||
*) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
|
||||
esac
|
||||
|
||||
dnl Allow specific targets to be specified for building (or not)
|
||||
TARGETS_TO_BUILD=""
|
||||
AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
|
||||
@ -1336,6 +1348,10 @@ dnl Propagate the shared library extension that the libltdl checks did to
|
||||
dnl the Makefiles so we can use it there too
|
||||
AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
|
||||
|
||||
dnl Propagate the run-time library path variable that the libltdl
|
||||
dnl checks found to the Makefiles so we can use it there too
|
||||
AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
|
||||
|
||||
# Translate the various configuration directories and other basic
|
||||
# information into substitutions that will end up in Makefile.config.in
|
||||
# that these configured values can be used by the makefiles
|
||||
|
36
configure
vendored
36
configure
vendored
@ -689,6 +689,7 @@ TARGET_HAS_JIT
|
||||
ENABLE_DOXYGEN
|
||||
ENABLE_THREADS
|
||||
ENABLE_PIC
|
||||
ENABLE_SHARED
|
||||
TARGETS_TO_BUILD
|
||||
LLVM_ENUM_TARGETS
|
||||
LLVM_ENUM_ASM_PRINTERS
|
||||
@ -770,6 +771,7 @@ LLVMCC1PLUS
|
||||
LLVMGCCDIR
|
||||
LLVMGCC_LANGS
|
||||
SHLIBEXT
|
||||
SHLIBPATH_VAR
|
||||
LLVM_PREFIX
|
||||
LLVM_BINDIR
|
||||
LLVM_LIBDIR
|
||||
@ -1402,6 +1404,8 @@ Optional Features:
|
||||
--enable-threads Use threads if available (default is YES)
|
||||
--enable-pic Build LLVM with Position Independent Code (default
|
||||
is YES)
|
||||
--enable-shared Build a shared library and link tools against it
|
||||
(default is NO)
|
||||
--enable-targets Build specific host targets: all or
|
||||
target1,target2,... Valid targets are: host, x86,
|
||||
x86_64, sparc, powerpc, alpha, arm, mips, spu,
|
||||
@ -2327,7 +2331,7 @@ else
|
||||
msp430-*) llvm_cv_target_arch="MSP430" ;;
|
||||
s390x-*) llvm_cv_target_arch="SystemZ" ;;
|
||||
bfin-*) llvm_cv_target_arch="Blackfin" ;;
|
||||
microblaze-*) llvm_cv_target_arch="MBlaze" ;;
|
||||
mblaze-*) llvm_cv_target_arch="MBlaze" ;;
|
||||
*) llvm_cv_target_arch="Unknown" ;;
|
||||
esac
|
||||
fi
|
||||
@ -4867,6 +4871,25 @@ cat >>confdefs.h <<_ACEOF
|
||||
_ACEOF
|
||||
|
||||
|
||||
# Check whether --enable-shared was given.
|
||||
if test "${enable_shared+set}" = set; then
|
||||
enableval=$enable_shared;
|
||||
else
|
||||
enableval=default
|
||||
fi
|
||||
|
||||
case "$enableval" in
|
||||
yes) ENABLE_SHARED=1
|
||||
;;
|
||||
no) ENABLE_SHARED=0
|
||||
;;
|
||||
default) ENABLE_SHARED=0
|
||||
;;
|
||||
*) { { echo "$as_me:$LINENO: error: Invalid setting for --enable-shared. Use \"yes\" or \"no\"" >&5
|
||||
echo "$as_me: error: Invalid setting for --enable-shared. Use \"yes\" or \"no\"" >&2;}
|
||||
{ (exit 1); exit 1; }; } ;;
|
||||
esac
|
||||
|
||||
TARGETS_TO_BUILD=""
|
||||
# Check whether --enable-targets was given.
|
||||
if test "${enable_targets+set}" = set; then
|
||||
@ -11110,7 +11133,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 11108 "configure"
|
||||
#line 11136 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -19691,6 +19714,9 @@ fi
|
||||
SHLIBEXT=$libltdl_cv_shlibext
|
||||
|
||||
|
||||
SHLIBPATH_VAR=$libltdl_cv_shlibpath_var
|
||||
|
||||
|
||||
# Translate the various configuration directories and other basic
|
||||
# information into substitutions that will end up in Makefile.config.in
|
||||
# that these configured values can be used by the makefiles
|
||||
@ -20748,6 +20774,7 @@ TARGET_HAS_JIT!$TARGET_HAS_JIT$ac_delim
|
||||
ENABLE_DOXYGEN!$ENABLE_DOXYGEN$ac_delim
|
||||
ENABLE_THREADS!$ENABLE_THREADS$ac_delim
|
||||
ENABLE_PIC!$ENABLE_PIC$ac_delim
|
||||
ENABLE_SHARED!$ENABLE_SHARED$ac_delim
|
||||
TARGETS_TO_BUILD!$TARGETS_TO_BUILD$ac_delim
|
||||
LLVM_ENUM_TARGETS!$LLVM_ENUM_TARGETS$ac_delim
|
||||
LLVM_ENUM_ASM_PRINTERS!$LLVM_ENUM_ASM_PRINTERS$ac_delim
|
||||
@ -20757,7 +20784,6 @@ ENABLE_CBE_PRINTF_A!$ENABLE_CBE_PRINTF_A$ac_delim
|
||||
CLANGPATH!$CLANGPATH$ac_delim
|
||||
CLANGXXPATH!$CLANGXXPATH$ac_delim
|
||||
ENABLE_BUILT_CLANG!$ENABLE_BUILT_CLANG$ac_delim
|
||||
OPTIMIZE_OPTION!$OPTIMIZE_OPTION$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
|
||||
@ -20799,6 +20825,7 @@ _ACEOF
|
||||
ac_delim='%!_!# '
|
||||
for ac_last_try in false false false false false :; do
|
||||
cat >conf$$subs.sed <<_ACEOF
|
||||
OPTIMIZE_OPTION!$OPTIMIZE_OPTION$ac_delim
|
||||
EXTRA_OPTIONS!$EXTRA_OPTIONS$ac_delim
|
||||
BINUTILS_INCDIR!$BINUTILS_INCDIR$ac_delim
|
||||
ENABLE_LLVMC_DYNAMIC!$ENABLE_LLVMC_DYNAMIC$ac_delim
|
||||
@ -20870,6 +20897,7 @@ LLVMCC1PLUS!$LLVMCC1PLUS$ac_delim
|
||||
LLVMGCCDIR!$LLVMGCCDIR$ac_delim
|
||||
LLVMGCC_LANGS!$LLVMGCC_LANGS$ac_delim
|
||||
SHLIBEXT!$SHLIBEXT$ac_delim
|
||||
SHLIBPATH_VAR!$SHLIBPATH_VAR$ac_delim
|
||||
LLVM_PREFIX!$LLVM_PREFIX$ac_delim
|
||||
LLVM_BINDIR!$LLVM_BINDIR$ac_delim
|
||||
LLVM_LIBDIR!$LLVM_LIBDIR$ac_delim
|
||||
@ -20890,7 +20918,7 @@ LIBOBJS!$LIBOBJS$ac_delim
|
||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 89; then
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 91; then
|
||||
break
|
||||
elif $ac_last_try; then
|
||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||
|
@ -198,4 +198,6 @@ Unit/lit.site.cfg: $(PROJ_OBJ_DIR)/Unit/.dir FORCE
|
||||
-e "s#@LLVM_TOOLS_DIR@#$(ToolDir)#g" \
|
||||
-e "s#@LLVMGCCDIR@#$(LLVMGCCDIR)#g" \
|
||||
-e "s#@LLVM_BUILD_MODE@#$(BuildMode)#g" \
|
||||
-e "s#@ENABLE_SHARED@#$(ENABLE_SHARED)#g" \
|
||||
-e "s#@SHLIBPATH_VAR@#$(SHLIBPATH_VAR)#g" \
|
||||
$(PROJ_SRC_DIR)/Unit/lit.site.cfg.in > $@
|
||||
|
@ -23,7 +23,14 @@ config.test_format = lit.formats.GoogleTest(llvm_build_mode, 'Tests')
|
||||
|
||||
###
|
||||
|
||||
import os
|
||||
# If necessary, point the dynamic loader at libLLVM.so.
|
||||
if config.enable_shared:
|
||||
libdir = os.path.join(config.llvm_obj_root, config.llvm_build_mode, 'lib')
|
||||
shlibpath = config.environment.get(config.shlibpath_var,'')
|
||||
if shlibpath:
|
||||
shlibpath = ':' + shlibpath
|
||||
shlibpath = libdir + shlibpath
|
||||
config.environment[config.shlibpath_var] = shlibpath
|
||||
|
||||
# Check that the object root is known.
|
||||
if config.test_exec_root is None:
|
||||
|
@ -5,6 +5,8 @@ config.llvm_obj_root = "@LLVM_BINARY_DIR@"
|
||||
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
|
||||
config.llvmgcc_dir = "@LLVMGCCDIR@"
|
||||
config.llvm_build_mode = "@LLVM_BUILD_MODE@"
|
||||
config.enable_shared = @ENABLE_SHARED@
|
||||
config.shlibpath_var = "@SHLIBPATH_VAR@"
|
||||
|
||||
# Let the main config do the real work.
|
||||
lit.load_config(config, "@LLVM_SOURCE_DIR@/test/Unit/lit.cfg")
|
||||
|
60
tools/llvm-shlib/Makefile
Normal file
60
tools/llvm-shlib/Makefile
Normal file
@ -0,0 +1,60 @@
|
||||
##===- tools/shlib/Makefile --------------------------------*- Makefile -*-===##
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
LEVEL = ../..
|
||||
|
||||
LIBRARYNAME = LLVM-$(LLVMVersion)
|
||||
|
||||
NO_BUILD_ARCHIVE = 1
|
||||
LINK_LIBS_IN_SHARED = 1
|
||||
SHARED_LIBRARY = 1
|
||||
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
# Include all archives in libLLVM.(so|dylib) except the ones that have
|
||||
# their own dynamic libraries.
|
||||
Archives := $(wildcard $(LibDir)/libLLVM*.a)
|
||||
SharedLibraries := $(wildcard $(LibDir)/libLLVM*$(SHLIBEXT))
|
||||
IncludeInLibLlvm := $(filter-out $(basename $(SharedLibraries)).a, $(Archives))
|
||||
LLVMLibsOptions := $(IncludeInLibLlvm:$(LibDir)/lib%.a=-l%)
|
||||
LLVMLibsPaths := $(IncludeInLibLlvm)
|
||||
|
||||
$(LibName.SO): $(LLVMLibsPaths)
|
||||
|
||||
ifeq ($(HOST_OS),Darwin)
|
||||
# set dylib internal version number to llvmCore submission number
|
||||
ifdef LLVM_SUBMIT_VERSION
|
||||
LLVMLibsOptions := $(LLVMLibsOptions) -Wl,-current_version \
|
||||
-Wl,$(LLVM_SUBMIT_VERSION).$(LLVM_SUBMIT_SUBVERSION) \
|
||||
-Wl,-compatibility_version -Wl,1
|
||||
endif
|
||||
# Include everything from the .a's into the shared library.
|
||||
LLVMLibsOptions := $(LLVMLibsOptions) -all_load
|
||||
# extra options to override libtool defaults
|
||||
LLVMLibsOptions := $(LLVMLibsOptions) \
|
||||
-avoid-version \
|
||||
-Wl,-dead_strip \
|
||||
-Wl,-seg1addr -Wl,0xE0000000
|
||||
|
||||
# Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line
|
||||
DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/')
|
||||
ifneq ($(DARWIN_VERS),8)
|
||||
LLVMLibsOptions := $(LLVMLibsOptions) \
|
||||
-Wl,-install_name \
|
||||
-Wl,"@executable_path/../lib/lib$(LIBRARYNAME)$(SHLIBEXT)"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(HOST_OS), Linux)
|
||||
# Include everything from the .a's into the shared library.
|
||||
LLVMLibsOptions := -Wl,--whole-archive $(LLVMLibsOptions) \
|
||||
-Wl,--no-whole-archive
|
||||
# Don't allow unresolved symbols.
|
||||
LLVMLibsOptions += -Wl,--no-undefined
|
||||
endif
|
@ -28,6 +28,15 @@ CPP.Flags += -I$(LLVM_SRC_ROOT)/utils/unittest/googletest/include/
|
||||
CPP.Flags += $(NO_VARIADIC_MACROS)
|
||||
TESTLIBS = -lGoogleTest -lUnitTestMain
|
||||
|
||||
ifeq ($(ENABLE_SHARED), 1)
|
||||
# Add the absolute path to the dynamic library. This is ok because
|
||||
# we'll never install unittests.
|
||||
LD.Flags += $(RPATH) -Wl,$(LibDir)
|
||||
# Also set {DYLD,LD}_LIBRARY_PATH because OSX ignores the rpath most
|
||||
# of the time.
|
||||
Run.Shared := $(SHLIBPATH_VAR)="$(LibDir)$${$(SHLIBPATH_VAR):+:}$$$(SHLIBPATH_VAR)"
|
||||
endif
|
||||
|
||||
$(LLVMUnitTestExe): $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths)
|
||||
$(Echo) Linking $(BuildMode) unit test $(TESTNAME) $(StripWarnMsg)
|
||||
$(Verb) $(Link) -o $@ $(TOOLLINKOPTS) $(ObjectsO) $(ProjLibsOptions) \
|
||||
@ -38,6 +47,6 @@ $(LLVMUnitTestExe): $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths)
|
||||
all:: $(LLVMUnitTestExe)
|
||||
|
||||
unitcheck:: $(LLVMUnitTestExe)
|
||||
$(LLVMUnitTestExe)
|
||||
$(Run.Shared) $(LLVMUnitTestExe)
|
||||
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user