Commit | Line | Data |
---|---|---|
bd6766d3 | 1 | # -*- Makefile -*- definition file for building GNU Emacs on Windows NT.\r |
acaf905b | 2 | # Copyright (C) 2000-2012 Free Software Foundation, Inc.\r |
eef0be9e GM |
3 | \r |
4 | # This file is part of GNU Emacs.\r | |
5 | \r | |
6 | # GNU Emacs is free software: you can redistribute it and/or modify\r | |
7 | # it under the terms of the GNU General Public License as published by\r | |
8 | # the Free Software Foundation, either version 3 of the License, or\r | |
9 | # (at your option) any later version.\r | |
10 | \r | |
11 | # GNU Emacs is distributed in the hope that it will be useful,\r | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of\r | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r | |
14 | # GNU General Public License for more details.\r | |
15 | \r | |
16 | # You should have received a copy of the GNU General Public License\r | |
17 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\r | |
18 | \r | |
039f725c AI |
19 | \r |
20 | # Ensure 'all' is the default target\r | |
21 | all:\r | |
22 | \r | |
23 | THE_SHELL = $(COMSPEC)\r | |
24 | SHELLTYPE=CMD\r | |
25 | \r | |
26 | MAKETYPE=nmake\r | |
27 | \r | |
28 | CURDIR = $(MAKEDIR:\=/)\r | |
29 | THISDIR = $(MAKEDIR)\r | |
e5a69fd0 | 30 | DIRNAME =\r |
039f725c AI |
31 | \r |
32 | ALL_DEPS = $**\r | |
33 | \r | |
34 | SUBSYSTEM_WINDOWS=-subsystem:windows\r | |
35 | SUBSYSTEM_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 | |
40 | INSTALL_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 | |
74 | CPU = $(PROCESSOR_ARCHITECTURE)\r | |
75 | CONFIG_H = config.nt\r | |
76 | OS_TYPE = windowsnt\r | |
77 | ! if "$(PROCESSOR_ARCHITECTURE)" == "x86"\r | |
78 | ARCH = i386\r | |
79 | CPU = i386\r | |
80 | ! else\r | |
81 | ! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"\r | |
82 | ARCH = mips\r | |
83 | ! else\r | |
84 | ! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"\r | |
85 | ARCH = alpha\r | |
86 | ! else\r | |
87 | ! if "$(PROCESSOR_ARCHITECTURE)" == "PPC"\r | |
88 | ARCH = 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 | |
97 | ARCH = i386\r | |
98 | CPU = i386\r | |
99 | CONFIG_H = config.nt\r | |
100 | OS_TYPE = windows95\r | |
101 | !endif\r | |
102 | \r | |
103 | AR = lib\r | |
104 | AR_OUT = -out:\r | |
105 | CC = cl\r | |
106 | CC_OUT = -Fo\r | |
107 | LINK = link\r | |
108 | LINK_OUT = -out:\r | |
109 | RC = rc\r | |
110 | RC_OUT = -Fo\r | |
111 | RC_INCLUDE = -i\r | |
112 | \r | |
a6fc3b5c EZ |
113 | USE_CRT_DLL = 1\r |
114 | \r | |
115 | !ifdef USE_CRT_DLL\r | |
116 | libc = msvcrt$(D).lib\r | |
117 | EMACS_EXTRA_C_FLAGS= -D_DLL -D_MT -DUSE_CRT_DLL=1\r | |
118 | !else\r | |
119 | libc = libcmt$(D).lib\r | |
120 | EMACS_EXTRA_C_FLAGS= -D_MT\r | |
121 | !endif\r | |
177c0ea7 | 122 | baselibs =\r |
039f725c AI |
123 | O = obj\r |
124 | A = lib\r | |
125 | \r | |
126 | BASE_LIBS = $(libc) $(baselibs) oldnames.lib\r | |
127 | \r | |
128 | ADVAPI32 = advapi32.lib\r | |
fc2554aa | 129 | COMCTL32 = comctl32.lib\r |
039f725c AI |
130 | COMDLG32 = comdlg32.lib\r |
131 | GDI32 = gdi32.lib\r | |
132 | MPR = mpr.lib\r | |
133 | SHELL32 = shell32.lib\r | |
134 | USER32 = user32.lib\r | |
135 | WSOCK32 = wsock32.lib\r | |
a71f59c1 | 136 | WINMM = winmm.lib\r |
0e664bca | 137 | WINSPOOL = winspool.lib\r |
a71f59c1 | 138 | OLE32 = ole32.lib\r |
b7612703 | 139 | UNISCRIBE = usp10.lib\r |
f4c45b4f | 140 | UUID = uuid.lib\r |
039f725c AI |
141 | \r |
142 | !ifdef NOOPT\r | |
143 | DEBUG_CFLAGS = -DEMACSDEBUG\r | |
144 | !else\r | |
177c0ea7 | 145 | DEBUG_CFLAGS =\r |
039f725c | 146 | !endif\r |
7d0170c8 JB |
147 | \r |
148 | !ifdef ENABLECHECKS\r | |
149 | CHECKING_CFLAGS = -DENABLE_CHECKING -DXASSERTS\r | |
150 | !else\r | |
151 | CHECKING_CFLAGS =\r | |
152 | !endif\r | |
153 | \r | |
06523364 EZ |
154 | MWINDOWS = -subsystem:windows -entry:mainCRTStartup\r |
155 | \r | |
43db14bb | 156 | CFLAGS = -I. $(ARCH_CFLAGS) \\r |
7d0170c8 | 157 | $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)\r |
4d3fcc8e BK |
158 | ESC_CFLAGS = -I. $(ARCH_CFLAGS) \\r |
159 | $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(ESC_USER_CFLAGS) $(LOCAL_FLAGS)\r | |
039f725c | 160 | \r |
a6fc3b5c EZ |
161 | #SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r |
162 | !ifdef NOOPT\r | |
163 | SYS_LDFLAGS = -nologo -manifest -dynamicbase:no -debug -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r | |
164 | !else\r | |
165 | SYS_LDFLAGS = -nologo -manifest -dynamicbase:no -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r | |
166 | !endif\r | |
039f725c AI |
167 | \r |
168 | # see comments in allocate_heap in w32heap.c before changing any of the\r | |
169 | # -stack, -heap, or -base settings.\r | |
53b9fd77 | 170 | TEMACS_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 |
171 | \r |
172 | !ifdef NOOPT\r | |
173 | OBJDIR = obj\r | |
174 | !else\r | |
175 | OBJDIR = obj-spd\r | |
176 | !endif\r | |
177 | $(OBJDIR):; -mkdir $(OBJDIR)\r | |
178 | BLD = $(OBJDIR)/$(ARCH)\r | |
596cbf7e | 179 | stamp_BLD: $(OBJDIR)\r |
039f725c | 180 | -mkdir "$(BLD)"\r |
596cbf7e | 181 | echo $(BLD) > $@\r |
039f725c AI |
182 | \r |
183 | COMPILER_TEMP_FILES = *.pdb\r | |
184 | \r | |
185 | CP = cp -f\r | |
186 | CP_DIR = cp -rf\r | |
e5a69fd0 | 187 | IFNOTSAMEDIR = if not exist ..\$(DIRNAME)_same-dir.tst\r |
039f725c AI |
188 | ENDIF =\r |
189 | FOREACH = for %%f in (\r | |
190 | FORVAR = %%f\r | |
191 | FORDO = ) do\r | |
192 | ENDFOR =\r | |
193 | ARGQUOTE = "\r | |
33d786f9 | 194 | # "\r |
039f725c AI |
195 | DQUOTE = \"\r |
196 | DEL = rm\r | |
197 | DEL_TREE = rm -r\r | |
198 | \r | |
199 | !ifdef NODEBUG\r | |
177c0ea7 JB |
200 | DEBUG_FLAG =\r |
201 | DEBUG_LINK =\r | |
a6fc3b5c | 202 | D =\r |
039f725c AI |
203 | !else\r |
204 | DEBUG_FLAG = -Zi\r | |
a6fc3b5c EZ |
205 | DEBUG_LINK = -debug\r |
206 | D = d\r | |
039f725c AI |
207 | !endif\r |
208 | \r | |
75197633 CS |
209 | # gcc-specific pragma (ignore for MSVC)\r |
210 | PRAGMA_SYSTEM_HEADER =\r | |
211 | \r | |
039f725c AI |
212 | !if "$(ARCH)" == "i386"\r |
213 | !ifdef NOOPT\r | |
a6fc3b5c EZ |
214 | #ARCH_CFLAGS = -nologo -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG)\r |
215 | ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Od -Gd $(DEBUG_FLAG)\r | |
039f725c | 216 | !else\r |
a6fc3b5c EZ |
217 | #ARCH_CFLAGS = -nologo -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG)\r |
218 | ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Oi -Ot -Oy- -Ob2 -GF -Gy -Gd $(DEBUG_FLAG)\r | |
039f725c AI |
219 | !endif\r |
220 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
221 | \r | |
222 | !else\r | |
223 | !if "$(ARCH)" == "mips"\r | |
224 | ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0\r | |
225 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
226 | \r | |
227 | !else\r | |
228 | !if "$(ARCH)" == "alpha"\r | |
229 | !if "$(BUILD_TYPE)" == "spd"\r | |
230 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=\r | |
231 | !else\r | |
232 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=\r | |
233 | !endif\r | |
234 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
235 | \r | |
236 | !else\r | |
237 | !if "$(ARCH)" == "ppc"\r | |
238 | # These flags are a guess...if they don't work, please send me mail.\r | |
239 | ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od\r | |
240 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
241 | \r | |
242 | !else\r | |
243 | !ERROR Unknown architecture type "$(ARCH)".\r | |
244 | !endif\r | |
245 | !endif\r | |
246 | !endif\r | |
247 | !endif\r | |
248 | \r | |
249 | LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS)\r | |
250 | \r | |
251 | # From MSVC 5.0 onwards, it seem base relocation information is not included,\r | |
252 | # at least in release builds. We need to ensure the reloc info is included\r | |
253 | # in order to use the MSVC profiler.\r | |
254 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
255 | EXTRA_LINK =\r | |
256 | !ELSE\r | |
257 | EXTRA_LINK = -profile\r | |
258 | !ENDIF\r | |
259 | \r | |
260 | #\r | |
261 | # If the compiler supports compiling multiple .c files to .o files at\r | |
262 | # one time, use this feature.\r | |
263 | #\r | |
264 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
265 | .c{$(BLD)}.obj:\r | |
266 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
267 | !ELSE\r | |
268 | .c{$(BLD)}.obj::\r | |
269 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
270 | !ENDIF\r | |
a2fcf029 | 271 | \r |