X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/83a9c0b2c302747a170f978284e749e96977d416..172aa4c11b0f2dbe9efcc042a7fed9f35a5cf169:/lib-src/makefile.w32-in diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in index a997d324a5..b552160c75 100644 --- a/lib-src/makefile.w32-in +++ b/lib-src/makefile.w32-in @@ -1,5 +1,6 @@ # -*- Makefile -*- for GNU Emacs on the Microsoft W32 API. -# Copyright (c) 2000-2001 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # @@ -15,31 +16,21 @@ # # 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. +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # -ALL = make-docfile hexl ctags etags movemail ebrowse +ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacsclient .PHONY: $(ALL) +VERSION = 22.1.50 + LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \ -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \ - -I../src + -I../src -# don't know what (if) to do with these yet... -# -# $(BLD)/sorted-doc.exe \ -# $(BLD)/env.exe \ -# $(BLD)/server.exe \ -# $(BLD)/emacstool.exe \ -# $(BLD)/leditcfns.exe \ -# $(BLD)/emacsclient.exe \ -# $(BLD)/cvtmail.exe \ -# $(BLD)/digest-doc.exe \ -# $(BLD)/test-distrib.exe \ - -LIBS = $(BASE_LIBS) $(ADVAPI32) +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) @@ -47,14 +38,26 @@ $(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) - -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 +$(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: stamp_BLD $(BLD)/make-docfile.exe +ctags: stamp_BLD $(BLD)/ctags.exe +etags: stamp_BLD $(BLD)/etags.exe +ebrowse: stamp_BLD $(BLD)/ebrowse.exe +hexl: stamp_BLD $(BLD)/hexl.exe +movemail: stamp_BLD $(BLD)/movemail.exe +fakemail: stamp_BLD $(BLD)/fakemail.exe +sorted-doc: stamp_BLD $(BLD)/sorted-doc.exe +digest-doc: stamp_BLD $(BLD)/digest-doc.exe +emacsclient: stamp_BLD $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe + +test-distrib: stamp_BLD $(BLD)/test-distrib.exe + "$(BLD)/test-distrib.exe" "$(SRC)/testfile" GETOPTOBJS = $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O) GETOPTDEPS = $(GETOPTOBJS) getopt.h @@ -67,6 +70,29 @@ $(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) +ECLIENT_CFLAGS = -DHAVE_GETCWD -DHAVE_STRERROR -DVERSION="\"$(VERSION)\"" +ECLIENTOBJS = $(BLD)/emacsclient.$(O) \ + $(BLD)/getopt.$(O) \ + $(BLD)/getopt1.$(O) \ + $(BLD)/ntlib.$(O) +TRES = ../nt/$(BLD)/emacs.res + +$(TRES): ../nt/emacs.rc + $(RC) $(RC_OUT)../nt/$(BLD)/emacs.res $(ALL_DEPS) + +$(BLD)/emacsclient.exe: $(ECLIENTOBJS) +# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib + $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(LIBS) + +$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(TRES) +# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib + $(LINK) $(LINK_OUT)$@ $(TRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(LIBS) + +# emacsclient.$(O) depends on makefile.w32-in because makefile.w32-in +# can be edited to define VERSION string, which is part of ECLIENT_CFLAGS. +$(BLD)/emacsclient.$(O): emacsclient.c makefile.w32-in + $(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c + ETAGSOBJ = $(BLD)/etags.$(O) \ $(BLD)/getopt.$(O) \ $(BLD)/getopt1.$(O) \ @@ -78,9 +104,9 @@ $(BLD)/etags.exe: $(ETAGSOBJ) EBROWSEOBJ = $(BLD)/ebrowse.$(O) \ - $(BLD)/getopt.$(O) \ - $(BLD)/getopt1.$(O) \ - $(BLD)/ntlib.$(O) + $(BLD)/getopt.$(O) \ + $(BLD)/getopt1.$(O) \ + $(BLD)/ntlib.$(O) $(BLD)/ebrowse.exe: $(EBROWSEOBJ) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(EBROWSEOBJ) $(LIBS) @@ -111,28 +137,36 @@ $(BLD)/ctags.$(O): ctags.c $(CC) $(CFLAGS) $(CTAGS_CFLAGS) $(CC_OUT)$@ ctags.c # -# don't know what to do with these yet... +# 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. # -# $(BLD)/sorted-doc.exe: $(BLD)/sorted-doc.$(O) -# $(BLD)/yow.exe: $(BLD)/yow.$(O) -# $(BLD)/emacstool.exe: $(BLD)/emacstool.$(O) -# $(BLD)/leditcfns.exe: $(BLD)/leditcfns.$(O) -# $(BLD)/server.exe: $(BLD)/server.$(O) -# $(BLD)/cvtmail.exe: $(BLD)/cvtmail.$(O) -# $(BLD)/digest-doc.exe: $(BLD)/digest-doc.$(O) -# $(BLD)/emacsclient.exe: $(BLD)/emacsclient.$(O) -# $(BLD)/test-distrib.exe: $(BLD)/test-distrib.$(O) +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 -# -# From ..\src\makefile.nt. -# -obj = abbrev.c alloc.c alloca.c buffer.c bytecode.c callint.c callproc.c casefiddle.c casetab.c category.c ccl.c charset.c cm.c cmds.c coding.c data.c dired.c dispnew.c doc.c doprnt.c editfns.c emacs.c eval.c fileio.c filelock.c filemode.c floatfns.c fns.c fontset.c frame.c fringe.c gmalloc.c indent.c insdel.c intervals.c keyboard.c keymap.c lastfile.c lread.c macros.c marker.c minibuf.c print.c process.c ralloc.c regex.c region-cache.c scroll.c search.c sound.c strftime.c syntax.c sysdep.c term.c termcap.c textprop.c tparam.c undo.c unexw32.c vm-limit.c w32.c w32console.c w32fns.c w32heap.c w32inevt.c w32menu.c w32proc.c w32reg.c w32select.c w32term.c w32xfns.c window.c xdisp.c xfaces.c xfaces.c # # 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 +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 @@ -144,33 +178,35 @@ lisp1= \ $(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)env.elc \ - $(lispsource)faces.elc \ - $(lispsource)files.elc \ - $(lispsource)format.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)menu-bar.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 \ @@ -178,6 +214,12 @@ lisp1= \ $(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 = \ @@ -185,6 +227,7 @@ lisp2 = \ $(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 \ @@ -204,6 +247,7 @@ lisp2 = \ $(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 \ @@ -212,11 +256,16 @@ lisp2 = \ $(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) \ @@ -225,9 +274,18 @@ lisp2 = \ $(lispsource)window.elc \ $(lispsource)version.el +# This is needed the first time we build the tree, since temacs.exe +# does not exist yet, and the DOC rule needs it to rebuild DOC whenever +# Emacs is rebuilt. +../src/$(BLD)/temacs.exe: + - mkdir "../src/$(OBJDIR)" + - mkdir "../src/$(BLD)" + @echo temacs > temacs.exe + $(CP) temacs.exe ../src/$(BLD) + - $(DEL) temacs.exe DOC = DOC -$(DOC): make-docfile +$(DOC): stamp_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) @@ -243,7 +301,7 @@ $(DOC): make-docfile # # Build the executables # -all: $(BLD) $(ALL) $(DOC) +all: stamp_BLD $(ALL) $(DOC) # # Assuming INSTALL_DIR is defined, build and install emacs in it. @@ -256,16 +314,24 @@ install: $(INSTALL_FILES) $(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 + $(CP) $(BLD)/emacsclient.exe $(INSTALL_DIR)/bin + $(CP) $(BLD)/emacsclientw.exe $(INSTALL_DIR)/bin - mkdir "$(INSTALL_DIR)/etc" $(CP) $(DOC) $(INSTALL_DIR)/etc # # Maintenance # +# We used to delete *~ here, but that might inadvertently remove +# precious files if it happens to match their short 8+3 aliases. clean: - - $(DEL) *~ DOC* $(COMPILER_TEMP_FILES) + - $(DEL) DOC* $(COMPILER_TEMP_FILES) - $(DEL) ctags.c + - $(DEL) getopt.h - $(DEL_TREE) $(OBJDIR) + - $(DEL) stamp_BLD cleanall: clean - $(DEL_TREE) obj @@ -277,8 +343,10 @@ cleanall: clean # Headers we would preprocess if we could. # ../src/config.h: ../nt/$(CONFIG_H) - $(CP) $(ALL_DEPS) $@ -../src/paths.h: ../nt/paths.h + echo $(CONFIG_H) has changed. Re-run configure.bat. + exit -1 + +getopt.h: getopt_.h $(CP) $(ALL_DEPS) $@ ### DEPENDENCIES ### @@ -308,9 +376,6 @@ $(BLD)/ctags.$(O) : \ $(SRC)/ntlib.h \ $(SRC)/getopt.h -$(BLD)/cvtmail.$(O) : \ - $(SRC)/cvtmail.c - $(BLD)/digest-doc.$(O) : \ $(SRC)/digest-doc.c @@ -320,10 +385,6 @@ $(BLD)/emacsclient.$(O) : \ $(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 \ @@ -385,7 +446,7 @@ $(BLD)/movemail.$(O) : \ $(EMACS_ROOT)/lib-src/../src/syswait.h \ $(EMACS_ROOT)/nt/inc/pwd.h \ $(SRC)/ntlib.h - $(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c + $(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c $(BLD)/ntlib.$(O) : \ $(SRC)/ntlib.c \ @@ -408,7 +469,10 @@ $(BLD)/qsort.$(O) : \ $(SRC)/qsort.c $(BLD)/sorted-doc.$(O) : \ - $(SRC)/sorted-doc.c + $(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 @@ -422,8 +486,15 @@ $(BLD)/timer.$(O) : \ $(EMACS_ROOT)/src/m/intel386.h \ $(EMACS_ROOT)/lib-src/../src/config.h -$(BLD)/yow.$(O) : \ - $(SRC)/yow.c \ - $(EMACS_ROOT)/lib-src/../src/paths.h +# The following dependencies are for supporting parallel builds, where +# we must make sure $(BLD) exists before any compilation starts. +# +$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD + +$(BLD)/sorted-doc.$(O) $(BLD)/digest-doc.$(O): stamp_BLD + +$(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS): stamp_BLD + +$(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O): stamp_BLD -# arch-tag: c051bc02-a6de-474b-889a-27f7b2fbbcea +$(BLD)/ebrowse.$(O) $(BLD)/ctags.$(O): stamp_BLD