Commit | Line | Data |
---|---|---|
bd6766d3 | 1 | # -*- Makefile -*- definition file for building GNU Emacs on Windows NT.\r |
73b0cd50 | 2 | # Copyright (C) 2000-2011 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 | |
30 | \r | |
31 | ALL_DEPS = $**\r | |
32 | \r | |
33 | SUBSYSTEM_WINDOWS=-subsystem:windows\r | |
34 | SUBSYSTEM_CONSOLE=-subsystem:console\r | |
35 | \r | |
36 | # INSTALL_DIR is the directory into which emacs will be installed.\r | |
37 | #\r | |
38 | !ifndef INSTALL_DIR\r | |
39 | INSTALL_DIR = $(CURDIR)/..\r | |
40 | !endif\r | |
41 | \r | |
42 | # Ensure EMACSLOADPATH is defined in the environment.\r | |
43 | #\r | |
44 | !if [set EMACSLOADPATH=foo]\r | |
45 | !endif\r | |
46 | \r | |
47 | # Allow detection of builds with MSVC 5 or later, so we can\r | |
48 | # speed up compiles (see rule at end).\r | |
49 | #\r | |
50 | _NMAKE_VER_5=162\r | |
51 | _NMAKE_VER_4=0\r | |
52 | \r | |
53 | !IFNDEF _NMAKE_VER\r | |
54 | _NMAKE_VER=$(_NMAKE_VER_4)\r | |
55 | !ENDIF\r | |
56 | \r | |
57 | # Check that the INCLUDE and LIB environment variables are set.\r | |
58 | #\r | |
59 | !ifndef INCLUDE\r | |
60 | !error The INCLUDE environment variable needs to be set.\r | |
61 | !endif\r | |
62 | !ifndef LIB\r | |
63 | !error The LIB environment variable needs to be set.\r | |
64 | !endif\r | |
65 | \r | |
66 | # Determine the architecture we're running on.\r | |
177c0ea7 | 67 | # Define ARCH for our purposes;\r |
039f725c AI |
68 | # Define CPU for use by ntwin32.mak;\r |
69 | # Define CONFIG_H to the appropriate config.h for the system;\r | |
70 | #\r | |
71 | !ifdef PROCESSOR_ARCHITECTURE\r | |
72 | # We're on Windows NT\r | |
73 | CPU = $(PROCESSOR_ARCHITECTURE)\r | |
74 | CONFIG_H = config.nt\r | |
75 | OS_TYPE = windowsnt\r | |
76 | ! if "$(PROCESSOR_ARCHITECTURE)" == "x86"\r | |
77 | ARCH = i386\r | |
78 | CPU = i386\r | |
79 | ! else\r | |
80 | ! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"\r | |
81 | ARCH = mips\r | |
82 | ! else\r | |
83 | ! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"\r | |
84 | ARCH = alpha\r | |
85 | ! else\r | |
86 | ! if "$(PROCESSOR_ARCHITECTURE)" == "PPC"\r | |
87 | ARCH = ppc\r | |
88 | ! else\r | |
89 | ! error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"\r | |
90 | ! endif\r | |
91 | ! endif\r | |
92 | ! endif\r | |
93 | ! endif\r | |
94 | !else\r | |
95 | # We're on Windows 95\r | |
96 | ARCH = i386\r | |
97 | CPU = i386\r | |
98 | CONFIG_H = config.nt\r | |
99 | OS_TYPE = windows95\r | |
100 | !endif\r | |
101 | \r | |
102 | AR = lib\r | |
103 | AR_OUT = -out:\r | |
104 | CC = cl\r | |
105 | CC_OUT = -Fo\r | |
106 | LINK = link\r | |
107 | LINK_OUT = -out:\r | |
108 | RC = rc\r | |
109 | RC_OUT = -Fo\r | |
110 | RC_INCLUDE = -i\r | |
111 | \r | |
a6fc3b5c EZ |
112 | USE_CRT_DLL = 1\r |
113 | \r | |
114 | !ifdef USE_CRT_DLL\r | |
115 | libc = msvcrt$(D).lib\r | |
116 | EMACS_EXTRA_C_FLAGS= -D_DLL -D_MT -DUSE_CRT_DLL=1\r | |
117 | !else\r | |
118 | libc = libcmt$(D).lib\r | |
119 | EMACS_EXTRA_C_FLAGS= -D_MT\r | |
120 | !endif\r | |
177c0ea7 | 121 | baselibs =\r |
039f725c AI |
122 | O = obj\r |
123 | A = lib\r | |
124 | \r | |
125 | BASE_LIBS = $(libc) $(baselibs) oldnames.lib\r | |
126 | \r | |
127 | ADVAPI32 = advapi32.lib\r | |
fc2554aa | 128 | COMCTL32 = comctl32.lib\r |
039f725c AI |
129 | COMDLG32 = comdlg32.lib\r |
130 | GDI32 = gdi32.lib\r | |
131 | MPR = mpr.lib\r | |
132 | SHELL32 = shell32.lib\r | |
133 | USER32 = user32.lib\r | |
134 | WSOCK32 = wsock32.lib\r | |
a71f59c1 | 135 | WINMM = winmm.lib\r |
0e664bca | 136 | WINSPOOL = winspool.lib\r |
a71f59c1 | 137 | OLE32 = ole32.lib\r |
b7612703 | 138 | UNISCRIBE = usp10.lib\r |
f4c45b4f | 139 | UUID = uuid.lib\r |
039f725c AI |
140 | \r |
141 | !ifdef NOOPT\r | |
142 | DEBUG_CFLAGS = -DEMACSDEBUG\r | |
143 | !else\r | |
177c0ea7 | 144 | DEBUG_CFLAGS =\r |
039f725c | 145 | !endif\r |
7d0170c8 JB |
146 | \r |
147 | !ifdef ENABLECHECKS\r | |
148 | CHECKING_CFLAGS = -DENABLE_CHECKING -DXASSERTS\r | |
149 | !else\r | |
150 | CHECKING_CFLAGS =\r | |
151 | !endif\r | |
152 | \r | |
43db14bb | 153 | CFLAGS = -I. $(ARCH_CFLAGS) \\r |
7d0170c8 | 154 | $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)\r |
4d3fcc8e BK |
155 | ESC_CFLAGS = -I. $(ARCH_CFLAGS) \\r |
156 | $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(ESC_USER_CFLAGS) $(LOCAL_FLAGS)\r | |
039f725c | 157 | \r |
a6fc3b5c EZ |
158 | #SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r |
159 | !ifdef NOOPT\r | |
160 | SYS_LDFLAGS = -nologo -manifest -dynamicbase:no -debug -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r | |
161 | !else\r | |
162 | SYS_LDFLAGS = -nologo -manifest -dynamicbase:no -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r | |
163 | !endif\r | |
039f725c AI |
164 | \r |
165 | # see comments in allocate_heap in w32heap.c before changing any of the\r | |
166 | # -stack, -heap, or -base settings.\r | |
53b9fd77 | 167 | 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 |
168 | \r |
169 | !ifdef NOOPT\r | |
170 | OBJDIR = obj\r | |
171 | !else\r | |
172 | OBJDIR = obj-spd\r | |
173 | !endif\r | |
174 | $(OBJDIR):; -mkdir $(OBJDIR)\r | |
175 | BLD = $(OBJDIR)/$(ARCH)\r | |
596cbf7e | 176 | stamp_BLD: $(OBJDIR)\r |
039f725c | 177 | -mkdir "$(BLD)"\r |
596cbf7e | 178 | echo $(BLD) > $@\r |
039f725c AI |
179 | \r |
180 | COMPILER_TEMP_FILES = *.pdb\r | |
181 | \r | |
182 | CP = cp -f\r | |
183 | CP_DIR = cp -rf\r | |
184 | IFNOTSAMEDIR = if not exist ..\same-dir.tst\r | |
185 | ENDIF =\r | |
186 | FOREACH = for %%f in (\r | |
187 | FORVAR = %%f\r | |
188 | FORDO = ) do\r | |
189 | ENDFOR =\r | |
190 | ARGQUOTE = "\r | |
33d786f9 | 191 | # "\r |
039f725c AI |
192 | DQUOTE = \"\r |
193 | DEL = rm\r | |
194 | DEL_TREE = rm -r\r | |
195 | \r | |
196 | !ifdef NODEBUG\r | |
177c0ea7 JB |
197 | DEBUG_FLAG =\r |
198 | DEBUG_LINK =\r | |
a6fc3b5c | 199 | D =\r |
039f725c AI |
200 | !else\r |
201 | DEBUG_FLAG = -Zi\r | |
a6fc3b5c EZ |
202 | DEBUG_LINK = -debug\r |
203 | D = d\r | |
039f725c AI |
204 | !endif\r |
205 | \r | |
206 | !if "$(ARCH)" == "i386"\r | |
207 | !ifdef NOOPT\r | |
a6fc3b5c EZ |
208 | #ARCH_CFLAGS = -nologo -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG)\r |
209 | ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Od -Gd $(DEBUG_FLAG)\r | |
039f725c | 210 | !else\r |
a6fc3b5c EZ |
211 | #ARCH_CFLAGS = -nologo -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG)\r |
212 | ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Oi -Ot -Oy- -Ob2 -GF -Gy -Gd $(DEBUG_FLAG)\r | |
039f725c AI |
213 | !endif\r |
214 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
215 | \r | |
216 | !else\r | |
217 | !if "$(ARCH)" == "mips"\r | |
218 | ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0\r | |
219 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
220 | \r | |
221 | !else\r | |
222 | !if "$(ARCH)" == "alpha"\r | |
223 | !if "$(BUILD_TYPE)" == "spd"\r | |
224 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=\r | |
225 | !else\r | |
226 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=\r | |
227 | !endif\r | |
228 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
229 | \r | |
230 | !else\r | |
231 | !if "$(ARCH)" == "ppc"\r | |
232 | # These flags are a guess...if they don't work, please send me mail.\r | |
233 | ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od\r | |
234 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
235 | \r | |
236 | !else\r | |
237 | !ERROR Unknown architecture type "$(ARCH)".\r | |
238 | !endif\r | |
239 | !endif\r | |
240 | !endif\r | |
241 | !endif\r | |
242 | \r | |
243 | LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS)\r | |
244 | \r | |
245 | # From MSVC 5.0 onwards, it seem base relocation information is not included,\r | |
246 | # at least in release builds. We need to ensure the reloc info is included\r | |
247 | # in order to use the MSVC profiler.\r | |
248 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
249 | EXTRA_LINK =\r | |
250 | !ELSE\r | |
251 | EXTRA_LINK = -profile\r | |
252 | !ENDIF\r | |
253 | \r | |
254 | #\r | |
255 | # If the compiler supports compiling multiple .c files to .o files at\r | |
256 | # one time, use this feature.\r | |
257 | #\r | |
258 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
259 | .c{$(BLD)}.obj:\r | |
260 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
261 | !ELSE\r | |
262 | .c{$(BLD)}.obj::\r | |
263 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
264 | !ENDIF\r | |
a2fcf029 | 265 | \r |