[PATCH] undefined symbols compiling for macosx >10.8

Ken Thomases ken at codeweavers.com
Thu Apr 2 13:14:15 CDT 2015


That symbol is in the 10.8 SDK.  We build against that SDK all the time.  It works fine.

Here's the documentation for that function: <https://developer.apple.com/library/mac/documentation/Security/Reference/secureTransportRef/#//apple_ref/c/func/SSLGetProtocolVersionMax>. Notice that under Availability it says, "Available in OS X v10.8 and later."

Here is the declaration from Security.framework/Headers/SecureTransport.h:

----------
OSStatus
SSLGetProtocolVersionMax  (SSLContextRef      context,
                           SSLProtocol        *maxVersion)
    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
----------

Notice the __MAC_10_8 identifier in the __OSX_AVAILABLE_STARTING() decorator.

You need to fix your build environment and/or your build commands.  Whatever problem you're encountering while trying to build is specific to your system.

-Ken

On Apr 2, 2015, at 11:58 AM, Sergey Isakov <isakov-sl at bk.ru> wrote:

> Your proposition that SDK10.8 contains the symbol is wrong
> ——
> #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
> +#ifdef   SSLGetProtocolVersionMax
>     if(SSLGetProtocolVersionMax != NULL) {
> ----
> 
> On 01 апр. 2015 г., at 21:36, Ken Thomases <ken at codeweavers.com> wrote:
> 
>> If you were having problems building Wine without this patch, then you have a system configuration problem.  Or you're configuring Wine incorrectly.
>> 
>> -Ken
>> 
>> On Apr 1, 2015, at 11:52 AM, Sergey Isakov <isakov-sl at bk.ru> wrote:
>> 
>>> Sorry but I committed the patch make me compilation be possible.
>>> 
>>> On 01 апр. 2015 г., at 18:34, Ken Thomases <ken at codeweavers.com> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> This patch makes no sense.  Wine builds just fine for OS X versions greater than 10.8.  Indeed, as near as I know, it still builds just fine for 10.5 and up (the Mac driver requires 10.6 or later, but on 10.5 it just will be skipped; it won't break anything).
>>>> 
>>>> On Apr 1, 2015, at 6:48 AM, Sergey Isakov <isakov-sl at bk.ru> wrote:
>>>> 
>>>>> Undefined symbols for architecture i386:
>>>>> "_kCGDisplayShowDuplicateLowResolutionModes", referenced from:
>>>>>  -[WineApplicationController modeMatchingMode:forDisplay:] in cocoa_app.o
>>>>> ld: symbol(s) not found for architecture i386
>>>> 
>>>> If you're getting this error, you're not building against a 10.8+ SDK properly.  The compiler is seeing the headers for a 10.8+ SDK but the linker is seeing libraries and frameworks from some pre-10.8 SDK.
>>>> 
>>>> 
>>>>> Instead of checking for NULL we should check  #ifdef
>>>> 
>>>> No.  The things being tested are not macros in any version of the SDK.  Your #ifdef checks will never pass.  You have effectively done "#if 0".
>>>> 
>>>> Finally, changes to separate DLLs (secur32 and winemac.drv, in this case) should be in separate patches unless they are inter-dependent.
>>>> 
>>>> -Ken
>>>> 
>>> 
>> 
> 




More information about the wine-devel mailing list