view lib-src/makefile.w32-in @ 72863:526dc1f36b09

(produce_image_glyph): Automatically crop wide images at right window edge so we can draw the cursor on the same row to avoid confusing redisplay by placing the cursor outside the visible window area.
author Kim F. Storm <storm@cua.dk>
date Thu, 14 Sep 2006 09:37:44 +0000
parents 1eb33156a937
children 5e2029cd6a15 138027c8c982
line wrap: on
line source

#  -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
#  Copyright (C) 2000, 2001, 2002, 2003, 2004,
#                2005, 2006 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., 51 Franklin Street, Fifth Floor,
#  Boston, MA 02110-1301, USA.
#

ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc

.PHONY: $(ALL)

LOCAL_FLAGS	= -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
		  -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
                  -I../src

# don't know what (if) to do with these yet...
#
#		$(BLD)/server.exe	\
#		$(BLD)/emacstool.exe	\
#		$(BLD)/emacsclient.exe	\
#		$(BLD)/cvtmail.exe	\

LIBS	      = $(BASE_LIBS) $(ADVAPI32)

$(BLD)/make-docfile.exe: 	$(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) $(LIBS)
$(BLD)/hexl.exe:		$(BLD)/hexl.$(O)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/hexl.$(O) $(LIBS)
$(BLD)/fakemail.exe: 		$(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O) $(LIBS)
$(BLD)/sorted-doc.exe: 	$(BLD)/sorted-doc.$(O)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/sorted-doc.$(O) $(LIBS)
$(BLD)/digest-doc.exe: 	$(BLD)/digest-doc.$(O)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/digest-doc.$(O) $(LIBS)
$(BLD)/test-distrib.exe: $(BLD)/test-distrib.$(O)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/test-distrib.$(O) $(LIBS)

make-docfile:	$(BLD) $(BLD)/make-docfile.exe
ctags:		$(BLD) $(BLD)/ctags.exe
etags:		$(BLD) $(BLD)/etags.exe
ebrowse:        $(BLD) $(BLD)/ebrowse.exe
hexl:		$(BLD) $(BLD)/hexl.exe
movemail:	$(BLD) $(BLD)/movemail.exe
fakemail:	$(BLD) $(BLD)/fakemail.exe
sorted-doc:	$(BLD) $(BLD)/sorted-doc.exe
digest-doc:	$(BLD) $(BLD)/digest-doc.exe

test-distrib:	$(BLD) $(BLD)/test-distrib.exe
	"$(BLD)/test-distrib.exe" "$(SRC)/testfile"

GETOPTOBJS = $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O)
GETOPTDEPS = $(GETOPTOBJS) getopt.h
MOVEMAILOBJS =  $(BLD)/movemail.$(O) \
		$(BLD)/pop.$(O) \
		$(BLD)/ntlib.$(O) \
		$(GETOPTOBJS)

$(BLD)/movemail.exe:	$(MOVEMAILOBJS) getopt.h
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(MOVEMAILOBJS) $(WSOCK32) $(LIBS)

ETAGSOBJ      = $(BLD)/etags.$(O) \
		$(BLD)/getopt.$(O) \
		$(BLD)/getopt1.$(O) \
		$(BLD)/ntlib.$(O) \
		$(BLD)/regex.$(O)

$(BLD)/etags.exe: 	$(ETAGSOBJ)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ETAGSOBJ) $(LIBS)


EBROWSEOBJ    = $(BLD)/ebrowse.$(O) \
                $(BLD)/getopt.$(O) \
                $(BLD)/getopt1.$(O) \
                $(BLD)/ntlib.$(O)

$(BLD)/ebrowse.exe:     $(EBROWSEOBJ)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(EBROWSEOBJ) $(LIBS)

$(BLD)/regex.$(O): ../src/regex.c ../src/regex.h ../src/config.h
		$(CC)  $(CFLAGS) -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
		../src/regex.c $(CC_OUT)$@

ETAGS_CFLAGS  = -DHAVE_GETCWD
$(BLD)/etags.$(O): etags.c
		$(CC) $(CFLAGS) $(ETAGS_CFLAGS) $(CC_OUT)$@ etags.c

CTAGSOBJ      = $(BLD)/ctags.$(O) \
		$(BLD)/getopt.$(O) \
		$(BLD)/getopt1.$(O) \
		$(BLD)/ntlib.$(O) \
		$(BLD)/regex.$(O)

$(BLD)/ctags.exe:  $(CTAGSOBJ)
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(CTAGSOBJ) $(LIBS)

ctags.c:	etags.c
		- $(DEL) ctags.c
		$(CP) etags.c ctags.c

CTAGS_CFLAGS  = -DCTAGS $(ETAGS_CFLAGS)
$(BLD)/ctags.$(O): ctags.c
		$(CC) $(CFLAGS) $(CTAGS_CFLAGS) $(CC_OUT)$@ ctags.c

#
# don't know what to do with these yet...
#
# $(BLD)/emacstool.exe: 	$(BLD)/emacstool.$(O)
# $(BLD)/server.exe: 		$(BLD)/server.$(O)
# $(BLD)/cvtmail.exe: 		$(BLD)/cvtmail.$(O)
# $(BLD)/emacsclient.exe: 	$(BLD)/emacsclient.$(O)

#
# From ..\src\Makefile.in
# It doesn't matter if the real name is *.obj for the files in this list,
# make-docfile blindly replaces .o with .c anyway.  Keep .o in this list
# as it is required by code in doc.c.
#
obj=    sunfns.o dosfns.o msdos.o \
	xterm.o xfns.o xmenu.o xselect.o xrdb.o  fringe.o image.o \
	mac.o macterm.o macfns.o macmenu.o fontset.o \
	w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \
	w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \
	dispnew.o frame.o scroll.o xdisp.o window.o \
	charset.o coding.o category.o ccl.o \
	cm.o term.o xfaces.o \
	emacs.o keyboard.o macros.o keymap.o sysdep.o \
	buffer.o filelock.o insdel.o marker.o \
	minibuf.o fileio.o dired.o filemode.o \
	cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
	alloc.o data.o doc.o editfns.o callint.o \
	eval.o floatfns.o fns.o print.o lread.o \
	abbrev.o syntax.o bytecode.o \
	process.o callproc.o \
	region-cache.o sound.o atimer.o \
	doprnt.o strftime.o intervals.o textprop.o composite.o md5.o

#
# These are the lisp files that are loaded up in loadup.el
#
lispsource = ../lisp/

MOUSE_SUPPORT = $(lispsource)select.elc $(lispsource)scroll-bar.elc $(lispsource)mouse.elc $(lispsource)tooltip.elc
WINNT_SUPPORT = $(lispsource)ls-lisp.elc $(lispsource)disp-table.elc $(lispsource)w32-fns.elc $(lispsource)dos-w32.elc $(lispsource)w32-vars.elc

# lisp files that are loaded up on other platforms
MSDOS_SUPPORT = $(lispsource)dos-fns.elc $(lispsource)dos-vars.elc $(lispsource)international/ccl.elc $(lispsource)international/codepage.elc
VMS_SUPPORT = $(lispsource)vmsproc.elc $(lispsource)vms-patch.elc

lisp1= \
	$(lispsource)abbrev.elc \
	$(lispsource)buff-menu.elc \
	$(lispsource)button.elc \
	$(lispsource)emacs-lisp/byte-run.elc \
	$(lispsource)cus-face.elc \
	$(lispsource)cus-start.elc \
	$(lispsource)custom.elc \
	$(lispsource)emacs-lisp/backquote.elc \
	$(lispsource)emacs-lisp/lisp-mode.elc \
	$(lispsource)emacs-lisp/lisp.elc \
	$(lispsource)facemenu.elc \
	$(MOUSE_SUPPORT) \
	$(lispsource)faces.elc \
	$(lispsource)files.elc \
	$(lispsource)emacs-lisp/float-sup.elc \
	$(lispsource)format.elc \
	$(lispsource)frame.elc \
	$(lispsource)help.elc \
	$(lispsource)indent.elc \
	$(lispsource)isearch.elc \
	$(lispsource)rfn-eshadow.elc \
	$(lispsource)loadup.el \
	$(lispsource)loaddefs.el \
	$(lispsource)bindings.elc \
	$(lispsource)emacs-lisp/map-ynp.elc \
	$(lispsource)env.elc \
	$(lispsource)international/mule.elc \
	$(lispsource)international/mule-conf.el \
	$(lispsource)international/mule-cmds.elc \
	$(lispsource)international/characters.elc \
	$(lispsource)international/ucs-tables.elc \
	$(lispsource)international/utf-8.elc \
	$(lispsource)international/utf-16.elc \
	$(lispsource)international/latin-1.el \
	$(lispsource)international/latin-2.el \
	$(lispsource)international/latin-3.el \
	$(lispsource)international/latin-4.el \
	$(lispsource)international/latin-5.el \
	$(lispsource)international/latin-8.el \
	$(lispsource)international/latin-9.el \
	$(lispsource)fringe.elc \
	$(lispsource)image.elc \
	$(lispsource)international/fontset.elc \
	$(lispsource)dnd.elc \
	$(lispsource)mwheel.elc \
	$(lispsource)tool-bar.elc \
	$(lispsource)case-table.elc

lisp2 = \
	$(lispsource)language/chinese.elc \
	$(lispsource)language/cyrillic.elc \
	$(lispsource)language/indian.elc \
	$(lispsource)language/devanagari.el \
	$(lispsource)language/kannada.el \
	$(lispsource)language/malayalam.el \
	$(lispsource)language/tamil.el \
	$(lispsource)language/english.el \
	$(lispsource)language/ethiopic.elc \
	$(lispsource)language/european.elc \
	$(lispsource)language/czech.el \
	$(lispsource)language/slovak.el \
	$(lispsource)language/romanian.el \
	$(lispsource)language/greek.el \
	$(lispsource)language/hebrew.el \
	$(lispsource)language/japanese.el \
	$(lispsource)language/korean.el \
	$(lispsource)language/lao.el \
	$(lispsource)language/thai.el \
	$(lispsource)language/tibetan.elc \
	$(lispsource)language/vietnamese.elc \
	$(lispsource)language/misc-lang.el \
	$(lispsource)language/utf-8-lang.el \
	$(lispsource)language/georgian.el \
	$(lispsource)menu-bar.elc \
	$(lispsource)paths.el \
	$(lispsource)register.elc \
	$(lispsource)replace.elc \
	$(lispsource)simple.elc \
	$(lispsource)startup.elc \
	$(lispsource)subr.elc \
	$(lispsource)term/tty-colors.elc \
	$(lispsource)font-core.elc \
	$(lispsource)emacs-lisp/syntax.elc \
	$(lispsource)font-lock.elc \
	$(lispsource)jit-lock.elc \
	$(lispsource)textmodes/fill.elc \
	$(lispsource)textmodes/page.elc \
	$(lispsource)textmodes/paragraphs.elc \
	$(lispsource)textmodes/text-mode.elc \
	$(lispsource)emacs-lisp/timer.elc \
	$(lispsource)vc-hooks.elc \
	$(lispsource)jka-cmpr-hook.elc \
	$(lispsource)ediff-hook.elc \
	$(VMS_SUPPORT) \
	$(MSDOS_SUPPORT) \
	$(WINNT_SUPPORT) \
	$(lispsource)widget.elc \
	$(lispsource)window.elc \
	$(lispsource)version.el


DOC	      = DOC
$(DOC):		$(BLD) $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp2)
		- $(DEL) $(DOC)
		"$(THISDIR)/$(BLD)/make-docfile" -o $(DOC) -d ../src $(obj)
		"$(THISDIR)/$(BLD)/make-docfile" -a $(DOC) -d ../src $(lisp1)
		"$(THISDIR)/$(BLD)/make-docfile" -a $(DOC) -d ../src $(lisp2)
		$(CP) $(DOC) ../etc/DOC-X
		- mkdir "../src/$(OBJDIR)"
		- mkdir "../src/$(OBJDIR)/etc"
		$(CP) $(DOC) ../src/$(OBJDIR)/etc/DOC-X

{$(BLD)}.$(O){$(BLD)}.exe:
		$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $*.$(O) $(LIBS)

#
# Build the executables
#
all:		$(BLD) $(ALL) $(DOC)

#
# Assuming INSTALL_DIR is defined, build and install emacs in it.
#
INSTALL_FILES = $(ALL)
install:	$(INSTALL_FILES)
		- mkdir "$(INSTALL_DIR)/bin"
		$(CP) $(BLD)/etags.exe $(INSTALL_DIR)/bin
		$(CP) $(BLD)/ebrowse.exe $(INSTALL_DIR)/bin
		$(CP) $(BLD)/ctags.exe $(INSTALL_DIR)/bin
		$(CP) $(BLD)/hexl.exe $(INSTALL_DIR)/bin
		$(CP) $(BLD)/movemail.exe $(INSTALL_DIR)/bin
		$(CP) $(BLD)/sorted-doc.exe $(INSTALL_DIR)/bin
		$(CP) $(BLD)/digest-doc.exe $(INSTALL_DIR)/bin
		- mkdir "$(INSTALL_DIR)/etc"
		$(CP) $(DOC) $(INSTALL_DIR)/etc

#
# Maintenance
#
clean:
		- $(DEL) *~ DOC* $(COMPILER_TEMP_FILES)
		- $(DEL) ctags.c
		- $(DEL) getopt.h
		- $(DEL_TREE) $(OBJDIR)

cleanall:	clean
		- $(DEL_TREE) obj
		- $(DEL_TREE) obj-spd
		- $(DEL_TREE) oo
		- $(DEL_TREE) oo-spd

#
# Headers we would preprocess if we could.
#
../src/config.h:	../nt/$(CONFIG_H)
			echo config.h has changed. Re-run configure.bat.
			exit -1

getopt.h:		getopt_.h
			$(CP) $(ALL_DEPS) $@

### DEPENDENCIES ###

EMACS_ROOT	= ..
SRC		= .

$(BLD)/alloca.$(O) : \
	$(SRC)/alloca.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/src/blockinput.h

$(BLD)/b2m.$(O) : \
	$(SRC)/b2m.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h

$(BLD)/ctags.$(O) : \
	$(SRC)/ctags.c \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h \
	$(SRC)/ntlib.h \
	$(SRC)/getopt.h

$(BLD)/cvtmail.$(O) : \
	$(SRC)/cvtmail.c

$(BLD)/digest-doc.$(O) : \
	$(SRC)/digest-doc.c

$(BLD)/emacsclient.$(O) : \
	$(SRC)/emacsclient.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h

$(BLD)/emacstool.$(O) : \
	$(SRC)/emacstool.c \
	$(EMACS_ROOT)/nt/inc/sys/file.h

$(BLD)/etags.$(O) : \
	$(SRC)/etags.c \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h \
	$(SRC)/ntlib.h \
	$(SRC)/getopt.h

$(BLD)/fakemail.$(O) : \
	$(SRC)/fakemail.c \
	$(SRC)/ntlib.h \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h \
	$(EMACS_ROOT)/nt/inc/pwd.h

$(BLD)/getdate.$(O) : \
	$(SRC)/getdate.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(MSTOOLS_SYS)/types.h

$(BLD)/getopt.$(O) : \
	$(SRC)/getopt.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/ntlib.h \
	$(SRC)/getopt.h

$(BLD)/getopt1.$(O) : \
	$(SRC)/getopt1.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/getopt.h

$(BLD)/hexl.$(O) : \
	$(SRC)/hexl.c

$(BLD)/leditcfns.$(O) : \
	$(SRC)/leditcfns.c

$(BLD)/make-docfile.$(O) : \
	$(SRC)/make-docfile.c \
	$(EMACS_ROOT)/src/config.h

$(BLD)/make-path.$(O) : \
	$(SRC)/make-path.c

$(BLD)/movemail.$(O) : \
	$(SRC)/movemail.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h \
	$(EMACS_ROOT)/lib-src/../src/syswait.h \
	$(EMACS_ROOT)/nt/inc/pwd.h \
	$(SRC)/ntlib.h
		$(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c

$(BLD)/ntlib.$(O) : \
	$(SRC)/ntlib.c \
	$(SRC)/ntlib.h \
	$(EMACS_ROOT)/nt/inc/pwd.h

$(BLD)/pop.$(O) : \
	$(SRC)/pop.c \
	$(SRC)/pop.h \
	$(SRC)/ntlib.h

$(BLD)/profile.$(O) : \
	$(SRC)/profile.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h \
	$(EMACS_ROOT)/lib-src/../src/systime.h

$(BLD)/qsort.$(O) : \
	$(SRC)/qsort.c

$(BLD)/sorted-doc.$(O) : \
	$(SRC)/sorted-doc.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \

$(BLD)/tcp.$(O) : \
	$(SRC)/tcp.c

$(BLD)/test-distrib.$(O) : \
	$(SRC)/test-distrib.c

$(BLD)/timer.$(O) : \
	$(SRC)/timer.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/lib-src/../src/config.h