[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:04:21 EDT 2016


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