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 | |
112 | libc = libc.lib\r | |
177c0ea7 | 113 | baselibs =\r |
039f725c AI |
114 | O = obj\r |
115 | A = lib\r | |
116 | \r | |
117 | BASE_LIBS = $(libc) $(baselibs) oldnames.lib\r | |
118 | \r | |
119 | ADVAPI32 = advapi32.lib\r | |
fc2554aa | 120 | COMCTL32 = comctl32.lib\r |
039f725c AI |
121 | COMDLG32 = comdlg32.lib\r |
122 | GDI32 = gdi32.lib\r | |
123 | MPR = mpr.lib\r | |
124 | SHELL32 = shell32.lib\r | |
125 | USER32 = user32.lib\r | |
126 | WSOCK32 = wsock32.lib\r | |
a71f59c1 | 127 | WINMM = winmm.lib\r |
0e664bca | 128 | WINSPOOL = winspool.lib\r |
a71f59c1 | 129 | OLE32 = ole32.lib\r |
b7612703 | 130 | UNISCRIBE = usp10.lib\r |
f4c45b4f | 131 | UUID = uuid.lib\r |
039f725c AI |
132 | \r |
133 | !ifdef NOOPT\r | |
134 | DEBUG_CFLAGS = -DEMACSDEBUG\r | |
135 | !else\r | |
177c0ea7 | 136 | DEBUG_CFLAGS =\r |
039f725c | 137 | !endif\r |
7d0170c8 JB |
138 | \r |
139 | !ifdef ENABLECHECKS\r | |
140 | CHECKING_CFLAGS = -DENABLE_CHECKING -DXASSERTS\r | |
141 | !else\r | |
142 | CHECKING_CFLAGS =\r | |
143 | !endif\r | |
144 | \r | |
43db14bb | 145 | CFLAGS = -I. $(ARCH_CFLAGS) \\r |
7d0170c8 | 146 | $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)\r |
4d3fcc8e BK |
147 | ESC_CFLAGS = -I. $(ARCH_CFLAGS) \\r |
148 | $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(ESC_USER_CFLAGS) $(LOCAL_FLAGS)\r | |
43db14bb | 149 | EMACS_EXTRA_C_FLAGS =\r |
039f725c | 150 | \r |
238add5e | 151 | SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj\r |
039f725c AI |
152 | \r |
153 | # see comments in allocate_heap in w32heap.c before changing any of the\r | |
154 | # -stack, -heap, or -base settings.\r | |
53b9fd77 | 155 | 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 |
156 | \r |
157 | !ifdef NOOPT\r | |
158 | OBJDIR = obj\r | |
159 | !else\r | |
160 | OBJDIR = obj-spd\r | |
161 | !endif\r | |
162 | $(OBJDIR):; -mkdir $(OBJDIR)\r | |
163 | BLD = $(OBJDIR)/$(ARCH)\r | |
596cbf7e | 164 | stamp_BLD: $(OBJDIR)\r |
039f725c | 165 | -mkdir "$(BLD)"\r |
596cbf7e | 166 | echo $(BLD) > $@\r |
039f725c AI |
167 | \r |
168 | COMPILER_TEMP_FILES = *.pdb\r | |
169 | \r | |
170 | CP = cp -f\r | |
171 | CP_DIR = cp -rf\r | |
172 | IFNOTSAMEDIR = if not exist ..\same-dir.tst\r | |
173 | ENDIF =\r | |
174 | FOREACH = for %%f in (\r | |
175 | FORVAR = %%f\r | |
176 | FORDO = ) do\r | |
177 | ENDFOR =\r | |
178 | ARGQUOTE = "\r | |
33d786f9 | 179 | # "\r |
039f725c AI |
180 | DQUOTE = \"\r |
181 | DEL = rm\r | |
182 | DEL_TREE = rm -r\r | |
183 | \r | |
184 | !ifdef NODEBUG\r | |
177c0ea7 JB |
185 | DEBUG_FLAG =\r |
186 | DEBUG_LINK =\r | |
039f725c AI |
187 | !else\r |
188 | DEBUG_FLAG = -Zi\r | |
53b9fd77 | 189 | DEBUG_LINK = -debug:full\r |
039f725c AI |
190 | !endif\r |
191 | \r | |
192 | !if "$(ARCH)" == "i386"\r | |
193 | !ifdef NOOPT\r | |
43db14bb | 194 | ARCH_CFLAGS = -nologo -c -Zel -W2 -H63 -Od -G3d -Zp8 $(DEBUG_FLAG)\r |
039f725c | 195 | !else\r |
43db14bb | 196 | ARCH_CFLAGS = -nologo -c -Zel -W2 -H63 -Oxsb2 -Oy- -G6dF -Zp8 $(DEBUG_FLAG)\r |
039f725c AI |
197 | !endif\r |
198 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
199 | \r | |
200 | !else\r | |
201 | !if "$(ARCH)" == "mips"\r | |
202 | ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0\r | |
203 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
204 | \r | |
205 | !else\r | |
206 | !if "$(ARCH)" == "alpha"\r | |
207 | !if "$(BUILD_TYPE)" == "spd"\r | |
208 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=\r | |
209 | !else\r | |
210 | ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=\r | |
211 | !endif\r | |
212 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
213 | \r | |
214 | !else\r | |
215 | !if "$(ARCH)" == "ppc"\r | |
216 | # These flags are a guess...if they don't work, please send me mail.\r | |
217 | ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od\r | |
218 | ARCH_LDFLAGS = $(SYS_LDFLAGS)\r | |
219 | \r | |
220 | !else\r | |
221 | !ERROR Unknown architecture type "$(ARCH)".\r | |
222 | !endif\r | |
223 | !endif\r | |
224 | !endif\r | |
225 | !endif\r | |
226 | \r | |
227 | LINK_FLAGS = $(ARCH_LDFLAGS) $(DEBUG_LINK) $(USER_LDFLAGS)\r | |
228 | \r | |
229 | # From MSVC 5.0 onwards, it seem base relocation information is not included,\r | |
230 | # at least in release builds. We need to ensure the reloc info is included\r | |
231 | # in order to use the MSVC profiler.\r | |
232 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
233 | EXTRA_LINK =\r | |
234 | !ELSE\r | |
235 | EXTRA_LINK = -profile\r | |
236 | !ENDIF\r | |
237 | \r | |
238 | #\r | |
239 | # If the compiler supports compiling multiple .c files to .o files at\r | |
240 | # one time, use this feature.\r | |
241 | #\r | |
242 | !IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")\r | |
243 | .c{$(BLD)}.obj:\r | |
244 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
245 | !ELSE\r | |
246 | .c{$(BLD)}.obj::\r | |
247 | $(CC) $(CFLAGS) -Fo$(BLD)\ $<\r | |
248 | !ENDIF\r | |
a2fcf029 | 249 | \r |