Fix typo.
[bpt/emacs.git] / nt / nmake.defs
CommitLineData
bd6766d3 1# -*- Makefile -*- definition file for building GNU Emacs on Windows NT.\r
039f725c 2# Copyright (c) 2000-2001 Free Software Foundation, Inc.\r
177c0ea7 3#\r
039f725c
AI
4# GNU Emacs is free software; you can redistribute it and/or modify\r
5# it under the terms of the GNU General Public License as published by\r
6# the Free Software Foundation; either version 2, or (at your option)\r
7# any later version.\r
177c0ea7 8#\r
039f725c
AI
9# GNU Emacs is distributed in the hope that it will be useful,\r
10# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
12# GNU General Public License for more details.\r
177c0ea7 13#\r
039f725c
AI
14# You should have received a copy of the GNU General Public License\r
15# along with GNU Emacs; see the file COPYING. If not, write to\r
16# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
17# Boston, MA 02111-1307, USA.\r
18\r
19# Ensure 'all' is the default target\r
20all:\r
21\r
22THE_SHELL = $(COMSPEC)\r
23SHELLTYPE=CMD\r
24\r
25MAKETYPE=nmake\r
26\r
27CURDIR = $(MAKEDIR:\=/)\r
28THISDIR = $(MAKEDIR)\r
29\r
30ALL_DEPS = $**\r
31\r
32SUBSYSTEM_WINDOWS=-subsystem:windows\r
33SUBSYSTEM_CONSOLE=-subsystem:console\r
34\r
35# INSTALL_DIR is the directory into which emacs will be installed.\r
36#\r
37!ifndef INSTALL_DIR\r
38INSTALL_DIR = $(CURDIR)/..\r
39!endif\r
40\r
41# Ensure EMACSLOADPATH is defined in the environment.\r
42#\r
43!if [set EMACSLOADPATH=foo]\r
44!endif\r
45\r
46# Allow detection of builds with MSVC 5 or later, so we can\r
47# speed up compiles (see rule at end).\r
48#\r
49_NMAKE_VER_5=162\r
50_NMAKE_VER_4=0\r
51\r
52!IFNDEF _NMAKE_VER\r
53_NMAKE_VER=$(_NMAKE_VER_4)\r
54!ENDIF\r
55\r
56# Check that the INCLUDE and LIB environment variables are set.\r
57#\r
58!ifndef INCLUDE\r
59!error The INCLUDE environment variable needs to be set.\r
60!endif\r
61!ifndef LIB\r
62!error The LIB environment variable needs to be set.\r
63!endif\r
64\r
65# Determine the architecture we're running on.\r
177c0ea7 66# Define ARCH for our purposes;\r
039f725c
AI
67# Define CPU for use by ntwin32.mak;\r
68# Define CONFIG_H to the appropriate config.h for the system;\r
69#\r
70!ifdef PROCESSOR_ARCHITECTURE\r
71# We're on Windows NT\r
72CPU = $(PROCESSOR_ARCHITECTURE)\r
73CONFIG_H = config.nt\r
74OS_TYPE = windowsnt\r
75! if "$(PROCESSOR_ARCHITECTURE)" == "x86"\r
76ARCH = i386\r
77CPU = i386\r
78! else\r
79! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"\r
80ARCH = mips\r
81! else\r
82! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"\r
83ARCH = alpha\r
84! else\r
85! if "$(PROCESSOR_ARCHITECTURE)" == "PPC"\r
86ARCH = ppc\r
87! else\r
88! error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"\r
89! endif\r
90! endif\r
91! endif\r
92! endif\r
93!else\r
94# We're on Windows 95\r
95ARCH = i386\r
96CPU = i386\r
97CONFIG_H = config.nt\r
98OS_TYPE = windows95\r
99!endif\r
100\r
101AR = lib\r
102AR_OUT = -out:\r
103CC = cl\r
104CC_OUT = -Fo\r
105LINK = link\r
106LINK_OUT = -out:\r
107RC = rc\r
108RC_OUT = -Fo\r
109RC_INCLUDE = -i\r
110\r
111libc = libc.lib\r
177c0ea7 112baselibs =\r
039f725c
AI
113O = obj\r
114A = lib\r
115\r
116BASE_LIBS = $(libc) $(baselibs) oldnames.lib\r
117\r
118ADVAPI32 = advapi32.lib\r
119COMDLG32 = comdlg32.lib\r
120GDI32 = gdi32.lib\r
121MPR = mpr.lib\r
122SHELL32 = shell32.lib\r
123USER32 = user32.lib\r
124WSOCK32 = wsock32.lib\r
f60ae425 125WINMM = winmm.lib\r
0e664bca 126WINSPOOL = winspool.lib\r
039f725c
AI
127\r
128!ifdef NOOPT\r
129DEBUG_CFLAGS = -DEMACSDEBUG\r
130!else\r
177c0ea7 131DEBUG_CFLAGS =\r
039f725c 132!endif\r
98cf1bb5 133CFLAGS = -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 $(ARCH_CFLAGS) -D$(ARCH) \\r
039f725c
AI
134 -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)\r
135EMACS_EXTRA_C_FLAGS =\r
136\r
238add5e 137SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r
039f725c
AI
138\r
139# see comments in allocate_heap in w32heap.c before changing any of the\r
140# -stack, -heap, or -base settings.\r
141TEMACS_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)\r
142\r
143!ifdef NOOPT\r
144OBJDIR = obj\r
145!else\r
146OBJDIR = obj-spd\r
147!endif\r
148$(OBJDIR):; -mkdir $(OBJDIR)\r
149BLD = $(OBJDIR)/$(ARCH)\r
150$(BLD): $(OBJDIR)\r
151 -mkdir "$(BLD)"\r
152\r
153COMPILER_TEMP_FILES = *.pdb\r
154\r
155CP = cp -f\r
156CP_DIR = cp -rf\r
157IFNOTSAMEDIR = if not exist ..\same-dir.tst\r
158ENDIF =\r
159FOREACH = for %%f in (\r
160FORVAR = %%f\r
161FORDO = ) do\r
162ENDFOR =\r
163ARGQUOTE = "\r
164DQUOTE = \"\r
165DEL = rm\r
166DEL_TREE = rm -r\r
167\r
168!ifdef NODEBUG\r
177c0ea7
JB
169DEBUG_FLAG =\r
170DEBUG_LINK =\r
039f725c
AI
171!else\r
172DEBUG_FLAG = -Zi\r
173DEBUG_LINK = -debug:full -debugtype:both\r
174!endif\r
175\r
176!if "$(ARCH)" == "i386"\r
177!ifdef NOOPT\r
178ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG)\r
179!else\r
180ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG)\r
181!endif\r
182ARCH_LDFLAGS = $(SYS_LDFLAGS)\r
183\r
184!else\r
185!if "$(ARCH)" == "mips"\r
186ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0\r
187ARCH_LDFLAGS = $(SYS_LDFLAGS)\r
188\r
189!else\r
190!if "$(ARCH)" == "alpha"\r
191!if "$(BUILD_TYPE)" == "spd"\r
192ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=\r
193!else\r
194ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=\r
195!endif\r
196ARCH_LDFLAGS = $(SYS_LDFLAGS)\r
197\r
198!else\r
199!if "$(ARCH)" == "ppc"\r
200# These flags are a guess...if they don't work, please send me mail.\r
201ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od\r
202ARCH_LDFLAGS = $(SYS_LDFLAGS)\r
203\r
204!else\r
205!ERROR Unknown architecture type "$(ARCH)".\r
206!endif\r
207!endif\r
208!endif\r
209!endif\r
210\r
211LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS)\r
212\r
213# From MSVC 5.0 onwards, it seem base relocation information is not included,\r
214# at least in release builds. We need to ensure the reloc info is included\r
215# in order to use the MSVC profiler.\r
216!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r
217EXTRA_LINK =\r
218!ELSE\r
219EXTRA_LINK = -profile\r
220!ENDIF\r
221\r
222#\r
223# If the compiler supports compiling multiple .c files to .o files at\r
224# one time, use this feature.\r
225#\r
226!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r
227.c{$(BLD)}.obj:\r
228 $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r
229!ELSE\r
230.c{$(BLD)}.obj::\r
231 $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r
232!ENDIF\r
a2fcf029
MB
233\r
234# arch-tag: fefa49b0-c23c-46c7-9094-cab2a405058e\r