Subject: bug#27059: Can't compile master branch on Mac OS X

From: Philipp Stephani <[email-masked]>
Date: Wed, 24 May 2017 20:20:14 +0000

David Caldwell <[email-masked]> schrieb am Mi., 24. Mai 2017 um
18:24 Uhr:

> On Mac OS X 10.9 (Mavericks) and Mac OS X 10.8 (Mountain Lion):
>
>   CC       nsterm.o
> nsterm.m:5496:33: warning: format string is not a string literal
> (potentially insecure) [-Wformat-security]
>   return NSRunAlertPanel(title, msgFormat, defaultButton,
> alternateButton, nil)
>                                 ^~~~~~~~~
> 1 warning generated.
>   CC       nsfns.o
>   CC       nsmenu.o
> nsmenu.m:1496:70: error: expected a type
> - (instancetype)initWithContentRect: (NSRect)contentRect styleMask:
> (NSWindowStyleMask)aStyle
>                                                                      ^
> nsmenu.m:1520:10: warning: incompatible integer to pointer conversion
> assigning to 'id' from 'int' [-Wint-conversion]
>   aStyle =
>
> NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskUtilityWindow;
>          ^
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> nsmenu.m:1524:54: warning: incompatible pointer to integer conversion
> sending 'id' to parameter of type 'NSUInteger' (aka 'unsigned long')
> [-Wint-conversion]
>   [super initWithContentRect: contentRect styleMask: aStyle
>                                                      ^~~~~~
> /System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:289:69:
> note: passing argument to parameter 'aStyle' here
> - (id)initWithContentRect:(NSRect)contentRect
> styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType
> defer:(BOOL)flag;
>                                                                     ^
> nsmenu.m:1496:88: warning: conflicting parameter types in implementation
> of 'initWithContentRect:styleMask:backing:defer:': 'NSUInteger' (aka
> 'unsigned long') vs 'id' [-Wmismatched-parameter-types]
> - (instancetype)initWithContentRect: (NSRect)contentRect styleMask:
> (NSWindowStyleMask)aStyle
>
>               ^
> /System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:289:69:
> note: previous definition is here
> - (id)initWithContentRect:(NSRect)contentRect
> styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType
> defer:(BOOL)flag;
>                                                          ~~~~~~~~~~ ^
> 3 warnings and 1 error generated.
> make[1]: *** [nsmenu.o] Error 1
> make: *** [src] Error 2
> make failed
>
>
>
> On Mac OS X 10.6 (Snow Leopard):
>   CC       nsterm.o
> In file included from nsterm.m:48:
> nsterm.h:454: error: expected ')' before 'instancetype'
> nsterm.h:455: error: expected ')' before 'instancetype'
> nsterm.h:456: error: expected ')' before 'instancetype'
> nsterm.h:460: error: expected ')' before 'instancetype'
> nsterm.h:463: error: expected ')' before 'instancetype'
> nsterm.h:523: error: expected ')' before 'instancetype'
> nsterm.h:557: error: expected ')' before 'instancetype'
> nsterm.h:592: error: expected ')' before 'instancetype'
> nsterm.h:611: error: expected ')' before 'instancetype'
> nsterm.h:659: error: expected ')' before 'instancetype'
> nsterm.h:661: error: expected ')' before 'instancetype'
> nsterm.h:663: error: expected ')' before 'instancetype'
> nsterm.h:664: error: expected ')' before 'instancetype'
> nsterm.h:703: error: expected ')' before 'instancetype'
> nsterm.h:706: error: expected ')' before 'instancetype'
> nsterm.h:710: error: expected ')' before 'instancetype'
> nsterm.h:711: error: expected ')' before 'instancetype'
> nsterm.h:712: error: expected ')' before 'instancetype'
> nsterm.h:735: error: expected ')' before 'instancetype'
> nsterm.m:6900: error: expected ')' before 'instancetype'
> nsterm.m:7630: error: expected ')' before 'instancetype'
> nsterm.m:7655: error: expected ')' before 'instancetype'
> nsterm.m:7681: error: expected ')' before 'instancetype'
> nsterm.m:7909: error: expected ')' before 'instancetype'
> nsterm.m:8261: error: expected ')' before 'instancetype'
> nsterm.m:8345: error: expected ')' before 'instancetype'
> nsterm.m:8353: error: expected ')' before 'instancetype'
> nsterm.m:8408: error: expected ')' before 'instancetype'
> nsterm.m:8487: error: expected ')' before 'instancetype'
> make[1]: *** [nsterm.o] Error 1
> make: *** [src] Error 2
> make failed
>
>
> I think these may have been caused by the recent GNUStep changes.
>

Can you try applying the following patch:

diff --git a/src/nsterm.h b/src/nsterm.h
index 8f3d92b353..288b91269d 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -65,7 +65,7 @@ typedef float EmacsCGFloat;
 /* FIXME: instancetype is a language built-in, but older versions of
    Clang don't support it, and I don't know if GCC supports it at all.
    Should this be tested for in ./configure? */
-#if defined (NS_IMPL_GNUSTEP)
+#if defined (NS_IMPL_GNUSTEP) \
     || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10
 typedef id instancetype;
 typedef NSUInteger NSWindowStyleMask;