[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