[cmake-developers] -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="" -DCMAKE_OSX_SYSROOT:STRING=/ broken in 3.7.0-rc2

Jack Howarth howarth.mailing.lists at gmail.com
Sun Oct 30 14:53:45 EDT 2016


Gregor,
     The change in
https://cmake.org/gitweb?p=cmake.git;a=patch;h=540815eec2b83a8b43689580c54e8950d9f5868b
is logically flawed because it allows...

COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version Path

to be passed ${CMAKE_OSX_SYSROOT} containing "/" which isn't a valid
argument for 'xcodebuild -sdk'...

$ xcodebuild -sdk /
Build settings from command line:
    SDKROOT = macosx10.12

This erroneously returns macosx10.12 despite the Xcode 7.3.1 Command
Line Tools being installed in / containing the 10.11 SDK files.
             Jack


On Sun, Oct 30, 2016 at 2:04 PM, Jack Howarth
<howarth.mailing.lists at gmail.com> wrote:
> Gregor,
>         This is also a severe regression because if forces the cmake
> users to build against the 10.12 SDK on 10.11 which is not well tested
> for backward compatibility on 10.11. Your change makes it impossible
> to build against the SDK in / installed by the Xcode Command Line
> Tools package.
>                Jack
>
> On Sun, Oct 30, 2016 at 1:33 PM, Jack Howarth
> <howarth.mailing.lists at gmail.com> wrote:
>> Gregor,
>>       Your commit of...
>>
>> https://cmake.org/gitweb?p=cmake.git;a=log;h=540815eec2b83a8b43689580c54e8950d9f5868b
>>
>> has caused a major regression in cmake 3.7.0 as it no longer properly
>> honors the combination...
>>
>> -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="" -DCMAKE_OSX_SYSROOT:STRING=/
>>
>> This is obvious by simple inspection of the code in
>> Modules/Platform/Darwin-Initialize.cmake as
>> the code no longer honors  -DCMAKE_OSX_SYSROOT:STRING=/. At the very
>> least, this code
>> needs to be modified to have cmake emit "-isysroot /" in that case.
>>        IMHO, this issue should be considered a blocker for the cmake
>> 3,7.0 release on darwin.
>>                       Jack
>>
>>
>> On Sun, Oct 30, 2016 at 9:36 AM, Jack Howarth
>> <howarth.mailing.lists at gmail.com> wrote:
>>> The change...
>>>
>>> --- cmake-3.6.2/Modules/Platform/Darwin-Initialize.cmake 2016-09-07
>>> 10:11:58.000000000 -0400
>>> +++ cmake-3.7.0-rc2/Modules/Platform/Darwin-Initialize.cmake
>>> 2016-10-19 09:47:45.000000000 -0400
>>> @@ -125,8 +125,10 @@
>>>        set(_CMAKE_OSX_SYSROOT_ORIG "")
>>>      endif()
>>>      set(_CMAKE_OSX_SYSROOT_PATH "${CMAKE_OSX_SYSROOT}")
>>> -  else()
>>> -    # Transform the sdk name into a path.
>>> +  endif()
>>> +
>>> +  if(CMAKE_OSX_SYSROOT)
>>> +    # Transform the (maybe unversioned) sysroot into a versioned path.
>>>      execute_process(
>>>        COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version Path
>>>        OUTPUT_VARIABLE _stdout
>>>
>>> is an obvious mistake in cmake 3.7.0-rc2. The removal of the 'else()'
>>> statement here and the substitution of the ' if(CMAKE_OSX_SYSROOT)'
>>> defeats the prior handling of 'if("x${CMAKE_OSX_SYSROOT}" MATCHES
>>> "/")'. This causes '-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=""
>>> -DCMAKE_OSX_SYSROOT:STRING=/' to not be honored and -isysroot to be
>>> emitted as a compiler flag universally.
>>>
>>> https://gitlab.kitware.com/cmake/cmake/issues/16394


More information about the cmake-developers mailing list