One other comment. For new Xcode releases on the prior OS release (eg
Xcode 8 on 10.11), the SDK files installed in / by the Command Line
Tools are actually those for the 10.11 SDK and *not* those from the
10.12 SDK. This is why the Xcode 8 release lacks a Command Line Tools
package for 10.11 (since Swift 3 requires the 10.12 SDK to properly
work). So the current code in Modules/Platform/Darwin-Initialize.cmake
in cmake 3.7.0-rc2 and proposed patch are both returning non-sensical
SDK versions for the SDK in / on 10.11 from 'xcodebuild -sdk'. FYI.

On Sun, Oct 30, 2016 at 3:37 PM, Jack Howarth
<howarth.mailing.li...@gmail.com> wrote:
> Proposed fix to restore functionality for
> -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="" -DCMAKE_OSX_SYSROOT:STRING=/
> while retaining the current hack when CMAKE_OSX_DEPLOYMENT_TARGET is
> not set to an empty string.
>
> On Sun, Oct 30, 2016 at 3:23 PM, Jack Howarth
> <howarth.mailing.li...@gmail.com> wrote:
>> Gregor,
>>      While I still think your hack to obtain the versioned SDK is
>> wrong because it relies on passing invalid arguments to 'xcodebuild
>> -sdk', the following change restores the expected behavior for
>> -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="" -DCMAKE_OSX_SYSROOT:STRING=/
>> while allowing your hack to function when
>> -DCMAKE_OSX_DEPLOYMENT_TARGET is not an empty string...
>>
>> --- cmake-3.7.0-rc2/Modules/Platform/Darwin-Initialize.cmake.orig
>> 2016-10-30 09:45:46.000000000 -0400
>> +++ cmake-3.7.0-rc2/Modules/Platform/Darwin-Initialize.cmake
>> 2016-10-30 15:16:57.000000000 -0400
>> @@ -116,7 +116,7 @@
>>  set(_CMAKE_OSX_SYSROOT_ORIG "${CMAKE_OSX_SYSROOT}")
>>  set(_CMAKE_OSX_SYSROOT_PATH "")
>>  if(CMAKE_OSX_SYSROOT)
>> -  if("x${CMAKE_OSX_SYSROOT}" MATCHES "/")
>> +  if("x${CMAKE_OSX_SYSROOT}" MATCHES "/" AND
>> CMAKE_OSX_DEPLOYMENT_TARGET MATCHES "")
>>      # This is a path to the SDK.  Make sure it exists.
>>      if(NOT IS_DIRECTORY "${CMAKE_OSX_SYSROOT}")
>>        message(WARNING "Ignoring CMAKE_OSX_SYSROOT value:\n
>> ${CMAKE_OSX_SYSROOT}\n"
>> @@ -125,10 +125,8 @@
>>        set(_CMAKE_OSX_SYSROOT_ORIG "")
>>      endif()
>>      set(_CMAKE_OSX_SYSROOT_PATH "${CMAKE_OSX_SYSROOT}")
>> -  endif()
>> -
>> -  if(CMAKE_OSX_SYSROOT)
>> -    # Transform the (maybe unversioned) sysroot into a versioned path.
>> +  else()
>> +    # Transform the sdk name into a path.
>>      execute_process(
>>        COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version Path
>>        OUTPUT_VARIABLE _stdout
>>
>>     Jack
>>
>> On Sun, Oct 30, 2016 at 2:53 PM, Jack Howarth
>> <howarth.mailing.li...@gmail.com> wrote:
>>> 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.li...@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.li...@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.li...@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
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to