diff options
Diffstat (limited to 'nt/nmake.defs')
-rw-r--r-- | nt/nmake.defs | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/nt/nmake.defs b/nt/nmake.defs new file mode 100644 index 00000000000..66291c0a9e3 --- /dev/null +++ b/nt/nmake.defs @@ -0,0 +1,213 @@ +# +# 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) + +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 -D_ANONYMOUS_UNION -D_ANONYMOUS_STRUCT \ + $(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 = +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 |