>From 202b0ee16bf4827dd04768ad71e3ebdeab909a8f Mon Sep 17 00:00:00 2001 From: Paul Eggert 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 . 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 + + 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 * 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 + + Use gnustep-config if available + * NEWS: Document this. + 2015-01-22 Paul Eggert 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 + + Use gnustep-config if available + * emacs.c [NS_IMPL_GNUSTEP]: Don't include . + 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 * 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 . */ #include TERM_HEADER #endif /* HAVE_WINDOW_SYSTEM */ -#ifdef NS_IMPL_GNUSTEP -/* At least under Debian, GSConfig is in a subdirectory. --Stef */ -#include -#endif - #include "commands.h" #include "intervals.h" #include "character.h" -- 2.1.0