[compiler-rt] r227509 - [compiler-rt] OS X: Update the CMake and Make builds to explicitely use libc++, mmacosx-version-min and SDKs
Kuba Brecka
kuba.brecka at gmail.com
Tue Feb 3 05:05:52 PST 2015
But the Command Line Tools do contain the SDK, right? What is the command to get the path to it then?
Kuba
Sent from my iPhone
> On Feb 3, 2015, at 9:17 AM, Justin Bogner <mail at justinbogner.com> wrote:
>
> Kuba Brecka <kuba.brecka at gmail.com> writes:
>> Author: kuba.brecka
>> Date: Thu Jan 29 17:19:26 2015
>> New Revision: 227509
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=227509&view=rev
>> Log:
>> [compiler-rt] OS X: Update the CMake and Make builds to explicitely
>> use libc++, mmacosx-version-min and SDKs
>>
>> In both CMake and Makefiles, we are inconsistent about the use of
>> libstdc++ vs. libc++, SDKs and minimum deployment targets for OS
>> X. Let's fix the detection of SDKs, and let's explicitely set that we
>> link against libc++ and mmacosx-version-min is 10.7.
>>
>>
>> Modified:
>> compiler-rt/trunk/CMakeLists.txt
>> compiler-rt/trunk/lib/asan/tests/CMakeLists.txt
>> compiler-rt/trunk/make/platform/clang_darwin.mk
>>
>> Modified: compiler-rt/trunk/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=227509&r1=227508&r2=227509&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/CMakeLists.txt Thu Jan 29 17:19:26 2015
>> @@ -271,12 +271,27 @@ append_list_if(COMPILER_RT_HAS_WD4391_FL
>> append_list_if(COMPILER_RT_HAS_WD4722_FLAG /wd4722 SANITIZER_COMMON_CFLAGS)
>> append_list_if(COMPILER_RT_HAS_WD4800_FLAG /wd4800 SANITIZER_COMMON_CFLAGS)
>> if(APPLE)
>> - # Obtain the iOS Simulator SDK path from xcodebuild.
>> - execute_process(
>> - COMMAND xcodebuild -version -sdk iphonesimulator Path
>> - OUTPUT_VARIABLE IOSSIM_SDK_DIR
>> - OUTPUT_STRIP_TRAILING_WHITESPACE
>> - )
>> + macro(find_darwin_sdk_dir var sdk_name)
>> + # Let's first try the internal SDK, otherwise use the public SDK.
>> + execute_process(
>> + COMMAND xcodebuild -version -sdk ${sdk_name}.internal Path
>> + OUTPUT_VARIABLE ${var}
>> + OUTPUT_STRIP_TRAILING_WHITESPACE
>> + ERROR_FILE /dev/null
>> + )
>> + if(${var} STREQUAL "")
>> + execute_process(
>> + COMMAND xcodebuild -version -sdk ${sdk_name} Path
>> + OUTPUT_VARIABLE ${var}
>> + OUTPUT_STRIP_TRAILING_WHITESPACE
>> + ERROR_FILE /dev/null
>> + )
>> + endif()
>> + endmacro()
>> +
>> + find_darwin_sdk_dir(OSX_SDK_DIR macosx)
>> + find_darwin_sdk_dir(IOSSIM_SDK_DIR iphonesimulator)
>> +
>> string(REGEX MATCH "-mmacosx-version-min="
>> MACOSX_VERSION_MIN_FLAG "${CMAKE_CXX_FLAGS}")
>> set(SANITIZER_COMMON_SUPPORTED_DARWIN_OS osx)
>> @@ -286,10 +301,12 @@ if(APPLE)
>>
>> set(SANITIZER_MIN_OSX_VERSION 10.7)
>> set(CMAKE_OSX_DEPLOYMENT_TARGET "") # We're setting the flag manually below.
>> - set(DARWIN_osx_CFLAGS -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION})
>> + set(DARWIN_osx_CFLAGS -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION}
>> + -isysroot ${OSX_SDK_DIR} -stdlib=libc++)
>> set(DARWIN_iossim_CFLAGS
>> -mios-simulator-version-min=7.0 -isysroot ${IOSSIM_SDK_DIR})
>> - set(DARWIN_osx_LINKFLAGS)
>> + set(DARWIN_osx_LINKFLAGS -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION}
>> + -isysroot ${OSX_SDK_DIR} -stdlib=libc++)
>
> This doesn't work if you don't have an Xcode installed (ie, just command
> line tools). OSX_SDK_DIR ends up empty so you get the rather confusing
> error of "no such sysroot directory: '-stdlib=libc++'".
>
> The clue that the problem is a missing Xcode shows up earlier on stderr:
>
> xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
>
>> set(DARWIN_iossim_LINKFLAGS
>> -Wl,-ios_simulator_version_min,7.0.0
>> -mios-simulator-version-min=7.0
>>
>> Modified: compiler-rt/trunk/lib/asan/tests/CMakeLists.txt
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/CMakeLists.txt?rev=227509&r1=227508&r2=227509&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/tests/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/asan/tests/CMakeLists.txt Thu Jan 29 17:19:26 2015
>> @@ -47,6 +47,11 @@ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
>> -DASAN_HAS_EXCEPTIONS=1
>> -DASAN_UAR=0)
>>
>> +if(APPLE)
>> + list(APPEND ASAN_UNITTEST_COMMON_CFLAGS ${DARWIN_osx_CFLAGS})
>> + list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS ${DARWIN_osx_LINKFLAGS})
>> +endif()
>> +
>> set(ASAN_BLACKLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/asan_test.ignore")
>> set(ASAN_UNITTEST_INSTRUMENTED_CFLAGS
>> ${ASAN_UNITTEST_COMMON_CFLAGS}
>>
>> Modified: compiler-rt/trunk/make/platform/clang_darwin.mk
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/platform/clang_darwin.mk?rev=227509&r1=227508&r2=227509&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/make/platform/clang_darwin.mk (original)
>> +++ compiler-rt/trunk/make/platform/clang_darwin.mk Thu Jan 29 17:19:26 2015
>> @@ -44,10 +44,14 @@ XCRun = \
>> result=`xcrun -find $(1) 2> /dev/null`; \
>> if [ "$$?" != "0" ]; then result=$(1); fi; \
>> echo $$result)
>> +# Prefer building with the internal SDKs.
>> XCRunSdkPath = \
>> $(shell \
>> - result=`xcrun --sdk $(1) --show-sdk-path 2> /dev/null`; \
>> - if [ "$$?" != "0" ]; then result=""; fi; \
>> + result=`xcrun --sdk $(1).internal --show-sdk-path 2> /dev/null`; \
>> + if [ "$$?" != "0" ]; then \
>> + result=`xcrun --sdk $(1) --show-sdk-path 2> /dev/null`; \
>> + if [ "$$?" != "0" ]; then result=""; fi; \
>> + fi; \
>> echo $$result)
>> ###
>>
>> @@ -170,6 +174,7 @@ CFLAGS.10.4 := $(CFLAGS) $(OSX_DEPLOYME
>>
>> CFLAGS.asan_osx_dynamic := \
>> $(CFLAGS) -mmacosx-version-min=10.7 \
>> + -stdlib=libc++ \
>> -isysroot $(OSX_SDK) \
>> -fno-builtin \
>> -gline-tables-only \
>> @@ -219,7 +224,9 @@ CFLAGS.profile_ios.arm64 := $(CFLAGS) $
>>
>> # Configure the asan_osx_dynamic library to be built shared.
>> SHARED_LIBRARY.asan_osx_dynamic := 1
>> -LDFLAGS.asan_osx_dynamic := -lstdc++ -undefined dynamic_lookup -install_name @rpath/libclang_rt.asan_osx_dynamic.dylib
>> +LDFLAGS.asan_osx_dynamic := -lc++ -undefined dynamic_lookup -install_name @rpath/libclang_rt.asan_osx_dynamic.dylib \
>> + -mmacosx-version-min=10.7 \
>> + -isysroot $(OSX_SDK)
>>
>> # Configure the asan_iossim_dynamic library to be built shared.
>> SHARED_LIBRARY.asan_iossim_dynamic := 1
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list