view nt/makefile.nt @ 82988:f82e3a6f5ccb

A few more bugfixes and new features. (Sigh.) I obviously need to remember to separate individual changes to multiple commits. src/emacsclient.c: Improved error handling. (decode_options): Changed frame option (again) from -f to -t. (print_help_and_exit): Ditto. (copy_from_to): Check EINTR after write, not EAGAIN. Removed SIGIO hack. (pty_conversation): Handle errors transmitted through the socket. Handle pty errors by not reading from it anymore. (main): Restore correct errno after socket_status failed. Send -tty on -t, not -pty. lisp/server.el (server-process-filter): Watch -tty, not -pty. Use make-frame-on-tty instead of make-terminal-frame. Don't set newframe to t if make-frame-on-tty failed. Don't delete frames here. Print correct message when there are no files to edit, but a new frame was requested. (server-sentinel): Delete the frame after the process. (server-handle-delete-frame): New function for delete-frame-functions. (server-start): Add server-handle-delete-frame to delete-frame-functions. (server-buffer-done): Don't delete frames here. src/alloc.c (mark_ttys): Add prototype. (Fgarbage_collect): Call mark_ttys. src/emacs.c: (shut_down_emacs): Don't flush stdout before reset_sys_modes(). src/process.c (add_keyboard_wait_descriptor_called_flag): Removed. (add_keyboard_wait_descriptor): Removed stdin hack. src/sysdep.c: Unconditionally include sysselect.h. (old_fcntl_flags): Changed to an array. (init_sigio, reset_sigio): Use it. (narrow_foreground_group, widen_foreground_group): Use setpgid, not setpgrp. (old_fcntl_owner): Changed to an array. (init_sys_modes, reset_sys_modes): Use it. Fix fsync() and reset_sigio() calls. src/term.c (Qframe_tty_name, Qframe_tty_type): New variables. (syms_of_term): Initialize them. (Fframe_tty_name, Fframe_tty_type): New functions. (term_init): Call add_keyboard_wait_descriptor(). (Fdelete_tty): New function. (delete_tty): Call delete_keyboard_wait_descriptor(). (get_current_tty): Removed. (mark_ttys): New function. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-28
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 31 Dec 2003 05:09:29 +0000
parents 695cf19ef79e
children 9077e3f7cd49 375f2633d815
line wrap: on
line source

#
#  Top level makefile for building GNU Emacs on Windows NT
#  Copyright (c) 1993-2000 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.
#
#   Geoff Voelker (voelker@cs.washington.edu)	11-20-93
#						  9-6-94
!include makefile.def

ALL		= addpm ddeclient runemacs cmdproxy addsection preprep
!if $(MSVCNT11)
TRES		= $(BLD)\emacs.res
!else
TRES		= $(BLD)\emacs.rbj
!endif

addpm:		  $(BLD) $(BLD)\addpm.exe
$(BLD)\addpm.obj: addpm.c
$(BLD)\addpm.exe: $(BLD)\addpm.obj
		  $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
		  $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib

ddeclient:	  $(BLD) $(BLD)\ddeclient.exe
$(BLD)\ddeclient.obj: ddeclient.c
$(BLD)\ddeclient.exe: $(BLD)\ddeclient.obj
		  $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
		  $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib

cmdproxy:	  $(BLD) $(BLD)\cmdproxy.exe
$(BLD)\cmdproxy.obj: cmdproxy.c
$(BLD)\cmdproxy.exe: $(BLD)\cmdproxy.obj
		  $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
		  $(SYS_LDFLAGS) $** $(BASE_LIBS) user32.lib

addsection:	  $(BLD) $(BLD)\addsection.exe
$(BLD)\addsection.obj: addsection.c
$(BLD)\addsection.exe: $(BLD)\addsection.obj
		  $(LINK) -debug:full -out:$@ -subsystem:console -entry:mainCRTStartup \
		  $(SYS_LDFLAGS) $** $(BASE_LIBS) user32.lib

preprep:	  $(BLD) $(BLD)\preprep.exe
$(BLD)\preprep.obj: preprep.c
$(BLD)\preprep.exe: $(BLD)\preprep.obj
		  $(LINK) -debug:full -out:$@ -subsystem:console -entry:mainCRTStartup \
		  $(SYS_LDFLAGS) $** $(BASE_LIBS)

#
# The resource file.  NT 3.10 requires the use of cvtres; even though
# it is not necessary on later versions, it is still ok to use it.
#
$(TRES):	emacs.rc
		$(RC) -Fo$(BLD)\emacs.res $**
!if !$(MSVCNT11)
		$(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
!endif

runemacs:	  $(BLD) $(BLD)\runemacs.exe
$(BLD)\runemacs.obj: runemacs.c
$(BLD)\runemacs.exe: $(BLD)\runemacs.obj $(TRES)
		  $(LINK) -out:$@ -subsystem:windows -entry:WinMainCRTStartup \
		  $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib

# Since Windows 95 does not support multiple commands on one command line
# (e.g., in for loops), we cannot use for loops any more.
# SUBDIRS	      = lib-src src lisp

#
# Build emacs
#
BUILD_CMD	= $(MAKE) $(MFLAGS) -f makefile.nt all
all:		$(BLD) $(ALL)
		cd ..\lib-src
		$(BUILD_CMD)
		cd ..\src
		$(BUILD_CMD)
		cd ..\lisp
		$(BUILD_CMD)
		cd ..\leim
		if exist makefile.nt $(BUILD_CMD)
		cd ..\nt

BOOTSTRAP_CMD	= $(MAKE) $(MFLAGS) -f makefile.nt bootstrap
bootstrap:	$(BLD) $(ALL)
		cd ..\src
		$(BOOTSTRAP_CMD)
		$(BOOTCLEAN_CMD)
		cd ..\lisp
		$(BOOTSTRAP_CMD)
		cd ..\nt

BOOTCLEAN_CMD	= $(MAKE) $(MFLAGS) -f makefile.nt bootstrap-clean
bootstrap-clean:
		cd ..\src
		$(BOOTCLEAN_CMD)
		cd ..\lisp
		$(BOOTCLEAN_CMD)

$(INSTALL_DIR):
		- mkdir $(INSTALL_DIR)

$(INSTALL_DIR)\bin:
		- mkdir $(INSTALL_DIR)\bin

#
# Build and install emacs in INSTALL_DIR
#
INSTALL_CMD	= $(MAKE) -f makefile.nt install
install:	all $(INSTALL_DIR)
		cd ..\lib-src
		$(INSTALL_CMD)
		cd ..\src
		$(INSTALL_CMD)
		cd ..\lisp
		$(INSTALL_CMD)
		cd ..\leim
		if exist makefile.nt $(INSTALL_CMD)
		cd ..\nt
		- $(CP) $(BLD)\addpm.exe $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\ddeclient.exe $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\cmdproxy.exe $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\runemacs.exe $(INSTALL_DIR)\bin
		- $(CP) ..\lib-src\fns-*.el $(INSTALL_DIR)\bin
		- $(ADDPM) $(INSTALL_DIR)
		- $(DEL) ..\same-dir.tst
		- $(DEL) $(INSTALL_DIR)\same-dir.tst
		- mkdir $(INSTALL_DIR)\etc\icons
		- $(CP_DIR) icons $(INSTALL_DIR)\etc\icons
		echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
		if not exist ..\same-dir.tst $(MAKE) -f makefile.nt real_install
		- $(DEL) ..\same-dir.tst
		- $(DEL) $(INSTALL_DIR)\same-dir.tst

#
# This installs executables from ..\bin into the installation directory
# without building anything.
#
fast_install:
		- mkdir $(INSTALL_DIR)\data
		$(CP) ..\lib-src\DOC $(INSTALL_DIR)\etc
		- mkdir $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\addpm.exe $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\ddeclient.exe $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\cmdproxy.exe $(INSTALL_DIR)\bin
		- $(CP) $(BLD)\runemacs.exe $(INSTALL_DIR)\bin
		- $(CP) ..\lib-src\fns-*.el $(INSTALL_DIR)\bin
		- $(DEL) ..\same-dir.tst
		- $(DEL) $(INSTALL_DIR)\same-dir.tst
		echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
		if not exist ..\same-dir.tst $(CP) ..\bin\emacs.exe $(INSTALL_DIR)\bin
		if not exist ..\same-dir.tst $(CP) ..\bin\etags.exe $(INSTALL_DIR)\bin
		if not exist ..\same-dir.tst $(CP) ..\bin\ctags.exe $(INSTALL_DIR)\bin
		if not exist ..\same-dir.tst $(MAKE) -f makefile.nt real_install
		- $(DEL) ..\same-dir.tst
		- $(DEL) $(INSTALL_DIR)\same-dir.tst

real_install:
		- $(DEL) ..\same-dir.tst
		- $(DEL) $(INSTALL_DIR)\same-dir.tst
		echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
		- mkdir $(INSTALL_DIR)\etc
		- mkdir $(INSTALL_DIR)\info
		- mkdir $(INSTALL_DIR)\lock
		- mkdir $(INSTALL_DIR)\data
		- mkdir $(INSTALL_DIR)\site-lisp
		- mkdir $(INSTALL_DIR)\etc\icons
		- $(CP_DIR) icons $(INSTALL_DIR)\etc\icons
		if not exist ..\same-dir.tst $(CP_DIR) ..\etc $(INSTALL_DIR)\etc
		if not exist ..\same-dir.tst $(CP_DIR) ..\info $(INSTALL_DIR)\info
		- $(DEL) ..\same-dir.tst
		- $(DEL) $(INSTALL_DIR)\same-dir.tst

#
# Maintenance
#
CLEAN_CMD	= $(MAKE) -f makefile.nt clean
clean:
		- $(DEL) *~ *.pdb
		- $(DEL) *.orig
		- $(DEL) *.rej
		- $(DEL) *.crlf
		- $(DEL_TREE) deleted
		- $(DEL_TREE) obj
		- $(DEL_TREE) obj-spd
		- $(DEL) ..\etc\DOC ..\etc\DOC-X
		cd ..\lib-src
		$(CLEAN_CMD)
		cd ..\src
		$(CLEAN_CMD)
		cd ..\lisp
		$(CLEAN_CMD)
		cd ..\leim
		if exist makefile.nt $(CLEAN_CMD)
		cd ..\nt

realclean: clean
		- $(DEL_TREE) ..\bin

# arch-tag: b01debf7-6859-439e-b08e-f041aa03c32f