summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2009-12-09 01:06:32 +0000
committerChong Yidong <cyd@stupidchicken.com>2009-12-09 01:06:32 +0000
commita4ef73c887614e05e4d0039419da0bcf1a073f00 (patch)
tree343cf054d29dd570688a8ba946c5841660a75762
parent0f0ea87e8c03aa623de5632ecacd3621ffe410a5 (diff)
downloademacs-a4ef73c887614e05e4d0039419da0bcf1a073f00.tar.gz
* configure.in: Allow compiling Emacs with GTK on Cygwin.
* src/s/cygwin.h (G_SLICE_ALWAYS_MALLOC): New variable. * src/emacs.c (main): Set the G_SLICE environment variable for Cygwin GTK builds.
-rw-r--r--ChangeLog4
-rw-r--r--configure.in10
-rw-r--r--src/ChangeLog7
-rw-r--r--src/emacs.c5
-rw-r--r--src/s/cygwin.h6
5 files changed, 22 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 512ebd69e06..d864a925b70 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-12-09 Ken Brown <kbrown@cornell.edu> (tiny change)
+
+ * configure.in: Allow compiling Emacs with GTK on Cygwin.
+
2009-12-01 Glenn Morris <rgm@gnu.org>
* make-dist: Add etc/images/mpc directory.
diff --git a/configure.in b/configure.in
index 98e39cc007d..34d5fd5ae42 100644
--- a/configure.in
+++ b/configure.in
@@ -3026,16 +3026,6 @@ fi
echo
-if test "$USE_X_TOOLKIT" = GTK; then
- case "$canonical" in
- *cygwin*)
- echo "There are known problems with Emacs and Gtk+ on cygwin, so you
- will probably get a crash on startup. If this happens, please use another
- toolkit for Emacs. See etc/PROBLEMS for more information."
- ;;
- esac
-fi
-
if test "$HAVE_NS" = "yes"; then
echo
echo "You must run \"make install\" in order to test the built application.
diff --git a/src/ChangeLog b/src/ChangeLog
index 11d8127057e..9f666aa649d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2009-12-09 Ken Brown <kbrown@cornell.edu> (tiny change)
+
+ * s/cygwin.h (G_SLICE_ALWAYS_MALLOC): New variable.
+
+ * emacs.c (main): Set the G_SLICE environment variable for Cygwin
+ GTK builds.
+
2009-12-07 Andreas Schwab <schwab@linux-m68k.org>
* unexelf.c (unexec): Don't search for .data twice.
diff --git a/src/emacs.c b/src/emacs.c
index d96b3a1daf1..8b88985969b 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -809,6 +809,11 @@ main (int argc, char **argv)
stack_base = &dummy;
#endif
+#if defined (USE_GTK) && defined (G_SLICE_ALWAYS_MALLOC)
+ /* This is used by the Cygwin build. */
+ setenv ("G_SLICE", "always-malloc", 1);
+#endif
+
if (!initialized)
{
extern char my_endbss[];
diff --git a/src/s/cygwin.h b/src/s/cygwin.h
index 69b826ac932..3dd73c0f6e1 100644
--- a/src/s/cygwin.h
+++ b/src/s/cygwin.h
@@ -126,6 +126,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Virtual addresses of pure and impure space can vary, as on Windows. */
#define VIRT_ADDR_VARIES
+/* Emacs supplies its own malloc, but glib (part of Gtk+) calls
+ memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
+ As malloc is not the Cygwin malloc, the Cygwin memalign always
+ returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */
+#define G_SLICE_ALWAYS_MALLOC
+
/* the end */
/* arch-tag: 5ae7ba00-83b0-4ab3-806a-3e845779191b