From 8ad46b79c3d39e1c7a1494c060e41234711b7d18 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 6 Nov 2013 21:44:54 +0000 Subject: [PATCH] [build] Update runtime library and tests to work with relocatable SDKs on OS X 10.9. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194168 91177308-0d34-0410-b5e6-96231b3b80d8 --- runtime/compiler-rt/Makefile | 17 +++++++++++++++++ test/lit.cfg | 14 +++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/runtime/compiler-rt/Makefile b/runtime/compiler-rt/Makefile index c4d2ad0cf9..7769e3b440 100644 --- a/runtime/compiler-rt/Makefile +++ b/runtime/compiler-rt/Makefile @@ -27,6 +27,10 @@ ResourceIncludeDir := $(ResourceDir)/include PROJ_resources_lib := $(PROJ_resources)/lib PROJ_resources_include := $(PROJ_resources)/include +# Initialize a variable to use for extra flags to pass to the +# compiler-rt make process. +COMPILERRT_MAKE_FLAGS := + # Expect compiler-rt to be in llvm/projects/compiler-rt COMPILERRT_SRC_ROOT := $(LLVM_SRC_ROOT)/projects/compiler-rt @@ -80,6 +84,17 @@ RuntimeLibrary.darwin.Configs := \ asan_osx_dynamic.dylib \ profile_osx.a profile_ios.a \ ubsan_osx.a + +# Support building compiler-rt with relocatable SDKs. +# +# This will cause make to put SDKROOT in the environment, and since we +# are using the built Clang to build compiler-rt, it to pick up that +# location as the default value for the include system root. +ACTIVE_SDK_PATH := $(shell xcrun --show-sdk-path 2> /dev/null) +ifneq ($(ACTIVE_SDK_PATH),) +COMPILERRT_MAKE_FLAGS := SDKROOT=$(ACTIVE_SDK_PATH) +endif + endif # On Linux, include a library which has all the runtime functions. @@ -144,12 +159,14 @@ BuildRuntimeLibraries: ProjObjRoot=$(PROJ_OBJ_DIR) \ CC="$(ToolDir)/clang" \ LLVM_ANDROID_TOOLCHAIN_DIR="$(LLVM_ANDROID_TOOLCHAIN_DIR)" \ + $(COMPILERRT_MAKE_FLAGS) \ $(RuntimeDirs:%=clang_%) .PHONY: BuildRuntimeLibraries CleanRuntimeLibraries: $(Verb) $(MAKE) -C $(COMPILERRT_SRC_ROOT) \ ProjSrcRoot=$(COMPILERRT_SRC_ROOT) \ ProjObjRoot=$(PROJ_OBJ_DIR) \ + $(COMPILERRT_MAKE_FLAGS) \ clean .PHONY: CleanRuntimeLibraries RuntimeHeader: $(ResourceIncludeDir)/sanitizer diff --git a/test/lit.cfg b/test/lit.cfg index 3b1c2c1f81..139126db99 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -353,6 +353,18 @@ else: # Will default to '/usr/lib/libgmalloc.dylib' if not set. gmalloc_path_str = lit_config.params.get('gmalloc_path', '/usr/lib/libgmalloc.dylib') - if use_gmalloc: config.environment.update({'DYLD_INSERT_LIBRARIES' : gmalloc_path_str}) + +# On Darwin, support relocatable SDKs by providing Clang with a +# default system root path. +if 'darwin' in config.target_triple: + cmd = subprocess.Popen(['xcrun', '--show-sdk-path'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = cmd.communicate() + out = out.strip() + res = cmd.wait() + if res == 0 and out: + sdk_path = out + lit_config.note('using SDKROOT: %r' % sdk_path) + config.environment['SDKROOT'] = sdk_path -- 2.40.0