Subject: configure --with-ns fails on Fedora 21 in AppKit.h test
From: Paul Eggert <[email-masked]>
To: Emacs bug reports and feature requests <[email-masked]>
Date: Sun, 04 Jan 2015 11:24:08 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On Fedora 21 x86-64 I configured the current Emacs master (commit
cde73794f61fec2a5a8676c2e36ec6634e72cdc5) using "./configure --with-ns",
and this failed as follows:

   checking AppKit/AppKit.h usability... no
   checking AppKit/AppKit.h presence... yes
   configure: WARNING: AppKit/AppKit.h: present but cannot be compiled
   configure: WARNING: AppKit/AppKit.h:     check for missing prerequisite headers?
   configure: WARNING: AppKit/AppKit.h: see the Autoconf documentation
   configure: WARNING: AppKit/AppKit.h:     section "Present But Cannot Be Compiled"
   configure: WARNING: AppKit/AppKit.h: proceeding with the compiler's result
   configure: WARNING:     ## ------------------------------------ ##
   configure: WARNING:     ## Report this to [email-masked] ##
   configure: WARNING:     ## ------------------------------------ ##
   checking for AppKit/AppKit.h... no
   configure: error: `--with-ns' was specified, but the include
     files are missing or cannot be compiled.

Config.log says this (/usr/local/include is an empty directory, I'm running with 
pretty much vanilla Fedora 21):

   configure:10522: checking AppKit/AppKit.h usability
   configure:10522: gcc -std=gnu99 -c -g3 -O2 -x objective-c -I/usr/include 
-I/usr/local/include -fobjc-exceptions    -x objective-c -I/usr/include 
-I/usr/local/include conftest.c >&5
   In file included from /usr/include/AppKit/NSPanel.h:34:0,
		   from /usr/include/AppKit/NSColorPanel.h:39,
		   from /usr/include/AppKit/AppKit.h:63,
		   from conftest.c:107:
   /usr/include/AppKit/NSWindow.h:876:1: error: cannot find protocol declaration 
for 'NSWindowDelegate'
    @interface NSObject (NSWindowDelegateAdditions) <NSWindowDelegate>
    ^
   configure:10522: $? = 1
   configure: failed program was:
   | /* confdefs.h */
   | #define PACKAGE_NAME "GNU Emacs"
   | #define PACKAGE_TARNAME "emacs"
   | #define PACKAGE_VERSION "25.0.50"
   | ...
   | #include <AppKit/AppKit.h>

/usr/include/AppKit/NSWindow.h says this:

   #ifdef GNUSTEP

   @protocol NSWindowDelegate <NSObject>
   #ifdef __OBJC2__
   @optional
   #else
   @end
   @interface NSObject (NSWindowDelegate)
   #endif
   ...
   #endif

Apparently GNUSTEP must be defined by the application?  If I configure
this way:

   ./configure --with-ns CFLAGS='-g3 -O2 -DGNUSTEP'

the above problem goes away, but the builder shouldn't have to
configure CFLAGS by hand.

Have recent releases of GnuStep changed with respect to whether the application 
must define the GNUSTEP macro?  Fedora 21 is using gnustep-gui-devel-0.24.0-1; 
you can find out more about its status at:

https://apps.fedoraproject.org/packages/gnustep-gui-devel/