Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com To: cygwin AT cygwin DOT com X-Injected-Via-Gmane: http://gmane.org/ Path: not-for-mail From: Joe Buehler Newsgroups: gmane.os.cygwin Subject: second alpha of GNU emacs 21.2 Date: Tue, 06 Aug 2002 10:49:07 -0400 Lines: 433 Message-ID: <3D4FE1E3.7080306@hekimian.com> NNTP-Posting-Host: hekimian.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000903000601040200030105" X-Trace: main.gmane.org 1028645304 4582 206.205.138.10 (6 Aug 2002 14:48:24 GMT) X-Complaints-To: usenet AT main DOT gmane DOT org NNTP-Posting-Date: Tue, 6 Aug 2002 14:48:24 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en --------------000903000601040200030105 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Here is the second alpha version of a script to compile GNU emacs 21.2 under Cygwin. The X11 version of emacs works fine. This second alpha version fixes the non-X11 version of emacs somewhat. Input is processed now, however there is still a serious problem -- control-G will kill the xterm (or is it emacs?) after a shell process buffer is started. There were problems reported when Xaw3d was installed, so deinstall that before you try building this. Joe Buehler --------------000903000601040200030105 Content-Type: text/plain; name="emacs-21.2.install" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="emacs-21.2.install" #!/bin/bash # # script to build and install GNU emacs under Cygwin # # NOTE: The Windows "rebase" utility must be findable in PATH. # VERSION=21.2 DESTDIR=/usr/local/gnu-emacs # where to put rebased dlls (until Cygwin fixes this) REBASEDIR="$DESTDIR"/rebased-dlls # This is for use by emacs.exe once it is built. export PATH="$REBASEDIR:$PATH" # # Automatic rebasing of dlls used by emacs.exe causes problems because # emacs wants the heap in the range 0x00000000 - 0x0fffffff because of # the way that it represents pointers internally. # # So we make copies of the dlls that collide and rebase them for emacs # to use. Once the official copies of these libraries are fixed, this # hack can go away. # rebase_dlls_used_by_emacs() { if [ ! -d "$DESTDIR" ]; then mkdir -p "$DESTDIR" && chmod 755 "$DESTDIR" fi && rm -fr "$REBASEDIR" && mkdir -p "$REBASEDIR" && chmod 755 "$REBASEDIR" && while read DLL BASE NEWBASE; do echo "*** rebasing $DLL" cp -p "$DLL" "$REBASEDIR" && ( cd "$REBASEDIR" && rebase -b $NEWBASE $(basename "$DLL") ) done <<-\! /usr/X11R6/bin/libICE.dll 10001000 0x60700000 /usr/X11R6/bin/libSM.dll 00331000 0x60800000 /usr/X11R6/bin/libX11.dll 00911000 0x60900000 /usr/X11R6/bin/libXext.dll 009f1000 0x60a00000 /usr/X11R6/bin/libXpm.dll 00a11000 0x60b00000 /usr/bin/cygjpeg6b.dll 00a31000 0x60c00000 /usr/bin/cygpng12.dll 00a61000 0x60d00000 /usr/bin/cygz.dll 00a91000 0x60e00000 /usr/bin/cygtiff3.dll 00ab1000 0x60f00000 ! } # # patches to GNU emacs source required for Cygwin build # patch_emacs_source_for_cygwin() { patch -p0 -N <<-\! diff -u -r -N -x '*~*' configure configure --- configure 2002-03-15 07:46:09.000000000 -0500 +++ configure 2002-08-01 14:10:03.000000000 -0400 @@ -1628,6 +1628,7 @@ i[3456]86-*-* ) machine=intel386 case "${canonical}" in + *-cygwin ) opsys=cygwin ;; *-lynxos* ) opsys=lynxos ;; *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; *-isc2.2* ) opsys=isc2-2 ;; diff -u -r -N -x '*~*' lib-src/Makefile.in lib-src/Makefile.in --- lib-src/Makefile.in 2001-10-18 20:31:27.000000000 -0400 +++ lib-src/Makefile.in 2002-08-02 12:22:31.000000000 -0400 @@ -297,7 +297,7 @@ @echo "Installing utilities for users to run." for file in ${INSTALLABLES} ; do \ $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} ${bindir}/$${file} ; \ - chmod a+rx ${bindir}/$${file}; \ + chmod a+rx ${bindir}/$${file}.exe; \ done for file in ${INSTALLABLE_SCRIPTS} ; do \ $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file} ; \ diff -u -r -N -x '*~*' src/Makefile.in src/Makefile.in --- src/Makefile.in 2001-12-17 09:09:32.000000000 -0500 +++ src/Makefile.in 2002-08-02 11:59:25.000000000 -0400 @@ -836,7 +836,7 @@ emacs: temacs ${etc}DOC ${lisp} #ifdef CANNOT_DUMP rm -f emacs - ln temacs emacs + ln temacs.exe emacs #else #ifdef HAVE_SHM LC_ALL=C ./temacs -nl -batch -l loadup dump @@ -1231,7 +1231,7 @@ bootstrap-emacs: bootstrap-temacs bootstrap-doc #ifdef CANNOT_DUMP - ln temacs bootstrap-emacs + ln temacs.exe bootstrap-emacs #else #ifdef HAVE_SHM ./temacs -nl -batch -l loadup bootstrap diff -u -r -N -x '*~*' src/fileio.c src/fileio.c --- src/fileio.c 2002-03-13 14:52:18.000000000 -0500 +++ src/fileio.c 2002-08-01 15:34:10.000000000 -0400 @@ -23,7 +23,7 @@ #include -#if defined (USG5) || defined (BSD_SYSTEM) || defined (LINUX) +#if defined (USG5) || defined (BSD_SYSTEM) || defined (LINUX) || defined (CYGWIN) #include #endif diff -u -r -N -x '*~*' src/keyboard.c src/keyboard.c --- src/keyboard.c 2002-01-28 11:33:19.000000000 -0500 +++ src/keyboard.c 2002-08-01 15:24:01.000000000 -0400 @@ -6163,7 +6163,7 @@ if (n_to_read > sizeof cbuf) n_to_read = sizeof cbuf; #else /* no FIONREAD */ -#if defined (USG) || defined (DGUX) +#if defined (USG) || defined (DGUX) || defined(CYGWIN) /* Read some input if available, but don't wait. */ n_to_read = sizeof cbuf; fcntl (input_fd, F_SETFL, O_NDELAY); @@ -6220,9 +6220,9 @@ ); #ifndef FIONREAD -#if defined (USG) || defined (DGUX) +#if defined (USG) || defined (DGUX) || defined (CYGWIN) fcntl (input_fd, F_SETFL, 0); -#endif /* USG or DGUX */ +#endif /* USG or DGUX or CYGWIN */ #endif /* no FIONREAD */ for (i = 0; i < nread; i++) { diff -u -r -N -x '*~*' src/mem-limits.h src/mem-limits.h --- src/mem-limits.h 2000-03-08 13:49:46.000000000 -0500 +++ src/mem-limits.h 2002-08-01 16:54:47.000000000 -0400 @@ -45,6 +45,10 @@ #define BSD4_2 #endif +#ifdef CYGWIN +#define BSD4_2 +#endif + #ifndef BSD4_2 #ifndef USG #ifndef MSDOS diff -u -r -N -x '*~*' src/s/cygwin.h src/s/cygwin.h --- src/s/cygwin.h 1969-12-31 19:00:00.000000000 -0500 +++ src/s/cygwin.h 2002-08-02 11:01:43.000000000 -0400 @@ -0,0 +1,197 @@ +/* Template for system description header files. + This file describes the parameters that system description files + should define or not. + Copyright (C) 1985, 1986, 1992, 1999 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +/* + * Define symbols to identify the version of Unix this is. + * Define all the symbols that apply correctly. + */ + +/* #define UNIPLUS */ +/* #define USG5 */ +/* #define USG */ +/* #define HPUX */ +/* #define UMAX */ +/* #define BSD4_1 */ +/* #define BSD4_2 */ +/* #define BSD4_3 */ +/* #define BSD_SYSTEM */ +/* #define VMS */ + +/* SYSTEM_TYPE should indicate the kind of system you are using. + It sets the Lisp variable system-type. */ + +#define SYSTEM_TYPE "cygwin" + +/* NOMULTIPLEJOBS should be defined if your system's shell + does not have "job control" (the ability to stop a program, + run some other program, then continue the first one). */ + +/* #define NOMULTIPLEJOBS */ + +/* Emacs can read input using SIGIO and buffering characters itself, + or using CBREAK mode and making C-g cause SIGINT. + The choice is controlled by the variable interrupt_input. + + Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO) + + Emacs uses the presence or absence of the SIGIO and BROKEN_SIGIO macros + to indicate whether or not signal-driven I/O is possible. It uses + INTERRUPT_INPUT to decide whether to use it by default. + + SIGIO can be used only on systems that implement it (4.2 and 4.3). + CBREAK mode has two disadvantages + 1) At least in 4.2, it is impossible to handle the Meta key properly. + I hear that in system V this problem does not exist. + 2) Control-G causes output to be discarded. + I do not know whether this can be fixed in system V. + + Another method of doing input is planned but not implemented. + It would have Emacs fork off a separate process + to read the input and send it to the true Emacs process + through a pipe. */ + +#define INTERRUPT_INPUT +#undef INTERRUPT_INPUT + +/* Letter to use in finding device name of first pty, + if system supports pty's. 'a' means it is /dev/ptya0 */ + +/* #define FIRST_PTY_LETTER 'a' */ + +/* + * Define HAVE_TERMIOS if the system provides POSIX-style + * functions and macros for terminal control. + * + * Define HAVE_TERMIO if the system provides sysV-style ioctls + * for terminal control. + * + * Do not define both. HAVE_TERMIOS is preferred, if it is + * supported on your system. + */ + +#define HAVE_TERMIOS +/* #define HAVE_TERMIO */ + +/* + * Define HAVE_PTYS if the system supports pty devices. + */ + +#undef HAVE_PTYS + +/* + * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate + * The 4.2 opendir, etc., library functions. + */ + +/* #define NONSYSTEM_DIR_LIBRARY */ + +/* Define this symbol if your system has the functions bcopy, etc. */ + +#define BSTRING + +/* subprocesses should be defined if you want to + have code for asynchronous subprocesses + (as used in M-x compile and M-x shell). + This is generally OS dependent, and not supported + under most USG systems. */ + +#define subprocesses + +/* If your system uses COFF (Common Object File Format) then define the + preprocessor symbol "COFF". */ + +/* #define COFF */ + +/* define MAIL_USE_FLOCK if the mailer uses flock + to interlock access to /usr/spool/mail/$USER. + The alternative is that a lock file named + /usr/spool/mail/$USER.lock. */ + +/* #define MAIL_USE_FLOCK */ + +/* Define CLASH_DETECTION if you want lock files to be written + so that Emacs can tell instantly when you try to modify + a file that someone else has modified in his Emacs. */ + +#define CLASH_DETECTION + +/* Define this if your operating system declares signal handlers to + have a type other than the usual. `The usual' is `void' for ANSI C + systems (i.e. when the __STDC__ macro is defined), and `int' for + pre-ANSI systems. If you're using GCC on an older system, __STDC__ + will be defined, but the system's include files will still say that + signal returns int or whatever; in situations like that, define + this to be what the system's include files want. */ +/* #define SIGTYPE int */ + +/* If the character used to separate elements of the executable path + is not ':', #define this to be the appropriate character constant. */ +/* #define SEPCHAR ':' */ + +/* Define this if the system can use mmap for buffer text allocation. */ +/* #define USE_MMAP_FOR_BUFFERS 1 */ + +/* ============================================================ */ + +/* Here, add any special hacks needed + to make Emacs work on this system. For example, + you might define certain system call names that don't + exist on your system, or that do different things on + your system and must be used only through an encapsulation + (Which you should place, by convention, in sysdep.c). */ + +/* Some compilers tend to put everything declared static + into the initialized data area, which becomes pure after dumping Emacs. + On these systems, you must #define static as nothing to foil this. + Note that emacs carefully avoids static vars inside functions. */ + +/* #define static */ + +/* If the system's imake configuration file defines `NeedWidePrototypes' + as `NO', we must define NARROWPROTO manually. Such a define is + generated in the Makefile generated by `xmkmf'. If we don't + define NARROWPROTO, we will see the wrong function prototypes + for X functions taking float or double parameters. */ + +/* #define NARROWPROTO 1 */ + +/* ============================================================ */ + +/* After adding support for a new system, modify the large case + statement in the `configure' script to recognize reasonable + configuration names, and add a description of the system to + `etc/MACHINES'. + + If you've just fixed a problem in an existing configuration file, + you should also check `etc/MACHINES' to make sure its descriptions + of known problems in that configuration should be updated. */ + +#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) +#define GETPGRP_NO_ARG 1 +#define SYSV_SYSTEM_DIR 1 +#define CYGWIN 1 + +#define CANNOT_DUMP 1 +#define POSIX_SIGNALS 1 +#define SYSTEM_MALLOC 1 +#define LINKER $(CC) ! } # # compile and install GNU emacs # build_and_install_emacs() { rm -fr emacs-"$VERSION" && tar -xf emacs-"$VERSION".tar.gz --gzip && ( cd emacs-"$VERSION" && patch_emacs_source_for_cygwin ) && rm -fr emacs-"$VERSION"-build && mkdir emacs-"$VERSION"-build && ( cd emacs-"$VERSION"-build && CFLAGS=-g ../emacs-"$VERSION"/configure --prefix="$DESTDIR" && make && make install ) && rm -fr emacs-"$VERSION"-build && rm -fr emacs-"$VERSION" && mv "$DESTDIR"/bin/emacs "$DESTDIR"/bin/emacs-orig && cat <<-! >"$DESTDIR"/bin/emacs && #!/bin/bash unset TERMCAP export TERMINFO=/usr/lib/terminfo export PATH="$REBASEDIR:\$PATH" exec "$DESTDIR"/bin/emacs-"$VERSION" "\$@" ! chmod 755 "$DESTDIR"/bin/emacs } if [ ! -f emacs-"$VERSION".tar.gz ]; then echo "$0: The file emacs-$VERSION.tar.gz is not in the current directory." >&2 exit 1 fi && rebase_dlls_used_by_emacs && build_and_install_emacs && true --------------000903000601040200030105 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --------------000903000601040200030105--