## 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.## Geoff Voelker (voelker@cs.washington.edu) 9-6-94## BEGIN CONFIGURATION## Define the following to build the GUI version#NTGUI=1# Set INSTALL_DIR to be the directory into which you want emacs installed.#!ifndef INSTALL_DIRINSTALL_DIR = C:\emacs!endif# Define MSVCNT11 to be nonzero if you are using the MSVCNT 1.1 environment.# MSVCNT11 = 1!ifndef MSVCNT11MSVCNT11 = 0!endif## END CONFIGURATION### Allow detection of builds with MSVC 5 or later#_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 NTCPU = $(PROCESSOR_ARCHITECTURE)CONFIG_H = config.ntOS_TYPE = windowsnt! if "$(PROCESSOR_ARCHITECTURE)" == "x86"ARCH = i386CPU = 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 95ARCH = i386CPU = i386CONFIG_H = config.ntOS_TYPE = windows95!endif# Include ntwin32.mak. So far, this file seems to be supported by every# Microsoft compiler on NT and Windows 95 and properly defines the executable# names and libraries necessary to build Emacs. I do not have access # to any other vendor compilers, so I do not know if they supply this # file, too. For now I'll assume that they do.#!include <ntwin32.mak># Using cvtres is necessary on NT 3.10 and doesn't hurt on later platforms.CVTRES = cvtres.exeAR = $(implib)# The assignment $(CC) = $(cc) fails even though variables are case sensitive.LINK_TMP = $(link)LINK = $(LINK_TMP)CC_TMP = $(cc)CC = $(CC_TMP)# advapi32.lib is left off of $(baselibs) on NT 3.10!if "$(baselibs)" == "kernel32.lib "ADVAPI32 = advapi32.lib!elseADVAPI32 =!endif# Older ntwin32.mak files do not define libc; do it for them.!ifndef libclibc = libc.lib!endif# The base libraries for compiling Emacs on NT. With MSVC, this should# include oldnames.lib.!if $(MSVCNT11)BASE_LIBS = $(libc) $(baselibs) oldnames.lib!elseBASE_LIBS = $(libc) $(baselibs) -nodefaultlib:oldnames.lib!endif# We want any debugging info in the executable.!if "$(LINK)" == "link32"SYS_LDFLAGS = -nologo!elseSYS_LDFLAGS = -nologo -release -incremental:no -version:3.10!endif# Tag the executables to run out of the swapfile when execute off CD or network sharesSYS_LDFLAGS = $(SYS_LDFLAGS) -swaprun:cd -swaprun:netINC = -I.!if "$(BUILD_TYPE)" == "spd"CFLAGS_COMMON = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb!elseCFLAGS_COMMON = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb -DEMACSDEBUG!endif!if $(MSVCNT11)CFLAGS = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl!elseCFLAGS = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl!endif!ifdef BUILD_TYPEOBJDIR = obj-$(BUILD_TYPE)!elseOBJDIR = obj!endif$(OBJDIR):; -mkdir $(OBJDIR)BLD = $(OBJDIR)\$(ARCH)$(BLD): $(OBJDIR) -mkdir $(BLD)CP = copyCP_DIR = xcopy /f/r/i/e/d/k!if "$(OS_TYPE)" == "windows95"DEL = deltree /yDEL_TREE = deltree /y!elseDEL = del# NT better way of killing a deltreeDEL_TREE = rd /s/q!endif# The location of the icon fileEMACS_ICON_PATH = ..\nt\emacs.ico# Lets us add icons to the GNU Emacs folderADDPM = ..\nt\$(BLD)\addpm.exe!if "$(ARCH)" == "i386"!if "$(BUILD_TYPE)" == "spd"ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -G6dF -Zi -Zp8!elseARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zi -Zp8!endifARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)!else!if "$(ARCH)" == "mips"ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0ARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)!else!if "$(ARCH)" == "alpha"!if "$(BUILD_TYPE)" == "spd"ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=!elseARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=!endifARCH_LDFLAGS = -align:0x2000 $(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 -OdARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)!else!ERROR Unknown architecture type "$(ARCH)".!endif!endif!endif!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