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