[llvm] r354374 - Fix builds for older macOS deployment targets after r354365

Daniel Sanders via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 19 13:57:57 PST 2019


I can reproduce this when compiler-rt is included in the working copy. I'll look into it

> On Feb 19, 2019, at 13:17, Daniel Sanders <daniel_l_sanders at apple.com> wrote:
> 
> There is an include (CheckSymbolExists) but it's included by config-ix which is before HandleLLVMOptions is included.
> 
>> On Feb 19, 2019, at 12:31, Petr Hosek <phosek at chromium.org> wrote:
>> 
>> This appears to have broken our builders on all platforms with the
>> following error:
>> 
>> CMake Error at /b/s/w/ir/kitchen-workdir/llvm-project/llvm/cmake/modules/HandleLLVMOptions.cmake:920
>> (check_symbol_exists): Unknown CMake command "check_symbol_exists".
>> Call Stack (most recent call first): CMakeLists.txt:111 (include)
>> 
>> This full log can be seen here:
>> https://logs.chromium.org/logs/fuchsia/buildbucket/cr-buildbucket.appspot.com/8921065003141899296/+/steps/clang/0/steps/build/0/stdout
>> 
>> Is there an include for check_symbol_exists missing?
>> 
>> On Tue, Feb 19, 2019 at 11:44 AM Daniel Sanders via llvm-commits
>> <llvm-commits at lists.llvm.org> wrote:
>>> 
>>> Author: dsanders
>>> Date: Tue Feb 19 11:45:03 2019
>>> New Revision: 354374
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=354374&view=rev
>>> Log:
>>> Fix builds for older macOS deployment targets after r354365
>>> 
>>> Surprisingly, check_symbol_exists is not sufficient. The macOS linker checks the
>>> called functions against a compatibility list for the given deployment target
>>> and check_symbol_exists doesn't trigger this check as it never calls the
>>> function.
>>> 
>>> This fixes the GreenDragon bots where the deployment target is 10.9
>>> 
>>> Modified:
>>>   llvm/trunk/cmake/modules/HandleLLVMOptions.cmake
>>> 
>>> Modified: llvm/trunk/cmake/modules/HandleLLVMOptions.cmake
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=354374&r1=354373&r2=354374&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/cmake/modules/HandleLLVMOptions.cmake (original)
>>> +++ llvm/trunk/cmake/modules/HandleLLVMOptions.cmake Tue Feb 19 11:45:03 2019
>>> @@ -917,25 +917,31 @@ get_compile_definitions()
>>> 
>>> option(LLVM_FORCE_ENABLE_STATS "Enable statistics collection for builds that wouldn't normally enable it" OFF)
>>> 
>>> -check_symbol_exists(os_signpost_interval_begin "os/signpost.h" _signposts_available)
>>> -if(_signposts_available)
>>> -  set(LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS "WITH_ASSERTS" CACHE STRING
>>> -      "Enable support for Xcode signposts. Can be WITH_ASSERTS, FORCE_ON, FORCE_OFF")
>>> -  string(TOUPPER "${LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS}"
>>> -                 uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS)
>>> -  if( uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS STREQUAL "WITH_ASSERTS" )
>>> -    if( LLVM_ENABLE_ASSERTIONS )
>>> +check_symbol_exists(os_signpost_interval_begin "os/signpost.h" macos_signposts_available)
>>> +if(macos_signposts_available)
>>> +  check_cxx_source_compiles(
>>> +    "#include <os/signpost.h>
>>> +    int main() { os_signpost_interval_begin(nullptr, 0, \"\", \"\"); return 0; }"
>>> +    macos_signposts_usable)
>>> +  if(macos_signposts_usable)
>>> +    set(LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS "WITH_ASSERTS" CACHE STRING
>>> +        "Enable support for Xcode signposts. Can be WITH_ASSERTS, FORCE_ON, FORCE_OFF")
>>> +    string(TOUPPER "${LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS}"
>>> +                   uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS)
>>> +    if( uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS STREQUAL "WITH_ASSERTS" )
>>> +      if( LLVM_ENABLE_ASSERTIONS )
>>> +        set( LLVM_SUPPORT_XCODE_SIGNPOSTS 1 )
>>> +      endif()
>>> +    elseif( uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS STREQUAL "FORCE_ON" )
>>>      set( LLVM_SUPPORT_XCODE_SIGNPOSTS 1 )
>>> +    elseif( uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS STREQUAL "FORCE_OFF" )
>>> +      # We don't need to do anything special to turn off signposts.
>>> +    elseif( NOT DEFINED LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS )
>>> +      # Treat LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS like "FORCE_OFF" when it has not been
>>> +      # defined.
>>> +    else()
>>> +      message(FATAL_ERROR "Unknown value for LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS:"
>>> +                          " \"${LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS}\"!")
>>>    endif()
>>> -  elseif( uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS STREQUAL "FORCE_ON" )
>>> -    set( LLVM_SUPPORT_XCODE_SIGNPOSTS 1 )
>>> -  elseif( uppercase_LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS STREQUAL "FORCE_OFF" )
>>> -    # We don't need to do anything special to turn off signposts.
>>> -  elseif( NOT DEFINED LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS )
>>> -    # Treat LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS like "FORCE_OFF" when it has not been
>>> -    # defined.
>>> -  else()
>>> -    message(FATAL_ERROR "Unknown value for LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS:"
>>> -                        " \"${LLVM_ENABLE_SUPPORT_XCODE_SIGNPOSTS}\"!")
>>>  endif()
>>> endif()
>>> 
>>> 
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 



More information about the llvm-commits mailing list