all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#19507: configure --with-ns fails on Fedora 21 in AppKit.h test
@ 2015-01-04 19:24 Paul Eggert
  2015-01-23  0:07 ` Paul Eggert
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Eggert @ 2015-01-04 19:24 UTC (permalink / raw)
  To: 19507

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 bug-gnu-emacs@gnu.org ##
   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/





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#19507: configure --with-ns fails on Fedora 21 in AppKit.h test
  2015-01-04 19:24 bug#19507: configure --with-ns fails on Fedora 21 in AppKit.h test Paul Eggert
@ 2015-01-23  0:07 ` Paul Eggert
  2015-01-25  2:22   ` Paul Eggert
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Eggert @ 2015-01-23  0:07 UTC (permalink / raw)
  To: 19507

[-- Attachment #1: Type: text/plain, Size: 50 bytes --]

Attached is a proposed patch, which works for me.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Use-gnustep-config-if-available.patch --]
[-- Type: text/x-patch; name="0001-Use-gnustep-config-if-available.patch", Size: 5641 bytes --]

From 53b047e7fdf813fd415cbeb1bad5ea124e2155e6 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 22 Jan 2015 16:06:20 -0800
Subject: [PATCH] Use gnustep-config if available

* configure.ac (--with-gnustep): Document this.
(NS_GNUSTEP_CONFIG): New variable, set if gnustep-config works.
If gnustep-config works, use 'gnustep-config --objc-flags' and
'gnustep-config --gui-libs' to compute GNUstep configuration
variables, instead of attempting to infer them individually.
* etc/NEWS: Document this.
Fixes: bug#19507
---
 ChangeLog     | 10 ++++++++++
 configure.ac  | 34 +++++++++++++++++++++++-----------
 etc/ChangeLog |  5 +++++
 etc/NEWS      |  4 ++++
 4 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b02203d..3f0897a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2015-01-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+	Use gnustep-config if available
+	* configure.ac (--with-gnustep): Document this.
+	(NS_GNUSTEP_CONFIG): New variable, set if gnustep-config works.
+	If gnustep-config works, use 'gnustep-config --objc-flags' and
+	'gnustep-config --gui-libs' to compute GNUstep configuration
+	variables, instead of attempting to infer them individually.
+	Fixes: bug#19507
+
 2015-01-21  Ulrich Müller  <ulm@gentoo.org>
 
 	* configure.ac (gamegroup): New AC_SUBST.
diff --git a/configure.ac b/configure.ac
index 47b36fe..10af840 100644
--- a/configure.ac
+++ b/configure.ac
@@ -414,7 +414,9 @@ esac
 
 AC_ARG_WITH([gnustep-conf],dnl
 [AS_HELP_STRING([--with-gnustep-conf=FILENAME],
-   [name of GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
+   [name of GNUstep configuration file to use on systems where the command
+    'gnustep-config' does not work; default $GNUSTEP_CONFIG_FILE, or
+    /etc/GNUstep/GNUstep.conf])])
 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
   GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
@@ -1752,6 +1754,7 @@ else
 fi
 
 HAVE_NS=no
+NS_GNUSTEP_CONFIG=no
 NS_IMPL_COCOA=no
 NS_IMPL_GNUSTEP=no
 tmp_CPPFLAGS="$CPPFLAGS"
@@ -1768,13 +1771,13 @@ if test "${with_ns}" != no; then
      ns_appresdir=${ns_appdir}/Contents/Resources
      ns_appsrc=Cocoa/Emacs.base
      ns_fontfile=macfont.o
+  elif flags=$( (gnustep-config --objc-flags) 2>/dev/null); then
+     NS_IMPL_GNUSTEP=yes
+     NS_GNUSTEP_CONFIG=yes
+     GNU_OBJC_CFLAGS=$flags
+     LIBS_GNUSTEP=$(gnustep-config --gui-libs) || exit
   elif test -f $GNUSTEP_CONFIG_FILE; then
      NS_IMPL_GNUSTEP=yes
-     ns_appdir=`pwd`/nextstep/Emacs.app
-     ns_appbindir=${ns_appdir}
-     ns_appresdir=${ns_appdir}/Resources
-     ns_appsrc=GNUstep/Emacs.base
-     ns_fontfile=nsfont.o
      dnl FIXME sourcing this several times in subshells seems inefficient.
      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
@@ -1807,6 +1810,13 @@ fail;
        GNU_OBJC_CFLAGS="-fobjc-exceptions"
      fi
   fi
+  if test $NS_IMPL_GNUSTEP = yes; then
+     ns_appdir=`pwd`/nextstep/Emacs.app
+     ns_appbindir=${ns_appdir}
+     ns_appresdir=${ns_appdir}/Resources
+     ns_appsrc=GNUstep/Emacs.base
+     ns_fontfile=nsfont.o
+  fi
 
   dnl This is only used while we test the NS headers, it gets reset below.
   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
@@ -3375,11 +3385,13 @@ if test "${HAVE_NS}" = "yes"; then
   fi
   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
-    # See also .m.o rule in Makefile.in */
-    # FIXME: are all these flags really needed?  Document here why.  */
-    GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
-    ## Extra CFLAGS applied to src/*.m files.
-    GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
+    if test $NS_GNUSTEP_CONFIG != yes; then
+      # See also .m.o rule in src/Makefile.in.  */
+      # FIXME: are all these flags really needed?  Document here why.  */
+      GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
+      ## Extra CFLAGS applied to src/*.m files.
+      GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
+    fi
   fi
   OTHER_FILES=ns-app
 fi
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 47f61f4..bea0c1d 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+	Use gnustep-config if available
+	* NEWS: Document this.
+
 2015-01-22  Paul Eggert  <eggert@cs.ucla.edu>
 
 	Don't downcase system diagnostics' first letters
diff --git a/etc/NEWS b/etc/NEWS
index db47033..b8a862e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -36,6 +36,10 @@ should be able to work around the problem either by porting the Emacs
 undumping code to GCC under IRIX, or by configuring --with-wide-int,
 or by sticking with Emacs 24.4.
 
+** 'configure' now prefers gnustep-config when configuring GNUstep.
+If gnustep-config is not available, 'configure' falls back on its old
+heuristics for GNUstep configuration.
+
 ---
 ** The configure option `--with-pkg-config-prog' has been removed.
 Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#19507: configure --with-ns fails on Fedora 21 in AppKit.h test
  2015-01-23  0:07 ` Paul Eggert
@ 2015-01-25  2:22   ` Paul Eggert
  0 siblings, 0 replies; 3+ messages in thread
From: Paul Eggert @ 2015-01-25  2:22 UTC (permalink / raw)
  To: 19507-done

[-- Attachment #1: Type: text/plain, Size: 120 bytes --]

I ported that patch from Fedora 21 to Ubuntu 14.10, installed the attached 
revised patch, and am marking this as done.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Use-gnustep-config-if-available.patch --]
[-- Type: text/x-patch; name="0001-Use-gnustep-config-if-available.patch", Size: 6909 bytes --]

From 202b0ee16bf4827dd04768ad71e3ebdeab909a8f Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sat, 24 Jan 2015 18:05:33 -0800
Subject: [PATCH] Use gnustep-config if available

* configure.ac (--with-gnustep): Document this.
(NS_GNUSTEP_CONFIG): New variable, set if gnustep-config works.
If gnustep-config works, use 'gnustep-config --objc-flags' and
'gnustep-config --gui-libs' to compute GNUstep configuration
variables, instead of attempting to infer them individually.
* etc/NEWS: Document this.
* src/emacs.c [NS_IMPL_GNUSTEP]: Don't include <GNUstepBase/GSConfig.h>.
It doesn't appear to be needed, and the inclusion breaks on
Ubuntu 14.10 when 'configure' uses 'gnustep-config'.
Fixes: bug#19507
---
 ChangeLog     | 10 ++++++++++
 configure.ac  | 35 ++++++++++++++++++++++++-----------
 etc/ChangeLog |  5 +++++
 etc/NEWS      |  3 +++
 src/ChangeLog |  7 +++++++
 src/emacs.c   |  5 -----
 6 files changed, 49 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b02203d..eecdad6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2015-01-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+	Use gnustep-config if available
+	* configure.ac (--with-gnustep): Document this.
+	(NS_GNUSTEP_CONFIG): New variable, set if gnustep-config works.
+	If gnustep-config works, use 'gnustep-config --objc-flags' and
+	'gnustep-config --gui-libs' to compute GNUstep configuration
+	variables, instead of attempting to infer them individually.
+	Fixes: bug#19507
+
 2015-01-21  Ulrich Müller  <ulm@gentoo.org>
 
 	* configure.ac (gamegroup): New AC_SUBST.
diff --git a/configure.ac b/configure.ac
index 47b36fe..cd011b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -414,7 +414,9 @@ esac
 
 AC_ARG_WITH([gnustep-conf],dnl
 [AS_HELP_STRING([--with-gnustep-conf=FILENAME],
-   [name of GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
+   [name of GNUstep configuration file to use on systems where the command
+    'gnustep-config' does not work; default $GNUSTEP_CONFIG_FILE, or
+    /etc/GNUstep/GNUstep.conf])])
 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
   GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
@@ -1752,6 +1754,7 @@ else
 fi
 
 HAVE_NS=no
+NS_GNUSTEP_CONFIG=no
 NS_IMPL_COCOA=no
 NS_IMPL_GNUSTEP=no
 tmp_CPPFLAGS="$CPPFLAGS"
@@ -1768,13 +1771,13 @@ if test "${with_ns}" != no; then
      ns_appresdir=${ns_appdir}/Contents/Resources
      ns_appsrc=Cocoa/Emacs.base
      ns_fontfile=macfont.o
+  elif flags=$( (gnustep-config --objc-flags) 2>/dev/null); then
+     NS_IMPL_GNUSTEP=yes
+     NS_GNUSTEP_CONFIG=yes
+     GNU_OBJC_CFLAGS=$flags
+     LIBS_GNUSTEP=$(gnustep-config --gui-libs) || exit
   elif test -f $GNUSTEP_CONFIG_FILE; then
      NS_IMPL_GNUSTEP=yes
-     ns_appdir=`pwd`/nextstep/Emacs.app
-     ns_appbindir=${ns_appdir}
-     ns_appresdir=${ns_appdir}/Resources
-     ns_appsrc=GNUstep/Emacs.base
-     ns_fontfile=nsfont.o
      dnl FIXME sourcing this several times in subshells seems inefficient.
      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
@@ -1807,8 +1810,16 @@ fail;
        GNU_OBJC_CFLAGS="-fobjc-exceptions"
      fi
   fi
+  if test $NS_IMPL_GNUSTEP = yes; then
+     ns_appdir=`pwd`/nextstep/Emacs.app
+     ns_appbindir=${ns_appdir}
+     ns_appresdir=${ns_appdir}/Resources
+     ns_appsrc=GNUstep/Emacs.base
+     ns_fontfile=nsfont.o
+  fi
 
   dnl This is only used while we test the NS headers, it gets reset below.
+  CPPFLAGS="$CPPFLAGS $GNU_OBJC_CFLAGS"
   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
 
   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
@@ -3375,11 +3386,13 @@ if test "${HAVE_NS}" = "yes"; then
   fi
   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
-    # See also .m.o rule in Makefile.in */
-    # FIXME: are all these flags really needed?  Document here why.  */
-    GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
-    ## Extra CFLAGS applied to src/*.m files.
-    GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
+    if test $NS_GNUSTEP_CONFIG != yes; then
+      # See also .m.o rule in src/Makefile.in.  */
+      # FIXME: are all these flags really needed?  Document here why.  */
+      GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
+      ## Extra CFLAGS applied to src/*.m files.
+      GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
+    fi
   fi
   OTHER_FILES=ns-app
 fi
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 47f61f4..55b835c 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+	Use gnustep-config if available
+	* NEWS: Document this.
+
 2015-01-22  Paul Eggert  <eggert@cs.ucla.edu>
 
 	Don't downcase system diagnostics' first letters
diff --git a/etc/NEWS b/etc/NEWS
index db47033..d5baed3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -36,6 +36,9 @@ should be able to work around the problem either by porting the Emacs
 undumping code to GCC under IRIX, or by configuring --with-wide-int,
 or by sticking with Emacs 24.4.
 
+** 'configure' now prefers gnustep-config when configuring GNUstep.
+If gnustep-config is not available, the old heuristics are used.
+
 ---
 ** The configure option `--with-pkg-config-prog' has been removed.
 Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
diff --git a/src/ChangeLog b/src/ChangeLog
index a8b9c3b..96e3146 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2015-01-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+	Use gnustep-config if available
+	* emacs.c [NS_IMPL_GNUSTEP]: Don't include <GNUstepBase/GSConfig.h>.
+	It doesn't appear to be needed, and the inclusion breaks on
+	Ubuntu 14.10 when 'configure' uses 'gnustep-config'.
+
 2015-01-22  Eli Zaretskii  <eliz@gnu.org>
 
 	* xdisp.c (init_iterator): Restore a comment lost in transition.
diff --git a/src/emacs.c b/src/emacs.c
index ca1a8b2..345fe3e 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -59,11 +59,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include TERM_HEADER
 #endif /* HAVE_WINDOW_SYSTEM */
 
-#ifdef NS_IMPL_GNUSTEP
-/* At least under Debian, GSConfig is in a subdirectory.  --Stef  */
-#include <GNUstepBase/GSConfig.h>
-#endif
-
 #include "commands.h"
 #include "intervals.h"
 #include "character.h"
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-01-25  2:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-04 19:24 bug#19507: configure --with-ns fails on Fedora 21 in AppKit.h test Paul Eggert
2015-01-23  0:07 ` Paul Eggert
2015-01-25  2:22   ` Paul Eggert

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.