Mercurial > emacs
changeset 31679:7e706d145fab
Revert to Unix line endings.
author | Andrew Innes <andrewi@gnu.org> |
---|---|
date | Sun, 17 Sep 2000 21:00:02 +0000 |
parents | 30d8d153fa6e |
children | 703fb2494c1b |
files | nt/gmake.defs nt/nmake.defs |
diffstat | 2 files changed, 453 insertions(+), 453 deletions(-) [+] |
line wrap: on
line diff
--- a/nt/gmake.defs Sun Sep 17 20:58:19 2000 +0000 +++ b/nt/gmake.defs Sun Sep 17 21:00:02 2000 +0000 @@ -1,234 +1,234 @@ -# -# Makefile definition file for building GNU Emacs on Windows NT -# -# 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. - -# Ensure 'all' is the default target -all: - -# NOTES -# -# I tried to force gmake to use the native shell for simplicity, by -# setting SHELL as below, but this didn't work reliably because of -# various case sensitivity niggles. Specifically, COMSPEC (which is in -# fact usually spelled ComSpec on NT, to make life difficult) typically -# references "cmd.exe" (on NT) when the file is actually called -# "CMD.EXE" on disk for hysterical raisons. As a result, GNU make -# thinks it doesn't exist (unless compiled with a switch to ignore -# case), and so doesn't change which shell it will invoke to execute -# commands. -# -# It would be possible, though very tedious using just gmake facilities, -# to convert the COMSPEC value to uppercase to solve this problem, but -# it isn't worth it. That is partly because, even when using the native -# shell, gmake tends to not be happy with backslashes in command -# strings. The obvious solution is to use forward slashes as much as -# possible, which can be made to work most of the time (putting -# filenames in quotes often helps), but there are still some internal -# cmd.exe commands like `del' and `copy' that won't work with them. -# Although it is possible to convert slashes to backslashes when -# necessary, gmake requires explicitly calling its subst function, which -# nmake does not understand). For this reason, it is simplest to -# mandate that rm and cp be available, so we can use Unix-format file -# names everywhere. (Fortunately both MS and GNU make, and the -# respective compilers, are happy with Unix-format names.) -# -# Since we cannot easily force the choice of a particular shell, we must -# make the effort to cope with whichever shell is being used. -# Fortunately, the only command we need to use that is shell specific is -# the testing of a file's existence for the purpose of working out when -# we are copying files to their original location. That particular -# requirement is abstracted easily enough. -# -# The only other problem area was the change of directory when running -# temacs to dump emacs.exe (where gmake doesn't support cd foo in any -# useful way), but that has been resolved by modifying the Windows -# unexec function slightly to not require the directory change while -# still allowing objects and binaries to be in subdirectories. - -# This doesn't work. -#SHELL:=$(COMSPEC) - -# Determine whether make is using sh or cmd/command as shell; cmd.exe -# will output "ECHO is on" when echo is given by itself, while sh will -# not produce any output. -sh_output := $(shell echo) -ifeq "$(findstring ECHO, $(sh_output))" "ECHO" -THE_SHELL = $(COMSPEC)$(ComSpec) -SHELLTYPE=CMD -else -USING_SH = 1 -THE_SHELL = $(SHELL) -SHELLTYPE=SH -SETLOADPATH=EMACSLOADPATH=$(lisp) -endif - -MAKEDIR = $(CURDIR) -ALL_DEPS = $^ -EMPTY = -SPACE = $(EMPTY) $(EMPTY) - -SUBSYSTEM_WINDOWS=-Wl,-subsystem,windows -SUBSYSTEM_CONSOLE=-Wl,-subsystem,console - -# INSTALL_DIR is the directory into which emacs will be installed. -# -ifndef INSTALL_DIR -INSTALL_DIR = $(MAKEDIR)/.. -endif - -# Determine the architecture we're running on. -# Define ARCH for our purposes; -# Define CPU for use by ntwin32.mak; -# Define CONFIG_H to the appropriate config.h for the system; -# -ifdef PROCESSOR_ARCHITECTURE -# We're on Windows NT -CPU = $(PROCESSOR_ARCHITECTURE) -CONFIG_H = config.nt -OS_TYPE = windowsnt - ifeq "$(PROCESSOR_ARCHITECTURE)" "x86" -ARCH = i386 -CPU = i386 - else - ifeq "$(PROCESSOR_ARCHITECTURE)" "MIPS" -ARCH = mips - else - ifeq "$(PROCESSOR_ARCHITECTURE)" "ALPHA" -ARCH = alpha - else - ifeq "$(PROCESSOR_ARCHITECTURE)" "PPC" -ARCH = ppc - else -error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)" - endif - endif - endif - endif -else -# We're on Windows 95 -ARCH = i386 -CPU = i386 -CONFIG_H = config.nt -OS_TYPE = windows95 -endif - -AR = ar -rsc -AR_OUT = -CC = gcc -CC_OUT = -o$(SPACE) -LINK = gcc -LINK_OUT = -o$(SPACE) -RC = windres -O coff -RC_OUT = -o$(SPACE) -RC_INCLUDE = --include-dir$(SPACE) - -libc = -baselibs = -O = o -A = a - -BASE_LIBS = $(libc) $(baselibs) - -ADVAPI32 = -ladvapi32 -COMDLG32 = -lcomdlg32 -GDI32 = -lgdi32 -MPR = -lmpr -SHELL32 = -lshell32 -USER32 = -luser32 -WSOCK32 = -lwsock32 - -ifdef NOOPT -DEBUG_CFLAGS = -DEMACSDEBUG -else -DEBUG_CFLAGS = -endif -CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ - -D_CRTAPI1=_cdecl \ - $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) -EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1 - -# see comments in allocate_heap in w32heap.c before changing any of the -# -stack, -heap, or -image-base settings. -TEMACS_EXTRA_LINK = -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -g $(SUBSYSTEM_CONSOLE) -Wl,-entry,__start -Wl,-Map,$(BLD)/temacs.map - -ifdef NOOPT -OBJDIR = oo -else -OBJDIR = oo-spd -endif -$(OBJDIR):; -mkdir "$(OBJDIR)" -BLD = $(OBJDIR)/$(ARCH) -$(BLD): $(OBJDIR) - -mkdir "$(BLD)" - -CP = cp -f -CP_DIR = cp -rf -DEL = rm -DEL_TREE = rm -r -ifdef USING_SH -IFNOTSAMEDIR = if [ ! -s ../same-dir.tst ] ; then -FOREACH = for f in -FORVAR = $${f} -FORDO = ; do -ENDFOR = ; done -ENDIF = ; fi -ARGQUOTE = ' -DQUOTE = "" -else -IFNOTSAMEDIR = if not exist ../same-dir.tst -FOREACH = for %%f in ( -FORVAR = %%f -FORDO = ) do -ENDFOR = -ENDIF = -ARGQUOTE = " -DQUOTE = \" -endif - -# The location of the icon file -EMACS_ICON_PATH = ../nt/emacs.ico - -ifdef NODEBUG -DEBUG_FLAG = -else -DEBUG_FLAG = -g -endif - -ifdef NOCYGWIN -NOCYGWIN = -mno-cygwin -endif - -ifeq "$(ARCH)" "i386" -ifdef NOOPT -ARCH_CFLAGS = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) -else -ARCH_CFLAGS = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) -mcpu=i686 -O2 \ - # -fbuiltin \ - # -finline-functions \ - # -fomit-frame-pointer -endif -ARCH_LDFLAGS = $(SYS_LDFLAGS) -else -ERROR Unknown architecture type "$(ARCH)". -endif - -LINK_FLAGS = $(ARCH_LDFLAGS) $(NOCYGWIN) $(USER_LDFLAGS) - -.DEFAULT: - -$(BLD)/%.o: %.c - $(CC) $(CFLAGS) $(CC_OUT)$@ $< +# +# Makefile definition file for building GNU Emacs on Windows NT +# +# 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. + +# Ensure 'all' is the default target +all: + +# NOTES +# +# I tried to force gmake to use the native shell for simplicity, by +# setting SHELL as below, but this didn't work reliably because of +# various case sensitivity niggles. Specifically, COMSPEC (which is in +# fact usually spelled ComSpec on NT, to make life difficult) typically +# references "cmd.exe" (on NT) when the file is actually called +# "CMD.EXE" on disk for hysterical raisons. As a result, GNU make +# thinks it doesn't exist (unless compiled with a switch to ignore +# case), and so doesn't change which shell it will invoke to execute +# commands. +# +# It would be possible, though very tedious using just gmake facilities, +# to convert the COMSPEC value to uppercase to solve this problem, but +# it isn't worth it. That is partly because, even when using the native +# shell, gmake tends to not be happy with backslashes in command +# strings. The obvious solution is to use forward slashes as much as +# possible, which can be made to work most of the time (putting +# filenames in quotes often helps), but there are still some internal +# cmd.exe commands like `del' and `copy' that won't work with them. +# Although it is possible to convert slashes to backslashes when +# necessary, gmake requires explicitly calling its subst function, which +# nmake does not understand). For this reason, it is simplest to +# mandate that rm and cp be available, so we can use Unix-format file +# names everywhere. (Fortunately both MS and GNU make, and the +# respective compilers, are happy with Unix-format names.) +# +# Since we cannot easily force the choice of a particular shell, we must +# make the effort to cope with whichever shell is being used. +# Fortunately, the only command we need to use that is shell specific is +# the testing of a file's existence for the purpose of working out when +# we are copying files to their original location. That particular +# requirement is abstracted easily enough. +# +# The only other problem area was the change of directory when running +# temacs to dump emacs.exe (where gmake doesn't support cd foo in any +# useful way), but that has been resolved by modifying the Windows +# unexec function slightly to not require the directory change while +# still allowing objects and binaries to be in subdirectories. + +# This doesn't work. +#SHELL:=$(COMSPEC) + +# Determine whether make is using sh or cmd/command as shell; cmd.exe +# will output "ECHO is on" when echo is given by itself, while sh will +# not produce any output. +sh_output := $(shell echo) +ifeq "$(findstring ECHO, $(sh_output))" "ECHO" +THE_SHELL = $(COMSPEC)$(ComSpec) +SHELLTYPE=CMD +else +USING_SH = 1 +THE_SHELL = $(SHELL) +SHELLTYPE=SH +SETLOADPATH=EMACSLOADPATH=../lisp +endif + +MAKEDIR = $(CURDIR) +ALL_DEPS = $^ +EMPTY = +SPACE = $(EMPTY) $(EMPTY) + +SUBSYSTEM_WINDOWS=-Wl,-subsystem,windows +SUBSYSTEM_CONSOLE=-Wl,-subsystem,console + +# INSTALL_DIR is the directory into which emacs will be installed. +# +ifndef INSTALL_DIR +INSTALL_DIR = $(MAKEDIR)/.. +endif + +# Determine the architecture we're running on. +# Define ARCH for our purposes; +# Define CPU for use by ntwin32.mak; +# Define CONFIG_H to the appropriate config.h for the system; +# +ifdef PROCESSOR_ARCHITECTURE +# We're on Windows NT +CPU = $(PROCESSOR_ARCHITECTURE) +CONFIG_H = config.nt +OS_TYPE = windowsnt + ifeq "$(PROCESSOR_ARCHITECTURE)" "x86" +ARCH = i386 +CPU = i386 + else + ifeq "$(PROCESSOR_ARCHITECTURE)" "MIPS" +ARCH = mips + else + ifeq "$(PROCESSOR_ARCHITECTURE)" "ALPHA" +ARCH = alpha + else + ifeq "$(PROCESSOR_ARCHITECTURE)" "PPC" +ARCH = ppc + else +error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)" + endif + endif + endif + endif +else +# We're on Windows 95 +ARCH = i386 +CPU = i386 +CONFIG_H = config.nt +OS_TYPE = windows95 +endif + +AR = ar -rsc +AR_OUT = +CC = gcc +CC_OUT = -o$(SPACE) +LINK = gcc +LINK_OUT = -o$(SPACE) +RC = windres -O coff +RC_OUT = -o$(SPACE) +RC_INCLUDE = --include-dir$(SPACE) + +libc = +baselibs = +O = o +A = a + +BASE_LIBS = $(libc) $(baselibs) + +ADVAPI32 = -ladvapi32 +COMDLG32 = -lcomdlg32 +GDI32 = -lgdi32 +MPR = -lmpr +SHELL32 = -lshell32 +USER32 = -luser32 +WSOCK32 = -lwsock32 + +ifdef NOOPT +DEBUG_CFLAGS = -DEMACSDEBUG +else +DEBUG_CFLAGS = +endif +CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ + -D_CRTAPI1=_cdecl \ + $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) +EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1 + +# see comments in allocate_heap in w32heap.c before changing any of the +# -stack, -heap, or -image-base settings. +TEMACS_EXTRA_LINK = -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -g $(SUBSYSTEM_CONSOLE) -Wl,-entry,__start -Wl,-Map,$(BLD)/temacs.map + +ifdef NOOPT +OBJDIR = oo +else +OBJDIR = oo-spd +endif +$(OBJDIR):; -mkdir "$(OBJDIR)" +BLD = $(OBJDIR)/$(ARCH) +$(BLD): $(OBJDIR) + -mkdir "$(BLD)" + +CP = cp -f +CP_DIR = cp -rf +DEL = rm +DEL_TREE = rm -r +ifdef USING_SH +IFNOTSAMEDIR = if [ ! -s ../same-dir.tst ] ; then +FOREACH = for f in +FORVAR = $${f} +FORDO = ; do +ENDFOR = ; done +ENDIF = ; fi +ARGQUOTE = ' +DQUOTE = "" +else +IFNOTSAMEDIR = if not exist ../same-dir.tst +FOREACH = for %%f in ( +FORVAR = %%f +FORDO = ) do +ENDFOR = +ENDIF = +ARGQUOTE = " +DQUOTE = \" +endif + +# The location of the icon file +EMACS_ICON_PATH = ../nt/emacs.ico + +ifdef NODEBUG +DEBUG_FLAG = +else +DEBUG_FLAG = -g +endif + +ifdef NOCYGWIN +NOCYGWIN = -mno-cygwin +endif + +ifeq "$(ARCH)" "i386" +ifdef NOOPT +ARCH_CFLAGS = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) +else +ARCH_CFLAGS = -D_X86_=1 -c $(DEBUG_FLAG) $(NOCYGWIN) -mcpu=i686 -O2 \ + # -fbuiltin \ + # -finline-functions \ + # -fomit-frame-pointer +endif +ARCH_LDFLAGS = $(SYS_LDFLAGS) +else +ERROR Unknown architecture type "$(ARCH)". +endif + +LINK_FLAGS = $(ARCH_LDFLAGS) $(NOCYGWIN) $(USER_LDFLAGS) + +.DEFAULT: + +$(BLD)/%.o: %.c + $(CC) $(CFLAGS) $(CC_OUT)$@ $<
--- a/nt/nmake.defs Sun Sep 17 20:58:19 2000 +0000 +++ b/nt/nmake.defs Sun Sep 17 21:00:02 2000 +0000 @@ -1,219 +1,219 @@ -# -# Makefile definition file for building GNU Emacs on Windows NT -# -# 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. - -# Ensure 'all' is the default target -all: - -THE_SHELL = $(COMSPEC) -SHELLTYPE=CMD - -ALL_DEPS = $** - -SUBSYSTEM_WINDOWS=-subsystem:windows -SUBSYSTEM_CONSOLE=-subsystem:console - -# INSTALL_DIR is the directory into which emacs will be installed. -# -!ifndef INSTALL_DIR -INSTALL_DIR = $(MAKEDIR)/.. -!endif - -# Allow detection of builds with MSVC 5 or later, so we can -# speed up compiles (see rule at end). -# -_NMAKE_VER_5=162 -_NMAKE_VER_4=0 - -!IFNDEF _NMAKE_VER -_NMAKE_VER=$(_NMAKE_VER_4) -!ENDIF - -# Check that the INCLUDE and LIB environment variables are set. -# -!ifndef INCLUDE -!error The INCLUDE environment variable needs to be set. -!endif -!ifndef LIB -!error The LIB environment variable needs to be set. -!endif - -# Determine the architecture we're running on. -# Define ARCH for our purposes; -# Define CPU for use by ntwin32.mak; -# Define CONFIG_H to the appropriate config.h for the system; -# -!ifdef PROCESSOR_ARCHITECTURE -# We're on Windows NT -CPU = $(PROCESSOR_ARCHITECTURE) -CONFIG_H = config.nt -OS_TYPE = windowsnt -! if "$(PROCESSOR_ARCHITECTURE)" == "x86" -ARCH = i386 -CPU = i386 -! else -! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS" -ARCH = mips -! else -! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA" -ARCH = alpha -! else -! if "$(PROCESSOR_ARCHITECTURE)" == "PPC" -ARCH = ppc -! else -! error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)" -! endif -! endif -! endif -! endif -!else -# We're on Windows 95 -ARCH = i386 -CPU = i386 -CONFIG_H = config.nt -OS_TYPE = windows95 -!endif - -AR = lib -AR_OUT = -out: -CC = cl -CC_OUT = -Fo -LINK = link -LINK_OUT = -out: -RC = rc -RC_OUT = -Fo -RC_INCLUDE = -i - -libc = libc.lib -baselibs = -O = obj -A = lib - -BASE_LIBS = $(libc) $(baselibs) oldnames.lib - -ADVAPI32 = advapi32.lib -COMDLG32 = comdlg32.lib -GDI32 = gdi32.lib -MPR = mpr.lib -SHELL32 = shell32.lib -USER32 = user32.lib -WSOCK32 = wsock32.lib - -!ifdef NOOPT -DEBUG_CFLAGS = -DEMACSDEBUG -!else -DEBUG_CFLAGS = -!endif -CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ - -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) -EMACS_EXTRA_C_FLAGS = - -SYS_LDFLAGS = -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net - -# see comments in allocate_heap in w32heap.c before changing any of the -# -stack, -heap, or -base settings. -TEMACS_EXTRA_LINK = -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -debug:full -debugtype:both -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) $(SUBSYSTEM_CONSOLE) -entry:_start -map:$(BLD)\temacs.map $(EXTRA_LINK) - -!ifdef NOOPT -OBJDIR = obj -!else -OBJDIR = obj-spd -!endif -$(OBJDIR):; -mkdir $(OBJDIR) -BLD = $(OBJDIR)/$(ARCH) -$(BLD): $(OBJDIR) - -mkdir "$(BLD)" - -CP = cp -f -CP_DIR = cp -rf -IFNOTSAMEDIR = if not exist ..\same-dir.tst -ENDIF = -FOREACH = for %%f in ( -FORVAR = %%f -FORDO = ) do -ENDFOR = -ARGQUOTE = " -DQUOTE = \" -DEL = rm -DEL_TREE = rm -r - -# The location of the icon file -EMACS_ICON_PATH = ../nt/emacs.ico - -!ifdef NODEBUG -DEBUG_FLAG = -!else -DEBUG_FLAG = -Zi -!endif - -!if "$(ARCH)" == "i386" -!ifdef NOOPT -ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG) -!else -ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG) -!endif -ARCH_LDFLAGS = $(SYS_LDFLAGS) - -!else -!if "$(ARCH)" == "mips" -ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0 -ARCH_LDFLAGS = $(SYS_LDFLAGS) - -!else -!if "$(ARCH)" == "alpha" -!if "$(BUILD_TYPE)" == "spd" -ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl= -!else -ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl= -!endif -ARCH_LDFLAGS = $(SYS_LDFLAGS) - -!else -!if "$(ARCH)" == "ppc" -# These flags are a guess...if they don't work, please send me mail. -ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od -ARCH_LDFLAGS = $(SYS_LDFLAGS) - -!else -!ERROR Unknown architecture type "$(ARCH)". -!endif -!endif -!endif -!endif - -LINK_FLAGS = $(ARCH_LDFLAGS) $(USER_LDFLAGS) - -# From MSVC 5.0 onwards, it seem base relocation information is not included, -# at least in release builds. We need to ensure the reloc info is included -# in order to use the MSVC profiler. -!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") -EXTRA_LINK = -!ELSE -EXTRA_LINK = -profile -!ENDIF - -# -# If the compiler supports compiling multiple .c files to .o files at -# one time, use this feature. -# -!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") -.c{$(BLD)}.obj: - $(CC) $(CFLAGS) -Fo$(BLD)\ $< -!ELSE -.c{$(BLD)}.obj:: - $(CC) $(CFLAGS) -Fo$(BLD)\ $< -!ENDIF +# +# Makefile definition file for building GNU Emacs on Windows NT +# +# 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. + +# Ensure 'all' is the default target +all: + +THE_SHELL = $(COMSPEC) +SHELLTYPE=CMD + +ALL_DEPS = $** + +SUBSYSTEM_WINDOWS=-subsystem:windows +SUBSYSTEM_CONSOLE=-subsystem:console + +# INSTALL_DIR is the directory into which emacs will be installed. +# +!ifndef INSTALL_DIR +INSTALL_DIR = $(MAKEDIR)/.. +!endif + +# Allow detection of builds with MSVC 5 or later, so we can +# speed up compiles (see rule at end). +# +_NMAKE_VER_5=162 +_NMAKE_VER_4=0 + +!IFNDEF _NMAKE_VER +_NMAKE_VER=$(_NMAKE_VER_4) +!ENDIF + +# Check that the INCLUDE and LIB environment variables are set. +# +!ifndef INCLUDE +!error The INCLUDE environment variable needs to be set. +!endif +!ifndef LIB +!error The LIB environment variable needs to be set. +!endif + +# Determine the architecture we're running on. +# Define ARCH for our purposes; +# Define CPU for use by ntwin32.mak; +# Define CONFIG_H to the appropriate config.h for the system; +# +!ifdef PROCESSOR_ARCHITECTURE +# We're on Windows NT +CPU = $(PROCESSOR_ARCHITECTURE) +CONFIG_H = config.nt +OS_TYPE = windowsnt +! if "$(PROCESSOR_ARCHITECTURE)" == "x86" +ARCH = i386 +CPU = i386 +! else +! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS" +ARCH = mips +! else +! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA" +ARCH = alpha +! else +! if "$(PROCESSOR_ARCHITECTURE)" == "PPC" +ARCH = ppc +! else +! error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)" +! endif +! endif +! endif +! endif +!else +# We're on Windows 95 +ARCH = i386 +CPU = i386 +CONFIG_H = config.nt +OS_TYPE = windows95 +!endif + +AR = lib +AR_OUT = -out: +CC = cl +CC_OUT = -Fo +LINK = link +LINK_OUT = -out: +RC = rc +RC_OUT = -Fo +RC_INCLUDE = -i + +libc = libc.lib +baselibs = +O = obj +A = lib + +BASE_LIBS = $(libc) $(baselibs) oldnames.lib + +ADVAPI32 = advapi32.lib +COMDLG32 = comdlg32.lib +GDI32 = gdi32.lib +MPR = mpr.lib +SHELL32 = shell32.lib +USER32 = user32.lib +WSOCK32 = wsock32.lib + +!ifdef NOOPT +DEBUG_CFLAGS = -DEMACSDEBUG +!else +DEBUG_CFLAGS = +!endif +CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ + -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) +EMACS_EXTRA_C_FLAGS = + +SYS_LDFLAGS = -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net + +# see comments in allocate_heap in w32heap.c before changing any of the +# -stack, -heap, or -base settings. +TEMACS_EXTRA_LINK = -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -debug:full -debugtype:both -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) $(SUBSYSTEM_CONSOLE) -entry:_start -map:$(BLD)\temacs.map $(EXTRA_LINK) + +!ifdef NOOPT +OBJDIR = obj +!else +OBJDIR = obj-spd +!endif +$(OBJDIR):; -mkdir $(OBJDIR) +BLD = $(OBJDIR)/$(ARCH) +$(BLD): $(OBJDIR) + -mkdir "$(BLD)" + +CP = cp -f +CP_DIR = cp -rf +IFNOTSAMEDIR = if not exist ..\same-dir.tst +ENDIF = +FOREACH = for %%f in ( +FORVAR = %%f +FORDO = ) do +ENDFOR = +ARGQUOTE = " +DQUOTE = \" +DEL = rm +DEL_TREE = rm -r + +# The location of the icon file +EMACS_ICON_PATH = ../nt/emacs.ico + +!ifdef NODEBUG +DEBUG_FLAG = +!else +DEBUG_FLAG = -Zi +!endif + +!if "$(ARCH)" == "i386" +!ifdef NOOPT +ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG) +!else +ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG) +!endif +ARCH_LDFLAGS = $(SYS_LDFLAGS) + +!else +!if "$(ARCH)" == "mips" +ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0 +ARCH_LDFLAGS = $(SYS_LDFLAGS) + +!else +!if "$(ARCH)" == "alpha" +!if "$(BUILD_TYPE)" == "spd" +ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl= +!else +ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl= +!endif +ARCH_LDFLAGS = $(SYS_LDFLAGS) + +!else +!if "$(ARCH)" == "ppc" +# These flags are a guess...if they don't work, please send me mail. +ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od +ARCH_LDFLAGS = $(SYS_LDFLAGS) + +!else +!ERROR Unknown architecture type "$(ARCH)". +!endif +!endif +!endif +!endif + +LINK_FLAGS = $(ARCH_LDFLAGS) $(USER_LDFLAGS) + +# From MSVC 5.0 onwards, it seem base relocation information is not included, +# at least in release builds. We need to ensure the reloc info is included +# in order to use the MSVC profiler. +!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") +EXTRA_LINK = +!ELSE +EXTRA_LINK = -profile +!ENDIF + +# +# If the compiler supports compiling multiple .c files to .o files at +# one time, use this feature. +# +!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") +.c{$(BLD)}.obj: + $(CC) $(CFLAGS) -Fo$(BLD)\ $< +!ELSE +.c{$(BLD)}.obj:: + $(CC) $(CFLAGS) -Fo$(BLD)\ $< +!ENDIF